Removed controller.py
This commit is contained in:
parent
fa3a99de65
commit
80f1ef6268
5 changed files with 96 additions and 112 deletions
|
|
@ -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")
|
||||
|
||||
|
|
@ -42,3 +42,4 @@ class LinkValidationError(ValidationError): pass
|
|||
class DocstatusTransitionError(ValidationError): pass
|
||||
class TimestampMismatchError(ValidationError): pass
|
||||
class EmptyTableError(ValidationError): pass
|
||||
class LinkExistsError(ValidationError): pass
|
||||
|
|
|
|||
|
|
@ -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]
|
||||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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]
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue