diff --git a/frappe/commands/site.py b/frappe/commands/site.py index b2707a8e15..c291780da3 100755 --- a/frappe/commands/site.py +++ b/frappe/commands/site.py @@ -110,9 +110,10 @@ def restore(context, sql_file_path, mariadb_root_username=None, mariadb_root_pas os.remove(private) @click.command('reinstall') +@click.option('--admin-password', help='Administrator Password for reinstalled site') @click.option('--yes', is_flag=True, default=False, help='Pass --yes to skip confirmation') @pass_context -def reinstall(context, yes=False): +def reinstall(context, admin_password=None, yes=False): "Reinstall site ie. wipe all data and start over" if not yes: @@ -134,7 +135,7 @@ def reinstall(context, yes=False): frappe.init(site=site) _new_site(frappe.conf.db_name, site, verbose=context.verbose, force=True, reinstall=True, - install_apps=installed) + install_apps=installed, admin_password=admin_password) @click.command('install-app') @click.argument('app') diff --git a/frappe/desk/doctype/desktop_icon/desktop_icon.py b/frappe/desk/doctype/desktop_icon/desktop_icon.py index 32ce5275e9..fb707df280 100644 --- a/frappe/desk/doctype/desktop_icon/desktop_icon.py +++ b/frappe/desk/doctype/desktop_icon/desktop_icon.py @@ -117,7 +117,7 @@ def add_user_icon(_doctype, label=None, link=None, type='link', standard=0): new_icon = frappe.get_doc({ 'doctype': 'Desktop Icon', 'label': label, - 'module_name': _doctype, + 'module_name': label, 'link': link, 'type': type, '_doctype': _doctype, diff --git a/frappe/model/db_query.py b/frappe/model/db_query.py index 16a0e8a3ca..984e4657b2 100644 --- a/frappe/model/db_query.py +++ b/frappe/model/db_query.py @@ -4,7 +4,7 @@ from __future__ import unicode_literals """build query for doclistview and return results""" -import frappe, json +import frappe, json, copy import frappe.defaults import frappe.share import frappe.permissions @@ -71,6 +71,7 @@ class DatabaseQuery(object): self.flags.ignore_permissions = ignore_permissions self.user = user or frappe.session.user self.update = update + self.list_settings_fields = copy.deepcopy(self.fields) #self.debug = True if query: @@ -494,7 +495,7 @@ class DatabaseQuery(object): list_settings['order_by'] = self.order_by if self.save_list_settings_fields: - list_settings['fields'] = self.fields + list_settings['fields'] = self.list_settings_fields update_list_settings(self.doctype, list_settings) diff --git a/frappe/patches.txt b/frappe/patches.txt index 892fc5bcc2..29a53f9b63 100644 --- a/frappe/patches.txt +++ b/frappe/patches.txt @@ -137,4 +137,6 @@ frappe.patches.v7_0.replace_upgrade_link_limit frappe.patches.v7_0.set_email_group frappe.patches.v7_1.setup_integration_services frappe.patches.v7_1.rename_chinese_language_codes -execute:frappe.core.doctype.language.language.update_language_names() \ No newline at end of file +execute:frappe.core.doctype.language.language.update_language_names() +execute:frappe.db.set_value("Print Settings", "Print Settings", "add_draft_heading", 1) +frappe.patches.v7_0.cleanup_list_settings \ No newline at end of file diff --git a/frappe/patches/v7_0/cleanup_list_settings.py b/frappe/patches/v7_0/cleanup_list_settings.py new file mode 100644 index 0000000000..ef12def852 --- /dev/null +++ b/frappe/patches/v7_0/cleanup_list_settings.py @@ -0,0 +1,18 @@ +from frappe.installer import create_list_settings_table +from frappe.model.utils.list_settings import update_list_settings +import frappe, json + +def execute(): + list_settings = frappe.db.sql("select user, doctype, data from __ListSettings", as_dict=1) + for ls in list_settings: + if ls and ls.data: + data = json.loads(ls.data) + fields = data["fields"] + for field in fields: + if "name as" in field: + fields.remove(field) + data["fields"] = fields + + frappe.db.sql("update __ListSettings set data = %s where user=%s and doctype=%s", + (json.dumps(data), ls.user, ls.doctype)) + \ No newline at end of file diff --git a/frappe/print/doctype/print_settings/print_settings.json b/frappe/print/doctype/print_settings/print_settings.json index 46bff36a66..d6d31a62bd 100644 --- a/frappe/print/doctype/print_settings/print_settings.json +++ b/frappe/print/doctype/print_settings/print_settings.json @@ -8,11 +8,13 @@ "docstatus": 0, "doctype": "DocType", "document_type": "System", + "editable_grid": 0, "fields": [ { "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "pdf_settings", "fieldtype": "Section Break", "hidden": 0, @@ -37,6 +39,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "default": "1", "description": "Send Email Print Attachments as PDF (Recommended)", "fieldname": "send_print_as_pdf", @@ -63,6 +66,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "default": "1", "fieldname": "repeat_header_footer", "fieldtype": "Check", @@ -89,6 +93,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "column_break_4", "fieldtype": "Column Break", "hidden": 0, @@ -113,6 +118,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "default": "A4", "fieldname": "pdf_page_size", "fieldtype": "Select", @@ -139,6 +145,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "view_link_in_email", "fieldtype": "Section Break", "hidden": 0, @@ -163,6 +170,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "default": "1", "description": "", "fieldname": "attach_view_link", @@ -190,6 +198,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "print_style_section", "fieldtype": "Section Break", "hidden": 0, @@ -214,6 +223,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "default": "Modern", "fieldname": "print_style", "fieldtype": "Select", @@ -240,6 +250,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "default": "Default", "fieldname": "font", "fieldtype": "Select", @@ -267,6 +278,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "description": "In points. Default is 9.", "fieldname": "font_size", "fieldtype": "Float", @@ -292,6 +304,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "column_break_6", "fieldtype": "Column Break", "hidden": 0, @@ -315,6 +328,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "default": "1", "description": "", "fieldname": "with_letterhead", @@ -341,6 +355,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "default": "1", "description": "", "fieldname": "allow_print_for_draft", @@ -368,6 +383,34 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, + "default": "1", + "fieldname": "add_draft_heading", + "fieldtype": "Check", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Always add \"Draft\" Heading for printing draft documents", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, "description": "", "fieldname": "allow_print_for_cancelled", "fieldtype": "Check", @@ -394,6 +437,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "section_break_8", "fieldtype": "Section Break", "hidden": 0, @@ -417,6 +461,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "print_style_preview", "fieldtype": "HTML", "hidden": 0, @@ -449,7 +494,7 @@ "issingle": 1, "istable": 0, "max_attachments": 0, - "modified": "2016-06-22 11:44:01.940693", + "modified": "2016-09-12 03:19:17.867459", "modified_by": "Administrator", "module": "Print", "name": "Print Settings", @@ -470,8 +515,6 @@ "print": 0, "read": 1, "report": 0, - "restrict": 0, - "restricted": 0, "role": "System Manager", "set_user_permissions": 0, "share": 1, diff --git a/frappe/sessions.py b/frappe/sessions.py index f559129548..3dc3983772 100644 --- a/frappe/sessions.py +++ b/frappe/sessions.py @@ -57,13 +57,15 @@ def clear_sessions(user=None, keep_current=False, device=None): if not device: device = frappe.session.data.device or "desktop" - simultaneous_sessions = frappe.db.get_value('User', user, 'simultaneous_sessions') or 1 + limit = 0 + if user == frappe.session.user: + simultaneous_sessions = frappe.db.get_value('User', user, 'simultaneous_sessions') or 1 + limit = simultaneous_sessions - 1 condition = '' if keep_current: condition = ' and sid != "{0}"'.format(frappe.session.sid) - limit = simultaneous_sessions - 1 for i, sid in enumerate(frappe.db.sql_list("""select sid from tabSessions where user=%s and device=%s {condition} diff --git a/frappe/templates/print_formats/standard.html b/frappe/templates/print_formats/standard.html index 81853f8f99..5be677b9ee 100644 --- a/frappe/templates/print_formats/standard.html +++ b/frappe/templates/print_formats/standard.html @@ -4,7 +4,7 @@ {% for page in layout %}
- {{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer) }} + {{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}
{% if print_settings.repeat_header_footer %} diff --git a/frappe/templates/print_formats/standard_macros.html b/frappe/templates/print_formats/standard_macros.html index cd1c3b8ca8..72597a882c 100644 --- a/frappe/templates/print_formats/standard_macros.html +++ b/frappe/templates/print_formats/standard_macros.html @@ -110,7 +110,7 @@ data-fieldname="{{ df.fieldname }}" data-fieldtype="{{ df.fieldtype }}" {%- endif -%} {% endmacro %} -{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer) -%} +{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None) -%} {% if letter_head and not no_letterhead %}
{{ letter_head }}
{% endif %} @@ -125,7 +125,7 @@ data-fieldname="{{ df.fieldname }}" data-fieldtype="{{ df.fieldtype }}"
{% endif %} - {%- if doc.meta.is_submittable and doc.docstatus==0-%} + {%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}

{{ _("DRAFT") }}

diff --git a/frappe/utils/oauth.py b/frappe/utils/oauth.py index ca0d72c12d..cbff7aaeab 100644 --- a/frappe/utils/oauth.py +++ b/frappe/utils/oauth.py @@ -210,7 +210,8 @@ def login_oauth_user(data=None, provider=None, state=None, email_id=None, key=No return try: - update_oauth_user(user, data, provider) + if update_oauth_user(user, data, provider) is False: + return except SignupDisabledError: return frappe.respond_as_web_page("Signup is Disabled", "Sorry. Signup from Website is disabled.", @@ -260,6 +261,9 @@ def update_oauth_user(user, data, provider): else: user = frappe.get_doc("User", user) + if not user.enabled: + frappe.respond_as_web_page(_('Not Allowed'), _('User {0} is disabled').format(user.email)) + return False if provider=="facebook" and not user.get("fb_userid"): save = True