Add basic/incomplete support for generating new 'byjove' project
just wanted to get the placeholder in here for now
This commit is contained in:
parent
bd19d7c231
commit
cebe2f8adc
2 changed files with 175 additions and 6 deletions
|
@ -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:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue