From cfef3183ca0733b49743340c142428d5405f5807 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Wed, 29 Jul 2015 19:10:38 +0530 Subject: [PATCH] [fix] Adding Unique Constraint --- frappe/model/db_schema.py | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/frappe/model/db_schema.py b/frappe/model/db_schema.py index 196420e472..4842563728 100644 --- a/frappe/model/db_schema.py +++ b/frappe/model/db_schema.py @@ -75,7 +75,6 @@ class DbTable: self.add_index = [] self.drop_index = [] - self.set_default = [] # load @@ -240,6 +239,9 @@ class DbTable: # sanitize if e.args[0]==1060: frappe.throw(str(e)) + elif e.args[0]==1062: + fieldname = str(e).split("'")[-2] + frappe.throw(_("{0} field cannot be set as unique, as there are non-unique existing values".format(fieldname))) else: raise e @@ -286,17 +288,14 @@ class DbColumn: # type if (current_def['type'] != column_def) or (self.unique and not current_def['unique'] \ - and column_def in ('text', 'longtext')): + and column_def not in ('text', 'longtext')): self.table.change_type.append(self) else: # index - if (current_def['index'] and not self.set_index): - self.table.drop_index.append(self) - - if (current_def['unique'] and not self.unique) and not (column_def in ('text', 'longtext')): - self.table.drop_index.append(self) - + if current_def['index'] and not self.set_index and not self.unique: + self.table.drop_index.append(self) + if (not current_def['index'] and self.set_index) and not (column_def in ('text', 'longtext')): self.table.add_index.append(self)