def get(self): project = dao.get_project_by_id(self.request.get(u'project_id')) project = dao.get_project_by_id(self.request.get(u'project_id')) if not dao.test_project_permissions( project, [dao.PROJECT_OWN, dao.PROJECT_MANAGE]): webapp2.abort(401) document_entity = dao.get_document_by_id( project, self.request.get(u'document_id')) error_msg = None if document_entity else u'Unable to access specified document' # Display the webpage self.render(project, document_entity, error_msg)
def get(self): project = dao.get_project_by_id(self.request.get(u'project_id')) if not dao.test_project_permissions( project, [dao.PROJECT_OWN, dao.PROJECT_MANAGE]): webapp2.abort(401) variable_list = list() for variable_entity in dao.get_variables(project): variable = dict() variable[u'id'] = variable_entity.key.id() variable[u'name'] = variable_entity.name variable[u'description'] = variable_entity.description variable[u'is_repeating'] = variable_entity.is_repeating variable[u'input_field'] = variable_entity.input_field variable[u'assignments'] = self.get_assignments(project, variable) variable[u'documents'] = self.get_documents(project, variable) variable_list.append(variable) # Create template and template values, render the page jinja_template = ui.get_template(self, u'project/variable/index.html') jinja_template_values = dao.get_standard_project_values(project) jinja_template_values[u'variables'] = variable_list self.response.out.write(jinja_template.render(jinja_template_values))
def post(self): project = dao.get_project_by_id(self.request.get(u'project_id')) if not dao.test_project_permissions( project, [dao.PROJECT_OWN, dao.PROJECT_MANAGE]): webapp2.abort(401) name = self.request.get(u'name') description = self.request.get(u'description') variable_type = self.request.get(u'type') if not name: error_msg = u'You must specify a name for your assignment definition' elif not variable_type: error_msg = u'You must specify whether this is a single or repeating assignment' else: assignment_entity = dao.get_assignment_by_name(project, name) if assignment_entity: error_msg = u'Adding assignment failed: Duplicate assignment name in project' else: try: assignment_entity = dao.Assignment( name=name, description=description, is_repeating=(variable_type == u'repeating'), parent=project.key) assignment_entity.put() dao.touch_project_assignments(project) self.redirect("/project/assignment?project_id={}".format( project.key.id())) return except Exception as e: error_msg = u'Adding assignment failed: {}'.format(e) # Display the webpage self.render(project, error_msg)
def get(self): project = dao.get_project_by_id(self.request.get(u'project_id')) if not dao.test_project_permissions(project, [dao.PROJECT_OWN, dao.PROJECT_MANAGE]): webapp2.abort(401) # Display the webpage self.render(project)
def post(self): project = dao.get_project_by_id(self.request.get(u'project_id')) if not dao.test_project_permissions(project, [dao.PROJECT_OWN, dao.PROJECT_MANAGE]): webapp2.abort(401) style_entity = dao.get_style_by_id(project, self.request.get(u'style_id')) error_msg = None if style_entity else u'Unable to access specified style' # Handle delete request if style_entity and self.request.get(u'delete'): try: style_entity.key.delete() dao.touch_project_documents(project) self.redirect("/project/style?project_id={}".format(project.key.id())) return except Exception as e: error_msg = u'Deleting style from project failed: {}'.format(e) # Handle update request if style_entity and self.request.get(u'update'): try: style_entity.description = self.request.get(u'description') style_entity.css = self.request.get(u'css') style_entity.put() dao.touch_project_documents(project) self.redirect("/project/style?project_id={}".format(project.key.id())) return except Exception as e: error_msg = u'Updating style failed: {}'.format(e) # Display the webpage self.render(project, style_entity, error_msg)
def get(self): project = dao.get_project_by_id(self.request.get(u'_project_id')) if not dao.test_project_permissions(project, []): webapp2.abort(401) interview_service = InterviewService(project) interview_name = self.request.get(u'_interview_name') interview = interview_service.get_interview_by_name(interview_name) variable = dao.get_variable_by_internal_name(project, self.request.get(u'_variable_name')) index = self.request.get(u'_index') # Deliver HTTP response jinja_template = ui.get_template(self, u'project/upload_file.html') jinja_template_values = dao.get_standard_project_values(project) jinja_template_values[u'interview'] = interview jinja_template_values[u'variable'] = variable if index: jinja_template_values[u'show_index'] = True jinja_template_values[u'index'] = index jinja_template_values[u'upload_file_post_url'] = blobstore.create_upload_url('/project/upload_file_post') self.response.out.write(jinja_template.render(jinja_template_values))
def get(self): project = dao.get_project_by_id(self.request.get(u'project_id')) if not dao.test_project_permissions(project, []): webapp2.abort(401) attachment = dao.get_attachment_by_id( project, self.request.get(u'attachment_id')) if not attachment: self.response.write(u'Download unsuccessful') blob_info = blobstore.BlobInfo.get(attachment.blob_key) if blob_info: try: # Set header so that we can write Unicode body; note that headers must be # byte strings, not unicode strings self.response.content_type = 'charset=utf-8' self.send_blob(attachment.blob_key, save_as=attachment.filename) # Set header again, in case cleared by send_blob self.response.content_type = 'charset=utf-8' self.response.write( u'Download successful') # TODO Is this needed? except: self.response.write(u'Download unsuccessful') else: self.response.write(u'Download unsuccessful')
def post(self): project = dao.get_project_by_id(self.request.get(u'project_id')) if not dao.test_project_permissions(project, [dao.PROJECT_OWN, dao.PROJECT_MANAGE]): webapp2.abort(401) name = self.request.get(u'name') description = self.request.get(u'description') css = self.request.get(u'css') if not name: error_msg = u'You must specify a name for your style definition' else: style_entity = dao.get_style_by_name(project, name) if style_entity: error_msg = u'Adding style failed: Duplicate style name in project' else: try: dao.Style(name=name, description=description, css=css, parent=project.key).put() dao.touch_project_documents(project) self.redirect("/project/style?project_id={}".format(project.key.id())) return except Exception as e: error_msg = u'Adding style failed: {}'.format(e) # Display the webpage self.render(project, error_msg)
def post(self): project = dao.get_project_by_id(self.request.get(u'project_id')) if not dao.test_project_permissions( project, [dao.PROJECT_OWN, dao.PROJECT_MANAGE]): webapp2.abort(401) name = self.request.get(u'name') description = self.request.get(u'description') doc_style = self.request.get(u'doc_style') if not name: error_msg = u'You must specify a name for your document definition' else: document_entity = dao.get_document_by_name(project, name) if document_entity: error_msg = u'Adding document failed: Duplicate document name in project' else: try: document_entity = dao.Document( name=name, internal_name=dao.convert_name_to_internal_name(name), description=description, style_name=doc_style, parent=project.key) document_entity.put() dao.touch_project_documents(project) self.redirect("/project/document?project_id={}".format( project.key.id())) return except Exception as e: error_msg = u'Adding document failed: {}'.format(e) # Display the webpage self.render(project, error_msg)
def get(self): project = dao.get_project_by_id(self.request.get(u'project_id')) if not dao.test_project_permissions(project, []): webapp2.abort(401) jinja_template = ui.get_template(self, u'project/index.html') jinja_template_values = dao.get_standard_project_values(project) self.response.out.write(jinja_template.render(jinja_template_values))
def post(self): project = dao.get_project_by_id(self.request.get(u'project_id')) if not dao.test_project_permissions(project, []): webapp2.abort(401) attachment_entity = dao.get_attachment_by_id( project, self.request.get(u'attachment_id')) error_msg = None if attachment_entity else u'Unable to access specified attachment' # Handle delete request if attachment_entity and self.request.get(u'delete'): try: attachment_entity.key.delete() self.redirect( "/project_admin/attachment_admin?project_id={}".format( project.key.id())) return except Exception as e: error_msg = u'Deleting attachment from project failed: {}'.format( e) # Handle update request if attachment_entity and self.request.get(u'update'): try: attachment_entity.description = self.request.get( u'description') attachment_entity.attachment_type = self.request.get( u'attachment_type') if self.request.get(u'choose_from_dropbox'): # For Choose from Dropbox, we can transfer the file to the blob store, then return here value = self.fill(self.request.get(u'choose_from_dropbox')) filename = urllib2.unquote(value.split(u'/')[-1]) blob_key = DropboxService().store_file_as_blob(value) dao.set_attachment_blob_key(attachment_entity, blob_key, filename) attachment_entity.put() self.redirect( "/project_admin/attachment_admin?project_id={}".format( project.key.id())) return except Exception as e: error_msg = u'Updating document failed: {}'.format(e) if self.request.get(u'choose_from_disk'): # For Choose from Disk, we need to redirect to another page query_string_dict = { u'name': attachment_entity.name, u'project_id': project.key.id(), u'attachment_id': attachment_entity.key.id() } query_string = urllib.urlencode(query_string_dict) self.redirect( "/project_admin/attachment_upload?{}".format(query_string)) return # Display the webpage self.render(project, attachment_entity, error_msg)
def get(self): project = dao.get_project_by_id(self.request.get(u'project_id')) if not dao.test_project_permissions(project, []): webapp2.abort(401) attachment = dao.get_attachment_by_id( project, self.request.get(u'attachment_id')) # Display the webpage self.render(project, attachment)
def get(self): project = dao.get_project_by_id(self.request.get(u'project_id')) if not dao.test_project_permissions( project, [dao.PROJECT_OWN, dao.PROJECT_MANAGE]): webapp2.abort(401) # Get specified ProjectUser entity project_user_id = self.request.get(u'project_user_id') project_user = dao.get_project_user_by_id(project, project_user_id) error_msg = None if project_user else u'Unable to access specified project user' # Display the webpage self.render(project, project_user_id, project_user, error_msg)
def get(self): project = dao.get_project_by_id(self.request.get(u'project_id')) if not dao.test_project_permissions(project, []): webapp2.abort(401) # Create template and template values, render the page jinja_template = ui.get_template( self, u'project_admin/project_user_admin.html') jinja_template_values = dao.get_standard_project_values(project) jinja_template_values[u'users'] = dao.get_project_users(project) self.response.out.write(jinja_template.render(jinja_template_values))
def get(self): project = dao.get_project_by_id(self.request.get(u'project_id')) if not dao.test_project_permissions( project, [dao.PROJECT_OWN, dao.PROJECT_MANAGE]): webapp2.abort(401) # Build list of permission checkboxes and whether they should be checked permissions = list() for project_permission in dao.get_all_project_permissions(): permissions.append({u'name': project_permission, u'checked': u''}) # Display the webpage self.render(project, permissions)
def post(self): project = dao.get_project_by_id(self.request.get(u'project_id')) if not dao.test_project_permissions( project, [dao.PROJECT_OWN, dao.PROJECT_MANAGE]): webapp2.abort(401) # Validate the submitted email address submitted_email = self.request.get(u'email') if submitted_email == u'': error_msg = u'Email address must be specified' elif email_pattern.match(submitted_email): # Test whether ProjectUser entity for that email already exists if dao.test_email_in_project(project, submitted_email): error_msg = u'Already a member of this project: {}'.format( submitted_email) else: # Attempt to add a new ProjectUser entity permissions = list() for permission in dao.get_all_project_permissions(): if self.request.get(permission): permissions.append(permission) if not dao.test_project_permissions(project, [dao.PROJECT_OWN]): if dao.PROJECT_OWN in permissions: webapp2.abort(401) try: dao.ProjectUser(email=submitted_email.lower(), parent=project.key, permissions=permissions).put() self.redirect( "/project_admin/project_user_admin?project_id={}". format(project.key.id())) return except Exception as e: error_msg = u'Adding user to project failed: {}'.format(e) else: error_msg = u'Invalid email: {}'.format(submitted_email) # Build list of permission checkboxes and whether they should be checked permissions = list() for project_permission in dao.get_all_project_permissions(): permission = { u'name': project_permission, u'checked': u'checked' if self.request.get(project_permission) else u'' } permissions.append(permission) # Display the webpage self.render(project, permissions, error_msg)
def post(self): project = dao.get_project_by_id(self.request.get(u'project_id')) if not dao.test_project_permissions(project, []): webapp2.abort(401) name = self.request.get(u'name') description = self.request.get(u'description') if not name: error_msg = u'You must specify a name for your attachment' else: attachment = dao.get_attachment_by_name(project, name) if attachment: error_msg = u'Adding attachment failed: Duplicate attachment name in project' else: try: attachment = dao.Attachment(name=name, description=description, parent=project.key) if self.request.get(u'choose_from_dropbox'): # For Choose from Dropbox, we can transfer the file to the blob store, then return here value = self.fill( self.request.get(u'choose_from_dropbox')) filename = urllib2.unquote(value.split(u'/')[-1]) blob_key = DropboxService().store_file_as_blob(value) dao.set_attachment_blob_key(attachment, blob_key, filename) attachment.put() if self.request.get(u'choose_from_disk'): # For Choose from Disk, we need to redirect to another page query_string_dict = { u'name': name, u'project_id': project.key.id(), u'attachment_id': attachment.key.id() } query_string = urllib.urlencode(query_string_dict) self.redirect( "/project_admin/attachment_upload?{}".format( query_string)) return self.redirect( "/project_admin/attachment_admin?project_id={}".format( project.key.id())) return except Exception as e: error_msg = u'Adding attachment failed: {}'.format(e) # Display the webpage self.render(project, error_msg, name, description)
def post(self): project = dao.get_project_by_id(self.request.get(u'project_id')) if not dao.test_project_permissions( project, [dao.PROJECT_OWN, dao.PROJECT_MANAGE]): webapp2.abort(401) # Get specified ProjectUser entity project_user_id = self.request.get(u'project_user_id') project_user = dao.get_project_user_by_id(project, project_user_id) error_msg = None if project_user else u'Unable to access specified project user' # Handle delete request if project_user and self.request.get(u'delete'): try: self.require_owner(project, exclude_user=project_user) project_user.key.delete() self.redirect( "/project_admin/project_user_admin?project_id={}".format( project.key.id())) return except Exception as e: error_msg = u'Deleting project user failed: {}'.format(e) # Handle update request if project_user and self.request.get(u'update'): # Attempt to update the ProjectUser entity's permissions permissions = list() for permission in dao.get_all_project_permissions(): if self.request.get(permission): permissions.append(permission) if not dao.test_project_permissions(project, [dao.PROJECT_OWN]): if (dao.PROJECT_OWN in project_user.permissions and dao.PROJECT_OWN not in permissions) or ( dao.PROJECT_OWN not in project_user.permissions and dao.PROJECT_OWN in permissions): webapp2.abort(401) project_user.permissions = permissions try: self.require_owner(project) project_user.put() self.redirect( "/project_admin/project_user_admin?project_id={}".format( project.key.id())) return except Exception as e: error_msg = u'Updating project user failed: {}'.format(e) # Display the webpage self.render(project, project_user_id, project_user, error_msg)
def get(self): project = dao.get_project_by_id(self.request.get(u'project_id')) if not dao.test_project_permissions( project, [dao.PROJECT_OWN, dao.PROJECT_MANAGE]): webapp2.abort(401) interview_service = InterviewService(project) assignments = dict() for interview_name in interview_service.get_root_interview_names(): match = interview_name_pattern.match(interview_name) if match: interview = interview_service.get_interview_by_name( interview_name) interview_type = match.group(1) assignment_name = match.group(2) if assignment_name in assignments: assignment = assignments[assignment_name] else: assignment = dict() assignment[u'name'] = assignment_name assignments[assignment_name] = assignment if interview_type == "assign_writer": assignment["assign_writer_interview_name"] = interview.name elif interview_type == "assign_reviewer": assignment[ "assign_reviewer_interview_name"] = interview.name elif interview_type == "write": assignment["ready_to_review"] = interview.completed checklist_info = self.get_checklist_info(interview) assignment["draft_status"] = u'Draft completed: {}'.format( checklist_info ) if interview.completed else u'Draft not completed' assignment["write_interview_name"] = interview.name assignment[ "writer"] = interview.assigned_email if interview.assigned_email else u'(not assigned yet)' elif interview_type == "review": checklist_info = self.get_checklist_info(interview) assignment[ "review_status"] = u'Review completed: {}'.format( checklist_info ) if interview.completed else u'Review not completed' assignment["review_interview_name"] = interview.name assignment[ "reviewer"] = interview.assigned_email if interview.assigned_email else u'(not assigned yet)' # Display the webpage self.render(project, assignments.values())
def post(self): project = dao.get_project_by_id(self.request.get(u'project_id')) if not dao.test_project_permissions(project, []): webapp2.abort(401) attachment = dao.get_attachment_by_id( project, self.request.get(u'attachment_id')) blobs_info = self.get_uploads(u'upload_file') if blobs_info: blob_info = blobs_info[0] dao.set_attachment_blob_key(attachment, blob_info.key(), blob_info.filename) self.redirect("/project_admin/attachment_admin?project_id={}".format( project.key.id()))
def get(self): project = dao.get_project_by_id(self.request.get(u'project_id')) if not dao.test_project_permissions(project, []): webapp2.abort(401) document = dao.get_document_by_id(project, self.request.get(u'document_id')) html_document = self.generate_html_document(project, document) html_document = self.replace_image_elements(project, html_document) # Deliver HTTP response jinja_template = ui.get_template(self, u'project/produce_document.html') jinja_template_values = dao.get_standard_project_values(project) jinja_template_values[u'document'] = document jinja_template_values[u'html_document'] = html_document self.response.out.write(jinja_template.render(jinja_template_values))
def post(self): project = dao.get_project_by_id(self.request.get(u'project_id')) if not dao.test_project_permissions( project, [dao.PROJECT_OWN, dao.PROJECT_MANAGE]): webapp2.abort(401) assignment_entity = dao.get_assignment_by_id( project, self.request.get(u'assignment_id')) error_msg = None if assignment_entity else u'Unable to access specified assignment' # Handle delete request if assignment_entity and self.request.get(u'delete'): try: assignment_entity.key.delete() dao.touch_project_assignments(project) # Delete associated generated interviews for interview_entity in dao.get_interviews_by_assignment_name( project, assignment_entity.name): interview_entity.key.delete() self.redirect("/project/assignment?project_id={}".format( project.key.id())) return except Exception as e: error_msg = u'Deleting assignment from project failed: {}'.format( e) # Handle update request if assignment_entity and self.request.get(u'update'): try: assignment_entity.description = self.request.get( u'description') assignment_entity.is_repeating = ( self.request.get(u'type') == u'repeating') assignment_entity.put() dao.touch_project_assignments(project) self.redirect("/project/assignment?project_id={}".format( project.key.id())) return except Exception as e: error_msg = u'Updating assignment failed: {}'.format(e) # Display the webpage self.render(project, assignment_entity, error_msg)
def get(self): project = dao.get_project_by_id(self.request.get(u'project_id')) if not dao.test_project_permissions(project, []): webapp2.abort(401) attachment = dao.get_attachment_by_id( project, self.request.get(u'attachment_id')) # Deliver HTTP response jinja_template = ui.get_template( self, u'project_admin/attachment_upload.html') jinja_template_values = dao.get_standard_project_values(project) jinja_template_values[u'attachment'] = attachment jinja_template_values[u'name'] = self.request.get(u'name') jinja_template_values[ u'attachment_upload_post_url'] = blobstore.create_upload_url( u'/project_admin/attachment_upload_post') self.response.out.write(jinja_template.render(jinja_template_values))
def get(self): project = dao.get_project_by_id(self.request.get(u'project_id')) if not dao.test_project_permissions(project, []): webapp2.abort(401) zipfile_string = self.generate_attachments(project) # Generate blob file blob_file_name = files.blobstore.create( mime_type=u'application/octet-stream') with files.open(blob_file_name, u'a') as f: f.write(zipfile_string) files.finalize(blob_file_name) # Save blob_key so that it can be deleted later, after document has been downloaded if project.attachments_blob_key: blobstore.delete(project.attachments_blob_key) project.attachments_blob_key = files.blobstore.get_blob_key( blob_file_name) project.put() filename = u'attachments.zip' # Set header so that we can write Unicode body; note that headers must be # byte strings, not unicode strings self.response.content_type = 'charset=utf-8' blob_info = blobstore.BlobInfo.get(project.attachments_blob_key) if blob_info: success = True try: self.send_blob(project.attachments_blob_key, save_as=filename) except: success = False # Set header again, in case cleared by send_blob self.response.content_type = 'charset=utf-8' self.response.write(u'Download {}'.format( u'successful' if success else u'unsuccessful')) else: self.response.write(u'Download unsuccessful')
def post(self): project = dao.get_project_by_id(self.request.get(u'project_id')) if not dao.test_project_permissions( project, [dao.PROJECT_OWN, dao.PROJECT_MANAGE]): webapp2.abort(401) name = self.request.get(u'name') description = self.request.get(u'description') variable_type = self.request.get(u'type') input_field = self.request.get(u'input_field') if not name: error_msg = u'You must specify a name for your variable definition' elif not variable_type: error_msg = u'You must specify whether this is a single or repeating variable' elif not input_field: error_msg = u'You must specify which size of input field to display' else: internal_name = dao.convert_name_to_internal_name(name) variable_entity = dao.get_variable_by_internal_name( project, internal_name) if variable_entity: error_msg = u'Adding variable failed, name collision in project: {}'.format( variable_entity.name) else: try: dao.Variable(name=name, internal_name=internal_name, description=description, is_repeating=(variable_type == u'repeating'), input_field=input_field, content=u'', parent=project.key).put() dao.touch_project_assignments(project) self.redirect("/project/variable?project_id={}".format( project.key.id())) return except Exception as e: error_msg = u'Adding variable failed: {}'.format(e) # Display the webpage self.render(project, error_msg)
def post(self): project = dao.get_project_by_id(self.request.get(u'_project_id')) if not dao.test_project_permissions(project, []): webapp2.abort(401) interview_name = self.request.get(u'_interview_name') index = self.request.get(u'_index') blobs_info = self.get_uploads(u'upload_file') if blobs_info: blob_info = blobs_info[0] name = self.request.get(u'_variable_name') variable_name = u'{}[{}]'.format(name, index) if index else name dao.set_variable_blob_key(project, variable_name, blob_info.key()) query_string_dict = {u'_project_id': project.key.id(), u'_interview_name': interview_name.encode(u'utf-8')} if index: query_string_dict[u'_index'] = index query_string = urllib.urlencode(query_string_dict) self.redirect("/project/conduct_interview?{}".format(query_string))
def post(self): project = dao.get_project_by_id(self.request.get(u'project_id')) if not dao.test_project_permissions(project, [dao.PROJECT_OWN, dao.PROJECT_MANAGE]): webapp2.abort(401) error_msg = None # Handle delete request if self.request.get(u'delete'): if not dao.test_project_permissions(project, [dao.PROJECT_OWN]): webapp2.abort(401) try: dao.delete_project(project) self.redirect("/") return except Exception as e: error_msg = u'Deleting project failed: {}'.format(e) # Handle update request if self.request.get(u'update'): current_user = users.get_current_user() current_email = current_user.email().lower() try: name = self.request.get(u'name').strip() if name != project.name: if not name: raise Exception(u'You must provide a name for your project') for test_project in dao.get_projects_by_name(name): if dao.test_email_is_project_owner(test_project, current_email): raise Exception(u'Sorry, you already own a different project named \"{}\"'.format(name)) project.name = name project.description = self.request.get(u'description') project.put() self.redirect("/project?project_id={}".format(project.key.id())) return except Exception as e: error_msg = u'Updating project failed: {}'.format(e) # Display the webpage self.render(project, error_msg)
def post(self): project = dao.get_project_by_id(self.request.get(u'project_id')) if not dao.test_project_permissions( project, [dao.PROJECT_OWN, dao.PROJECT_MANAGE]): webapp2.abort(401) variable_entity = dao.get_variable_by_id( project, self.request.get(u'variable_id')) error_msg = None if variable_entity else u'Unable to access specified variable' # Handle delete request if variable_entity and self.request.get(u'delete'): try: variable_entity.key.delete() dao.touch_project_assignments(project) self.redirect("/project/variable?project_id={}".format( project.key.id())) return except Exception as e: error_msg = u'Deleting variable from project failed: {}'.format( e) # Handle update request if variable_entity and self.request.get(u'update'): try: variable_entity.description = self.request.get(u'description') variable_entity.is_repeating = ( self.request.get(u'type') == u'repeating') variable_entity.input_field = self.request.get(u'input_field') variable_entity.put() dao.touch_project_assignments(project) self.redirect("/project/variable?project_id={}".format( project.key.id())) return except Exception as e: error_msg = u'Updating variable failed: {}'.format(e) # Display the webpage self.render(project, variable_entity, error_msg)
def get(self): project = dao.get_project_by_id(self.request.get(u'project_id')) if not dao.test_project_permissions( project, [dao.PROJECT_OWN, dao.PROJECT_MANAGE]): webapp2.abort(401) style_list = list() for style_entity in dao.get_styles(project): style = dict() style[u'id'] = style_entity.key.id() style[u'name'] = style_entity.name style[u'description'] = style_entity.description style[u'css'] = style_entity.css style_list.append(style) # Create template and template values, render the page jinja_template = ui.get_template(self, u'project/style/index.html') jinja_template_values = dao.get_standard_project_values(project) jinja_template_values[u'styles'] = style_list self.response.out.write(jinja_template.render(jinja_template_values))
def get(self): project = dao.get_project_by_id(self.request.get(u'project_id')) if not dao.test_project_permissions(project, [dao.PROJECT_OWN, dao.PROJECT_MANAGE]): webapp2.abort(401) document_list = list() for document_entity in dao.get_documents(project): document = dict() document[u'id'] = document_entity.key.id() document[u'key'] = document_entity.key document[u'name'] = document_entity.name document[u'description'] = document_entity.description document[u'style'] = document_entity.style_name document_list.append(document) # Create template and template values, render the page jinja_template = ui.get_template(self, u'project/document/index.html') jinja_template_values = dao.get_standard_project_values(project) jinja_template_values[u'documents'] = document_list self.response.out.write(jinja_template.render(jinja_template_values))