diff --git a/frappe/config/setup.py b/frappe/config/setup.py index 3db8336266..5c5b98d75c 100644 --- a/frappe/config/setup.py +++ b/frappe/config/setup.py @@ -101,6 +101,17 @@ data = [ }, ] }, + { + "label": _("Printing and Branding"), + "icon": "icon-print", + "items": [ + { + "type": "doctype", + "name": "Print Format", + "description": _("Customized HTML Templates for printing transctions.") + }, + ] + }, { "label": _("Customize"), "icon": "icon-glass", diff --git a/frappe/database.py b/frappe/database.py index 64f0b31699..c4c29755eb 100644 --- a/frappe/database.py +++ b/frappe/database.py @@ -159,7 +159,8 @@ class Database: self.sql(query) def check_transaction_status(self, query): - if self.transaction_writes and query and query.strip().split()[0].lower() in ['start', 'alter', 'drop', 'create', "begin"]: + if not frappe.flags.in_test and self.transaction_writes and \ + query and query.strip().split()[0].lower() in ['start', 'alter', 'drop', 'create', "begin"]: raise Exception, 'This statement can cause implicit commit' if query and query.strip().lower() in ('commit', 'rollback'): diff --git a/frappe/tests/test_document.py b/frappe/tests/test_document.py index c48fc3b701..3cc8b1ae1d 100644 --- a/frappe/tests/test_document.py +++ b/frappe/tests/test_document.py @@ -13,9 +13,9 @@ class TestDocument(unittest.TestCase): self.assertEquals(d.doctype, "DocType") self.assertEquals(d.name, "User") self.assertEquals(d.allow_rename, 1) - self.assertTrue(isinstance(d.as_dict(), list)) + self.assertTrue(isinstance(d.fields, list)) self.assertTrue(isinstance(d.permissions, list)) - self.assertTrue(filter(lambda d: d.fieldname=="email", d.as_dict())) + self.assertTrue(filter(lambda d: d.fieldname=="email", d.fields)) def test_load_single(self): d = frappe.get_doc("Website Settings", "Website Settings") @@ -26,14 +26,14 @@ class TestDocument(unittest.TestCase): def test_insert(self): d = frappe.get_doc({ "doctype":"Event", - "subject":"_Test Event 1", + "subject":"test-doc-test-event 1", "starts_on": "2014-01-01", "event_type": "Public" }) d.insert() self.assertTrue(d.name.startswith("EV")) self.assertEquals(frappe.db.get_value("Event", d.name, "subject"), - "_Test Event 1") + "test-doc-test-event 1") # test if default values are added self.assertEquals(d.send_reminder, 1) @@ -42,7 +42,7 @@ class TestDocument(unittest.TestCase): def test_insert_with_child(self): d = frappe.get_doc({ "doctype":"Event", - "subject":"_Test Event 2", + "subject":"test-doc-test-event 2", "starts_on": "2014-01-01", "event_type": "Public", "event_individuals": [ @@ -54,7 +54,7 @@ class TestDocument(unittest.TestCase): d.insert() self.assertTrue(d.name.startswith("EV")) self.assertEquals(frappe.db.get_value("Event", d.name, "subject"), - "_Test Event 2") + "test-doc-test-event 2") d1 = frappe.get_doc("Event", d.name) self.assertTrue(d1.event_individuals[0].person, "Administrator") diff --git a/frappe/utils/__init__.py b/frappe/utils/__init__.py index b877452c2e..7d7adf90b5 100644 --- a/frappe/utils/__init__.py +++ b/frappe/utils/__init__.py @@ -216,12 +216,15 @@ def get_datetime(datetime_str): from datetime import datetime if isinstance(datetime_str, datetime): return datetime_str.replace(tzinfo=None) - - try: + + if datetime_str=='0000-00-00 00:00:00.000000': + return None + + if len(datetime_str)==26: return datetime.strptime(datetime_str, '%Y-%m-%d %H:%M:%S.%f') - except ValueError: + else: return datetime.strptime(datetime_str, '%Y-%m-%d %H:%M:%S') - + def get_datetime_str(datetime_obj): if isinstance(datetime_obj, basestring): datetime_obj = get_datetime(datetime_obj) diff --git a/frappe/widgets/form/load.py b/frappe/widgets/form/load.py index 9c7882cb06..67e23369a2 100644 --- a/frappe/widgets/form/load.py +++ b/frappe/widgets/form/load.py @@ -68,7 +68,7 @@ def getdoctype(doctype, with_parent=False, cached_timestamp=None): def get_meta_bundle(doctype): bundle = [frappe.widgets.form.meta.get_meta(doctype)] - for df in bundle[0].as_dict(): + for df in bundle[0].fields: if df.fieldtype=="Table": bundle.append(frappe.widgets.form.meta.get_meta(df.options)) return bundle