Пример #1
0
    def __write_inimloetav(self, jaoskonnad):

        # sortimine:
        #  Maakond -> Vald -> Kov-jsk numbriliselt -> hääletajad ridade kaupa

        ret = 0
        outfile = htscommon.LoggedFile(\
            self._reg.path(\
                ['hts', 'output', evcommon.ELECTORSLIST_FILE_TMP]), self)
        outfile.open('w')

        # ReStructuredText jalus leheküljenumbritega
        outfile.write(".. footer::\n\tLk ###Page###\n\n")

        description = ''
        try:
            description = \
                self._reg.read_string_value(['common'], 'description').value
        except:
            description = self._elid

        maakonnad = jaoskonnad.keys()
        import locale
        try:
            locale.setlocale(locale.LC_COLLATE, 'et_EE.UTF-8')
            maakonnad.sort(locale.strcoll)
        except:
            maakonnad.sort()

        dot_line = "---------------------------------------" + \
                   "--------------------------------------"
        for mk in maakonnad:
            vallad = jaoskonnad[mk].keys()
            vallad.sort(locale.strcoll)
            for vald in vallad:
                kov_jsk = jaoskonnad[mk][vald].keys()
                kov_jsk.sort(jaoskonnad_cmp)
                for jsk in kov_jsk:
                    outfile.write('E-hääletanute nimekiri\n\n')
                    outfile.write('%s\n\n' % description)
                    outfile.write('%s\n\n' % jaoskonnad[mk][vald][jsk][0])
                    outfile.write('| %s\n| %-15s%-16s%s\n| %s\n\n' % \
                        (dot_line, 'Nr val nimek', \
                        'Isikukood', 'Nimi', dot_line))

                    if (len(jaoskonnad[mk][vald][jsk][1])):
                        jaoskonnad[mk][vald][jsk][1].sort(reanumber_cmp)
                        for voter in jaoskonnad[mk][vald][jsk][1]:
                            outline = '| %-15s%-16s%s\n' % (voter['reanumber'],
                                                            voter['isikukood'],
                                                            voter['nimi'])
                            outfile.write(outline)
                            ret = ret + 1
                    else:
                        outfile.write(\
                            '<<< Jaoskonnas pole ühtegi e-häält >>>\n')
                    outfile.write('\n.. raw:: pdf\n\n\tPageBreak\n\n')

        outfile.close()
        return ret
Пример #2
0
    def __write_masinloetav(self, jaoskonnad):

        # sortimine:
        # Kov-jsk numbriliselt -> hääletajad ridade kaupa

        ret = 0
        kov_jsk = jaoskonnad.keys()
        kov_jsk.sort(jaoskonnad_cmp)

        of = htscommon.LoggedFile(\
            self._reg.path(\
                ['hts', 'output', evcommon.ELECTORSLIST_FILE]), self)
        of.open('w')
        of.write(evcommon.VERSION + "\n")
        of.write(self._elid + "\n")

        for jsk in kov_jsk:
            if (len(jaoskonnad[jsk])):
                jaoskonnad[jsk].sort(reanumber_cmp)
                for voter in jaoskonnad[jsk]:
                    outline = '%s\t%s\t%s\t%s\t%s\n' % (
                        voter['jaoskond_omavalitsus'], voter['jaoskond'],
                        voter['reanumber'], voter['isikukood'], voter['nimi'])
                    of.write(outline)
                    ret = ret + 1

        of.close()
        ksum.store(of.name())
        return ret
Пример #3
0
    def save_revocation_report(self, report):
        fn = self._reg.path(['hts', 'output', evcommon.REVREPORT_FILE])
        outfile = htscommon.LoggedFile(fn)
        outfile.open('a')
        for el in report:
            outfile.write("\t".join(el) + "\n")

        outfile.close()
Пример #4
0
 def save_log(self, lines, log):
     fn = self._reg.path(['common', 'log%s' % log])
     lf = htscommon.LoggedFile(fn)
     lf.open('w')
     lf.write(evcommon.VERSION + "\n")
     lf.write(self._elid + "\n")
     lf.write("%s\n" % log)
     for el in lines:
         lf.write(el + '\n')
     lf.close()
