def all(self): msg = create_array( 'SDMessageGetAllRecordsFromDevice', self.parent_schema_name ) return self.__receive_records(msg)
def __receive_records(self, record_type): self._mobile_sync.send(record_type) record = self._mobile_sync.receive() while record[0].get_value() != 'SDMessageDeviceReadyToReceiveChanges': # check message type and schema name if record[0].get_value() != 'SDMessageProcessChanges' or \ record[1].get_value() != self.parent_schema_name: raise SyncErrorCancel(self.parent_schema_name, "Could not commit changes from device.") # make sure we got a dict node next if record[2].get_type() == PLIST_STRING and record[2].get_value() == EMPTY_PARAM: # skip this record set since we got no change data pass elif record[2].get_type() != PLIST_DICT: raise SyncErrorCancel(self.parent_schema_name, "Could not commit changes from device.") else: records = record[2] for record_id, record_dict in records.items(): record_entity_name = record_dict[RECORD_ENTITY_NAME_KEY].get_value() self._process_record(record_entity_name, record_id, record_dict) msg = create_array( 'SDMessageAcknowledgeChangesFromDevice', self.parent_schema_name ) self._mobile_sync.send(msg) record = self._mobile_sync.receive() for obj in self._parent_records.values(): yield obj
def sync_message(cls, last_sync_time, version): return create_array( "SDMessageSyncDataClassWithDevice", cls.parent_schema_name, last_sync_time, time.strftime('%Y-%m-%d %H-%M-%S %z'), version, None # Empty parameter )
def __receive_records(self, record_type): self._mobile_sync.send(record_type) record = self._mobile_sync.receive() while record[0].get_value() != 'SDMessageDeviceReadyToReceiveChanges': # check message type and schema name if record[0].get_value() != 'SDMessageProcessChanges' or \ record[1].get_value() != self.parent_schema_name: raise SyncErrorCancel(self.parent_schema_name, "Could not commit changes from device.") # make sure we got a dict node next if record[2].get_type() == PLIST_STRING and record[2].get_value( ) == EMPTY_PARAM: # skip this record set since we got no change data pass elif record[2].get_type() != PLIST_DICT: raise SyncErrorCancel(self.parent_schema_name, "Could not commit changes from device.") else: records = record[2] for record_id, record_dict in records.items(): record_entity_name = record_dict[ RECORD_ENTITY_NAME_KEY].get_value() self._process_record(record_entity_name, record_id, record_dict) msg = create_array('SDMessageAcknowledgeChangesFromDevice', self.parent_schema_name) self._mobile_sync.send(msg) record = self._mobile_sync.receive() for obj in self._parent_records.values(): yield obj
def changes(self): msg = create_array( 'SDMessageGetChangesFromDevice', self.parent_schema_name ) return self.__receive_records(msg)
def finish_message(cls): return create_array( "SDMessageFinishSessionOnDevice", cls.parent_schema_name )
def ping(self): msg = create_array( "DLMessagePing", "Preparing to get changes for device" ) self.__mobile_sync.send(msg)
def get_array(self): return create_array( "SDMessageCancelSession", self.schema_type, self.value )
def disconnect(self): msg = create_array( "DLMessageDisconnect", "All done, thanks for the memories" ) self.__mobile_sync.send(msg)
def changes(self): msg = create_array('SDMessageGetChangesFromDevice', self.parent_schema_name) return self.__receive_records(msg)
def all(self): msg = create_array('SDMessageGetAllRecordsFromDevice', self.parent_schema_name) return self.__receive_records(msg)
def finish_message(cls): return create_array("SDMessageFinishSessionOnDevice", cls.parent_schema_name)
def ping(self): msg = create_array("DLMessagePing", "Preparing to get changes for device") self.__mobile_sync.send(msg)
def get_array(self): return create_array("SDMessageCancelSession", self.schema_type, self.value)
def disconnect(self): msg = create_array("DLMessageDisconnect", "All done, thanks for the memories") self.__mobile_sync.send(msg)