def index(self, **form): if cherrypy.request.method == "GET": return serve_template('index.html', form=forms.render_submission()) if cherrypy.request.method == "POST": try: values = forms.validate_submission(form) except forms.Invalid, e: return serve_template('index.html', form=forms.render_submission( defaults=e.value, errors=e.unpack_errors())) else: save_submission(values) raise cherrypy.HTTPRedirect("thankyou")
def render_submission(defaults=dict(), errors=dict()): """ >>> 'value="eugene"' in render_submission() False >>> 'value="eugene"' in render_submission(defaults={'firstname' : 'eugene'}) True >>> '<span class="error-message">missing</span>' in render_submission(errors={'firstname' : 'missing'}) True """ form = serve_template('forms/submission.html') return htmlfill.render(form, defaults, errors, error_class="error-input")
def project(self, id_, action, **form): p = models.get_project(id_) errors = {} if cherrypy.request.method == "GET": if action == 'edit': defaults = {'title' : p.title, 'description' : p.description, 'photos' : p.photos, 'videos' : p.videos} elif action == 'cancel': return serve_template('project.html', project=p) if cherrypy.request.method == "POST": try: defaults = forms.validate_project(form) except forms.Invalid, e: defaults = e.value errors = e.unpack_errors() else: models.update_project(id_, defaults) return serve_template('project.html', project=p)
def thankyou(self): return serve_template('thankyou.html')
defaults=e.value, errors=e.unpack_errors()) else: models.save_status(values) status = forms.render_status(current=current_status()) if cherrypy.request.method == "GET": status = forms.render_status(current=current_status()) trash = models.trashed_submissions() projects = unpublished_projects() submissions = unchecked_submissions() public = published_projects() return serve_template('admin.html', trash=trash, submissions=submissions, projects=projects, public=public, status=status) @cherrypy.expose def project(self, id_, action, **form): p = models.get_project(id_) errors = {} if cherrypy.request.method == "GET": if action == 'edit': defaults = {'title' : p.title, 'description' : p.description, 'photos' : p.photos, 'videos' : p.videos}
def render_project(project, defaults=dict(), errors=dict()): form = serve_template('forms/project.html', project=project) return htmlfill.render(form, defaults, errors, error_class="error-input")
def render_status(current, defaults=dict(), errors=dict()): form = serve_template('forms/status.html', current=current) return htmlfill.render(form.decode('utf-8'), defaults, errors, error_class="error-input")