@@ -309,13 +309,6 @@ def reset_metadata_version(): | |||
cache().set_value("metadata_version", v) | |||
return v | |||
def get_obj(dt = None, dn = None, doc=None, doclist=None, with_children = True): | |||
from frappe.model.code import get_obj | |||
return get_obj(dt, dn, doc, doclist, with_children) | |||
def doc(doctype=None, name=None, fielddata=None): | |||
return Document(doctype, name, fielddata) | |||
def new_doc(doctype, parent_doc=None, parentfield=None): | |||
from frappe.model.create_new import get_new_doc | |||
return get_new_doc(doctype, parent_doc, parentfield) | |||
@@ -328,21 +321,10 @@ def doclist(lst=None): | |||
from frappe.model.doclist import DocList | |||
return DocList(lst) | |||
def bean(doctype=None, name=None, copy=None): | |||
"""return an instance of the object, wrapped as a Bean (frappe.model.bean)""" | |||
from frappe.model.bean import Bean | |||
if copy: | |||
return Bean(copy_doc(copy)) | |||
else: | |||
return Bean(doctype, name) | |||
def set_value(doctype, docname, fieldname, value): | |||
import frappe.client | |||
return frappe.client.set_value(doctype, docname, fieldname, value) | |||
def get_doclist(doctype, name=None): | |||
return bean(doctype, name).doclist | |||
def get_doc(arg1, arg2=None): | |||
import frappe.model.document | |||
return frappe.model.document.get_doc(arg1, arg2) | |||
@@ -41,7 +41,7 @@ def handle(): | |||
elif call=="resource": | |||
if "run_method" in frappe.local.form_dict: | |||
bean = frappe.bean(doctype, name) | |||
bean = frappe.get_doc(doctype, name) | |||
if frappe.local.request.method=="GET": | |||
if not bean.has_permission("read"): | |||
@@ -14,7 +14,7 @@ def get(doctype, name=None, filters=None): | |||
name = frappe.db.get_value(doctype, json.loads(filters)) | |||
if not name: | |||
raise Exception, "No document found for given filters" | |||
return [d.fields for d in frappe.bean(doctype, name).doclist] | |||
return [d.fields for d in frappe.get_doc(doctype, name).doclist] | |||
@frappe.whitelist() | |||
def get_value(doctype, fieldname, filters=None, as_dict=True, debug=False): | |||
@@ -32,11 +32,11 @@ def set_value(doctype, name, fieldname, value): | |||
doc = frappe.db.get_value(doctype, name, ["parenttype", "parent"], as_dict=True) | |||
if doc and doc.parent: | |||
bean = frappe.bean(doc.parenttype, doc.parent) | |||
bean = frappe.get_doc(doc.parenttype, doc.parent) | |||
child = bean.doclist.getone({"doctype": doctype, "name": name}) | |||
child.set(fieldname, value) | |||
else: | |||
bean = frappe.bean(doctype, name) | |||
bean = frappe.get_doc(doctype, name) | |||
bean.set(fieldname, value) | |||
bean.save() | |||
@@ -54,12 +54,12 @@ def insert(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 = frappe.get_doc(d["parenttype"], d["parent"]) | |||
bean.append(d) | |||
bean.save() | |||
return [d] | |||
else: | |||
bean = frappe.bean(doclist).insert() | |||
bean = frappe.get_doc(doclist).insert() | |||
return [d.fields for d in bean.doclist] | |||
@frappe.whitelist() | |||
@@ -67,7 +67,7 @@ def save(doclist): | |||
if isinstance(doclist, basestring): | |||
doclist = json.loads(doclist) | |||
bean = frappe.bean(doclist).save() | |||
bean = frappe.get_doc(doclist).save() | |||
return [d.fields for d in bean.doclist] | |||
@frappe.whitelist() | |||
@@ -80,14 +80,14 @@ def submit(doclist): | |||
if isinstance(doclist, basestring): | |||
doclist = json.loads(doclist) | |||
doclistobj = frappe.bean(doclist) | |||
doclistobj = frappe.get_doc(doclist) | |||
doclistobj.submit() | |||
return [d.fields for d in doclist] | |||
@frappe.whitelist() | |||
def cancel(doctype, name): | |||
wrapper = frappe.bean(doctype, name) | |||
wrapper = frappe.get_doc(doctype, name) | |||
wrapper.cancel() | |||
return [d.fields for d in wrapper.doclist] | |||
@@ -106,7 +106,7 @@ def set_default(key, value, parent=None): | |||
def make_width_property_setter(): | |||
doclist = json.loads(frappe.form_dict.doclist) | |||
if doclist[0]["doctype"]=="Property Setter" and doclist[0]["property"]=="width": | |||
bean = frappe.bean(doclist) | |||
bean = frappe.get_doc(doclist) | |||
bean.ignore_permissions = True | |||
bean.insert() | |||
@@ -119,7 +119,7 @@ def bulk_update(docs): | |||
ddoc = {key: val for key, val in doc.iteritems() if key not in ['doctype', 'docname']} | |||
doctype = doc['doctype'] | |||
docname = doc['docname'] | |||
bean = frappe.bean(doctype, docname) | |||
bean = frappe.get_doc(doctype, docname) | |||
bean.update(ddoc) | |||
bean.save() | |||
except: | |||
@@ -9,7 +9,7 @@ import frappe, unittest, json | |||
# class TestComment(unittest.TestCase): | |||
# def setUp(self): | |||
# self.cleanup() | |||
# self.test_rec = frappe.bean({ | |||
# self.test_rec = frappe.get_doc({ | |||
# "doctype":"Event", | |||
# "subject":"__Comment Test Event", | |||
# "event_type": "Private", | |||
@@ -29,21 +29,21 @@ import frappe, unittest, json | |||
# frappe.db.sql("""alter table `tabEvent` drop column `_comments`""") | |||
# | |||
# def test_add_comment(self): | |||
# self.comment = frappe.bean({ | |||
# self.comment = frappe.get_doc({ | |||
# "doctype":"Comment", | |||
# "comment_doctype": self.test_rec.doctype, | |||
# "comment_docname": self.test_rec.name, | |||
# "comment": "__Test Comment" | |||
# }).insert() | |||
# | |||
# test_rec = frappe.doc(self.test_rec.doctype, self.test_rec.name) | |||
# test_rec = frappe.get_doc(self.test_rec.doctype, self.test_rec.name) | |||
# _comments = json.loads(test_rec.get("_comments")) | |||
# self.assertTrue(_comments[0].get("comment")=="__Test Comment") | |||
# | |||
# def test_remove_comment(self): | |||
# self.test_add_comment() | |||
# frappe.delete_doc("Comment", self.comment.name) | |||
# test_rec = frappe.doc(self.test_rec.doctype, self.test_rec.name) | |||
# test_rec = frappe.get_doc(self.test_rec.doctype, self.test_rec.name) | |||
# _comments = json.loads(test_rec.get("_comments")) | |||
# self.assertEqual(len(_comments), 0) | |||
# | |||
@@ -16,7 +16,7 @@ from frappe.model.document import Document | |||
class Communication(Document): | |||
def get_parent_bean(self): | |||
return frappe.bean(self.parenttype, self.parent) | |||
return frappe.get_doc(self.parenttype, self.parent) | |||
def update_parent(self): | |||
"""update status of parent Lead or Contact based on who is replying""" | |||
@@ -114,7 +114,7 @@ def create_custom_field_if_values_exist(doctype, df): | |||
frappe.db.sql("""select count(*) from `tab{doctype}` | |||
where ifnull({fieldname},'')!=''""".format(doctype=doctype, fieldname=df.fieldname))[0][0] and \ | |||
not frappe.db.get_value("Custom Field", {"dt": doctype, "fieldname": df.fieldname}): | |||
frappe.bean({ | |||
frappe.get_doc({ | |||
"doctype":"Custom Field", | |||
"dt": doctype, | |||
"permlevel": df.permlevel or 0, | |||
@@ -291,7 +291,7 @@ class CustomizeForm(Document): | |||
if d.doctype=="Customize Form Field": | |||
fields.append(d.fieldname) | |||
d = frappe.doc('Property Setter') | |||
d = frappe.get_doc('Property Setter') | |||
d.doctype_or_field = 'DocType' | |||
d.doc_type = self.doc_type | |||
d.property = "_idx" | |||
@@ -7,6 +7,7 @@ import frappe | |||
from frappe.model.document import Document | |||
class Defaultvalue(Document): | |||
pass | |||
def on_doctype_update(): | |||
if not frappe.db.sql("""show index from `tabDefaultValue` | |||
@@ -328,16 +328,18 @@ def validate_permissions(permissions, for_remove=False): | |||
def make_module_and_roles(doc, perm_fieldname="permissions"): | |||
try: | |||
if not frappe.db.exists("Module Def", doc.module): | |||
m = frappe.bean({"doctype": "Module Def", "module_name": doc.module}) | |||
m = frappe.get_doc({"doctype": "Module Def", "module_name": doc.module}) | |||
m.ignore_mandatory = m.ignore_permissions = True | |||
m.insert() | |||
default_roles = ["Administrator", "Guest", "All"] | |||
roles = [p.role for p in doc.get(permissions)] + default_roles | |||
roles = [p.role for p in doc.get("permissions") or []] + default_roles | |||
for role in list(set(roles)): | |||
if not frappe.db.exists("Role", role): | |||
r = frappe.bean({"doctype": "Role", "role_name": role}) | |||
r = frappe.get_doc({"doctype": "Role", "role_name": role}) | |||
r.role_name = role | |||
r.ignore_mandatory = r.ignore_permissions = True | |||
r.insert() | |||
except frappe.DoesNotExistError, e: | |||
pass | |||
@@ -33,7 +33,7 @@ def has_permission(doc, bean=None): | |||
# need full doclist to check roles and users | |||
if not bean: | |||
bean = frappe.bean("Event", doc.name) | |||
bean = frappe.get_doc("Event", doc.name) | |||
if len(bean.doclist)==1: | |||
return False | |||
@@ -35,25 +35,25 @@ import unittest | |||
class TestEvent(unittest.TestCase): | |||
# def setUp(self): | |||
# user = frappe.bean("User", "test1@example.com") | |||
# user.get_controller().add_roles("Website Manager") | |||
# user = frappe.get_doc("User", "test1@example.com") | |||
# user.add_roles("Website Manager") | |||
def tearDown(self): | |||
frappe.set_user("Administrator") | |||
def test_allowed_public(self): | |||
frappe.set_user("test1@example.com") | |||
doc = frappe.doc("Event", frappe.db.get_value("Event", {"subject":"_Test Event 1"})) | |||
doc = frappe.get_doc("Event", frappe.db.get_value("Event", {"subject":"_Test Event 1"})) | |||
self.assertTrue(frappe.has_permission("Event", refdoc=doc)) | |||
def test_not_allowed_private(self): | |||
frappe.set_user("test1@example.com") | |||
doc = frappe.doc("Event", frappe.db.get_value("Event", {"subject":"_Test Event 2"})) | |||
doc = frappe.get_doc("Event", frappe.db.get_value("Event", {"subject":"_Test Event 2"})) | |||
self.assertFalse(frappe.has_permission("Event", refdoc=doc)) | |||
def test_allowed_private_if_in_event_user(self): | |||
frappe.set_user("test1@example.com") | |||
doc = frappe.doc("Event", frappe.db.get_value("Event", {"subject":"_Test Event 3"})) | |||
doc = frappe.get_doc("Event", frappe.db.get_value("Event", {"subject":"_Test Event 3"})) | |||
self.assertTrue(frappe.has_permission("Event", refdoc=doc)) | |||
def test_event_list(self): | |||
@@ -34,7 +34,7 @@ class FileData(Document): | |||
if self.attached_to_name: | |||
# check persmission | |||
try: | |||
if not self.bean.ignore_permissions and \ | |||
if not self.ignore_permissions and \ | |||
not frappe.has_permission(self.attached_to_doctype, "write", self.attached_to_name): | |||
frappe.msgprint(frappe._("No permission to write / remove."), raise_exception=True) | |||
@@ -9,9 +9,12 @@ import frappe | |||
from frappe.model.document import Document | |||
class NotificationCount(Document): | |||
pass | |||
@frappe.whitelist() | |||
def get_notifications(): | |||
if frappe.in_install_app: | |||
return | |||
config = get_notification_config() | |||
can_read = frappe.user.get_can_read() | |||
open_count_doctype = {} | |||
@@ -31,7 +34,7 @@ def get_notifications(): | |||
result = frappe.get_list(d, fields=["count(*)"], | |||
filters=[[d, key, "=", condition[key]]], as_list=True, limit_page_length=1)[0][0] | |||
frappe.doc({"doctype":"Notification Count", "for_doctype":d, | |||
frappe.get_doc({"doctype":"Notification Count", "for_doctype":d, | |||
"open_count":result}).insert() | |||
open_count_doctype[d] = result | |||
@@ -41,7 +44,7 @@ def get_notifications(): | |||
open_count_module[m] = notification_count[m] | |||
else: | |||
open_count_module[m] = frappe.get_attr(config.for_module[m])() | |||
frappe.doc({"doctype":"Notification Count", "for_doctype":m, | |||
frappe.get_doc({"doctype":"Notification Count", "for_doctype":m, | |||
"open_count":open_count_module[m]}).insert() | |||
return { | |||
@@ -48,7 +48,7 @@ def get_args(): | |||
<pre>%s</pre>""" % repr(frappe.form_dict) | |||
} | |||
bean = frappe.bean(frappe.form_dict.doctype, frappe.form_dict.name) | |||
bean = frappe.get_doc(frappe.form_dict.doctype, frappe.form_dict.name) | |||
for ptype in ("read", "print"): | |||
if not frappe.has_permission(bean.doctype, ptype, bean.doc): | |||
return { | |||
@@ -66,7 +66,7 @@ def get_html(doc, doclist, print_format=None): | |||
from jinja2 import Environment | |||
if isinstance(doc, basestring) and isinstance(doclist, basestring): | |||
bean = frappe.bean(doc, doclist) | |||
bean = frappe.get_doc(doc, doclist) | |||
doc = bean.doc | |||
doclist = bean.doclist | |||
@@ -55,7 +55,7 @@ class PropertySetter(Document): | |||
validate_fields_for_doctype(self.doc_type) | |||
def make_property_setter(doctype, fieldname, property, value, property_type, for_doctype = False): | |||
return frappe.bean({ | |||
return frappe.get_doc({ | |||
"doctype":"Property Setter", | |||
"doctype_or_field": for_doctype and "DocType" or "DocField", | |||
"doc_type": doctype, | |||
@@ -20,7 +20,7 @@ class Todo(Document): | |||
if not self.reference_type and self.reference_name: | |||
return | |||
comment = frappe.bean({ | |||
comment = frappe.get_doc({ | |||
"doctype":"Comment", | |||
"comment_by": frappe.session.user, | |||
"comment_doctype": self.reference_type, | |||
@@ -11,11 +11,11 @@ class TestUser(unittest.TestCase): | |||
frappe.db.sql("""delete from tabUserRole where role='_Test Role 2'""") | |||
delete_doc("Role","_Test Role 2") | |||
user = frappe.bean(copy=test_records[1]) | |||
user = frappe.get_doc(copy=test_records[1]) | |||
user.email = "_test@example.com" | |||
user.insert() | |||
frappe.bean({"doctype": "ToDo", "description": "_Test"}).insert() | |||
frappe.get_doc({"doctype": "ToDo", "description": "_Test"}).insert() | |||
delete_doc("User", "_test@example.com") | |||
@@ -23,7 +23,7 @@ class TestUser(unittest.TestCase): | |||
("_test@example.com",))) | |||
from frappe.core.doctype.role.test_role import test_records as role_records | |||
frappe.bean(copy=role_records[1]).insert() | |||
frappe.get_doc(copy=role_records[1]).insert() | |||
def test_get_value(self): | |||
self.assertEquals(frappe.db.get_value("User", "test@example.com"), "test@example.com") | |||
@@ -250,7 +250,7 @@ class User(Document): | |||
"role": role | |||
}) | |||
self.bean.save() | |||
self.save() | |||
@frappe.whitelist() | |||
def get_languages(): | |||
@@ -312,7 +312,7 @@ def sign_up(email, full_name): | |||
TIMEDIFF(%s, modified) > '1:00:00' """, now())[0][0] > 200: | |||
raise Exception, "Too Many New Users" | |||
from frappe.utils import random_string | |||
user = frappe.bean({ | |||
user = frappe.get_doc({ | |||
"doctype":"User", | |||
"email": email, | |||
"first_name": full_name, | |||
@@ -333,8 +333,8 @@ def reset_password(user): | |||
if frappe.db.sql("""select name from tabUser where name=%s""", (user,)): | |||
# Hack! | |||
frappe.session["user"] = "Administrator" | |||
user = frappe.bean("User", user) | |||
user.get_controller().reset_password() | |||
user = frappe.get_doc("User", user) | |||
user.reset_password() | |||
return "Password reset details sent to your email." | |||
else: | |||
return "No such user (%s)" % user | |||
@@ -9,13 +9,14 @@ import frappe, json | |||
from frappe.model.document import Document | |||
class Version(Document): | |||
pass | |||
@frappe.whitelist() | |||
def restore(version): | |||
if not "System Manager" in frappe.get_roles(): | |||
raise frappe.PermissionError | |||
version = frappe.doc("Version", version) | |||
version = frappe.get_doc("Version", version) | |||
doclist = json.loads(version.doclist_json) | |||
# check if renamed | |||
@@ -27,4 +28,4 @@ def restore(version): | |||
doclist[0]["modified"] = frappe.db.get_value(version.ref_doctype, version.docname, "modified") | |||
# overwrite | |||
frappe.bean(doclist).save() | |||
frappe.get_doc(doclist).save() |
@@ -21,7 +21,7 @@ class Workflow(Document): | |||
meta = frappe.get_meta(self.document_type) | |||
if not meta.get_field(self.workflow_state_field): | |||
# create custom field | |||
frappe.bean([{ | |||
frappe.get_doc([{ | |||
"doctype":"Custom Field", | |||
"dt": self.document_type, | |||
"__islocal": 1, | |||
@@ -399,13 +399,13 @@ def upload(rows = None, submit_after_import=None, ignore_encoding_errors=False, | |||
check_record(d, None, doctype_dl) | |||
if overwrite and frappe.db.exists(doctype, doclist[0]["name"]): | |||
bean = frappe.bean(doctype, doclist[0]["name"]) | |||
bean = frappe.get_doc(doctype, doclist[0]["name"]) | |||
bean.ignore_links = ignore_links | |||
bean.doclist.update(doclist) | |||
bean.save() | |||
ret.append('Updated row (#%d) %s' % (row_idx + 1, getlink(bean.doctype, bean.name))) | |||
else: | |||
bean = frappe.bean(doclist) | |||
bean = frappe.get_doc(doclist) | |||
bean.ignore_links = ignore_links | |||
bean.insert() | |||
ret.append('Inserted row (#%d) %s' % (row_idx + 1, getlink(bean.doctype, bean.name))) | |||
@@ -417,7 +417,7 @@ def upload(rows = None, submit_after_import=None, ignore_encoding_errors=False, | |||
if parenttype: | |||
# child doc | |||
doc = frappe.doc(doctype) | |||
doc = frappe.get_doc(doctype) | |||
doc.fields.update(doclist[0]) | |||
if parenttype: | |||
doc.parenttype = parenttype | |||
@@ -454,7 +454,7 @@ def validate_parent(parent_list, parenttype, ret, error): | |||
parent_list = list(set(parent_list)) | |||
for p in parent_list: | |||
try: | |||
obj = frappe.bean(parenttype, p) | |||
obj = frappe.get_doc(parenttype, p) | |||
obj.run_method("validate") | |||
obj.run_method("on_update") | |||
except Exception, e: | |||
@@ -503,7 +503,7 @@ def export_json(doctype, name, path): | |||
if not name or name=="-": | |||
name = doctype | |||
with open(path, "w") as outfile: | |||
doclist = [d.fields for d in frappe.bean(doctype, name).doclist] | |||
doclist = [d.fields for d in frappe.get_doc(doctype, name).doclist] | |||
for d in doclist: | |||
if d.get("parent"): | |||
del d["parent"] | |||
@@ -529,7 +529,7 @@ def import_doclist(path, overwrite=False, ignore_links=False, ignore_insert=Fals | |||
files = [path] | |||
def _import_doclist(d): | |||
b = frappe.bean(d) | |||
b = frappe.get_doc(d) | |||
b.ignore_links = ignore_links | |||
if insert: | |||
b.set("__islocal", True) | |||
@@ -36,7 +36,7 @@ def remove(doctype, name): | |||
@frappe.whitelist() | |||
def add(parent, role, permlevel): | |||
frappe.only_for("System Manager") | |||
frappe.doc(fielddata={ | |||
frappe.get_doc({ | |||
"doctype":"DocPerm", | |||
"__islocal": 1, | |||
"parent": parent, | |||
@@ -475,7 +475,7 @@ class Database: | |||
def exists(self, dt, dn=None): | |||
if isinstance(dt, basestring): | |||
if dt==dn: | |||
if dt!="DocType" and dt==dn: | |||
return True # single always exists (!) | |||
try: | |||
return self.sql('select name from `tab%s` where name=%s' % (dt, '%s'), (dn,)) | |||
@@ -82,7 +82,7 @@ def set_default(key, value, parent, parenttype="Control Panel"): | |||
add_default(key, value, parent) | |||
def add_default(key, value, parent, parenttype=None): | |||
d = frappe.doc({ | |||
d = frappe.get_doc({ | |||
"doctype": "DefaultValue", | |||
"parent": parent, | |||
"parenttype": parenttype or "Control Panel", | |||
@@ -33,7 +33,7 @@ def web_logout(): | |||
@frappe.whitelist(allow_guest=True) | |||
def run_custom_method(doctype, name, custom_method): | |||
"""cmd=run_custom_method&doctype={doctype}&name={name}&custom_method={custom_method}""" | |||
bean = frappe.bean(doctype, name) | |||
bean = frappe.get_doc(doctype, name) | |||
controller = bean.get_controller() | |||
if getattr(controller, custom_method, frappe._dict()).is_whitelisted: | |||
frappe.call(getattr(controller, custom_method), **frappe.local.form_dict) | |||
@@ -130,7 +130,7 @@ def set_all_patches_as_completed(app): | |||
patch_path = os.path.join(frappe.get_pymodule_path(app), "patches.txt") | |||
if os.path.exists(patch_path): | |||
for patch in frappe.get_file_items(patch_path): | |||
frappe.doc({ | |||
frappe.get_doc({ | |||
"doctype": "Patch Log", | |||
"patch": patch | |||
}).insert() | |||
@@ -19,7 +19,7 @@ def insert(doclist): | |||
else: | |||
d.set("__islocal", 1) | |||
wrapper = frappe.bean(doclist) | |||
wrapper = frappe.get_doc(doclist) | |||
wrapper.save() | |||
return wrapper | |||
@@ -42,7 +42,7 @@ class BaseDocument(object): | |||
else: | |||
value = self.__dict__.get(key, default) | |||
if value is None and key in self.get_table_fields(): | |||
if value is None and key!="_meta" and key in (d.fieldname for d in self.get_table_fields()): | |||
self.set(key, []) | |||
value = self.__dict__.get(key) | |||
@@ -111,6 +111,9 @@ class BaseDocument(object): | |||
for fieldname in self.valid_columns: | |||
d[fieldname] = self.get(fieldname) | |||
return d | |||
def is_new(self): | |||
return self.get("__islocal") | |||
@property | |||
def valid_columns(self): | |||
@@ -178,7 +181,7 @@ class BaseDocument(object): | |||
self.docstatus = cint(self.docstatus) | |||
def set_missing_values(self, d): | |||
for key, value in d.iteritems(): | |||
for key, value in d.get_valid_dict().iteritems(): | |||
if self.get(key) is None: | |||
self.set(key, value) | |||
@@ -51,7 +51,6 @@ def get_new_doc(doctype, parent_doc = None, parentfield = None): | |||
else: | |||
ref_docname = frappe.db.get_default(ref_fieldname) | |||
doc.set(d.fieldname, frappe.db.get_value(ref_doctype, ref_docname, d.fieldname)) | |||
else: | |||
doc.set(d.fieldname, d.default) | |||
@@ -72,7 +72,7 @@ class Document(BaseDocument): | |||
self.update(d, valid_columns = d.keys()) | |||
for df in self.get_table_fields(): | |||
children = frappe.db.get_values(df.options, | |||
children = frappe.db.get_values(df.options, | |||
{"parent": self.name, "parenttype": self.doctype, "parentfield": df.fieldname}, | |||
"*", as_dict=True) | |||
if children: | |||
@@ -81,13 +81,14 @@ class Document(BaseDocument): | |||
self.set(df.fieldname, []) | |||
def has_permission(self, permtype): | |||
if getattr(self, "_ignore_permissions", False): | |||
if getattr(self, "ignore_permissions", False): | |||
return True | |||
return frappe.has_permission(self.doctype, permtype, self) | |||
def insert(self): | |||
# check links | |||
# check permissions | |||
def insert(self, ignore_permissions=None): | |||
if ignore_permissions!=None: | |||
self.ignore_permissions = ignore_permissions | |||
self.set("__islocal", True) | |||
if not self.has_permission("create"): | |||
@@ -114,7 +115,10 @@ class Document(BaseDocument): | |||
self.run_method("after_insert") | |||
self.run_post_save_methods() | |||
def save(self): | |||
def save(self, ignore_permissions=None): | |||
if ignore_permissions!=None: | |||
self.ignore_permissions = ignore_permissions | |||
if self.get("__islocal") or not self.get("name"): | |||
self.insert() | |||
return | |||
@@ -135,7 +139,7 @@ class Document(BaseDocument): | |||
# children | |||
child_map = {} | |||
ignore_children_type = self.get("_ignore_children_type", []) | |||
ignore_children_type = self.get("ignore_children_type") or [] | |||
for d in self.get_all_children(): | |||
d.parent = self.name # rename if reqd | |||
@@ -199,13 +203,13 @@ class Document(BaseDocument): | |||
self.set_missing_values(new_doc) | |||
# children | |||
for df in self.meta.get("fields", {"fieldtype":"Table"}): | |||
for df in self.get_table_fields(): | |||
new_doc = frappe.new_doc(df.options) | |||
value = self.get(df.fieldname) | |||
if isinstance(value, list): | |||
for d in value: | |||
d.set_missing_values(new_doc) | |||
def _check_if_latest(self): | |||
conflict = False | |||
self._action = "save" | |||
@@ -327,6 +331,9 @@ class Document(BaseDocument): | |||
self.save() | |||
def run_before_save_methods(self): | |||
if getattr(self, "ignore_validate", False): | |||
return | |||
if self._action=="save": | |||
self.run_method("validate") | |||
self.run_method("before_save") | |||
@@ -4,17 +4,17 @@ | |||
# metadata | |||
from __future__ import unicode_literals | |||
import frappe | |||
import frappe, json | |||
from frappe.utils import cstr, cint | |||
from frappe.model import integer_docfield_properties | |||
from frappe.model.document import Document | |||
from frappe.model.base_document import BaseDocument | |||
###### | |||
def get_meta(doctype, cached=True): | |||
# TODO: cache to be cleared | |||
if cached: | |||
if cached and not frappe.flags.in_install_app: | |||
if doctype not in frappe.local.meta: | |||
frappe.local.meta[doctype] = frappe.cache().get_value("meta:" + doctype, lambda: Meta(doctype)) | |||
return frappe.local.meta.get(doctype) | |||
@@ -25,7 +25,23 @@ class Meta(Document): | |||
_metaclass = True | |||
def __init__(self, doctype): | |||
super(Meta, self).__init__("DocType", doctype) | |||
def load_from_db(self): | |||
try: | |||
super(Meta, self).load_from_db() | |||
except frappe.DoesNotExistError: | |||
if self.doctype=="DocType" and self.name in ("DocField", "DocPerm", "Role", "DocType", "Module Def"): | |||
fname = frappe.scrub(self.name) | |||
with open(frappe.get_app_path("frappe", "core", "doctype", fname, fname + ".txt"), "r") as f: | |||
txt = f.read() | |||
self.__dict__.update(json.loads(txt)) | |||
self.fields = [BaseDocument(d) for d in self.fields] | |||
if hasattr(self, "permissions"): | |||
self.permissions = [BaseDocument(d) for d in self.permissions] | |||
else: | |||
raise | |||
def get_link_fields(self): | |||
tmp = self.get("fields", {"fieldtype":"Link"}) | |||
tmp.extend(self.get("fields", {"fieldtype":"Select", "options": "^link:"})) | |||
@@ -19,7 +19,9 @@ def set_new_name(doc): | |||
if getattr(doc, "amended_from", None): | |||
return doc._get_amended_name() | |||
else: | |||
if hasattr(doc, "autoname"): | |||
tmp = getattr(doc, "autoname", None) | |||
if tmp and not isinstance(tmp, basestring): | |||
# autoname in a function, not a property | |||
doc.autoname() | |||
if doc.name and doc.localname != doc.name: | |||
return | |||
@@ -23,7 +23,7 @@ def rename_doc(doctype, old, new, force=False, merge=False, ignore_permissions=F | |||
doclist = frappe.model.doctype.get(doctype) | |||
# call before_rename | |||
out = frappe.bean(doctype, old).run_method("before_rename", old, new, merge) or {} | |||
out = frappe.get_doc(doctype, old).run_method("before_rename", old, new, merge) or {} | |||
new = out.get("new") or new | |||
new = validate_rename(doctype, new, doclist, merge, force, ignore_permissions) | |||
@@ -43,7 +43,7 @@ def rename_doc(doctype, old, new, force=False, merge=False, ignore_permissions=F | |||
frappe.delete_doc(doctype, old) | |||
# call after_rename | |||
frappe.bean(doctype, new).run_method("after_rename", old, new, merge) | |||
frappe.get_doc(doctype, new).run_method("after_rename", old, new, merge) | |||
rename_versions(doctype, old, new) | |||
@@ -71,22 +71,24 @@ def import_doc(docdict): | |||
docdict["__islocal"] = 1 | |||
doc = frappe.get_doc(docdict) | |||
old_doc = None | |||
if doctype in ignore_values: | |||
if frappe.db.exists(doc.doctype, doc.name): | |||
old_doc = frappe.get_doc(doc.doctype, doc.name) | |||
# update ignore values | |||
for key in ignore_values.get(doctype) or []: | |||
doc.set(key, old_doc.get(key)) | |||
# update ignored docs into new doc | |||
for df in doc.get_table_fields(): | |||
if df.options in ignore_doctypes: | |||
doc.set(df.fieldname, []) | |||
ignore = [] | |||
if frappe.db.exists(doc.doctype, doc.name): | |||
old_doc = frappe.get_doc(doc.doctype, doc.name) | |||
if doc.doctype in ignore_values: | |||
# update ignore values | |||
for key in ignore_values.get(doc.doctype) or []: | |||
doc.set(key, old_doc.get(key)) | |||
# update ignored docs into new doc | |||
for df in doc.get_table_fields(): | |||
if df.options in ignore_doctypes: | |||
doc.set(df.fieldname, []) | |||
ignore.append(df.options) | |||
# delete old | |||
frappe.delete_doc(doctype, name, force=1, ignore_doctypes=ignore, for_reload=True) | |||
# delete old | |||
frappe.delete_doc(doc.doctype, doc.name, force=1, ignore_doctypes=ignore, for_reload=True) | |||
doc.ignore_children_type = ignore | |||
doc.ignore_links = True | |||
@@ -95,7 +95,7 @@ def update_patch_log(patchmodule): | |||
frappe.db.sql("""INSERT INTO `__PatchLog` VALUES (%s, now())""", \ | |||
patchmodule) | |||
else: | |||
frappe.doc({"doctype": "Patch Log", "patch": patchmodule}).insert() | |||
frappe.get_doc({"doctype": "Patch Log", "patch": patchmodule}).insert() | |||
def executed(patchmodule): | |||
"""return True if is executed""" | |||
@@ -36,7 +36,7 @@ def has_permission(doctype, ptype="read", doc=None, verbose=True): | |||
if doc: | |||
if isinstance(doc, basestring): | |||
doc = frappe.doc(meta.name, doc) | |||
doc = frappe.get_doc(meta.name, doc) | |||
if not has_unrestricted_access(doc, verbose=verbose): | |||
return False | |||
@@ -105,9 +105,9 @@ def has_unrestricted_access(doc, verbose=True): | |||
def has_controller_permissions(doc): | |||
if doc.get("__islocal"): | |||
bean = frappe.bean([doc]) | |||
bean = frappe.get_doc([doc]) | |||
else: | |||
bean = frappe.bean(doc.doctype, doc.name) | |||
bean = frappe.get_doc(doc.doctype, doc.name) | |||
condition_methods = frappe.get_hooks("has_permission:" + doc.doctype) | |||
for method in frappe.get_hooks("has_permission:" + doc.doctype): | |||
@@ -24,7 +24,7 @@ def get_context(context): | |||
blog_post.updated = global_date_format(blog_post.published_on) | |||
if blog_post.blogger: | |||
blog_post.blogger_info = frappe.doc("Blogger", blog_post.blogger).fields | |||
blog_post.blogger_info = frappe.get_doc("Blogger", blog_post.blogger).fields | |||
blog_post.description = blog_post.blog_intro or blog_post.content[:140] | |||
blog_post.meta_description = blog_post.description | |||
@@ -70,10 +70,10 @@ def build_view_context(context): | |||
context.post_list_html = get_post_list_html(context.group.name, context.view.name) | |||
elif context.view.name == "edit": | |||
context.post = frappe.doc("Post", frappe.form_dict.name).fields | |||
context.post = frappe.get_doc("Post", frappe.form_dict.name).fields | |||
if context.post.assigned_to: | |||
context.user = frappe.doc("User", context.post.assigned_to) | |||
context.user = frappe.get_doc("User", context.post.assigned_to) | |||
elif context.view.name == "settings": | |||
context.users = frappe.db.sql("""select p.*, wsp.`read`, wsp.`write`, wsp.`admin` | |||
@@ -30,7 +30,7 @@ def add_comment(args=None): | |||
if "cmd" in args: | |||
del args["cmd"] | |||
comment = frappe.bean(args) | |||
comment = frappe.get_doc(args) | |||
comment.ignore_permissions = True | |||
comment.insert() | |||
@@ -5,4 +5,4 @@ from __future__ import unicode_literals | |||
import frappe | |||
def get_context(context): | |||
return { "obj": frappe.bean("About Us Settings", "About Us Settings").get_controller() } | |||
return { "obj": frappe.get_doc("About Us Settings", "About Us Settings").get_controller() } |
@@ -5,4 +5,4 @@ from __future__ import unicode_literals | |||
import frappe | |||
def get_context(context): | |||
return frappe.doc("Blog Settings", "Blog Settings").fields | |||
return frappe.get_doc("Blog Settings", "Blog Settings").fields |
@@ -7,12 +7,12 @@ import frappe | |||
from frappe.utils import now | |||
def get_context(context): | |||
bean = frappe.bean("Contact Us Settings", "Contact Us Settings") | |||
bean = frappe.get_doc("Contact Us Settings", "Contact Us Settings") | |||
query_options = filter(None, bean.query_options.replace(",", "\n").split()) if \ | |||
bean.query_options else ["Sales", "Support", "General"] | |||
address = frappe.bean("Address", bean.address).doc if bean.address else None | |||
address = frappe.get_doc("Address", bean.address).doc if bean.address else None | |||
out = { | |||
"query_options": query_options | |||
@@ -84,7 +84,7 @@ def get_oauth_keys(provider): | |||
if not keys: | |||
# try database | |||
social = frappe.doc("Social Login Keys", "Social Login Keys") | |||
social = frappe.get_doc("Social Login Keys", "Social Login Keys") | |||
keys = {} | |||
for fieldname in ("client_id", "client_secret"): | |||
value = social.get("{provider}_{fieldname}".format(provider=provider, fieldname=fieldname)) | |||
@@ -183,7 +183,7 @@ def create_oauth_user(data, provider): | |||
if isinstance(data.get("location"), dict): | |||
data["location"] = data.get("location").get("name") | |||
user = frappe.bean({ | |||
user = frappe.get_doc({ | |||
"doctype":"User", | |||
"first_name": data.get("first_name") or data.get("given_name") or data.get("name"), | |||
"last_name": data.get("last_name") or data.get("family_name"), | |||
@@ -211,5 +211,5 @@ def create_oauth_user(data, provider): | |||
user.github_username = data["login"] | |||
user.ignore_permissions = True | |||
user.get_controller().no_welcome_mail = True | |||
user.no_welcome_mail = True | |||
user.insert() |
@@ -29,7 +29,7 @@ def get_context(context): | |||
else: | |||
modified = now() | |||
ws = frappe.doc('Website Settings', 'Website Settings') | |||
ws = frappe.get_doc('Website Settings', 'Website Settings') | |||
context = { | |||
'title': ws.title_prefix, | |||
@@ -9,7 +9,7 @@ base_template_path = "templates/pages/style_settings.css" | |||
def get_context(context): | |||
"""returns web style""" | |||
doc = frappe.doc("Style Settings", "Style Settings") | |||
doc = frappe.get_doc("Style Settings", "Style Settings") | |||
prepare(doc) | |||
return { "doc": doc.fields } | |||
@@ -17,6 +17,6 @@ def get_context(context): | |||
"categories": frappe.db.sql_list("select name from `tabBlog Category` order by name") | |||
} | |||
writers_context.update(frappe.doc("Blog Settings", "Blog Settings").fields) | |||
writers_context.update(frappe.get_doc("Blog Settings", "Blog Settings").fields) | |||
return writers_context |
@@ -9,7 +9,7 @@ from frappe.utils.file_manager import save_file | |||
from frappe.templates.generators.website_group import get_pathname | |||
def get_post_context(context): | |||
post = frappe.doc("Post", frappe.form_dict.name) | |||
post = frappe.get_doc("Post", frappe.form_dict.name) | |||
if post.parent_post: | |||
raise frappe.PermissionError | |||
@@ -26,7 +26,7 @@ def get_post_context(context): | |||
return frappe.cache().get_value(cache_key, lambda: _get_post_context()) | |||
def get_parent_post_html(post, context): | |||
user = frappe.bean("User", post.owner).doc | |||
user = frappe.get_doc("User", post.owner).doc | |||
for fieldname in ("first_name", "last_name", "user_image", "location"): | |||
post.set(fieldname, user.fields[fieldname]) | |||
@@ -65,8 +65,8 @@ def add_post(group, content, picture, picture_name, title=None, parent_post=None | |||
if frappe.db.get_value("Post", parent_post, "parent_post"): | |||
frappe.throw("Cannot reply to a reply") | |||
group = frappe.doc("Website Group", group) | |||
post = frappe.bean({ | |||
group = frappe.get_doc("Website Group", group) | |||
post = frappe.get_doc({ | |||
"doctype":"Post", | |||
"title": (title or "").title(), | |||
"content": content, | |||
@@ -98,7 +98,7 @@ def add_post(group, content, picture, picture_name, title=None, parent_post=None | |||
def save_post(post, content, picture=None, picture_name=None, title=None, | |||
assigned_to=None, status=None, event_datetime=None): | |||
post = frappe.bean("Post", post) | |||
post = frappe.get_doc("Post", post) | |||
access = get_access(get_pathname(post.website_group)) | |||
if not access.get("write"): | |||
@@ -36,7 +36,7 @@ def add_sitemap_permission(group, user): | |||
if not get_access(pathname).get("admin"): | |||
raise frappe.PermissionError | |||
permission = frappe.bean({ | |||
permission = frappe.get_doc({ | |||
"doctype": "Website Route Permission", | |||
"website_route": pathname, | |||
"user": user, | |||
@@ -58,7 +58,7 @@ def update_permission(group, user, perm, value): | |||
if not get_access(pathname).get("admin"): | |||
raise frappe.PermissionError | |||
permission = frappe.bean("Website Route Permission", {"website_route": pathname, "user": user}) | |||
permission = frappe.get_doc("Website Route Permission", {"website_route": pathname, "user": user}) | |||
permission.set(perm, int(value)) | |||
permission.save(ignore_permissions=True) | |||
@@ -79,7 +79,7 @@ def update_description(group, description): | |||
if not get_access(get_pathname(group)).get("admin"): | |||
raise frappe.PermissionError | |||
group = frappe.bean("Website Group", group) | |||
group = frappe.get_doc("Website Group", group) | |||
group.group_description = description | |||
group.save(ignore_permissions=True) | |||
@@ -91,7 +91,7 @@ def add_website_group(group, new_group, public_read, public_write, group_type="F | |||
parent_website_route = frappe.db.get_value("Website Route", | |||
{"ref_doctype": "Website Group", "docname": group}) | |||
frappe.bean({ | |||
frappe.get_doc({ | |||
"doctype": "Website Group", | |||
"group_name": group + "-" + new_group, | |||
"group_title": new_group, | |||
@@ -4,6 +4,10 @@ | |||
import frappe, unittest, time | |||
class TestDocument(unittest.TestCase): | |||
def test_get_return_empty_list_for_table_field_if_none(self): | |||
d = frappe.get_doc({"doctype":"User"}) | |||
self.assertEquals(d.get("user_roles"), []) | |||
def test_load(self): | |||
d = frappe.get_doc("DocType", "User") | |||
self.assertEquals(d.doctype, "DocType") | |||
@@ -164,7 +164,7 @@ def get_messages_from_page(name): | |||
return get_messages_from_page_or_report("Page", name) | |||
def get_messages_from_report(name): | |||
report = frappe.doc("Report", name) | |||
report = frappe.get_doc("Report", name) | |||
messages = get_messages_from_page_or_report("Report", name, | |||
frappe.db.get_value("DocType", report.ref_doctype, "module")) | |||
if report.query: | |||
@@ -128,7 +128,7 @@ def import_doc(d, doctype, overwrite, row_idx, submit=False, ignore_links=False) | |||
"""import main (non child) document""" | |||
if d.get("name") and frappe.db.exists(doctype, d['name']): | |||
if overwrite: | |||
bean = frappe.bean(doctype, d['name']) | |||
bean = frappe.get_doc(doctype, d['name']) | |||
bean.ignore_links = ignore_links | |||
bean.update(d) | |||
if d.get("docstatus") == 1: | |||
@@ -140,7 +140,7 @@ def import_doc(d, doctype, overwrite, row_idx, submit=False, ignore_links=False) | |||
return 'Ignored row (#%d) %s (exists)' % (row_idx + 1, | |||
getlink(doctype, d['name'])) | |||
else: | |||
bean = frappe.bean([d]) | |||
bean = frappe.get_doc([d]) | |||
bean.ignore_links = ignore_links | |||
bean.insert() | |||
@@ -78,7 +78,7 @@ def send(recipients=None, sender=None, doctype='User', email_field='email', | |||
def add(email, sender, subject, formatted, text_content=None, | |||
ref_doctype=None, ref_docname=None): | |||
"""add to bulk mail queue""" | |||
e = frappe.doc('Bulk Email') | |||
e = frappe.get_doc('Bulk Email') | |||
e.sender = sender | |||
e.recipient = email | |||
try: | |||
@@ -38,7 +38,7 @@ class SMTPServer: | |||
def __init__(self, login=None, password=None, server=None, port=None, use_ssl=None): | |||
# get defaults from control panel | |||
try: | |||
es = frappe.doc('Outgoing Email Settings', 'Outgoing Email Settings') | |||
es = frappe.get_doc('Outgoing Email Settings', 'Outgoing Email Settings') | |||
except frappe.DoesNotExistError: | |||
es = None | |||
@@ -45,7 +45,7 @@ def save_url(file_url, dt, dn): | |||
# frappe.msgprint("URL must start with 'http://' or 'https://'") | |||
# return None, None | |||
f = frappe.bean({ | |||
f = frappe.get_doc({ | |||
"doctype": "File Data", | |||
"file_url": file_url, | |||
"attached_to_doctype": dt, | |||
@@ -55,7 +55,7 @@ def save_url(file_url, dt, dn): | |||
try: | |||
f.insert(); | |||
except frappe.DuplicateEntryError: | |||
return frappe.doc("File Data", f.duplicate_entry) | |||
return frappe.get_doc("File Data", f.duplicate_entry) | |||
return f.doc | |||
def get_uploaded_content(): | |||
@@ -140,7 +140,7 @@ def save_file(fname, content, dt, dn, decode=False): | |||
os.rename(temp_fname, fpath.encode("utf-8")) | |||
f = frappe.bean({ | |||
f = frappe.get_doc({ | |||
"doctype": "File Data", | |||
"file_name": os.path.relpath(os.path.join(files_path, fname), get_site_path("public")), | |||
"attached_to_doctype": dt, | |||
@@ -151,7 +151,7 @@ def save_file(fname, content, dt, dn, decode=False): | |||
try: | |||
f.insert(); | |||
except frappe.DuplicateEntryError: | |||
return frappe.doc("File Data", f.duplicate_entry) | |||
return frappe.get_doc("File Data", f.duplicate_entry) | |||
return f.doc | |||
@@ -29,12 +29,12 @@ def after_install(): | |||
for d in install_docs: | |||
try: | |||
frappe.bean(d).insert() | |||
frappe.get_doc(d).insert() | |||
except NameError: | |||
pass | |||
# all roles to admin | |||
frappe.bean("User", "Administrator").get_controller().add_roles(*frappe.db.sql_list(""" | |||
frappe.get_doc("User", "Administrator").add_roles(*frappe.db.sql_list(""" | |||
select name from tabRole""")) | |||
# update admin password | |||
@@ -97,7 +97,7 @@ def log(method, message=None): | |||
frappe.db.rollback() | |||
frappe.db.begin() | |||
d = frappe.doc("Scheduler Log") | |||
d = frappe.get_doc("Scheduler Log") | |||
d.method = method | |||
d.error = message | |||
d.save() | |||
@@ -195,7 +195,7 @@ def get_system_managers(only_name=False): | |||
return [email.utils.formataddr((p.fullname, p.name)) for p in system_managers] | |||
def add_role(user, role): | |||
user_wrapper = frappe.bean("User", user).get_controller().add_roles(role) | |||
user_wrapper = frappe.get_doc("User", user).add_roles(role) | |||
def add_system_manager(email, first_name=None, last_name=None): | |||
# add user | |||
@@ -213,7 +213,7 @@ def add_system_manager(email, first_name=None, last_name=None): | |||
# add roles | |||
roles = frappe.db.sql_list("""select name from `tabRole` | |||
where name not in ("Administrator", "Guest", "All")""") | |||
user.get_controller().add_roles(*roles) | |||
user.add_roles(*roles) | |||
def get_roles(username=None, with_standard=True): | |||
"""get roles of current user""" | |||
@@ -50,7 +50,7 @@ def build_context(sitemap_options): | |||
# provide bean | |||
if context.doctype and context.docname: | |||
context.bean = frappe.bean(context.doctype, context.docname) | |||
context.bean = frappe.get_doc(context.doctype, context.docname) | |||
if context.controller: | |||
module = frappe.get_module(context.controller) | |||
@@ -11,7 +11,7 @@ from frappe import _ | |||
from frappe.utils import today | |||
class BlogPost(WebsiteGenerator): | |||
self.save_versions = True | |||
save_versions = True | |||
def get_page_title(self): | |||
return self.title | |||
@@ -39,11 +39,11 @@ class TestBlogPost(unittest.TestCase): | |||
frappe.clear_cache(doctype="Blog Post") | |||
user = frappe.bean("User", "test1@example.com") | |||
user.get_controller().add_roles("Website Manager") | |||
user = frappe.get_doc("User", "test1@example.com") | |||
user.add_roles("Website Manager") | |||
user = frappe.bean("User", "test2@example.com") | |||
user.get_controller().add_roles("Blogger") | |||
user = frappe.get_doc("User", "test2@example.com") | |||
user.add_roles("Blogger") | |||
frappe.set_user("test1@example.com") | |||
@@ -53,17 +53,17 @@ class TestBlogPost(unittest.TestCase): | |||
clear_restrictions("Blog Post") | |||
def test_basic_permission(self): | |||
post = frappe.bean("Blog Post", "_test-blog-post") | |||
post = frappe.get_doc("Blog Post", "_test-blog-post") | |||
self.assertTrue(post.has_read_perm()) | |||
def test_restriction_in_bean(self): | |||
frappe.defaults.add_default("Blog Category", "_Test Blog Category 1", "test1@example.com", | |||
"Restriction") | |||
post = frappe.bean("Blog Post", "_test-blog-post") | |||
post = frappe.get_doc("Blog Post", "_test-blog-post") | |||
self.assertFalse(post.has_read_perm()) | |||
post1 = frappe.bean("Blog Post", "_test-blog-post-1") | |||
post1 = frappe.get_doc("Blog Post", "_test-blog-post-1") | |||
self.assertTrue(post1.has_read_perm()) | |||
def test_restriction_in_report(self): | |||
@@ -92,10 +92,10 @@ class TestBlogPost(unittest.TestCase): | |||
frappe.set_user("test2@example.com") | |||
post = frappe.bean("Blog Post", "_test-blog-post") | |||
post = frappe.get_doc("Blog Post", "_test-blog-post") | |||
self.assertTrue(post.has_read_perm()) | |||
post1 = frappe.bean("Blog Post", "_test-blog-post-1") | |||
post1 = frappe.get_doc("Blog Post", "_test-blog-post-1") | |||
self.assertFalse(post1.has_read_perm()) | |||
def test_owner_match_report(self): | |||
@@ -130,11 +130,11 @@ class TestBlogPost(unittest.TestCase): | |||
frappe.set_user("test2@example.com") | |||
# user can only access restricted blog post | |||
bean = frappe.bean("Blog Post", "_test-blog-post") | |||
bean = frappe.get_doc("Blog Post", "_test-blog-post") | |||
self.assertTrue(bean.has_read_perm()) | |||
# and not this one | |||
bean = frappe.bean("Blog Post", "_test-blog-post-1") | |||
bean = frappe.get_doc("Blog Post", "_test-blog-post-1") | |||
self.assertFalse(bean.has_read_perm()) | |||
def test_not_allowed_to_remove_self(self): | |||
@@ -151,21 +151,21 @@ class TestBlogPost(unittest.TestCase): | |||
self.add_restricted_on_blogger() | |||
frappe.set_user("test2@example.com") | |||
bean = frappe.bean("Blog Post", "_test-blog-post-1") | |||
bean = frappe.get_doc("Blog Post", "_test-blog-post-1") | |||
self.assertFalse(bean.has_read_perm()) | |||
frappe.set_user("test1@example.com") | |||
add("test2@example.com", "Blog Post", "_test-blog-post-1") | |||
frappe.set_user("test2@example.com") | |||
bean = frappe.bean("Blog Post", "_test-blog-post-1") | |||
bean = frappe.get_doc("Blog Post", "_test-blog-post-1") | |||
self.assertTrue(bean.has_read_perm()) | |||
def test_set_only_once(self): | |||
blog_post = frappe.get_meta("Blog Post") | |||
blog_post.get_field("title").set_only_once = 1 | |||
bean = frappe.bean("Blog Post", "_test-blog-post-1") | |||
bean = frappe.get_doc("Blog Post", "_test-blog-post-1") | |||
bean.title = "New" | |||
self.assertRaises(frappe.CannotChangeConstantError, bean.save) | |||
blog_post.get_field("title").set_only_once = 0 | |||
@@ -20,6 +20,6 @@ class Blogger(Document): | |||
if self.user: | |||
for blog in frappe.db.sql_list("""select name from `tabBlog Post` where owner=%s | |||
and ifnull(blogger,'')=''""", self.user): | |||
b = frappe.bean("Blog Post", blog) | |||
b = frappe.get_doc("Blog Post", blog) | |||
b.blogger = self.name | |||
b.save() |
@@ -54,7 +54,7 @@ class Post(Document): | |||
def send_email_on_reply(self): | |||
owner_fullname = get_fullname(self.owner) | |||
parent_post = frappe.bean("Post", self.parent_post).doc | |||
parent_post = frappe.get_doc("Post", self.parent_post).doc | |||
message = self.get_reply_email_message(self.name, owner_fullname) | |||
@@ -42,7 +42,7 @@ def set_vote(ref_doctype, ref_name): | |||
raise frappe.PermissionError | |||
try: | |||
user_vote = frappe.bean({ | |||
user_vote = frappe.get_doc({ | |||
"doctype": "User Vote", | |||
"ref_doctype": ref_doctype, | |||
"ref_name": ref_name | |||
@@ -60,7 +60,7 @@ class TestWebPage(unittest.TestCase): | |||
{"ref_doctype":"Web Page", "docname": "test-web-page-5"}, 'idx'), 2) | |||
def test_check_rename(self): | |||
web_page = frappe.bean("Web Page", "test-web-page-1") | |||
web_page = frappe.get_doc("Web Page", "test-web-page-1") | |||
web_page.parent_website_route = "test-web-page-4" | |||
web_page.save() | |||
@@ -76,7 +76,7 @@ class TestWebPage(unittest.TestCase): | |||
"test-web-page-1/test-web-page-2") | |||
def test_check_move(self): | |||
web_page = frappe.bean("Web Page", "test-web-page-3") | |||
web_page = frappe.get_doc("Web Page", "test-web-page-3") | |||
web_page.parent_website_route = "test-web-page-4" | |||
web_page.save() | |||
@@ -89,7 +89,7 @@ class TestWebPage(unittest.TestCase): | |||
self.assertEquals(frappe.db.get_value("Website Route", | |||
{"ref_doctype":"Web Page", "docname": "test-web-page-5"}, 'idx'), 1) | |||
web_page = frappe.bean("Web Page", "test-web-page-3") | |||
web_page = frappe.get_doc("Web Page", "test-web-page-3") | |||
web_page.parent_website_route = "test-web-page-1" | |||
web_page.save() | |||
@@ -11,7 +11,7 @@ sitemap_fields = ("page_name", "ref_doctype", "docname", "page_or_generator", "i | |||
"lastmod", "parent_website_route", "public_read", "public_write", "page_title") | |||
class WebsiteRoute(DocTypeNestedSet): | |||
self.nsm_parent_field = "parent_website_route" | |||
nsm_parent_field = "parent_website_route" | |||
def autoname(self): | |||
self.name = self.get_url() | |||
@@ -97,7 +97,7 @@ class WebsiteRoute(DocTypeNestedSet): | |||
# rename children | |||
for name in frappe.db.sql_list("""select name from `tabWebsite Route` | |||
where parent_website_route=%s""", self.name): | |||
child = frappe.bean("Website Route", name) | |||
child = frappe.get_doc("Website Route", name) | |||
child.parent_website_route = self.name | |||
child.save() | |||
@@ -139,32 +139,32 @@ class WebsiteRoute(DocTypeNestedSet): | |||
clear_cache(self.parent_website_route) | |||
def add_to_sitemap(options): | |||
bean = frappe.new_bean("Website Route") | |||
website_route = frappe.new_doc("Website Route") | |||
for key in sitemap_fields: | |||
bean.set(key, options.get(key)) | |||
if not bean.page_name: | |||
bean.page_name = options.get("link_name") | |||
bean.website_template = options.get("link_name") | |||
website_route.set(key, options.get(key)) | |||
if not website_route.page_name: | |||
website_route.page_name = options.get("link_name") | |||
website_route.website_template = options.get("link_name") | |||
bean.insert(ignore_permissions=True) | |||
website_route.insert(ignore_permissions=True) | |||
return bean.idx | |||
return website_route.idx | |||
def update_sitemap(website_route, options): | |||
bean = frappe.bean("Website Route", website_route) | |||
website_route = frappe.get_doc("Website Route", website_route) | |||
for key in sitemap_fields: | |||
bean.set(key, options.get(key)) | |||
website_route.set(key, options.get(key)) | |||
if not bean.page_name: | |||
if not website_route.page_name: | |||
# for pages | |||
bean.page_name = options.get("link_name") | |||
website_route.page_name = options.get("link_name") | |||
bean.website_template = options.get("link_name") | |||
bean.save(ignore_permissions=True) | |||
website_route.website_template = options.get("link_name") | |||
website_route.save(ignore_permissions=True) | |||
return bean.idx | |||
return website_route.idx | |||
def remove_sitemap(page_name=None, ref_doctype=None, docname=None): | |||
if page_name: | |||
@@ -80,7 +80,7 @@ def get_website_settings(): | |||
] | |||
}) | |||
settings = frappe.doc("Website Settings", "Website Settings") | |||
settings = frappe.get_doc("Website Settings", "Website Settings") | |||
for k in ["banner_html", "brand_html", "copyright", "twitter_share_via", | |||
"favicon", "facebook_share", "google_plus_one", "twitter_share", "linked_in_share", | |||
"disable_signup"]: | |||
@@ -16,7 +16,7 @@ class WebsiteSlideshow(Document): | |||
clear_cache() | |||
def get_slideshow(bean): | |||
slideshow = frappe.bean("Website Slideshow", bean.slideshow) | |||
slideshow = frappe.get_doc("Website Slideshow", bean.slideshow) | |||
return { | |||
"slides": slideshow.doclist.get({"doctype":"Website Slideshow Item"}), | |||
@@ -20,9 +20,9 @@ class WebsiteTemplate(Document): | |||
website_route = frappe.db.get_value("Website Route", | |||
{"website_template": self.name, "page_or_generator": "Page"}) | |||
opts = self.copy() | |||
opts = self.as_dict() | |||
opts.update({"public_read": 1}) | |||
if website_route: | |||
update_sitemap(website_route, opts) | |||
else: | |||
@@ -37,13 +37,13 @@ class WebsiteTemplate(Document): | |||
{condition} order by idx asc, {sort_field} {sort_order}""".format( | |||
doctype = self.ref_doctype, | |||
condition = condition, | |||
sort_field = self.sort_field or "name", | |||
sort_order = self.sort_order or "asc" | |||
sort_field = getattr(self, "sort_field", "name"), | |||
sort_order = getattr(self, "sort_order", "asc") | |||
)): | |||
bean = frappe.bean(self.ref_doctype, name) | |||
doc = frappe.get_doc(self.ref_doctype, name) | |||
# regenerate route | |||
bean.run_method("on_update") | |||
doc.run_method("on_update") | |||
def rebuild_website_template(): | |||
# TODO | |||
@@ -127,7 +127,7 @@ def add_website_template(page_or_generator, app, path, fname, app_path): | |||
# found by earlier app, override | |||
frappe.db.sql("""delete from `tabWebsite Template` where name=%s""", (wsc.link_name,)) | |||
frappe.bean(wsc).insert() | |||
frappe.get_doc(wsc).insert() | |||
return name | |||
@@ -24,10 +24,10 @@ def move(name, up_or_down): | |||
if not frappe.has_permission("Website Route"): | |||
raise frappe.PermissionError | |||
sitemap = frappe.doc("Website Route", name) | |||
sitemap = frappe.get_doc("Website Route", name) | |||
if up_or_down=="up": | |||
if sitemap.idx > 0: | |||
prev = frappe.doc("Website Route", { | |||
prev = frappe.get_doc("Website Route", { | |||
"parent_website_route": sitemap.parent_website_route, | |||
"idx": sitemap.idx - 1 | |||
}) | |||
@@ -40,7 +40,7 @@ def move(name, up_or_down): | |||
ret = "ok" | |||
else: | |||
nexts = frappe.doc("Website Route", { | |||
nexts = frappe.get_doc("Website Route", { | |||
"parent_website_route": sitemap.parent_website_route, | |||
"idx": sitemap.idx + 1 | |||
}) | |||
@@ -60,10 +60,10 @@ def update_parent(name, new_parent): | |||
if not frappe.has_permission("Website Route"): | |||
raise frappe.PermissionError | |||
sitemap = frappe.doc("Website Route", name) | |||
sitemap = frappe.get_doc("Website Route", name) | |||
if sitemap.ref_doctype: | |||
generator = frappe.bean(sitemap.ref_doctype, sitemap.docname) | |||
generator = frappe.get_doc(sitemap.ref_doctype, sitemap.docname) | |||
if not generator.meta.has_field("parent_website_route"): | |||
frappe.throw("Does not allow moving.") | |||
generator.parent_website_route = new_parent | |||
@@ -21,10 +21,10 @@ def get_sitemap_options(path): | |||
return frappe._dict(sitemap_options) | |||
def build_sitemap_options(path): | |||
sitemap_options = frappe._dict(frappe.doc("Website Route", path).fields) | |||
sitemap_options = frappe._dict(frappe.get_doc("Website Route", path).fields) | |||
home_page = get_home_page() | |||
sitemap_config = frappe.doc("Website Template", | |||
sitemap_config = frappe.get_doc("Website Template", | |||
sitemap_options.get("website_template")).fields | |||
# get sitemap config fields too | |||
@@ -65,7 +65,7 @@ def set_sidebar_items(sitemap_options, pathname, home_page): | |||
if sitemap_options.children: | |||
# if children are from generator and sort order is specified, then get that condition | |||
website_template = frappe.doc("Website Template", sitemap_options.children[0].website_template) | |||
website_template = frappe.get_doc("Website Template", sitemap_options.children[0].website_template) | |||
if website_template.sort_by!="name": | |||
sitemap_options.children = frappe.db.sql("""select t1.* from | |||
`tabWebsite Route` t1, `tab{ref_doctype}` t2 | |||
@@ -75,5 +75,5 @@ def set_sidebar_items(sitemap_options, pathname, home_page): | |||
order by t2.{sort_by} {sort_order}""".format(**website_template.fields), | |||
pathname, as_dict=True) | |||
sitemap_options.children = [frappe.doc("Website Route", pathname).fields] + sitemap_options.children | |||
sitemap_options.children = [frappe.get_doc("Website Route", pathname).fields] + sitemap_options.children | |||
@@ -111,7 +111,7 @@ class sync(object): | |||
self.insert_web_page(route, fpath, page_name, priority, parent_website_route) | |||
def insert_web_page(self, route, fpath, page_name, priority, parent_website_route): | |||
page = frappe.bean({ | |||
page = frappe.get_doc({ | |||
"doctype":"Web Page", | |||
"idx": priority, | |||
"page_name": page_name, | |||
@@ -125,7 +125,7 @@ class sync(object): | |||
page.insert() | |||
except NameError: | |||
# page exists, if deleted static, delete it and try again | |||
old_route = frappe.doc("Website Route", {"ref_doctype":"Web Page", | |||
old_route = frappe.get_doc("Website Route", {"ref_doctype":"Web Page", | |||
"docname": page.name}) | |||
if old_route.static_file_timestamp and not os.path.exists(os.path.join(self.statics_path, | |||
old_route.name)): | |||
@@ -135,7 +135,7 @@ class sync(object): | |||
# update timestamp | |||
route_bean = frappe.bean("Website Route", {"ref_doctype": "Web Page", | |||
route_bean = frappe.get_doc("Website Route", {"ref_doctype": "Web Page", | |||
"docname": page.name}) | |||
route_bean.static_file_timestamp = cint(os.path.getmtime(fpath)) | |||
route_bean.save() | |||
@@ -148,12 +148,12 @@ class sync(object): | |||
if str(cint(os.path.getmtime(fpath)))!= route_details.static_file_timestamp \ | |||
or (cint(route_details.idx) != cint(priority) and (priority is not None)): | |||
page = frappe.bean("Web Page", route_details.docname) | |||
page = frappe.get_doc("Web Page", route_details.docname) | |||
page.update(get_static_content(fpath, route_details.docname)) | |||
page.idx = priority | |||
page.save() | |||
route_bean = frappe.bean("Website Route", route_details.name) | |||
route_bean = frappe.get_doc("Website Route", route_details.name) | |||
route_bean.static_file_timestamp = cint(os.path.getmtime(fpath)) | |||
route_bean.save() | |||
@@ -11,7 +11,7 @@ import json | |||
def update_event(args, field_map): | |||
args = frappe._dict(json.loads(args)) | |||
field_map = frappe._dict(json.loads(field_map)) | |||
w = frappe.bean(args.doctype, args.name) | |||
w = frappe.get_doc(args.doctype, args.name) | |||
w.set(field_map.start, args[field_map.start]) | |||
w.set(field_map.end, args[field_map.end]) | |||
w.save() | |||
@@ -34,7 +34,7 @@ def add(args=None): | |||
else: | |||
from frappe.utils import nowdate | |||
d = frappe.bean({ | |||
d = frappe.get_doc({ | |||
"doctype":"ToDo", | |||
"owner": args['assign_to'], | |||
"reference_type": args['doctype'], | |||
@@ -79,7 +79,7 @@ def add(args=None): | |||
@frappe.whitelist() | |||
def remove(doctype, name, assign_to): | |||
"""remove from todo""" | |||
todo = frappe.bean("ToDo", {"reference_type":doctype, "reference_name":name, "owner":assign_to, "status":"Open"}) | |||
todo = frappe.get_doc("ToDo", {"reference_type":doctype, "reference_name":name, "owner":assign_to, "status":"Open"}) | |||
todo.status = "Closed" | |||
todo.save(ignore_permissions=True) | |||
@@ -59,7 +59,7 @@ def add_comment(doclist): | |||
doclist = json.loads(doclist) | |||
doclist[0]["__islocal"] = 1 | |||
doclistobj = frappe.bean(doclist) | |||
doclistobj = frappe.get_doc(doclist) | |||
doclistobj.ignore_permissions = True | |||
doclistobj.save() | |||
@@ -13,7 +13,7 @@ from frappe.utils import flt, cint | |||
import frappe.widgets.reportview | |||
def get_report_doc(report_name): | |||
bean = frappe.bean("Report", report_name) | |||
bean = frappe.get_doc("Report", report_name) | |||
if not bean.has_read_perm(): | |||
raise frappe.PermissionError("You don't have access to: {report}".format(report=report_name)) | |||
@@ -63,7 +63,7 @@ def save_report(): | |||
d.report_type = "Report Builder" | |||
d.json = data['json'] | |||
frappe.bean([d]).save() | |||
frappe.get_doc([d]).save() | |||
frappe.msgprint("%s saved." % d.name) | |||
return d.name | |||