def build_as_list(self, context): '''Web form is a list, show render as list.html''' from frappe.www.list import get_context as get_list_context # set some flags to make list.py/list.html happy frappe.form_dict.web_form_name = self.name frappe.form_dict.doctype = self.doc_type frappe.flags.web_form = self self.update_list_context(context) get_list_context(context) context.is_list = True
def test_get_context_hook_of_webform(self): create_custom_doctype() create_webform() # check context for apps without any hook context_list = get_list_context("", "Custom Doctype", "test-webform") self.assertFalse(context_list) # create a hook to get webform_context set_webform_hook( "webform_list_context", "frappe.www._test._test_webform.webform_list_context", ) # check context for apps with hook context_list = get_list_context("", "Custom Doctype", "test-webform") self.assertTrue(context_list)
def get_context(self, context): context.show_sidebar = True from frappe.www.list import get_context as get_list_context frappe.form_dict.is_web_form = 1 logged_in = frappe.session.user != "Guest" args, delimeter = make_route_string(frappe.form_dict) context.args = args context.delimeter = delimeter # check permissions if not logged_in and frappe.form_dict.name: frappe.throw( _("You need to be logged in to access this {0}.").format( self.doc_type), frappe.PermissionError) if frappe.form_dict.name and not has_web_form_permission( self.doc_type, frappe.form_dict.name): frappe.throw( _("You don't have the permissions to access this document"), frappe.PermissionError) if self.is_standard: self.use_meta_fields() if self.login_required and logged_in: if self.allow_edit: if self.allow_multiple: if not frappe.form_dict.name and not frappe.form_dict.new: frappe.form_dict.doctype = self.doc_type get_list_context(context) context.is_list = True else: name = frappe.db.get_value(self.doc_type, {"owner": frappe.session.user}, "name") if name: frappe.form_dict.name = name else: # only a single doc allowed and no existing doc, hence new frappe.form_dict.new = 1 # always render new form if login is not required or doesn't allow editing existing ones if not self.login_required or not self.allow_edit: frappe.form_dict.new = 1 if frappe.form_dict.name or frappe.form_dict.new: context.layout = self.get_layout() context.parents = [{"route": self.route, "title": self.title}] if frappe.form_dict.name: context.doc = frappe.get_doc(self.doc_type, frappe.form_dict.name) context.title = context.doc.get(context.doc.meta.get_title_field()) context.doc.add_seen() context.reference_doctype = context.doc.doctype context.reference_name = context.doc.name if self.allow_comments and frappe.form_dict.name: context.comment_list = get_comment_list(context.doc.doctype, context.doc.name) context.parents = self.get_parents(context) context.types = [f.fieldtype for f in self.web_form_fields] if context.success_message: context.success_message = context.success_message.replace( "\n", "<br>").replace("'", "\'") self.add_custom_context_and_script(context)
def get_context(self, context): context.show_sidebar=True from frappe.www.list import get_context as get_list_context frappe.form_dict.is_web_form = 1 logged_in = frappe.session.user != "Guest" args, delimeter = make_route_string(frappe.form_dict) context.args = args context.delimeter = delimeter # check permissions if not logged_in and frappe.form_dict.name: frappe.throw(_("You need to be logged in to access this {0}.").format(self.doc_type), frappe.PermissionError) if frappe.form_dict.name and not has_web_form_permission(self.doc_type, frappe.form_dict.name): frappe.throw(_("You don't have the permissions to access this document"), frappe.PermissionError) if self.is_standard: self.use_meta_fields() if self.login_required and logged_in: if self.allow_edit: if self.allow_multiple: if not frappe.form_dict.name and not frappe.form_dict.new: frappe.form_dict.doctype = self.doc_type get_list_context(context) context.is_list = True else: name = frappe.db.get_value(self.doc_type, {"owner": frappe.session.user}, "name") if name: frappe.form_dict.name = name else: # only a single doc allowed and no existing doc, hence new frappe.form_dict.new = 1 # always render new form if login is not required or doesn't allow editing existing ones if not self.login_required or not self.allow_edit: frappe.form_dict.new = 1 if frappe.form_dict.name or frappe.form_dict.new: context.layout = self.get_layout() context.parents = [{"route": self.route, "title": self.title }] if frappe.form_dict.name: context.doc = frappe.get_doc(self.doc_type, frappe.form_dict.name) context.title = context.doc.get(context.doc.meta.get_title_field()) context.doc.add_seen() context.reference_doctype = context.doc.doctype context.reference_name = context.doc.name if self.allow_comments and frappe.form_dict.name: context.comment_list = get_comment_list(context.doc.doctype, context.doc.name) context.parents = self.get_parents(context) context.types = [f.fieldtype for f in self.web_form_fields] if context.success_message: context.success_message = context.success_message.replace("\n", "<br>").replace("'", "\'") self.add_custom_context_and_script(context)