浏览代码

Merge branch 'hotfix'

version-14
Nabin Hait 8 年前
父节点
当前提交
6c41ae3fd9
共有 11 个文件被更改,包括 87 次插入16 次删除
  1. +1
    -1
      frappe/__init__.py
  2. +3
    -2
      frappe/commands/site.py
  3. +1
    -1
      frappe/desk/doctype/desktop_icon/desktop_icon.py
  4. +3
    -2
      frappe/model/db_query.py
  5. +3
    -1
      frappe/patches.txt
  6. +18
    -0
      frappe/patches/v7_0/cleanup_list_settings.py
  7. +46
    -3
      frappe/print/doctype/print_settings/print_settings.json
  8. +4
    -2
      frappe/sessions.py
  9. +1
    -1
      frappe/templates/print_formats/standard.html
  10. +2
    -2
      frappe/templates/print_formats/standard_macros.html
  11. +5
    -1
      frappe/utils/oauth.py

+ 1
- 1
frappe/__init__.py 查看文件

@@ -13,7 +13,7 @@ import os, sys, importlib, inspect, json
from .exceptions import * from .exceptions import *
from .utils.jinja import get_jenv, get_template, render_template from .utils.jinja import get_jenv, get_template, render_template


__version__ = "7.0.30"
__version__ = "7.0.31"


local = Local() local = Local()




+ 3
- 2
frappe/commands/site.py 查看文件

