From 80f1ef6268dba533e069ce16fce9d17ab3b17ce3 Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Mon, 21 Apr 2014 13:58:37 +0530 Subject: [PATCH] Removed controller.py --- frappe/core/doctype/user/test_user.py | 33 +++++----- frappe/exceptions.py | 1 + frappe/model/controller.py | 91 --------------------------- frappe/model/delete_doc.py | 4 +- frappe/model/document.py | 79 ++++++++++++++++++++++- 5 files changed, 96 insertions(+), 112 deletions(-) delete mode 100644 frappe/model/controller.py diff --git a/frappe/core/doctype/user/test_user.py b/frappe/core/doctype/user/test_user.py index d5dda982a8..6cc4038b9f 100644 --- a/frappe/core/doctype/user/test_user.py +++ b/frappe/core/doctype/user/test_user.py @@ -3,49 +3,48 @@ import frappe, unittest -from frappe.model.delete_doc import delete_doc, LinkExistsError +from frappe.model.delete_doc import delete_doc test_records = frappe.get_test_records('User') class TestUser(unittest.TestCase): def test_delete(self): - self.assertRaises(LinkExistsError, delete_doc, "Role", "_Test Role 2") + self.assertRaises(frappe.LinkExistsError, delete_doc, "Role", "_Test Role 2") frappe.db.sql("""delete from tabUserRole where role='_Test Role 2'""") delete_doc("Role","_Test Role 2") - + user = frappe.copy_doc(test_records[1]) user.email = "_test@example.com" user.insert() - + frappe.get_doc({"doctype": "ToDo", "description": "_Test"}).insert() - + delete_doc("User", "_test@example.com") - + self.assertTrue(not frappe.db.sql("""select * from `tabToDo` where owner=%s""", ("_test@example.com",))) - + from frappe.core.doctype.role.test_role import test_records as role_records frappe.copy_doc(role_records[1]).insert() - + def test_get_value(self): self.assertEquals(frappe.db.get_value("User", "test@example.com"), "test@example.com") self.assertEquals(frappe.db.get_value("User", {"email":"test@example.com"}), "test@example.com") self.assertEquals(frappe.db.get_value("User", {"email":"test@example.com"}, "email"), "test@example.com") - self.assertEquals(frappe.db.get_value("User", {"email":"test@example.com"}, ["first_name", "email"]), + self.assertEquals(frappe.db.get_value("User", {"email":"test@example.com"}, ["first_name", "email"]), ("_Test", "test@example.com")) - self.assertEquals(frappe.db.get_value("User", - {"email":"test@example.com", "first_name": "_Test"}, - ["first_name", "email"]), + self.assertEquals(frappe.db.get_value("User", + {"email":"test@example.com", "first_name": "_Test"}, + ["first_name", "email"]), ("_Test", "test@example.com")) - - test_user = frappe.db.sql("select * from tabUser where name='test@example.com'", + + test_user = frappe.db.sql("select * from tabUser where name='test@example.com'", as_dict=True)[0] - self.assertEquals(frappe.db.get_value("User", {"email":"test@example.com"}, "*", as_dict=True), + self.assertEquals(frappe.db.get_value("User", {"email":"test@example.com"}, "*", as_dict=True), test_user) self.assertEquals(frappe.db.get_value("User", "xxxtest@example.com"), None) - + frappe.db.set_value("Website Settings", "Website Settings", "_test", "_test_val") self.assertEquals(frappe.db.get_value("Website Settings", None, "_test"), "_test_val") self.assertEquals(frappe.db.get_value("Website Settings", "Website Settings", "_test"), "_test_val") - \ No newline at end of file diff --git a/frappe/exceptions.py b/frappe/exceptions.py index 422d9fc99d..7e8874b1bb 100644 --- a/frappe/exceptions.py +++ b/frappe/exceptions.py @@ -42,3 +42,4 @@ class LinkValidationError(ValidationError): pass class DocstatusTransitionError(ValidationError): pass class TimestampMismatchError(ValidationError): pass class EmptyTableError(ValidationError): pass +class LinkExistsError(ValidationError): pass diff --git a/frappe/model/controller.py b/frappe/model/controller.py deleted file mode 100644 index ee0ef55d8e..0000000000 --- a/frappe/model/controller.py +++ /dev/null @@ -1,91 +0,0 @@ -# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors -# MIT License. See license.txt - -from __future__ import unicode_literals -import frappe -from frappe import msgprint, _ -from frappe.utils import flt, cint, cstr -from frappe.model.meta import get_field_precision -from frappe.model.document import Document - -class DocListController(Document): - def __init__(self, arg1, arg2=None): - super(DocListController, self).__init__(arg1, arg2) - if hasattr(self, "setup"): - self.setup() - - def validate_value(self, fieldname, condition, val2, doc=None, raise_exception=None): - """check that value of fieldname should be 'condition' val2 - else throw exception""" - error_condition_map = { - "in": _("one of"), - "not in": _("none of"), - "^": _("beginning with"), - } - - if not doc: - doc = self - - df = doc.meta.get_field(fieldname) - - val1 = doc.get(fieldname) - - if df.fieldtype in ("Currency", "Float"): - val1 = flt(val1, self.precision(df.fieldname, doc.parentfield or None)) - val2 = flt(val2, self.precision(df.fieldname, doc.parentfield or None)) - elif df.fieldtype in ("Int", "Check"): - val1 = cint(val1) - val2 = cint(val2) - elif df.fieldtype in ("Data", "Text", "Small Text", "Long Text", - "Text Editor", "Select", "Link"): - val1 = cstr(val1) - val2 = cstr(val2) - - if not frappe.compare(val1, condition, val2): - label = doc.meta.get_label(fieldname) - condition_str = error_condition_map.get(condition, condition) - if doc.parentfield: - msg = _("Incorrect value in row {0}: {1} must be {2} {3}".format(doc.idx, label, condition_str, val2)) - else: - msg = _("Incorrect value: {1} must be {2} {3}".format(label, condition_str, val2)) - - # raise passed exception or True - msgprint(msg, raise_exception=raise_exception or True) - - def validate_table_has_rows(self, parentfield, raise_exception=None): - if not (isinstance(self.get(parentfield), list) and len(self.get(parentfield)) > 0): - label = self.meta.get_label(parentfield) - frappe.throw(_("Table {0} cannot be empty").format(label), raise_exception or frappe.EmptyTableError) - - def round_floats_in(self, doc, fieldnames=None): - if not fieldnames: - fieldnames = [df.fieldname for df in doc.meta.get("fields", - {"fieldtype": ["in", ["Currency", "Float"]]})] - - for fieldname in fieldnames: - doc.set(fieldname, flt(doc.get(fieldname), self.precision(fieldname, doc.parentfield))) - - def precision(self, fieldname, parentfield=None): - if parentfield and not isinstance(parentfield, basestring): - parentfield = parentfield.parentfield - - if not hasattr(self, "_precision"): - self._precision = frappe._dict({ - "default": cint(frappe.db.get_default("float_precision")) or 3, - "options": {} - }) - - if self._precision.setdefault(parentfield or "main", {}).get(fieldname) is None: - meta = frappe.get_meta(self.meta.get_field(parentfield).options if parentfield else self.doctype) - df = meta.get_field(fieldname) - - if df.fieldtype == "Currency" and df.options and not self._precision.options.get(df.options): - self._precision.options[df.options] = get_field_precision(df, self) - - if df.fieldtype == "Currency": - self._precision[parentfield or "main"][fieldname] = cint(self._precision.options.get(df.options)) or \ - self._precision.default - elif df.fieldtype == "Float": - self._precision[parentfield or "main"][fieldname] = self._precision.default - - return self._precision[parentfield or "main"][fieldname] diff --git a/frappe/model/delete_doc.py b/frappe/model/delete_doc.py index d23c33be5d..ceab85d6b0 100644 --- a/frappe/model/delete_doc.py +++ b/frappe/model/delete_doc.py @@ -70,8 +70,6 @@ def check_permission_and_not_submitted(doc, ignore_permissions=False): frappe.msgprint(_("Submitted Record cannot be deleted")+": "+doc.name+"("+doc.doctype+")", raise_exception=True) -class LinkExistsError(frappe.ValidationError): pass - def check_if_doc_is_linked(doc, method="Delete"): """ Raises excption if the given doc(dt, dn) is linked in another record. @@ -89,4 +87,4 @@ def check_if_doc_is_linked(doc, method="Delete"): (method=="Cancel" and item.docstatus==1)): frappe.throw(_("Cannot delete or cancel because {0} {1} is linked with {2} {3}").format(doc.doctype, doc.name, item.parent or item.name, item.parenttype if item.parent else link_dt), - LinkExistsError) + frappe.LinkExistsError) diff --git a/frappe/model/document.py b/frappe/model/document.py index 4abf03db04..6d0a265aca 100644 --- a/frappe/model/document.py +++ b/frappe/model/document.py @@ -4,7 +4,7 @@ from __future__ import unicode_literals import frappe from frappe import _, msgprint -from frappe.utils import cstr, now +from frappe.utils import flt, cint, cstr, now from frappe.modules import load_doctype_module from frappe.model.base_document import BaseDocument from frappe.model.naming import set_new_name @@ -424,3 +424,80 @@ class Document(BaseDocument): return composer + def validate_value(self, fieldname, condition, val2, doc=None, raise_exception=None): + """check that value of fieldname should be 'condition' val2 + else throw exception""" + error_condition_map = { + "in": _("one of"), + "not in": _("none of"), + "^": _("beginning with"), + } + + if not doc: + doc = self + + df = doc.meta.get_field(fieldname) + + val1 = doc.get(fieldname) + + if df.fieldtype in ("Currency", "Float"): + val1 = flt(val1, self.precision(df.fieldname, doc.parentfield or None)) + val2 = flt(val2, self.precision(df.fieldname, doc.parentfield or None)) + elif df.fieldtype in ("Int", "Check"): + val1 = cint(val1) + val2 = cint(val2) + elif df.fieldtype in ("Data", "Text", "Small Text", "Long Text", + "Text Editor", "Select", "Link"): + val1 = cstr(val1) + val2 = cstr(val2) + + if not frappe.compare(val1, condition, val2): + label = doc.meta.get_label(fieldname) + condition_str = error_condition_map.get(condition, condition) + if doc.parentfield: + msg = _("Incorrect value in row {0}: {1} must be {2} {3}".format(doc.idx, label, condition_str, val2)) + else: + msg = _("Incorrect value: {1} must be {2} {3}".format(label, condition_str, val2)) + + # raise passed exception or True + msgprint(msg, raise_exception=raise_exception or True) + + def validate_table_has_rows(self, parentfield, raise_exception=None): + if not (isinstance(self.get(parentfield), list) and len(self.get(parentfield)) > 0): + label = self.meta.get_label(parentfield) + frappe.throw(_("Table {0} cannot be empty").format(label), raise_exception or frappe.EmptyTableError) + + def round_floats_in(self, doc, fieldnames=None): + if not fieldnames: + fieldnames = (df.fieldname for df in + doc.meta.get("fields", {"fieldtype": ["in", ["Currency", "Float"]]})) + + for fieldname in fieldnames: + doc.set(fieldname, flt(doc.get(fieldname), self.precision(fieldname, doc.parentfield))) + + def precision(self, fieldname, parentfield=None): + from frappe.model.meta import get_field_precision + + if parentfield and not isinstance(parentfield, basestring): + parentfield = parentfield.parentfield + + if not hasattr(self, "_precision"): + self._precision = frappe._dict({ + "default": cint(frappe.db.get_default("float_precision")) or 3, + "options": {} + }) + + if self._precision.setdefault(parentfield or "main", {}).get(fieldname) is None: + meta = frappe.get_meta(self.meta.get_field(parentfield).options if parentfield else self.doctype) + df = meta.get_field(fieldname) + + if df.fieldtype == "Currency" and df.options and not self._precision.options.get(df.options): + self._precision.options[df.options] = get_field_precision(df, self) + + if df.fieldtype == "Currency": + self._precision[parentfield or "main"][fieldname] = cint(self._precision.options.get(df.options)) or \ + self._precision.default + elif df.fieldtype == "Float": + self._precision[parentfield or "main"][fieldname] = self._precision.default + + return self._precision[parentfield or "main"][fieldname]