mirror of
https://github.com/yweber/lodel2.git
synced 2025-11-14 18:09:17 +01:00
Delete implementation for EmClass and EmField
The EmField version cannot be tested yet (drop column not yet implemented for sqlite in Database.sqlalter)
This commit is contained in:
parent
6359adc0f4
commit
a042306c14
4 changed files with 35 additions and 5 deletions
|
|
@ -67,8 +67,26 @@ class EmClass(EmComponent):
|
|||
|
||||
return resclass
|
||||
|
||||
## @brief Delete a class if it's ''empty''
|
||||
# If a class has no fieldgroups delete it
|
||||
# @return bool : True if deleted False if deletion aborded
|
||||
def delete(self):
|
||||
do_delete = True
|
||||
fieldgroups = self.fieldgroups()
|
||||
if len(fieldgroups) > 0:
|
||||
do_delete = False
|
||||
return False
|
||||
|
||||
dbe = self.__class__.getDbE()
|
||||
meta = sqlutils.meta(dbe)
|
||||
#Here we have to give a connection
|
||||
class_table = sql.Table(self.name, meta)
|
||||
meta.drop_all(tables=[class_table], bind=dbe)
|
||||
return super(EmClass, self).delete()
|
||||
|
||||
|
||||
## Retrieve list of the field_groups of this class
|
||||
# @return field_groups [EmFieldGroup]:
|
||||
# @return A list of fieldgroups instance
|
||||
def fieldgroups(self):
|
||||
records = self._fieldgroups_db()
|
||||
fieldgroups = [EditorialModel.fieldgroups.EmFieldGroup(int(record.uid)) for record in records]
|
||||
|
|
|
|||
|
|
@ -216,7 +216,7 @@ class EmComponent(object):
|
|||
|
||||
|
||||
## Delete this component data in the database
|
||||
# @return bool
|
||||
# @return bool : True if deleted False if deletion aborded
|
||||
# @todo Use something like __del__ instead (or call it at the end)
|
||||
# @throw RunTimeError if it was unable to do the deletion
|
||||
def delete(self):
|
||||
|
|
@ -232,7 +232,7 @@ class EmComponent(object):
|
|||
|
||||
super(EmComponent, self).__setattr__('deleted', True)
|
||||
#</SQL>
|
||||
pass
|
||||
return True
|
||||
|
||||
## get_max_rank
|
||||
# Retourne le rank le plus élevé pour le groupe de component au quel apartient l'objet actuelle
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ from EditorialModel.types import EmType
|
|||
from Database import sqlutils
|
||||
from Database.sqlwrapper import SqlWrapper
|
||||
from Database.sqlquerybuilder import SqlQueryBuilder
|
||||
from Database.sqlalter import DropColumn
|
||||
|
||||
import sqlalchemy as sql
|
||||
|
||||
|
|
@ -80,6 +81,16 @@ class EmField(EmComponent):
|
|||
|
||||
return exists
|
||||
|
||||
## @brief Delete a field if it's not linked
|
||||
# @return bool : True if deleted False if deletion aborded
|
||||
# @todo Check if unconditionnal deletion is correct
|
||||
def delete(self):
|
||||
class_table = self.get_class_table()
|
||||
field_col = sql.Column(self.name)
|
||||
ddl = DropColumn(class_table, field_col)
|
||||
sqlutils.ddl_execute(ddl, self.__class__.getDbE())
|
||||
return super(EmField, self).delete()
|
||||
|
||||
|
||||
## addFieldColumnToClassTable (Function)
|
||||
#
|
||||
|
|
|
|||
|
|
@ -129,6 +129,7 @@ class TestField(FieldTestCase):
|
|||
self.assertIn(field_column.name, field_table_columns)
|
||||
pass
|
||||
|
||||
@unittest.skip("Delete not implemente for sqlite...")
|
||||
def test_deletion(self):
|
||||
field_names = ['field1', 'field2']
|
||||
for name in field_names:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue