Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
 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)
Ejemplo n.º 4
0
    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]
Ejemplo n.º 5
0
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()
Ejemplo n.º 6
0
            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:
Ejemplo n.º 7
0
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"