Changeset 6

Show
Ignore:
Timestamp:
11/14/08 10:54:41 (8 weeks ago)
Author:
fcavazza
Message:

a

Location:
gnrpy/gnr
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • gnrpy/gnr/core/gnrbag.py

    r2 r6  
    936936     
    937937#-------------------- deepcopy -------------------------------  
     938     
    938939    def deepcopy(self): 
    939940        """ 
    940941        This method returns a deep copy of the Bag. 
    941942        @return: a deep copy of the Bag. 
    942         @deprecated: IT DOESN'T WORK 
    943         """ 
    944         return copy.deepcopy(self) 
     943        """ 
     944        result = Bag() 
     945        for node in self: 
     946            value = node.getStaticValue() 
     947            if isinstance(value, Bag): 
     948                value = value.deepcopy() 
     949            result.setItem(node.label, value, dict(node.getAttr())) 
     950        return result 
    945951     
    946952#-------------------- getNodeByAttr --------------------------------         
  • gnrpy/gnr/sql/gnrsql.py

    r1 r6  
    188188        tblobj.trigger_onInserted(record) 
    189189 
    190     def update(self, tblobj, record): 
     190    def update(self, tblobj, record, old_record=old_record): 
    191191        """Update a record of the table. 
    192192        @param tblobj: the table object 
     
    194194        """ 
    195195        tblobj._doFieldTriggers('onUpdating', record) 
    196         tblobj.trigger_onUpdating(record) 
     196        tblobj.trigger_onUpdating(record, old_record=old_record) 
    197197        self.adapter.update(tblobj, record) 
    198         tblobj.trigger_onUpdated(record) 
     198        tblobj.trigger_onUpdated(record, old_record=old_record) 
    199199         
    200200    def delete(self, tblobj, record): 
  • gnrpy/gnr/sql/gnrsqltable.py

    r1 r6  
    435435                            relatedTable.delete(relatedTable.record(row['pkey'], mode='bag')) 
    436436                     
    437     def update(self, record): 
     437    def update(self, record, old_record=None): 
    438438        """This method updates a single record. 
    439439        @param record_data: a dictionary that represent the record that must be updated 
    440440        """ 
    441         self.db.update(self, record) 
     441        self.db.update(self, record, old_record=old_record) 
    442442 
    443443 
     
    458458            main_record = main_changeSet 
    459459        else: 
    460             main_record = self.record(pkey, for_update=True, mode='bag') 
     460            old_record = self.record(pkey, for_update=True, mode='bag') 
     461            main_record = old_record.deepcopy() 
    461462            lastTs = changeSet.getAttr('lastTS') 
    462463            changed_TS = lastTs and (lastTs != str(main_record[self.lastTS])) 
     
    494495            self.insert(main_record) 
    495496        else: 
    496             self.update(main_record) 
     497            self.update(main_record, old_record=old_record) 
    497498         
    498499        for rel_name, rel_changeSet in relatedMany.items(): 
     
    570571        self.trigger_onUpdated(record) 
    571572 
    572     def trigger_onUpdating(self, record): 
     573    def trigger_onUpdating(self, record, old_record=None): 
    573574        pass 
    574575 
    575     def trigger_onUpdated(self, record): 
     576    def trigger_onUpdated(self, record, old_record=None): 
    576577        pass 
    577578