@@ -110,9 +110,10 @@ def restore(context, sql_file_path, mariadb_root_username=None, mariadb_root_pas
os.remove(private) os.remove(private)


@click.command('reinstall') @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') @click.option('--yes', is_flag=True, default=False, help='Pass --yes to skip confirmation')
@pass_context @pass_context
def reinstall(context, yes=False):
def reinstall(context, admin_password=None, yes=False):
"Reinstall site ie. wipe all data and start over" "Reinstall site ie. wipe all data and start over"


if not yes: if not yes:
@@ -134,7 +135,7 @@ def reinstall(context, yes=False):


frappe.init(site=site) frappe.init(site=site)
_new_site(frappe.conf.db_name, site, verbose=context.verbose, force=True, reinstall=True, _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.command('install-app')
@click.argument('app') @click.argument('app')


+ 1
- 1
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({ new_icon = frappe.get_doc({
'doctype': 'Desktop Icon', 'doctype': 'Desktop Icon',
'label': label, 'label': label,
'module_name': _doctype,
'module_name': label,
'link': link, 'link': link,
'type': type, 'type': type,
'_doctype': _doctype, '_doctype': _doctype,


+ 3
- 2
frappe/model/db_query.py 查看文件

@@ -4,7 +4,7 @@
from __future__ import unicode_literals from __future__ import unicode_literals
"""build query for doclistview and return results""" """build query for doclistview and return results"""


import frappe, json
import frappe, json, copy
import frappe.defaults import frappe.defaults
import frappe.share import frappe.share
import frappe.permissions import frappe.permissions
@@ -71,6 +71,7 @@ class DatabaseQuery(object):
self.flags.ignore_permissions = ignore_permissions self.flags.ignore_permissions = ignore_permissions
self.user = user or frappe.session.user self.user = user or frappe.session.user
self.update = update self.update = update
self.list_settings_fields = copy.deepcopy(self.fields)
#self.debug = True #self.debug = True


if query: if query:
@@ -498,7 +499,7 @@ class DatabaseQuery(object):
list_settings['order_by'] = self.order_by list_settings['order_by'] = self.order_by


if self.save_list_settings_fields: 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) update_list_settings(self.doctype, list_settings)



+ 3
- 1
frappe/patches.txt 查看文件

@@ -135,4 +135,6 @@ execute:frappe.db.sql('''delete from `tabSingles` where doctype="Email Settings"
execute:frappe.db.sql("delete from `tabWeb Page` where ifnull(template_path, '')!=''") execute:frappe.db.sql("delete from `tabWeb Page` where ifnull(template_path, '')!=''")
frappe.patches.v7_0.rename_newsletter_list_to_email_group frappe.patches.v7_0.rename_newsletter_list_to_email_group
frappe.patches.v7_0.replace_upgrade_link_limit frappe.patches.v7_0.replace_upgrade_link_limit
frappe.patches.v7_0.set_email_group
frappe.patches.v7_0.set_email_group
execute:frappe.db.set_value("Print Settings", "Print Settings", "add_draft_heading", 1)
frappe.patches.v7_0.cleanup_list_settings

+ 18
- 0
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))

+ 46
- 3
frappe/print/doctype/print_settings/print_settings.json 查看文件

@@ -8,11 +8,13 @@
"docstatus": 0, "docstatus": 0,
"doctype": "DocType", "doctype": "DocType",
"document_type": "System", "document_type": "System",
"editable_grid": 0,
"fields": [ "fields": [
{ {
"allow_on_submit": 0, "allow_on_submit": 0,
"bold": 0, "bold": 0,
"collapsible": 0, "collapsible": 0,
"columns": 0,
"fieldname": "pdf_settings", "fieldname": "pdf_settings",
"fieldtype": "Section Break", "fieldtype": "Section Break",
"hidden": 0, "hidden": 0,
@@ -37,6 +39,7 @@
"allow_on_submit": 0, "allow_on_submit": 0,
"bold": 0, "bold": 0,
"collapsible": 0, "collapsible": 0,
"columns": 0,
"default": "1", "default": "1",
"description": "Send Email Print Attachments as PDF (Recommended)", "description": "Send Email Print Attachments as PDF (Recommended)",
"fieldname": "send_print_as_pdf", "fieldname": "send_print_as_pdf",
@@ -63,6 +66,7 @@
"allow_on_submit": 0, "allow_on_submit": 0,
"bold": 0, "bold": 0,
"collapsible": 0, "collapsible": 0,
"columns": 0,
"default": "1", "default": "1",
"fieldname": "repeat_header_footer", "fieldname": "repeat_header_footer",
"fieldtype": "Check", "fieldtype": "Check",
@@ -89,6 +93,7 @@
"allow_on_submit": 0, "allow_on_submit": 0,
"bold": 0, "bold": 0,
"collapsible": 0, "collapsible": 0,
"columns": 0,
"fieldname": "column_break_4", "fieldname": "column_break_4",
"fieldtype": "Column Break", "fieldtype": "Column Break",
"hidden": 0, "hidden": 0,
@@ -113,6 +118,7 @@
"allow_on_submit": 0, "allow_on_submit": 0,
"bold": 0, "bold": 0,
"collapsible": 0, "collapsible": 0,
"columns": 0,
"default": "A4", "default": "A4",
"fieldname": "pdf_page_size", "fieldname": "pdf_page_size",
"fieldtype": "Select", "fieldtype": "Select",
@@ -139,6 +145,7 @@
"allow_on_submit": 0, "allow_on_submit": 0,
"bold": 0, "bold": 0,
"collapsible": 0, "collapsible": 0,
"columns": 0,
"fieldname": "view_link_in_email", "fieldname": "view_link_in_email",
"fieldtype": "Section Break", "fieldtype": "Section Break",
"hidden": 0, "hidden": 0,
@@ -163,6 +170,7 @@
"allow_on_submit": 0, "allow_on_submit": 0,
"bold": 0, "bold": 0,
"collapsible": 0, "collapsible": 0,
"columns": 0,
"default": "1", "default": "1",
"description": "", "description": "",
"fieldname": "attach_view_link", "fieldname": "attach_view_link",
@@ -190,6 +198,7 @@
"allow_on_submit": 0, "allow_on_submit": 0,
"bold": 0, "bold": 0,
"collapsible": 0, "collapsible": 0,
"columns": 0,
"fieldname": "print_style_section", "fieldname": "print_style_section",
"fieldtype": "Section Break", "fieldtype": "Section Break",
"hidden": 0, "hidden": 0,
@@ -214,6 +223,7 @@
"allow_on_submit": 0, "allow_on_submit": 0,
"bold": 0, "bold": 0,
"collapsible": 0, "collapsible": 0,
"columns": 0,
"default": "Modern", "default": "Modern",
"fieldname": "print_style", "fieldname": "print_style",
"fieldtype": "Select", "fieldtype": "Select",
@@ -240,6 +250,7 @@
"allow_on_submit": 0, "allow_on_submit": 0,
"bold": 0, "bold": 0,
"collapsible": 0, "collapsible": 0,
"columns": 0,
"default": "Default", "default": "Default",
"fieldname": "font", "fieldname": "font",
"fieldtype": "Select", "fieldtype": "Select",
@@ -267,6 +278,7 @@
"allow_on_submit": 0, "allow_on_submit": 0,
"bold": 0, "bold": 0,
"collapsible": 0, "collapsible": 0,
"columns": 0,
"description": "In points. Default is 9.", "description": "In points. Default is 9.",
"fieldname": "font_size", "fieldname": "font_size",
"fieldtype": "Float", "fieldtype": "Float",
@@ -292,6 +304,7 @@
"allow_on_submit": 0, "allow_on_submit": 0,
"bold": 0, "bold": 0,
"collapsible": 0, "collapsible": 0,
"columns": 0,
"fieldname": "column_break_6", "fieldname": "column_break_6",
"fieldtype": "Column Break", "fieldtype": "Column Break",
"hidden": 0, "hidden": 0,
@@ -315,6 +328,7 @@
"allow_on_submit": 0, "allow_on_submit": 0,
"bold": 0, "bold": 0,
"collapsible": 0, "collapsible": 0,
"columns": 0,
"default": "1", "default": "1",
"description": "", "description": "",
"fieldname": "with_letterhead", "fieldname": "with_letterhead",
@@ -341,6 +355,7 @@
"allow_on_submit": 0, "allow_on_submit": 0,
"bold": 0, "bold": 0,
"collapsible": 0, "collapsible": 0,
"columns": 0,
"default": "1", "default": "1",
"description": "", "description": "",
"fieldname": "allow_print_for_draft", "fieldname": "allow_print_for_draft",
@@ -368,6 +383,34 @@
"allow_on_submit": 0, "allow_on_submit": 0,
"bold": 0, "bold": 0,
"collapsible": 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": "", "description": "",
"fieldname": "allow_print_for_cancelled", "fieldname": "allow_print_for_cancelled",
"fieldtype": "Check", "fieldtype": "Check",
@@ -394,6 +437,7 @@
"allow_on_submit": 0, "allow_on_submit": 0,
"bold": 0, "bold": 0,
"collapsible": 0, "collapsible": 0,
"columns": 0,
"fieldname": "section_break_8", "fieldname": "section_break_8",
"fieldtype": "Section Break", "fieldtype": "Section Break",
"hidden": 0, "hidden": 0,
@@ -417,6 +461,7 @@
"allow_on_submit": 0, "allow_on_submit": 0,
"bold": 0, "bold": 0,
"collapsible": 0, "collapsible": 0,
"columns": 0,
"fieldname": "print_style_preview", "fieldname": "print_style_preview",
"fieldtype": "HTML", "fieldtype": "HTML",
"hidden": 0, "hidden": 0,
@@ -449,7 +494,7 @@
"issingle": 1, "issingle": 1,
"istable": 0, "istable": 0,
"max_attachments": 0, "max_attachments": 0,
"modified": "2016-06-22 11:44:01.940693",
"modified": "2016-09-12 03:19:17.867459",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "Print", "module": "Print",
"name": "Print Settings", "name": "Print Settings",
@@ -470,8 +515,6 @@
"print": 0, "print": 0,
"read": 1, "read": 1,
"report": 0, "report": 0,
"restrict": 0,
"restricted": 0,
"role": "System Manager", "role": "System Manager",
"set_user_permissions": 0, "set_user_permissions": 0,
"share": 1, "share": 1,


+ 4
- 2
frappe/sessions.py 查看文件

@@ -57,13 +57,15 @@ def clear_sessions(user=None, keep_current=False, device=None):
if not device: if not device:
device = frappe.session.data.device or "desktop" 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 = '' condition = ''
if keep_current: if keep_current:
condition = ' and sid != "{0}"'.format(frappe.session.sid) 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 for i, sid in enumerate(frappe.db.sql_list("""select sid from tabSessions
where user=%s and device=%s {condition} where user=%s and device=%s {condition}


+ 1
- 1
frappe/templates/print_formats/standard.html 查看文件

@@ -4,7 +4,7 @@
{% for page in layout %} {% for page in layout %}
<div class="page-break"> <div class="page-break">
<div {% if print_settings.repeat_header_footer %} id="header-html" class="hidden-pdf" {% endif %}> <div {% if print_settings.repeat_header_footer %} id="header-html" class="hidden-pdf" {% endif %}>
{{ 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) }}
</div> </div>


{% if print_settings.repeat_header_footer %} {% if print_settings.repeat_header_footer %}


+ 2
- 2
frappe/templates/print_formats/standard_macros.html 查看文件

@@ -110,7 +110,7 @@ data-fieldname="{{ df.fieldname }}" data-fieldtype="{{ df.fieldtype }}"
{%- endif -%} {%- endif -%}
{% endmacro %} {% 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 %} {% if letter_head and not no_letterhead %}
<div class="letter-head">{{ letter_head }}</div> <div class="letter-head">{{ letter_head }}</div>
{% endif %} {% endif %}
@@ -125,7 +125,7 @@ data-fieldname="{{ df.fieldname }}" data-fieldtype="{{ df.fieldtype }}"
</h2> </h2>
</div> </div>
{% endif %} {% 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) -%}
<div class="text-center" document-status="draft"> <div class="text-center" document-status="draft">
<h4 style="margin: 0px;">{{ _("DRAFT") }}</h4> <h4 style="margin: 0px;">{{ _("DRAFT") }}</h4>
</div> </div>


+ 5
- 1
frappe/utils/oauth.py 查看文件

@@ -210,7 +210,8 @@ def login_oauth_user(data=None, provider=None, state=None, email_id=None, key=No
return return


try: try:
update_oauth_user(user, data, provider)
if update_oauth_user(user, data, provider) is False:
return


except SignupDisabledError: except SignupDisabledError:
return frappe.respond_as_web_page("Signup is Disabled", "Sorry. Signup from Website is disabled.", 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: else:
user = frappe.get_doc("User", user) 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"): if provider=="facebook" and not user.get("fb_userid"):
save = True save = True


正在加载...
取消
保存