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
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
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()
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()
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()
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
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