From 3dc59a3fe37b21f5ad5a6e1ba8f5de5d0390a35a Mon Sep 17 00:00:00 2001 From: Antonio de la Rosa Date: Fri, 5 Aug 2016 05:33:33 +0200 Subject: [PATCH] Fixes in webmodel for delete rows in tables with constraints and tests --- paramecio/citoplasma/adminutils.py | 1 + paramecio/cromosoma/webmodel.py | 4 ++-- tests/webmodeltest.py | 33 ++++++++++++++++++++++++++++++ 3 files changed, 36 insertions(+), 2 deletions(-) diff --git a/paramecio/citoplasma/adminutils.py b/paramecio/citoplasma/adminutils.py index ea32e31..1d6a270 100644 --- a/paramecio/citoplasma/adminutils.py +++ b/paramecio/citoplasma/adminutils.py @@ -27,6 +27,7 @@ def get_language(s): lang_selected=s['lang'] else: s['lang']=I18n.default_lang + s.save() lang_selected=I18n.default_lang return lang_selected diff --git a/paramecio/cromosoma/webmodel.py b/paramecio/cromosoma/webmodel.py index 6ef53ec..3bf418b 100644 --- a/paramecio/cromosoma/webmodel.py +++ b/paramecio/cromosoma/webmodel.py @@ -627,7 +627,7 @@ class WebModel: id_table_related=self.fields[field].table_id - self.arr_sql_set_index[self.name][field]='ALTER TABLE `'+self.name+'` ADD CONSTRAINT `'+field+'_'+self.name+'IDX` FOREIGN KEY ( `'+field+'` ) REFERENCES `'+table_related+'` (`'+id_table_related+'`) ON DELETE RESTRICT ON UPDATE RESTRICT;' + self.arr_sql_set_index[self.name][field]='ALTER TABLE `'+self.name+'` ADD CONSTRAINT `'+field+'_'+self.name+'IDX` FOREIGN KEY ( `'+field+'` ) REFERENCES `'+table_related+'` (`'+id_table_related+'`) ON DELETE CASCADE ON UPDATE CASCADE;' return "create table `"+self.name+"` (\n"+",\n".join(table_fields)+"\n) DEFAULT CHARSET=utf8;"; @@ -682,7 +682,7 @@ class WebModel: id_table_related=self.fields[field].table_id - self.query('ALTER TABLE `'+self.name+'` ADD CONSTRAINT `'+field+'_'+self.name+'IDX` FOREIGN KEY ( `'+field+'` ) REFERENCES `'+table_related+'` (`'+id_table_related+'`) ON DELETE RESTRICT ON UPDATE RESTRICT;', [], self.connection_id) + self.query('ALTER TABLE `'+self.name+'` ADD CONSTRAINT `'+field+'_'+self.name+'IDX` FOREIGN KEY ( `'+field+'` ) REFERENCES `'+table_related+'` (`'+id_table_related+'`) ON DELETE CASCADE ON UPDATE CASCADE;', [], self.connection_id) for field in fields_to_add_unique: diff --git a/tests/webmodeltest.py b/tests/webmodeltest.py index 01ed771..a8996f1 100644 --- a/tests/webmodeltest.py +++ b/tests/webmodeltest.py @@ -15,6 +15,17 @@ class ExampleModel(WebModel): self.register(corefields.CharField('title')) self.register(corefields.CharField('content')) +class ForeignKeyExampleModel(WebModel): + + def __init__(self, connection): + + super().__init__(connection) + + # I can change other fields here, how the name. + + self.register(corefields.ForeignKeyField('example_id', ExampleModel(connection), size=11, required=False, identifier_field='id', named_field="id", select_fields=[])) + + class ExampleModel2(WebModel): def __init__(self, connection): @@ -151,6 +162,28 @@ class TestWebModelMethods(unittest.TestCase): connection.close() + def test_zcheck_1_foreignkeys(self): + + connection=WebModel.connection() + model=ExampleModel(connection) + foreignkey=ForeignKeyExampleModel(connection) + + print('Checking ForeignKeys...') + + sql=foreignkey.create_table() + + print('Creating foreignkey table...') + + self.assertTrue(foreignkey.query(sql)) + + + + print('Dropping foreignkey table...') + + self.assertTrue(foreignkey.drop()) + + pass + def test_zcheck_connections(self): print('Check connection of models...')