Пример #5
0
    def __save_list(self, llist, filename):

        flag = os.path.exists(filename)
        outfile = htscommon.LoggedFile(filename, self)
        outfile.open('a')

        if not flag:
            outfile.write(evcommon.VERSION + "\n")
            outfile.write(self._elid + "\n")
        for el in llist:
            outfile.write("\t".join(el) + "\n")

        outfile.close()
Пример #6
0
    def lugemisperioodi(self):

        r_votes = 0
        v_votes = 0

        self._reg.ensure_no_key(\
            ['hts', 'output', evcommon.ELECTIONS_RESULT_FILE])

        vf = htscommon.LoggedFile(\
            self._reg.path(\
                ['hts', 'output', evcommon.ELECTIONS_RESULT_FILE]), self)
        vf.open('a')
        vf.write(evcommon.VERSION + "\n")
        vf.write(self._elid + "\n")

        tic = ticker.Counter(\
            'Hääli:', '\tKehtivaid: %d\tAvalduse alusel tühistatuid: %d')
        tic.start('Koostan loendamisele minevate häälte nimekirja')
        for path in os.walk(self._reg.path(['hts', 'votes'])):
            root = path[0]
            for vote_file in path[2]:
                if htscommon.VALID_VOTE_PATTERN.match(vote_file):
                    v_votes += 1
                    res = self.__handle_valid(root, vote_file)
                    vf.write('\t'.join(res) + '\n')
                elif htscommon.USERREVOKED_VOTE_PATTERN.match(vote_file):
                    r_votes += 1
                    self.__handle_userrevoked(root, vote_file)
                elif htscommon.AUTOREVOKED_VOTE_PATTERN.match(vote_file):
                    pass
                elif htscommon.REVOKE_REASON_PATTERN.match(vote_file):
                    pass
                else:
                    pass

                tic.tick(1, v_votes, r_votes)

        tic.finish()
        vf.close()
        ksum.store(vf.name())
        return v_votes, r_votes
Пример #7
0
    def lugemisperioodi(self):

        r_votes = 0
        v_votes = 0
        a_votes = 0
        b_votes = 0

        self._reg.ensure_no_key(
            ['hts', 'output', evcommon.ELECTIONS_RESULT_FILE])

        vf = htscommon.LoggedFile(
            self._reg.path(['hts', 'output', evcommon.ELECTIONS_RESULT_FILE]))
        vf.open('a')
        vf.write(evcommon.VERSION + "\n")
        vf.write(self._elid + "\n")

        l1_lines = []
        l2_lines = []
        l3_lines = []

        tic = ticker.Counter(
            'Hääli:', '\tKehtivaid: %d\tAvalduse alusel tühistatuid: %d')
        tic.start('Koostan loendamisele minevate häälte nimekirja')

        nowstr = time.strftime("%Y%m%d%H%M%S")

        for path in os.walk(self._reg.path(['hts', 'votes'])):
            root = path[0]
            code = root.split('/').pop()

            if not formatutil.is_isikukood(code):
                continue

            log_lines = self.get_log_lines(root, path[2])

            if len(log_lines) > 0:
                log_lines.sort(key=itemgetter(0), reverse=True)
                new = None
                for lines in log_lines:
                    old = lines[0].rsplit('\t', 2)[0]
                    notime = old.split('\t', 1)[1]
                    fn = lines[1]
                    voteforres = self.get_vote_for_result(old, fn)
                    if voteforres:
                        l1_lines.append(old)
                        if new is None:
                            ur, reason, tim = self.is_user_revoked(code)
                            if ur:
                                l2_lines.append("%s\t%s\t%s" %
                                                (tim, notime, reason))
                                r_votes += 1
                            else:
                                vf.write('\t'.join(voteforres) + '\n')
                                v_votes += 1
                                l3_lines.append("%s\t%s" % (nowstr, notime))
                        else:
                            autor = new.split('\t')
                            l2_lines.append("%s\t%s\tkorduv e-hääl: %s" %
                                            (autor[0], notime, autor[1]))
                            a_votes += 1
                        new = old
                    else:
                        b_votes += 1

                tic.tick(1, v_votes, r_votes)

        vf.close()
        ksum.store(vf.name())
        tic.finish()

        l1_lines.sort()
        self.save_log(l1_lines, '1')
        l2_lines.sort()
        self.save_log(l2_lines, '2')
        l3_lines.sort()
        self.save_log(l3_lines, '3')
        return v_votes, r_votes, a_votes, b_votes