Code factorization on EmType select and unselect fields. Added comparison capabilities to EmComponent (and childs)
Implemented __hash__ and __eq__ for EmComponent (based on class name and uid) to test equality betwenn two instance. Allows to use "instance in instance_list" syntax
Implemented EmType hierarchy, added utility function to classtype, changed pk for em_type_hierarchy table
EmType hierarchy is handled by 3 functions :
- EmType.superiors()
- EmType.subordinates()
- EmType.add_superior(em_type, nature)
- EmType.del_superior(em_type, nature)
Hierarchy implementation is not tested (because their is no tests...)
Added a function to get authorized relation nature from an EmClassType
Added the nature of a relation to the primary key of em_type_hierarchy table (triple pk : sup_id, sub_id, nature)
Adding default date for date_create and date_update columns
The dates are set in EmComponent::create() for date_create and in EmComponent::save() for date_update
The values are sets to datetime.datetime.utcnow() so we now that EVERY date in the db are in UTC, no matter django, database or even server configurations.
We will have to take care to convert dates from database to django timezone in dates fieldtypes.
Adding default date for date_create and date_update columns
The dates are set in EmComponent::create() for date_create and in EmComponent::save() for date_update
The values are sets to datetime.datetime.utcnow() so we now that EVERY date in the db are in UTC, no matter django, database or even server configurations.
We will have to take care to convert dates from database to django timezone in dates fieldtypes.
Adding a column is implemented for mysql, postgresql and sqlite.
Droping and altering a column is only implemented for mysql and postgresql for the moment.
Quick&dirty tests has been done for sqlite and mysql only.