示例#1
0
def save_indexes():
    # old_levels = [
    #     u'I',
    #     u'II++',
    #     u'II+',
    #     u'II',
    #     u'III++',
    #     u'III+',
    #     u'III',
    #     u'IV++',
    #     u'IV+',
    #     u'IV',
    # ]

    # for level in levels_order:
    #     save_wiki_page(u'Участник:Vitalik/Индекс/Качество/%s уровень' % level,
    #                    u'#redirect [[Участник:Vitalik/Индекс/Качество/%s уровень/Итого]]' % level,
    #                    u'Создание редиректа для удобного переименования')
    # for level in levels_order:
        # save_wiki_page(u'Викисловарь:Проект:Русский язык/Качество/%s' % level,
        #                u'#redirect [[Викисловарь:Проект:Русский язык/Качество/%s/Итого]]' % level,
        #                u'Создание редиректа для удобного переименования')
        # move_wiki_page(u'Викисловарь:Проект:Русский язык/Качество/%s' % level,
        #                u'Викисловарь:Проект:Русский язык/Качество/%s/Итого' % level,
        #                u'Создание редиректа для удобного переименования')
    # sys.exit()
    # −

    print dt(), 'started getting checkers'
    warning, errors = get_checkers()
    print dt(), 'finished getting checkers'

    warning_reports = get_reports_links(warning)
    errors_reports = get_reports_links(errors)

    counts = dict()
    counts1 = dict()
    counts2 = dict()
    counts3 = dict()
    counts4 = dict()

    highest = load_lines(settings.FILES_PATH + '/data/frequency/ru_new_5000',
                         decode=u'utf-8')
    top1 = load_lines(settings.FILES_PATH + '/data/frequency/ru_old_1-1000',
                      decode=u'utf-8')
    top2 = load_lines(settings.FILES_PATH + '/data/frequency/ru_old_1001-10000',
                      decode=u'utf-8')
    medium = load_lines(settings.FILES_PATH + '/data/frequency/ru_mas_xr_0_2b',
                        decode=u'utf-8')
    # high2 = set(top1) | (set(top2) - set(highest))
    # high1 = set(top1) | set(top2) - set(highest)
    # print len(high1), len(high2)
    # if high1 != high2:
    #     raise Exception('!!!')
    # print len(highest)
    # print len(set(top1) | set(top2))
    high = sorted(list((set(top1) | set(top2)) - set(highest)))
    # print len(high)
    # print len(medium)
    medium = sorted(list(set(medium) - set(highest) - set(high)))
    # print len(medium)

    # sys.exit(1)
    # top1_lines = load_lines(settings.FILES_PATH + 'data/frequency/ru_1-1000')
    # top2_lines = load_lines(settings.FILES_PATH + 'data/frequency/ru_1001-10000')
    # top1 = dict()
    # top2 = dict()
    # for line in top1_lines:
    #     top1[line] = True
    # for line in top2_lines:
    #     top2[line] = True

    total = 0
    total1 = 0
    total2 = 0
    total3 = 0
    total4 = 0

    path = settings.FILES_PATH + '/reports/quality/'
    for level in levels_order:
        words = load_lines(path + 'level_%s.txt' % level.replace(u'−', u'-'),
                           decode=u'utf-8')
        words1 = sorted(list(set(words) & set(highest)))
        words2 = sorted(list(set(words) & set(high)))
        words3 = sorted(list(set(words) & set(medium)))
        counts[level] = len(words)
        counts1[level] = len(words1)
        counts2[level] = len(words2)
        counts3[level] = len(words3)
        counts4[level] = counts[level] - counts1[level] - counts2[level] - counts3[level]
        total += counts[level]
        total1 += counts1[level]
        total2 += counts2[level]
        total3 += counts3[level]
        total4 += counts4[level]
        #if level == u'II':
        #    continue

        if level[0] == u'D':
            words_details = warning_reports
        elif level[0] == u'E':
            words_details = errors_reports
        else:
            words_details = None

        if level[0] in [u'D', u'E']:
            content1 = '\n'.join([u"* [[%s]]\n%s\n" % (word, words_details.get(word, u"* ''(пусто)''"))
                                  for word in words1])
            content2 = '\n'.join([u"* [[%s]]\n%s\n" % (word, words_details.get(word, u"* ''(пусто)''"))
                                  for word in words2])
        else:
            content1 = '\n'.join([u"# [[%s]]" % word for word in words1])
            content2 = '\n'.join([u"# [[%s]]" % word for word in words2])
        content1 = u"<noinclude>\n%s\n</noinclude><includeonly>%s</includeonly>" % \
                   (content1, counts1[level])
        content2 = u"<noinclude>\n%s\n</noinclude><includeonly>%s</includeonly>" % \
                   (content2, counts2[level])
        content4 = u'%s' % counts4[level]
        importance = (
            (u'Высшая', content1),
            (u'Высокая', content2),
            # (u'Средняя', content3),
            (u'Низкая', content4),
        )
        for name, content in importance:
            # print '-' * 100
            # print u'Викисловарь:Проект:Русский язык/Качество/Уровень %s/%s важность' % (level, name)
            # print '-' * 100
            # print content
            # print '-' * 100
            # print
            save_wiki_page(
                u'Викисловарь:Проект:Русский язык/Качество/Уровень %s/%s важность' %
                (level, name),
                content,
                u'Обновление списка слов по уровню качества и важности')
        # continue
        create_index(
            words3, u'Качество/Уровень %s/%s важность' % (level, u'Средняя'),
            desc=u'Обновление списка слов по уровню качества и важности',
            push=True, debug=False,
            # push=False, debug=True,
            header=u'Уровень качества %s' % level,
            force_wiki_prefix=u'Викисловарь:Проект:Русский язык',
            # wiki_save_only_total=True,
            need_div=False,
            words_details=words_details,
        )
        create_index(
            words, u'Качество/Уровень %s' % level,
            desc=u'Обновление списка слов по уровню качества',
            push=True, debug=False,
            # push=False, debug=True,
            header=u'Уровень качества %s' % level,
            force_wiki_prefix=u'Викисловарь:Проект:Русский язык',
            # wiki_save_only_total=True,
            need_div=False,
            words_details=words_details,
        )

    content = u"""
    {| class="wikitable" style="text-align: center"
    ! colspan="7" | Статьи проекта «Русский язык»
    |-
    ! rowspan="2" | Уровень <br />качества
    ! colspan="6" | Важность
    |-
    ! Высшая
    ! Высокая
    ! Средняя
    ! Низкая
    ! Всего
    |-
    """
    for level in levels_order:
        content += u"| '''%s''' \n" \
                   u"| %s <!-- Уровень %s, высшая важность -->\n" \
                   u"| %s <!-- Уровень %s, высокая важность -->\n" \
                   u"| %s <!-- Уровень %s, средняя важность -->\n" \
                   u"| %s <!-- Уровень %s, низкая важность -->\n" \
                   u"| %s <!-- Уровень %s, всего -->\n" \
                   u"|- \n" % \
                   (level,
                    counts1[level], level,
                    counts2[level], level,
                    counts3[level], level,
                    counts4[level], level,
                    counts[level],  level)
    content += u"| '''Всего''' \n" \
               u"| %s <!-- Всего, высшая важность -->\n" \
               u"| %s <!-- Всего, высокая важность -->\n" \
               u"| %s <!-- Всего, средняя важность -->\n" \
               u"| %s <!-- Всего, низкая важность-->\n" \
               u"| %s <!-- Всего -->\n" \
               u"|-\n" % \
               (total1, total2, total3, total4, total)
    content += u"|}"

    # print content

    save_wiki_page(u'Викисловарь:Проект:Русский язык/Качество/Для истории', content,
                   u'Статистика по качеству статей (для истории)')
示例#2
0
 def before(self):
     super(NewPagesStatistics, self).before()
     self.warning, self.errors = get_checkers()
     self.prev_day = None
     self.counter = 1# - 6
     self.content = u'''Новые статьи за последние 7 дней: