541
541
if not res[0]: raise Exception, res[1]
543
543
updates_count = self.retrieve_update(cr, uid, max_packet_size, recover=recover, context=context)
544
self._logger.info("::::::::The instance " + entity.name + " pulled: " + str(res[1]) + " messages and " + str(updates_count) + " updates.")
544
self._logger.info("::::::::The instance " + entity.name + " pulled: " + str(res[1]) + " messages and " + str(updates_count) + " updates.")
545
545
updates_executed = self.execute_updates(cr, uid, context=context)
546
546
if updates_executed == 0 and updates_count > 0:
547
547
self._logger.warning("No update to execute, this case should never occurs.")
577
577
last = (last_seq >= max_seq)
578
578
updates_count = 0
579
579
logger_index = None
580
proxy = self.pool.get("sync.client.sync_server_connection").get_connection(cr, uid, "sync.server.sync_manager")
581
proxy = self.pool.get("sync.client.sync_server_connection").get_connection(cr, uid, "sync.server.sync_manager")
582
582
res = proxy.get_update(entity.identifier, self._hardware_id, last_seq, offset, max_packet_size, max_seq, recover)
583
583
if res and res[0]:
584
584
updates_count += updates.unfold_package(cr, uid, res[1], context=context)
617
617
# Get a list of updates to execute
618
618
# Warning: execution order matter
619
update_ids = updates.search(cr, uid, [('run', '=', False)], order='id asc', context=context)
619
update_ids = updates.search(cr, uid, [('run', '=', False)], order='sequence_number, rule_sequence, id asc', context=context)
620
620
update_count = len(update_ids)
621
621
if not update_count: return 0
623
# Sort updates by rule_sequence
624
whole = updates.browse(cr, uid, update_ids, context=context)
625
update_groups = dict()
628
group_key = (update.sequence_number, update.rule_sequence)
630
update_groups[group_key].append(update.id)
632
update_groups[group_key] = [update.id]
635
624
if logger: logger_index = logger.append()
637
626
imported, deleted = 0, 0
638
for rule_seq in sorted(update_groups.keys()):
639
update_ids = update_groups[rule_seq]
641
to_do, update_ids = update_ids[:MAX_EXECUTED_UPDATES], update_ids[MAX_EXECUTED_UPDATES:]
642
messages, imported_executed, deleted_executed = \
643
updates.execute_update(cr, uid,
645
priorities=priorities_stuff,
647
imported += imported_executed
648
deleted += deleted_executed
649
# Do nothing with messages
652
logger.replace(logger_index, _("Update(s) processed: %d import updates + %d delete updates on %d updates") \
653
% (imported, deleted, update_count))
655
# intermittent commit
656
if len(done) >= MAX_EXECUTED_UPDATES:
628
to_do, update_ids = update_ids[:MAX_EXECUTED_UPDATES], update_ids[MAX_EXECUTED_UPDATES:]
629
messages, imported_executed, deleted_executed = \
630
updates.execute_update(cr, uid,
632
priorities=priorities_stuff,
634
imported += imported_executed
635
deleted += deleted_executed
636
# Do nothing with messages
639
logger.replace(logger_index, _("Update(s) processed: %d import updates + %d delete updates on %d updates") \
640
% (imported, deleted, update_count))
642
# intermittent commit
643
if len(done) >= MAX_EXECUTED_UPDATES: