diff --git a/frappe/boot.py b/frappe/boot.py index 0e4cce7381..483cfd3127 100644 --- a/frappe/boot.py +++ b/frappe/boot.py @@ -146,7 +146,8 @@ def add_home_page(bootinfo, docs): try: page = frappe.desk.desk_page.get(home_page) except (frappe.DoesNotExistError, frappe.PermissionError): - frappe.message_log.pop() + if frappe.message_log: + frappe.message_log.pop() page = frappe.desk.desk_page.get('desktop') bootinfo['home_page'] = page.name diff --git a/frappe/custom/doctype/customize_form/customize_form.py b/frappe/custom/doctype/customize_form/customize_form.py index 85b7bc9e00..6551a61c7f 100644 --- a/frappe/custom/doctype/customize_form/customize_form.py +++ b/frappe/custom/doctype/customize_form/customize_form.py @@ -13,48 +13,48 @@ from frappe.model.document import Document from frappe.model import no_value_fields from frappe.core.doctype.doctype.doctype import validate_fields_for_doctype +doctype_properties = { + 'search_fields': 'Data', + 'title_field': 'Data', + 'sort_field': 'Data', + 'sort_order': 'Data', + 'default_print_format': 'Data', + 'read_only_onload': 'Check', + 'allow_copy': 'Check', + 'max_attachments': 'Int' +} + +docfield_properties = { + 'idx': 'Int', + 'label': 'Data', + 'fieldtype': 'Select', + 'options': 'Text', + 'permlevel': 'Int', + 'width': 'Data', + 'print_width': 'Data', + 'reqd': 'Check', + 'unique': 'Check', + 'ignore_user_permissions': 'Check', + 'in_filter': 'Check', + 'in_list_view': 'Check', + 'hidden': 'Check', + 'collapsible': 'Check', + 'collapsible_depends_on': 'Data', + 'print_hide': 'Check', + 'report_hide': 'Check', + 'allow_on_submit': 'Check', + 'depends_on': 'Data', + 'description': 'Text', + 'default': 'Text', + 'precision': 'Select', + 'read_only': 'Check', + 'length': 'Int' +} + +allowed_fieldtype_change = (('Currency', 'Float', 'Percent'), ('Small Text', 'Data'), + ('Text', 'Text Editor', 'Code'), ('Data', 'Select'), ('Text', 'Small Text')) + class CustomizeForm(Document): - doctype_properties = { - 'search_fields': 'Data', - 'title_field': 'Data', - 'sort_field': 'Data', - 'sort_order': 'Data', - 'default_print_format': 'Data', - 'read_only_onload': 'Check', - 'allow_copy': 'Check', - 'max_attachments': 'Int' - } - - docfield_properties = { - 'idx': 'Int', - 'label': 'Data', - 'fieldtype': 'Select', - 'options': 'Text', - 'permlevel': 'Int', - 'width': 'Data', - 'print_width': 'Data', - 'reqd': 'Check', - 'unique': 'Check', - 'ignore_user_permissions': 'Check', - 'in_filter': 'Check', - 'in_list_view': 'Check', - 'hidden': 'Check', - 'collapsible': 'Check', - 'collapsible_depends_on': 'Data', - 'print_hide': 'Check', - 'report_hide': 'Check', - 'allow_on_submit': 'Check', - 'depends_on': 'Data', - 'description': 'Text', - 'default': 'Text', - 'precision': 'Select', - 'read_only': 'Check', - 'length': 'Int' - } - - allowed_fieldtype_change = (('Currency', 'Float', 'Percent'), ('Small Text', 'Data'), - ('Text', 'Text Editor', 'Code'), ('Data', 'Select'), ('Text', 'Small Text')) - def on_update(self): frappe.db.sql("delete from tabSingles where doctype='Customize Form'") frappe.db.sql("delete from `tabCustomize Form Field`") @@ -67,12 +67,12 @@ class CustomizeForm(Document): meta = frappe.get_meta(self.doc_type) # doctype properties - for property in self.doctype_properties: + for property in doctype_properties: self.set(property, meta.get(property)) for d in meta.get("fields"): new_d = {"fieldname": d.fieldname, "is_custom_field": d.get("is_custom_field"), "name": d.name} - for property in self.docfield_properties: + for property in docfield_properties: new_d[property] = d.get(property) self.append("fields", new_d) @@ -106,10 +106,10 @@ class CustomizeForm(Document): def set_property_setters(self): meta = frappe.get_meta(self.doc_type) # doctype property setters - for property in self.doctype_properties: + for property in doctype_properties: if self.get(property) != meta.get(property): self.make_property_setter(property=property, value=self.get(property), - property_type=self.doctype_properties[property]) + property_type=doctype_properties[property]) update_db = False for df in self.get("fields"): @@ -121,7 +121,7 @@ class CustomizeForm(Document): if not meta_df or meta_df[0].get("is_custom_field"): continue - for property in self.docfield_properties: + for property in docfield_properties: if property != "idx" and df.get(property) != meta_df[0].get(property): if property == "fieldtype": self.validate_fieldtype_change(df, meta_df[0].get(property), df.get(property)) @@ -150,7 +150,7 @@ class CustomizeForm(Document): continue self.make_property_setter(property=property, value=df.get(property), - property_type=self.docfield_properties[property], fieldname=df.fieldname) + property_type=docfield_properties[property], fieldname=df.fieldname) if update_db: from frappe.model.db_schema import updatedb @@ -168,7 +168,7 @@ class CustomizeForm(Document): def add_custom_field(self, df): d = frappe.new_doc("Custom Field") d.dt = self.doc_type - for property in self.docfield_properties: + for property in docfield_properties: d.set(property, df.get(property)) d.insert() df.fieldname = d.fieldname @@ -181,7 +181,7 @@ class CustomizeForm(Document): custom_field = frappe.get_doc("Custom Field", meta_df[0].name) changed = False - for property in self.docfield_properties: + for property in docfield_properties: if df.get(property) != custom_field.get(property): if property == "fieldtype": self.validate_fieldtype_change(df, meta_df[0].get(property), df.get(property)) @@ -260,7 +260,7 @@ class CustomizeForm(Document): def validate_fieldtype_change(self, df, old_value, new_value): allowed = False - for allowed_changes in self.allowed_fieldtype_change: + for allowed_changes in allowed_fieldtype_change: if (old_value in allowed_changes and new_value in allowed_changes): allowed = True if not allowed: diff --git a/frappe/hooks.py b/frappe/hooks.py index 37c7b1575c..8d3625eace 100644 --- a/frappe/hooks.py +++ b/frappe/hooks.py @@ -163,7 +163,8 @@ scheduler_events = { default_background = "/assets/frappe/images/ui/into-the-dawn.jpg" get_translated_dict = { - ("doctype", "System Settings"): "frappe.geo.country_info.get_translated_dict" + ("doctype", "System Settings"): "frappe.geo.country_info.get_translated_dict", + ("page", "setup-wizard"): "frappe.geo.country_info.get_translated_dict" } sounds = [ @@ -176,7 +177,3 @@ sounds = [ # {"name": "alert", "src": "/assets/frappe/sounds/alert.mp3"}, # {"name": "chime", "src": "/assets/frappe/sounds/chime.mp3"}, ] - -get_translated_dict = { - ("page", "setup-wizard"): "frappe.geo.country_info.get_translated_dict", -} diff --git a/frappe/templates/generators/web_form.html b/frappe/templates/generators/web_form.html index e582d128e7..ab60acdf5d 100644 --- a/frappe/templates/generators/web_form.html +++ b/frappe/templates/generators/web_form.html @@ -44,8 +44,8 @@ {%- macro properties(field) %} name="{{ field.fieldname }}" id="{{ field.fieldname }}" - {% if field.placeholder %}placeholder="{{ field.placeholder }}"{% endif %} - data-label="{{ field.label }}" data-fieldtype="{{ field.fieldtype }}" + {% if field.placeholder -%} placeholder="{{ _(field.placeholder) }}" {%- endif %} + data-label="{{ _(field.label) }}" data-fieldtype="{{ field.fieldtype }}" {{ (field.reqd and field.fieldtype!="Attach") and "required" or "" }} {{ field.read_only and "disabled" or "" }} {% endmacro -%} @@ -54,19 +54,19 @@ {%- macro help(field) -%} {% if field.description -%} - {{ field.description }} + {{ _(field.description) }} {%- endif -%} {%- endmacro %} {% macro label(field) %} + {{ _(field.label) }} {% endmacro %} {% macro render_field(field) %} {% if field.hidden %} + name="{{ field.fieldname }}" {% if field.default -%} value="{{ field.default }}" {%- endif %}> {% elif field.fieldtype == "HTML" and field.options %}
{{ field.options }} @@ -122,7 +122,7 @@ - {{ field.label }} + {{ _(field.label) }} {{ help(field) }}
diff --git a/frappe/website/doctype/web_form/web_form.py b/frappe/website/doctype/web_form/web_form.py index d023a7ee01..789ad518ab 100644 --- a/frappe/website/doctype/web_form/web_form.py +++ b/frappe/website/doctype/web_form/web_form.py @@ -8,6 +8,7 @@ from frappe import _ from frappe.utils.file_manager import save_file, remove_file_by_url from frappe.website.utils import get_comment_list from frappe.model import default_fields +from frappe.custom.doctype.customize_form.customize_form import docfield_properties class WebForm(WebsiteGenerator): website = frappe._dict( @@ -28,20 +29,34 @@ class WebForm(WebsiteGenerator): def use_meta_fields(self): meta = frappe.get_meta(self.doc_type) - # original_web_form_fields = frappe.form_dict((df.fieldname, df) for df in self.web_form_fields) - self.web_form_fields = meta.fields for df in self.web_form_fields: - df.doctype = "Web Form Field" - df.parentfield = "web_form_fields" - df.parenttype = self.doctype - df.parent = self.name + meta_df = meta.get_field(df.fieldname) - if df.read_only or df.fieldtype=="Read Only": - df.hidden = 1 + if not meta_df: + continue - elif df.fieldtype not in ("Attach", "Check", "Data", "Date", "Datetime", "HTML", "Select", "Text", "Section Break", "Column Break"): - df.hidden = 1 + for prop in docfield_properties: + if df.fieldtype==meta_df.fieldtype and prop != "idx": + df.set(prop, meta_df.get(prop)) + + if df.fieldtype == "Link": + try: + options = [d.name for d in frappe.get_list(df.options)] + df.fieldtype = "Select" + + if len(options)==1: + df.options = options[0] + df.default = options[0] + df.hidden = 1 + + else: + df.options = "\n".join([""] + options) + + except frappe.PermissionError: + df.hidden = 1 + + # TODO translate options of Select fields like Country def get_context(self, context): from frappe.templates.pages.list import get_context as get_list_context diff --git a/frappe/website/doctype/web_form_field/web_form_field.json b/frappe/website/doctype/web_form_field/web_form_field.json index b50ddcb4d2..31720ad5a0 100644 --- a/frappe/website/doctype/web_form_field/web_form_field.json +++ b/frappe/website/doctype/web_form_field/web_form_field.json @@ -43,7 +43,7 @@ "label": "Fieldtype", "length": 0, "no_copy": 0, - "options": "Attach\nCheck\nData\nDate\nDatetime\nHTML\nSelect\nText\nSection Break\nColumn Break", + "options": "Attach\nCheck\nData\nDate\nDatetime\nHTML\nLink\nSelect\nText\nSection Break\nColumn Break", "permlevel": 0, "print_hide": 0, "read_only": 0, @@ -273,13 +273,14 @@ ], "hide_heading": 0, "hide_toolbar": 0, + "idx": 0, "in_create": 0, "in_dialog": 0, "is_submittable": 0, "issingle": 0, "istable": 1, "max_attachments": 0, - "modified": "2015-11-16 06:30:00.409753", + "modified": "2015-11-23 07:29:22.198324", "modified_by": "Administrator", "module": "Website", "name": "Web Form Field",