Changeset 2087

Show
Ignore:
Timestamp:
06/02/07 08:48:33 (1 year ago)
Author:
abaumann
Message:

pass the list of exceptions separately in read_events/write_event, instead of mixing it in with the event data
(this is a refactoring change only)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • plugins/moto-sync/motosync.py

    r2086 r2087  
    568568 
    569569    def read_events(self): 
    570         """read the list of all events on the phone""" 
     570        """Read all events on the phone. 
     571 
     572        Returns a list of (event data, exceptions) tuples. 
     573        """ 
    571574        self.open_calendar() 
    572575 
     
    588591            # ...then add them into the event data 
    589592            for evdata in self.__parse_results('MDBR', data): 
    590                 evdata.append(exceptions.get(pos, [])) 
    591                 ret.append(evdata) 
     593                ret.append((evdata, exceptions.get(evdata[0], []))) 
    592594            pos += ENTRIES_PER_READ 
    593595        return ret 
    594596 
    595     def write_event(self, evdata): 
     597    def write_event(self, data, exceptions): 
    596598        """Write a single event to the phone. 
    597599 
     
    599601        """ 
    600602        self.open_calendar() 
    601         pos = evdata[0] 
     603        pos = data[0] 
    602604        self.delete_event(pos) 
    603         exceptions = evdata[-1] 
    604         data = evdata[:-1] 
    605605        # HACK: only the name of the event (data[1]) should be unicode 
    606606        for n in range(2, len(data)): 
     
    914914        """given an instance of PhoneComms, write this entry to the phone""" 
    915915        self.__truncate_fields(comms) 
    916         comms.write_event(self.__to_moto()
     916        comms.write_event(self.__to_moto(), self.exceptions
    917917 
    918918    def hash_data(self): 
     
    947947        duration += int(self.duration.seconds) / 60 
    948948        return (self.pos, self.name, timeflag, alarmflag, timestr, datestr, 
    949                 duration, alarmtimestr, alarmdatestr, self.repeat_type, 
    950                 self.exceptions) 
     949                duration, alarmtimestr, alarmdatestr, self.repeat_type) 
    951950 
    952951    def to_xml(self): 
     
    10491048class PhoneEventMoto(PhoneEvent): 
    10501049    """Constructor for the PhoneEvent object with data in Motorola format""" 
    1051     def __init__(self, data): 
     1050    def __init__(self, data, exceptions): 
    10521051        """grab stuff out of the list of values from the phone""" 
    10531052        PhoneEvent.__init__(self) 
    1054         assert(type(data) == list and len(data) == 11
     1053        assert(type(data) == list and len(data) == 10
    10551054        self.pos = data[0] 
    10561055        self.name = data[1] 
     
    10631062        alarmdate = data[8] 
    10641063        self.repeat_type = data[9] 
    1065         self.exceptions = data[10] 
     1064        self.exceptions = exceptions 
    10661065        self.exceptions.sort() # just in case 
    10671066 
     
    16751674                    i += 1 
    16761675        elif objtype == 'event': 
    1677             entries = [PhoneEventMoto(d) for d in self.comms.read_events()] 
     1676            entries = [PhoneEventMoto(d, x) for (d, x) in self.comms.read_events()] 
    16781677        else: 
    16791678            assert(False, 'Unknown objtype %s' % objtype) 
  • plugins/moto-sync/mototool

    r2054 r2087  
    128128    if options.mode == 'delete' or options.mode == 'restore': 
    129129        if 'event' in options.objtype: 
    130             for edata in pc.read_events(): 
     130            for (edata, _) in pc.read_events(): 
    131131                pc.delete_event(edata[0]) 
    132132        if 'contact' in options.objtype: 
     
    138138        f = open(options.filename, 'w') 
    139139        if 'event' in options.objtype: 
    140             for edata in pc.read_events(): 
    141                 f.write(pack_backup('E', edata[:-1])) 
    142                 if edata[-1] != []: # exceptions 
    143                     f.write(pack_backup('X', edata[-1])) 
     140            for (edata, exceptions) in pc.read_events(): 
     141                f.write(pack_backup('E', edata)) 
     142                if exceptions != []: 
     143                    f.write(pack_backup('X', exceptions)) 
    144144        if 'contact' in options.objtype: 
    145145            pc.read_contact_params() 
     
    155155            typestr, edata = unpack_backup(line) 
    156156            if typestr == 'E': 
    157                 events.append(edata + [[]]
     157                events.append((edata, [])
    158158            elif typestr == 'X': 
    159                 events[-1][-1] = edata 
     159                events[-1] = (events[-1][0], edata) 
    160160            elif typestr == 'C': 
    161161                contacts.append(edata) 
     
    165165 
    166166        if 'event' in options.objtype: 
    167             for e in events: 
    168                 pc.write_event(e
     167            for (e, x) in events: 
     168                pc.write_event(e, x
    169169        if 'contact' in options.objtype: 
    170170            for e in contacts: