Changeset 265

Show
Ignore:
Timestamp:
11/09/07 10:57:38 (6 years ago)
Author:
ged
Message:
  • moved some format strings to constants in options
  • added set method on base Entity (set attributes using kwargs)

These were both suggestions from Paul Johnston.

Location:
elixir/trunk
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • elixir/trunk/CHANGES

    r250 r265  
     10.4.1 
     2- moved some format strings to constants in options 
     3- added set method on base Entity (set attributes using kwargs) 
     4 
    150.4.0 - 2007-10-29 
    26 
  • elixir/trunk/elixir/entity.py

    r262 r265  
    1313 
    1414import 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_PASS 
    19 from sqlalchemy.ext.sessioncontext  import SessionContext 
     15from sqlalchemy                    import Table, Column, Integer, \ 
     16                                          desc, ForeignKey, and_ 
     17from sqlalchemy.orm                import Query, MapperExtension,\ 
     18                                          mapper, object_session, EXT_PASS 
     19from sqlalchemy.ext.sessioncontext import SessionContext 
    2020 
    2121import elixir 
    22 from elixir.statements              import process_mutators 
    23 from elixir.options                 import options_defaults, valid_options 
    24 from elixir.properties              import Property 
     22from elixir.statements import process_mutators 
     23from elixir import options 
     24from elixir.properties import Property 
    2525 
    2626 
    2727__doc_all__ = ['Entity', 'EntityMeta'] 
    2828 
    29 DEFAULT_AUTO_PRIMARYKEY_NAME = "id" 
    30 DEFAULT_AUTO_PRIMARYKEY_TYPE = Integer 
    31 DEFAULT_VERSION_ID_COL = "row_version" 
    32 DEFAULT_POLYMORPHIC_COL_NAME = "row_type" 
    33 DEFAULT_POLYMORPHIC_COL_SIZE = 40 
    34 DEFAULT_POLYMORPHIC_COL_TYPE = String(DEFAULT_POLYMORPHIC_COL_SIZE) 
    3529 
    3630try:  
     
    123117                       'auto_primarykey', 'version_id_col',  
    124118                       'allowcoloverride'): 
    125             setattr(self, option, options_defaults[option]) 
     119            setattr(self, option, options.options_defaults[option]) 
    126120 
    127121        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()) 
    129124 
    130125    def setup_options(self): 
     
    219214                colname = self.auto_primarykey 
    220215            else: 
    221                 colname = DEFAULT_AUTO_PRIMARYKEY_NAME 
     216                colname = options.DEFAULT_AUTO_PRIMARYKEY_NAME 
    222217             
    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)) 
    225221        self._pk_col_done = True 
    226222 
     
    265261           self.children and not self.parent: 
    266262            if not isinstance(self.polymorphic, basestring): 
    267                 self.polymorphic = DEFAULT_POLYMORPHIC_COL_NAME 
     263                self.polymorphic = options.DEFAULT_POLYMORPHIC_COL_NAME 
    268264                 
    269265            self.add_column(Column(self.polymorphic,  
    270                                    DEFAULT_POLYMORPHIC_COL_TYPE)) 
     266                                   options.POLYMORPHIC_COL_TYPE)) 
    271267 
    272268        if self.version_id_col: 
    273269            if not isinstance(self.version_id_col, basestring): 
    274                 self.version_id_col = DEFAULT_VERSION_ID_COL 
     270                self.version_id_col = options.DEFAULT_VERSION_ID_COL_NAME 
    275271            self.add_column(Column(self.version_id_col, Integer)) 
    276272 
     
    797793            setattr(self, key, value) 
    798794 
     795    def set(self, **kwargs): 
     796        for key, value in kwargs.items(): 
     797            setattr(self, key, value) 
     798 
    799799    # session methods 
    800800    def flush(self, *args, **kwargs): 
  • elixir/trunk/elixir/options.py

    r249 r265  
    141141 
    142142from elixir.statements import ClassMutator 
     143from sqlalchemy import Integer, String 
    143144 
    144145__doc_all__ = ['options_defaults'] 
    145146 
     147# format constants 
     148FKCOL_NAMEFORMAT = "%(relname)s_%(key)s" 
     149M2MCOL_NAMEFORMAT = "%(tablename)s_%(key)s" 
     150CONSTRAINT_NAMEFORMAT = "%(tablename)s_%(colnames)s_fk" 
     151 
     152# other global constants 
     153DEFAULT_AUTO_PRIMARYKEY_NAME = "id" 
     154DEFAULT_AUTO_PRIMARYKEY_TYPE = Integer 
     155DEFAULT_VERSION_ID_COL_NAME = "row_version" 
     156DEFAULT_POLYMORPHIC_COL_NAME = "row_type" 
     157POLYMORPHIC_COL_SIZE = 40 
     158POLYMORPHIC_COL_TYPE = String(POLYMORPHIC_COL_SIZE) 
     159 
     160#  
    146161options_defaults = dict( 
    147162    autosetup=True, 
     
    158173) 
    159174 
     175 
    160176valid_options = options_defaults.keys() + [ 
    161177    'metadata', 
  • elixir/trunk/elixir/relationships.py

    r263 r265  
    330330 
    331331import sys 
     332import options 
    332333 
    333334__doc_all__ = [] 
     
    546547                    colname = self.colname[key_num] 
    547548                else: 
    548                     colname = '%s_%s' % (self.name, pk_col.key) 
     549                    colname = options.FKCOL_NAMEFORMAT % \ 
     550                              {'relname': self.name,  
     551                               'key': pk_col.key} 
    549552 
    550553                # we can't add the column to the table directly as the table 
     
    576579                # In some databases (at least MySQL) the constraint name needs 
    577580                # 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)} 
    580584                self.constraint_kwargs['name'] = fk_name 
    581585                 
     
    737741 
    738742            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)): 
    741746                fk_colnames = list() 
    742747                fk_refcols = list() 
    743748             
    744749                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} 
    746753 
    747754                    # In case we have a many-to-many self-reference, we