Changeset 265
- Timestamp:
- 11/09/07 10:57:38 (6 years ago)
- Location:
- elixir/trunk
- Files:
-
- 4 modified
-
CHANGES (modified) (1 diff)
-
elixir/entity.py (modified) (5 diffs)
-
elixir/options.py (modified) (2 diffs)
-
elixir/relationships.py (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
elixir/trunk/CHANGES
r250 r265 1 0.4.1 2 - moved some format strings to constants in options 3 - added set method on base Entity (set attributes using kwargs) 4 1 5 0.4.0 - 2007-10-29 2 6 -
elixir/trunk/elixir/entity.py
r262 r265 13 13 14 14 import sqlalchemy 15 from sqlalchemy import Table, Column, Integer, String, \16 desc, ForeignKey, and_17 from sqlalchemy.orm import Query, MapperExtension,\18 mapper, object_session, EXT_PASS19 from sqlalchemy.ext.sessioncontext import SessionContext15 from sqlalchemy import Table, Column, Integer, \ 16 desc, ForeignKey, and_ 17 from sqlalchemy.orm import Query, MapperExtension,\ 18 mapper, object_session, EXT_PASS 19 from sqlalchemy.ext.sessioncontext import SessionContext 20 20 21 21 import elixir 22 from elixir.statements import process_mutators23 from elixir .options import options_defaults, valid_options24 from elixir.properties import Property22 from elixir.statements import process_mutators 23 from elixir import options 24 from elixir.properties import Property 25 25 26 26 27 27 __doc_all__ = ['Entity', 'EntityMeta'] 28 28 29 DEFAULT_AUTO_PRIMARYKEY_NAME = "id"30 DEFAULT_AUTO_PRIMARYKEY_TYPE = Integer31 DEFAULT_VERSION_ID_COL = "row_version"32 DEFAULT_POLYMORPHIC_COL_NAME = "row_type"33 DEFAULT_POLYMORPHIC_COL_SIZE = 4034 DEFAULT_POLYMORPHIC_COL_TYPE = String(DEFAULT_POLYMORPHIC_COL_SIZE)35 29 36 30 try: … … 123 117 'auto_primarykey', 'version_id_col', 124 118 'allowcoloverride'): 125 setattr(self, option, options _defaults[option])119 setattr(self, option, options.options_defaults[option]) 126 120 127 121 for option_dict in ('mapper_options', 'table_options'): 128 setattr(self, option_dict, options_defaults[option_dict].copy()) 122 setattr(self, option_dict, 123 options.options_defaults[option_dict].copy()) 129 124 130 125 def setup_options(self): … … 219 214 colname = self.auto_primarykey 220 215 else: 221 colname = DEFAULT_AUTO_PRIMARYKEY_NAME216 colname = options.DEFAULT_AUTO_PRIMARYKEY_NAME 222 217 223 self.add_column(Column(colname, DEFAULT_AUTO_PRIMARYKEY_TYPE, 224 primary_key=True)) 218 self.add_column( 219 Column(colname, options.DEFAULT_AUTO_PRIMARYKEY_TYPE, 220 primary_key=True)) 225 221 self._pk_col_done = True 226 222 … … 265 261 self.children and not self.parent: 266 262 if not isinstance(self.polymorphic, basestring): 267 self.polymorphic = DEFAULT_POLYMORPHIC_COL_NAME263 self.polymorphic = options.DEFAULT_POLYMORPHIC_COL_NAME 268 264 269 265 self.add_column(Column(self.polymorphic, 270 DEFAULT_POLYMORPHIC_COL_TYPE))266 options.POLYMORPHIC_COL_TYPE)) 271 267 272 268 if self.version_id_col: 273 269 if not isinstance(self.version_id_col, basestring): 274 self.version_id_col = DEFAULT_VERSION_ID_COL270 self.version_id_col = options.DEFAULT_VERSION_ID_COL_NAME 275 271 self.add_column(Column(self.version_id_col, Integer)) 276 272 … … 797 793 setattr(self, key, value) 798 794 795 def set(self, **kwargs): 796 for key, value in kwargs.items(): 797 setattr(self, key, value) 798 799 799 # session methods 800 800 def flush(self, *args, **kwargs): -
elixir/trunk/elixir/options.py
r249 r265 141 141 142 142 from elixir.statements import ClassMutator 143 from sqlalchemy import Integer, String 143 144 144 145 __doc_all__ = ['options_defaults'] 145 146 147 # format constants 148 FKCOL_NAMEFORMAT = "%(relname)s_%(key)s" 149 M2MCOL_NAMEFORMAT = "%(tablename)s_%(key)s" 150 CONSTRAINT_NAMEFORMAT = "%(tablename)s_%(colnames)s_fk" 151 152 # other global constants 153 DEFAULT_AUTO_PRIMARYKEY_NAME = "id" 154 DEFAULT_AUTO_PRIMARYKEY_TYPE = Integer 155 DEFAULT_VERSION_ID_COL_NAME = "row_version" 156 DEFAULT_POLYMORPHIC_COL_NAME = "row_type" 157 POLYMORPHIC_COL_SIZE = 40 158 POLYMORPHIC_COL_TYPE = String(POLYMORPHIC_COL_SIZE) 159 160 # 146 161 options_defaults = dict( 147 162 autosetup=True, … … 158 173 ) 159 174 175 160 176 valid_options = options_defaults.keys() + [ 161 177 'metadata', -
elixir/trunk/elixir/relationships.py
r263 r265 330 330 331 331 import sys 332 import options 332 333 333 334 __doc_all__ = [] … … 546 547 colname = self.colname[key_num] 547 548 else: 548 colname = '%s_%s' % (self.name, pk_col.key) 549 colname = options.FKCOL_NAMEFORMAT % \ 550 {'relname': self.name, 551 'key': pk_col.key} 549 552 550 553 # we can't add the column to the table directly as the table … … 576 579 # In some databases (at least MySQL) the constraint name needs 577 580 # to be unique for the whole database, instead of per table. 578 fk_name = "%s_%s_fk" % (source_desc.tablename, 579 '_'.join(fk_colnames)) 581 fk_name = options.CONSTRAINT_NAMEFORMAT % \ 582 {'tablename': source_desc.tablename, 583 'colnames': '_'.join(fk_colnames)} 580 584 self.constraint_kwargs['name'] = fk_name 581 585 … … 737 741 738 742 joins = (self.primaryjoin_clauses, self.secondaryjoin_clauses) 739 for num, desc, fk_name, m2m in ((0, e1_desc, source_fk_name, self), 740 (1, e2_desc, target_fk_name, self.inverse)): 743 for num, desc, fk_name, m2m in ( 744 (0, e1_desc, source_fk_name, self), 745 (1, e2_desc, target_fk_name, self.inverse)): 741 746 fk_colnames = list() 742 747 fk_refcols = list() 743 748 744 749 for pk_col in desc.primary_keys: 745 colname = '%s_%s' % (desc.tablename, pk_col.key) 750 colname = options.M2MCOL_NAMEFORMAT % \ 751 {'tablename': desc.tablename, 752 'key': pk_col.key} 746 753 747 754 # In case we have a many-to-many self-reference, we
