def import_messages(self): sms_bank_file = self.paths.final if self.options[ 'file'] is None else self.options['file'] sms_bank = xl.load_workbook(sms_bank_file) messages = sms.parse_messages(sms_bank.active, sms.FinalRow) clear = self.options.get('clear') do_all = not self.options.get('done') or clear if clear: self.stdout.write('Deleting All Backend Messages') back.AutomatedMessage.objects.all().delete() self.stdout.write('Importing....') total, add, todo, create = 0, 0, 0, 0 counts = collections.defaultdict(int) diff, existing = [], [] for msg in messages: counts['total'] += 1 if do_all or msg.status == 'done': auto, status = back.AutomatedMessage.objects.from_excel(msg) counts['add'] += 1 counts[status] += 1 if status != 'created': existing.append((msg, auto)) if status == 'changed': diff.append((msg, auto)) if msg.is_todo(): self.stdout.write('Warning: message {} still todo'.format( msg.description())) counts['todo'] += 1 self.stdout.write( 'Messages Found: {0[total]} Imported: {0[add]} Created: {0[created]} Changed: {0[changed]} Todo: {0[todo]}' .format(counts)) if clear: if existing: self.stdout.write('Existing:') for e in existing: self.stdout.write('\t{0[0]} - {0[1]}'.format(e)) else: self.stdout.write('Existing: None') if diff: self.stdout.write('Different:') for d in diff: self.stdout.write('\t{0[0]} - {0[1]}'.format(d)) else: self.stdout.write('Different: None')
def check_messages(self): ''' Check Final Translations report base_group track_HIV (count) [offset] ''' sms_wb = xl.load_workbook(self.paths.final) messages = sms.parse_messages(sms_wb.active, sms.FinalRow) stats = recursive_dd() descriptions = set() duplicates = [] total = 0 for msg in messages: total += 1 base_group = stats['{}_{}'.format(msg.send_base, msg.group)] base_group.default_factory = list condition_hiv = base_group['{}_HIV_{}'.format( msg.track, msg.get_hiv_messaging_str())] condition_hiv.append(msg) description = msg.description() if description not in descriptions: descriptions.add(description) else: duplicates.append(description) for base_group, condition_hiv_groups in stats.items(): self.stdout.write('{}'.format(base_group)) for condition_hiv, items in condition_hiv_groups.items(): self.stdout.write('\t{}: {}'.format(condition_hiv, len(items))) offsets = [ "{0: 3}".format(i) for i in sorted([i.offset for i in items]) ] for i in range(len(offsets) / 10 + 1): self.stdout.write("\t\t{}".format("".join( offsets[15 * i:15 * (i + 1)]))) self.stdout.write('Total: {} Todo: {}'.format( total, len([m for m in messages if m.is_todo()]))) if duplicates: for d in duplicates: self.stdout.write('Duplicate: {}'.format(d)) else: self.stdout.write(' No Duplicates ')
def check_messages(self): sms_wb = xl.load_workbook(self.paths.final) messages = sms.parse_messages(sms_wb.active,sms.FinalRow) stats = recursive_dd() for msg in messages: condition_hiv = stats[ '{}_HIV_{}'.format(msg.track,msg.get_hiv_messaging_str()) ] condition_hiv.default_factory = list base_group = condition_hiv[ '{}_{}'.format(msg.send_base,msg.group) ] base_group.append(msg) for condition_hiv, base_groups in stats.items(): self.stdout.write( '{}'.format(condition_hiv) ) for base_group,items in base_groups.items(): count = len(items) todo = len(filter(lambda m: m.is_todo(),items)) self.stdout.write( '\t{}: {}({}) {}'.format( base_group,count,todo, sorted([i.offset for i in items]) ) )
def check_messages(self): ''' Check Final Translations report base_group track_HIV (count) [offset] ''' sms_wb = xl.load_workbook(self.paths.final) messages = sms.parse_messages(sms_wb.active, sms.FinalRow) stats = collections.defaultdict(list) descriptions = set() duplicates = [] total = 0 for msg in messages: total += 1 stats['{}_{}'.format(msg.send_base, msg.group)].append(msg) description = msg.description() if description not in descriptions: descriptions.add(description) else: duplicates.append(description) for base_group, msgs in stats.items(): self.stdout.write('{}'.format(base_group)) offsets = [ "{0: 3}".format(i) for i in sorted([i.offset for i in msgs]) ] for i in range(len(offsets) / 10 + 1): self.stdout.write("\t\t{}".format("".join(offsets[15 * i:15 * (i + 1)]))) self.stdout.write('Total: {} Todo: {}'.format( total, len([m for m in messages if m.is_todo()]))) if duplicates: for d in duplicates: self.stdout.write('Duplicate: {}'.format(d)) else: self.stdout.write(' No Duplicates ')