minor fixes

This commit is contained in:
Rushabh Mehta 2014-03-18 19:21:18 +05:30
parent 56dc5ca5ef
commit caed23686c
10 changed files with 48 additions and 23 deletions

View file

@ -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"])

View file

@ -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):

View file

@ -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)

View file

@ -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"""

View file

@ -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')

View file

@ -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:

View file

@ -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 + ".#####"

View file

@ -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 = []

View file

@ -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))

View file

@ -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",