Add support for generating new 'fabric' project

This commit is contained in:
Lance Edgar 2020-09-16 16:34:15 -05:00
parent dd2b634ed2
commit 652e951f89
2 changed files with 119 additions and 2 deletions

View file

@ -90,6 +90,26 @@ class GenerateByjoveProject(colander.MappingSchema):
slug = colander.SchemaNode(colander.String())
class GenerateFabricProject(colander.MappingSchema):
"""
Schema for generating a new 'fabric' project
"""
name = colander.SchemaNode(colander.String())
slug = colander.SchemaNode(colander.String())
organization = colander.SchemaNode(colander.String())
python_project_name = colander.SchemaNode(colander.String())
python_name = colander.SchemaNode(colander.String())
timezone = colander.SchemaNode(colander.String())
integrates_with = colander.SchemaNode(colander.String(),
missing=colander.null)
class GenerateProjectView(View):
"""
View for generating new project source code
@ -114,10 +134,15 @@ class GenerateProjectView(View):
project_type = 'rattail'
if self.request.method == 'POST':
project_type = self.request.POST.get('project_type', 'rattail')
if project_type not in ('rattail', 'byjove'):
if project_type not in ('rattail', 'byjove', 'fabric'):
raise ValueError("Unknown project type: {}".format(project_type))
schema = GenerateByjoveProject if project_type == 'byjove' else GenerateProject
if project_type == 'byjove':
schema = GenerateByjoveProject
elif project_type == 'fabric':
schema = GenerateFabricProject
else:
schema = GenerateProject
form = forms.Form(schema=schema(), request=self.request,
use_buefy=use_buefy)
if form.validate(newstyle=True):