Пример #1
0
    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')
Пример #2
0
    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 ')
Пример #3
0
    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])
                ) )
Пример #4
0
    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 ')