Changeset 3451

Show
Ignore:
Timestamp:
08/11/07 10:40:21 (1 year ago)
Author:
pobrien
Message:

Final fix to Create txn to support initial values supplied as args or kw.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/Schevo/schevo/transaction.py

    r3442 r3451  
    202202        Transaction.__init__(self) 
    203203        field_map = self._field_map 
    204         # Look for matching values in args. 
    205         for field_name, field in field_map.iteritems(): 
    206             for arg in args: 
    207                 if hasattr(arg, field_name): 
    208                     value = getattr(arg, field_name) 
    209                     setattr(self, field_name, value) 
     204        # Call setup, which may remove fields from this transaction. 
     205        self._setup() 
    210206        # Assign values supplied by kw. 
    211207        for name, value in kw.iteritems(): 
    212208            setattr(self, name, value) 
    213         self._setup() 
     209        # Look for matching field values in objects passed as args. 
     210        for field_name, field in field_map.iteritems(): 
     211            if not field.assigned and not field.readonly: 
     212                for arg in args: 
     213                    if hasattr(arg, field_name): 
     214                        value = getattr(arg, field_name) 
     215                        setattr(self, field_name, value) 
    214216        # Assign default values for fields that haven't yet been 
    215217        # assigned a value.