Beispiel #1
0
    def all(self):
        msg = create_array(
            'SDMessageGetAllRecordsFromDevice',
            self.parent_schema_name
        )

        return self.__receive_records(msg)
Beispiel #2
0
    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
Beispiel #3
0
 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
     )
Beispiel #4
0
 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
     )
Beispiel #5
0
    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
Beispiel #6
0
 def changes(self):
     msg = create_array(
         'SDMessageGetChangesFromDevice',
         self.parent_schema_name
     )
     return self.__receive_records(msg)
Beispiel #7
0
 def finish_message(cls):
     return create_array(
         "SDMessageFinishSessionOnDevice",
         cls.parent_schema_name
     )
Beispiel #8
0
 def ping(self):
     msg = create_array(
         "DLMessagePing",
         "Preparing to get changes for device"
     )
     self.__mobile_sync.send(msg)
Beispiel #9
0
 def get_array(self):
     return create_array(
         "SDMessageCancelSession",
         self.schema_type,
         self.value
     )
Beispiel #10
0
 def disconnect(self):
     msg = create_array(
         "DLMessageDisconnect",
         "All done, thanks for the memories"
     )
     self.__mobile_sync.send(msg)
Beispiel #11
0
 def changes(self):
     msg = create_array('SDMessageGetChangesFromDevice',
                        self.parent_schema_name)
     return self.__receive_records(msg)
Beispiel #12
0
    def all(self):
        msg = create_array('SDMessageGetAllRecordsFromDevice',
                           self.parent_schema_name)

        return self.__receive_records(msg)
Beispiel #13
0
 def finish_message(cls):
     return create_array("SDMessageFinishSessionOnDevice",
                         cls.parent_schema_name)
Beispiel #14
0
 def ping(self):
     msg = create_array("DLMessagePing",
                        "Preparing to get changes for device")
     self.__mobile_sync.send(msg)
Beispiel #15
0
 def get_array(self):
     return create_array("SDMessageCancelSession", self.schema_type,
                         self.value)
Beispiel #16
0
 def disconnect(self):
     msg = create_array("DLMessageDisconnect",
                        "All done, thanks for the memories")
     self.__mobile_sync.send(msg)