Add basic/incomplete support for generating new 'byjove' project

just wanted to get the placeholder in here for now
This commit is contained in:
Lance Edgar 2020-09-06 13:54:11 -05:00
parent bd19d7c231
commit cebe2f8adc
2 changed files with 175 additions and 6 deletions

View file

@ -81,6 +81,15 @@ class GenerateProject(colander.MappingSchema):
uses_fabric = colander.SchemaNode(colander.Boolean())
class GenerateByjoveProject(colander.MappingSchema):
"""
Schema for generating a new 'byjove' project
"""
name = colander.SchemaNode(colander.String())
slug = colander.SchemaNode(colander.String())
class GenerateProjectView(View):
"""
View for generating new project source code
@ -102,13 +111,20 @@ class GenerateProjectView(View):
# 'type': 'bool'}),
# ])
form = forms.Form(schema=GenerateProject(),
request=self.request, use_buefy=use_buefy)
project_type = 'rattail'
if self.request.method == 'POST':
project_type = self.request.POST.get('project_type', 'rattail')
if project_type not in ('rattail', 'byjove'):
raise ValueError("Unknown project type: {}".format(project_type))
schema = GenerateByjoveProject if project_type == 'byjove' else GenerateProject
form = forms.Form(schema=schema(), request=self.request,
use_buefy=use_buefy)
form.submit_label = "Generate Project"
form.auto_disable = False
form.auto_disable_save = False
if form.validate(newstyle=True):
zipped = self.generate_project(form)
zipped = self.generate_project(project_type, form)
return self.file_response(zipped)
# self.request.session.flash("New project was generated: {}".format(form.validated['name']))
# return self.redirect(self.request.current_route_url())
@ -146,10 +162,10 @@ class GenerateProjectView(View):
'use_buefy': use_buefy,
}
def generate_project(self, form):
def generate_project(self, project_type, form):
options = form.validated
slug = options['slug']
path = self.handler.generate_project(slug, options)
path = self.handler.generate_project(project_type, slug, options)
zipped = '{}.zip'.format(path)
with zipfile.ZipFile(zipped, 'w', zipfile.ZIP_DEFLATED) as z: