浏览代码

Issue changing 'Unique' field option in v8 (#3760)

* fix wrong query

* test unique constraint removal
version-14
tundebabzy 8 年前
committed by Rushabh Mehta
父节点
当前提交
993692ba32
共有 2 个文件被更改,包括 29 次插入4 次删除
  1. +28
    -3
      frappe/core/doctype/doctype/test_doctype.py
  2. +1
    -1
      frappe/model/db_schema.py

+ 28
- 3
frappe/core/doctype/doctype/test_doctype.py 查看文件

@@ -8,13 +8,14 @@ import unittest

# test_records = frappe.get_test_records('DocType')


class TestDocType(unittest.TestCase):
def new_doctype(self, name):
def new_doctype(self, name, unique=0):
return frappe.get_doc({
"doctype": "DocType",
"module": "Core",
"custom": 1,
"fields": [{"label": "Some Field", "fieldname": "some_fieldname", "fieldtype": "Data"}],
"fields": [{"label": "Some Field", "fieldname": "some_fieldname", "fieldtype": "Data", "unique": unique}],
"permissions": [{"role": "System Manager", "read": 1}],
"name": name
})
@@ -28,4 +29,28 @@ class TestDocType(unittest.TestCase):
frappe.delete_doc("DocType", name)

doc = self.new_doctype(name).insert()
doc.delete()
doc.delete()

def test_doctype_unique_constraint_dropped(self):
if frappe.db.exists("DocType", "With_Unique"):
frappe.delete_doc("DocType", "With_Unique")

dt = self.new_doctype("With_Unique", unique=1)
dt.insert()

doc1 = frappe.new_doc("With_Unique")
doc2 = frappe.new_doc("With_Unique")
doc1.some_fieldname = "Something"
doc1.name = "one"
doc2.some_fieldname = "Something"
doc2.name = "two"

doc1.insert()
self.assertRaises(frappe.UniqueValidationError, doc2.insert)

dt.fields[0].unique = 0
dt.save()

doc2.insert()
doc1.delete()
doc2.delete()

+ 1
- 1
frappe/model/db_schema.py 查看文件

@@ -314,7 +314,7 @@ class DbTable:
# if index key exists
if frappe.db.sql("""show index from `{0}`
where key_name=%s
and Non_unique=%s""".format(self.name), (col.fieldname, 0 if col.unique else 1)):
and Non_unique=%s""".format(self.name), (col.fieldname, col.unique)):
query.append("drop index `{}`".format(col.fieldname))

for col in self.set_default:


正在加载...
取消
保存