def prepare(self, confer_name): if Election().is_hes(): self.root = 'hes' elif Election().is_hlr(): self.root = 'hlr' else: raise Exception('Vigane serveritüüp') if not ElectionState().can_replace_candidates(): print 'Selles hääletuse faasis (%s) valikuid muuta ei saa'\ % ElectionState().str() return False self.reg = Election().get_sub_reg(self.elid) AppLog().set_app(confer_name, self.elid) AppLog().log('Valikute nimekirja välja vahetamine: ALGUS') self.quest = question.Question(self.elid, self.root, self.reg) self._ed = inputlists.Districts() self._ed.load(self.root, self.reg) self._backup_old_choices() print 'Valimised: ' + self.elid return True
def check_districts_file(self, jaosk_f): tmp_jaosk_f = None try: if not checkfile(jaosk_f): return False print 'Kontrollin jaoskondade faili volitusi' ret = regrights.kontrolli_volitusi(self.elid, jaosk_f, 'JAOSK', \ self.conf) if not ret[0]: print 'Jaoskondade faili volituste '\ 'kontroll andis negatiivse tulemuse' print ret[1] return False tmp_jaosk_f = bdocpythonutils.get_doc_content_file(jaosk_f) self._ed = inputlists.Districts() self._ed.attach_elid(self.elid) self._ed.attach_logger(AppLog()) if not self._ed.check_format(tmp_jaosk_f, \ 'Kontrollin jaoskondade nimekirja: '): print "Jaoskondade nimekiri ei vasta nõuetele" return False print "Jaoskondade nimekiri OK" return True finally: if not tmp_jaosk_f == None: os.unlink(tmp_jaosk_f)
def choices_to_voter(self, voter): ed = inputlists.Districts() ed.load(self._root, self._reg) rk_nimi = \ ed.district_name(voter['ringkond_omavalitsus'], voter['ringkond']) ch = self.choices_proxy() return ch.district_choices_to_voter(voter, self._elid, rk_nimi)
def __load_jaoskonnad(self, jsk, jsk_rev): dist = inputlists.Districts() dist.load(evcommon.APPTYPE_HTS, self._reg) # jaoskonnad = { # 'maakonna nimi': { # 'vald': { # kov-jsk: ['jaoskonna string', [hääletajate list]] # } # } # } # # jaoskonnad_rev viitab otse jaoskondadele for i in dist.district_list: split_district = dist.district_list[i][0].rsplit(',', 1) mk = dist.district_list[i][1] jsk_nr = '\t'.join(i.split('\t')[0:2]) if jsk_nr == '0\t0': mk = 'ZZZ' if not mk in jsk: jsk[mk] = {} vald = split_district[0] if mk == 'ZZZ': vald = 'ZZZ' if not vald in jsk[mk]: jsk[mk][vald] = {} if not i in jsk[mk][vald]: jsk[mk][vald][i] = [dist.district_list[i][0], []] else: self._errmsg = 'Viga andmestruktuurides (%s)' % jsk_nr raise Exception(self._errmsg) jsk_rev[i] = jsk[mk][vald][i][1]
def apply_changes(elid, voter_f): """Muudatuste rakendamine""" vl = None tokend = {} def check_state(): if not ElectionState().can_apply_changes(): sys.stderr.write('Selles hääletuse faasis (%s) pole võimalik ' 'nimekirju uuendada\n' % ElectionState().str()) sys.exit(1) try: buflog = None if Election().is_hes(): root = 'hes' elif Election().is_hts(): root = 'hts' else: raise Exception('Vigane serveritüüp') buflog = BufferedLog(Election(). get_path(evcommon.VOTER_LIST_LOG_FILE), 'APPLY-CHANGES', elid) check_state() reg = Election().get_sub_reg(elid) ed = inputlists.Districts() ed.load(root, reg) vl = inputlists.VotersList(root, reg, ed) vl.attach_elid(elid) vl.ignore_errors() evlog.AppLog().set_app('APPLY-CHANGES') vl.attach_logger(evlog.AppLog()) print "Kontrollin valijate faili terviklikkust" checkResult = sigverify.check_existent(voter_f, elid) if not checkResult[0]: raise Exception('Kontrollimisel tekkis viga: %s\n' % checkResult[1]) else: print "Valijate faili terviklikkus OK" voters_file_sha256 = ksum.compute(voter_f) if Election().get_root_reg().check( ['common', 'voters_file_hashes', voters_file_sha256]): raise Exception('Kontrollsummaga %s fail on juba laaditud\n' % voters_file_sha256) if not vl.check_format(voter_f, 'Kontrollin valijate nimekirja: '): print "Valijate nimekiri ei vasta vormingunõuetele" sys.exit(1) else: print 'Valijate nimekiri OK' vl.attach_logger(buflog) if not vl.check_muudatus( 'Kontrollin muudatuste kooskõlalisust: ', ElectionState().election_on(), tokend): print "Sisend ei ole kooskõlas olemasoleva konfiguratsiooniga" else: print "Muudatuste kooskõlalisus OK" _apply = 1 if not buflog.empty(): print 'Muudatuste sisselaadimisel esines vigu' buflog.output_errors() _apply = uiutil.ask_yes_no( 'Kas rakendan kooskõlalised muudatused?') if not _apply: buflog.log_error('Muudatusi ei rakendatud') print 'Muudatusi ei rakendatud' else: if ElectionState().election_on() and root == 'hts': create_tokend_file(tokend, reg, elid) a_count, d_count = vl.create('Paigaldan valijaid: ') print 'Teostasin %d lisamist ja %d eemaldamist' \ % (a_count, d_count) Election().copy_config_file( elid, root, voter_f, evcommon.VOTERS_FILES) Election().add_voters_file_hash(voter_f) print 'Muudatuste rakendamine lõppes edukalt' except SystemExit: sys.stderr.write('Viga muudatuste laadimisel\n') if buflog: buflog.output_errors() raise except Exception as ex: sys.stderr.write('Viga muudatuste laadimisel: ' + str(ex) + '\n') if buflog: buflog.output_errors() sys.exit(1) finally: if vl is not None: vl.close()
dist_f = value evcommon.checkfile(dist_f) elif option == "-h": usage() sys.exit() else: assert False, "unhandled option" if (not dist_f) and (not choices_f) and (not voters_f): usage() sys.exit() blog = BufferedLog() if dist_f: ed = inputlists.Districts() ed.attach_logger(blog) if not ed.check_format(dist_f, 'Kontrollin jaoskondade nimekirja: '): print "Jaoskondade nimekiri ei vasta nõuetele" else: print "Jaoskondade nimekiri OK" if choices_f: ch = inputlists.ChoicesList(ed) ch.attach_logger(blog) if not ch.check_format(choices_f, 'Kontrollin valikute nimekirja: '): print "Valikute nimekiri ei vasta nõuetele" else: print "Valikute nimekiri OK" if voters_f:
def check_inputlists(args): ed = None ch = None vl = None dist_f = None choices_f = None voters_f = None try: opts, args = getopt.getopt(args[1:], "d:c:v:h") except getopt.GetoptError as err: print str(err) usage() sys.exit(2) for option, value in opts: if option == "-v": voters_f = value evcommon.checkfile(voters_f) elif option == "-c": choices_f = value evcommon.checkfile(choices_f) elif option == "-d": dist_f = value evcommon.checkfile(dist_f) elif option == "-h": usage() sys.exit() else: assert False, "unhandled option" if (not dist_f) and (not choices_f) and (not voters_f): usage() sys.exit() blog = BufferedLog() if dist_f: ed = inputlists.Districts() ed.attach_logger(blog) if not ed.check_format(dist_f, 'Kontrollin jaoskondade nimekirja: '): print "Jaoskondade nimekiri ei vasta nõuetele" else: print "Jaoskondade nimekiri OK" if choices_f: ch = inputlists.ChoicesList(ed) ch.attach_logger(blog) if not ch.check_format(choices_f, 'Kontrollin valikute nimekirja: '): print "Valikute nimekiri ei vasta nõuetele" else: print "Valikute nimekiri OK" if voters_f: vl = inputlists.VotersList(None, None, ed) vl.attach_logger(blog) vl.ignore_errors() if not vl.check_format(voters_f, 'Kontrollin valijate nimekirja: '): print "Valijate nimekiri ei vasta nõuetele" else: print "Valijate nimekiri OK"