minor fixes
This commit is contained in:
parent
56dc5ca5ef
commit
caed23686c
10 changed files with 48 additions and 23 deletions
|
|
@ -266,5 +266,6 @@ def get_logged_user():
|
|||
return frappe.session.user
|
||||
|
||||
def clear_cookies():
|
||||
frappe.session.sid = ""
|
||||
if frappe.session:
|
||||
frappe.session.sid = ""
|
||||
frappe.local.cookie_manager.delete_cookie(["full_name", "user_id", "sid", "user_image", "system_user"])
|
||||
|
|
|
|||
|
|
@ -47,9 +47,20 @@ def set_value(doctype, name, fieldname, value):
|
|||
def insert(doclist):
|
||||
if isinstance(doclist, basestring):
|
||||
doclist = json.loads(doclist)
|
||||
|
||||
bean = frappe.bean(doclist).insert()
|
||||
return [d.fields for d in bean.doclist]
|
||||
|
||||
if isinstance(doclist, dict):
|
||||
doclist = [doclist]
|
||||
|
||||
if doclist[0].get("parent") and doclist[0].get("parenttype"):
|
||||
# inserting a child record
|
||||
d = doclist[0]
|
||||
bean = frappe.bean(d["parenttype"], d["parent"])
|
||||
bean.doclist.append(d)
|
||||
bean.save()
|
||||
return [d]
|
||||
else:
|
||||
bean = frappe.bean(doclist).insert()
|
||||
return [d.fields for d in bean.doclist]
|
||||
|
||||
@frappe.whitelist()
|
||||
def save(doclist):
|
||||
|
|
|
|||
|
|
@ -273,9 +273,6 @@ def validate_permissions(permissions, for_remove=False):
|
|||
raise_exception=True)
|
||||
|
||||
def check_permission_dependency(d):
|
||||
if d.write and not d.read:
|
||||
frappe.msgprint(get_txt(d) + " Cannot set Write permission if Read is not set.",
|
||||
raise_exception=True)
|
||||
if d.cancel and not d.submit:
|
||||
frappe.msgprint(get_txt(d) + " Cannot set Cancel permission if Submit is not set.",
|
||||
raise_exception=True)
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
from __future__ import unicode_literals
|
||||
|
||||
import memcache, frappe
|
||||
from frappe.model.doc import Document
|
||||
|
||||
class MClient(memcache.Client):
|
||||
"""memcache client that will automatically prefix conf.db_name"""
|
||||
|
|
|
|||
|
|
@ -291,10 +291,16 @@ class Bean:
|
|||
return self.has_permission("read")
|
||||
|
||||
def has_permission(self, permtype):
|
||||
return frappe.has_permission(self.doc.doctype, permtype, self.doc)
|
||||
if self.ignore_permissions:
|
||||
return True
|
||||
if self.doc.parent and self.doc.parenttype:
|
||||
return frappe.has_permission(self.doc.parenttype, permtype,
|
||||
frappe.doc(self.doc.parenttype, self.doc.parent))
|
||||
else:
|
||||
return frappe.has_permission(self.doc.doctype, permtype, self.doc)
|
||||
|
||||
def save(self, check_links=1, ignore_permissions=None):
|
||||
if ignore_permissions:
|
||||
if ignore_permissions!=None:
|
||||
self.ignore_permissions = ignore_permissions
|
||||
perm_to_check = "write"
|
||||
if self.doc.fields.get("__islocal"):
|
||||
|
|
@ -306,7 +312,7 @@ class Bean:
|
|||
self.prepare_for_save("save")
|
||||
|
||||
# check permissions after preparing for save, since name might be required
|
||||
if self.ignore_permissions or frappe.has_permission(self.doc.doctype, perm_to_check, self.doc):
|
||||
if self.has_permission(perm_to_check):
|
||||
if not self.ignore_validate:
|
||||
self.run_method('validate')
|
||||
self.validate_doclist()
|
||||
|
|
@ -321,7 +327,7 @@ class Bean:
|
|||
return self
|
||||
|
||||
def submit(self):
|
||||
if self.ignore_permissions or frappe.has_permission(self.doc.doctype, "submit", self.doc):
|
||||
if self.has_permission("submit"):
|
||||
self.to_docstatus = 1
|
||||
self.prepare_for_save("submit")
|
||||
self.run_method('validate')
|
||||
|
|
@ -336,7 +342,7 @@ class Bean:
|
|||
return self
|
||||
|
||||
def cancel(self):
|
||||
if self.ignore_permissions or frappe.has_permission(self.doc.doctype, "cancel", self.doc):
|
||||
if self.has_permission("cancel"):
|
||||
self.to_docstatus = 2
|
||||
self.prepare_for_save("cancel")
|
||||
self.run_method('before_cancel')
|
||||
|
|
@ -352,7 +358,7 @@ class Bean:
|
|||
def update_after_submit(self):
|
||||
if self.doc.docstatus != 1:
|
||||
frappe.msgprint("Only to called after submit", raise_exception=1)
|
||||
if self.ignore_permissions or frappe.has_permission(self.doc.doctype, "write", self.doc):
|
||||
if self.has_permission("write"):
|
||||
self.to_docstatus = 1
|
||||
self.prepare_for_save("update_after_submit")
|
||||
self.run_method('validate')
|
||||
|
|
|
|||
|
|
@ -89,9 +89,9 @@ class DatabaseQuery(object):
|
|||
|
||||
def make_filter_tuple(self, key, value):
|
||||
if isinstance(value, (list, tuple)):
|
||||
return (self.doctype, key, value[0], value[1])
|
||||
return [self.doctype, key, value[0], value[1]]
|
||||
else:
|
||||
return (self.doctype, key, "=", value)
|
||||
return [self.doctype, key, "=", value]
|
||||
|
||||
def extract_tables(self):
|
||||
"""extract tables from fields"""
|
||||
|
|
@ -176,7 +176,10 @@ class DatabaseQuery(object):
|
|||
|
||||
# prepare in condition
|
||||
if f[2] in ['in', 'not in']:
|
||||
opts = ["'" + t.strip().replace("'", "\\'") + "'" for t in f[3].split(',')]
|
||||
opts = f[3]
|
||||
if not isinstance(opts, (list, tuple)):
|
||||
opts = f[3].split(",")
|
||||
opts = ["'" + t.strip().replace("'", "\\'") + "'" for t in opts]
|
||||
f[3] = "(" + ', '.join(opts) + ")"
|
||||
self.conditions.append('ifnull(' + tname + '.' + f[1] + ", '') " + f[2] + " " + f[3])
|
||||
else:
|
||||
|
|
|
|||
|
|
@ -62,9 +62,9 @@ class Document:
|
|||
name = frappe.db.get_value(doctype, name, "name") or None
|
||||
|
||||
if fielddata:
|
||||
self.fields = frappe._dict(fielddata)
|
||||
self.fields = fielddata
|
||||
else:
|
||||
self.fields = frappe._dict()
|
||||
self.fields = {}
|
||||
|
||||
if not self.fields.has_key('name'):
|
||||
self.fields['name']='' # required on save
|
||||
|
|
@ -85,8 +85,8 @@ class Document:
|
|||
if not fielddata:
|
||||
self.fields['__islocal'] = 1
|
||||
|
||||
if not self.fields.docstatus:
|
||||
self.fields.docstatus = 0
|
||||
if not self.fields.get("docstatus"):
|
||||
self.fields["docstatus"] = 0
|
||||
|
||||
def __nonzero__(self):
|
||||
return True
|
||||
|
|
@ -600,6 +600,9 @@ def make_autoname(key, doctype=''):
|
|||
* DE/./.YY./.MM./.##### will create a series like
|
||||
DE/09/01/0001 where 09 is the year, 01 is the month and 0001 is the series
|
||||
"""
|
||||
if key=="hash":
|
||||
return frappe.generate_hash(doctype)
|
||||
|
||||
if not "#" in key:
|
||||
key = key + ".#####"
|
||||
|
||||
|
|
|
|||
|
|
@ -44,8 +44,8 @@ def filter_fields(doc):
|
|||
from frappe.model.doctype import get
|
||||
from frappe.model import default_fields
|
||||
|
||||
doctypelist = get(doc.doctype, False)
|
||||
valid_fields = [d.fieldname for d in doctypelist.get({"parent":doc.doctype,
|
||||
doctypelist = get(doc.get("doctype"), False)
|
||||
valid_fields = [d.fieldname for d in doctypelist.get({"parent":doc.get("doctype"),
|
||||
"doctype":"DocField"})]
|
||||
to_remove = []
|
||||
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import mimetypes
|
|||
import os
|
||||
import frappe
|
||||
from frappe import _
|
||||
from frappe.model.doc import Document
|
||||
import frappe.utils
|
||||
import frappe.sessions
|
||||
import frappe.model.utils
|
||||
|
|
@ -106,6 +107,8 @@ def json_handler(obj):
|
|||
return unicode(obj)
|
||||
elif isinstance(obj, LocalProxy):
|
||||
return unicode(obj)
|
||||
elif isinstance(obj, Document):
|
||||
return obj.fields
|
||||
else:
|
||||
raise TypeError, """Object of type %s with value of %s is not JSON serializable""" % \
|
||||
(type(obj), repr(obj))
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ def get_sitemap_options(path):
|
|||
return frappe._dict(sitemap_options)
|
||||
|
||||
def build_sitemap_options(path):
|
||||
sitemap_options = frappe.doc("Website Route", path).fields
|
||||
sitemap_options = frappe._dict(frappe.doc("Website Route", path).fields)
|
||||
home_page = get_home_page()
|
||||
|
||||
sitemap_config = frappe.doc("Website Template",
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue