Esempio n. 1
0
    def odhlas_z_terminu(self, termin_key):
        zapisny_list_key, predmet_key, datum, cas, miestnost, poznamka = (
            decode_key(termin_key))
        (skratka_predmetu,) = decode_key(predmet_key)

        app = self._open_terminy_hodnotenia_app(zapisny_list_key)

        # V dolnom combo boxe dame "Zobrazit terminy: Vsetkych predmetov".
        app.d.zobrazitTerminyComboBox.select(0)

        # Stlacime button vedla combo boxu.
        app.d.zobrazitTerminyAction.execute()

        # Vyberieme spravny riadok.
        app.d.terminyTable.select(find_row(
            app.d.terminyTable.all_rows(),
            dat=datum, cas=cas, miestnosti=miestnost, poznamka=poznamka,
            predmetSkratka=skratka_predmetu))

        # Stlacime "Odhlasit sa z terminu".
        with app.collect_operations() as ops:
            app.d.odstranitButton.click()

        # Vyskoci confirm box, ci sa naozaj chceme odhlasit. Stlacime "Ano".
        assert_ops(ops, 'confirmBox')
        with app.collect_operations() as ops:
            app.confirm_box(2)

        if ops:
            assert_ops(ops, 'messageBox')
            return ops[0].args[0]

        return None
Esempio n. 2
0
    def get_vypisane_terminy_predmetu(self, zapisny_list_key, predmet_key):
        studium_key, akademicky_rok = decode_key(zapisny_list_key)
        sp_skratka, zaciatok = decode_key(studium_key)
        (skratka, ) = decode_key(predmet_key)

        terminy = self.context.request_json(
            "predmet/aktualneTerminyHodnotenia",
            skratkaStudijnehoProgramu=sp_skratka,
            zaciatokStudia=zaciatok,
            akademickyRok=akademicky_rok,
            skratkaPredmetu=skratka)

        result = [
            Termin(datum=row['dat'],
                   cas=row['cas'],
                   miestnost=row['miestnosti'],
                   pocet_prihlasenych=row['pocetPrihlasenych'],
                   maximalne_prihlasenych=row['maxPocet'],
                   hodnotiaci=row['hodnotiaci'],
                   prihlasovanie=row['prihlasovanie'],
                   odhlasovanie=row['odhlasovanie'],
                   poznamka=row['poznamka'],
                   skratka_predmetu=row['skratkaPredmetu'],
                   nazov_predmetu=row['nazovPredmetu'],
                   hodnotenie_terminu=row['hodnotenieTerminu'],
                   hodnotenie_predmetu=row['hodnoteniePredmetu'],
                   moznost_prihlasit=row['moznostPrihlasenia'],
                   datum_prihlasenia="",
                   datum_odhlasenia="",
                   akademicky_rok=akademicky_rok,
                   zapisny_list_key=zapisny_list_key) for row in terminy
        ]

        return result
Esempio n. 3
0
    def get_prihlaseni_studenti(self, termin_key):
        zapisny_list_key, predmet_key, datum, cas, miestnost, poznamka = (
            decode_key(termin_key))

        app = self._open_terminy_hodnotenia_app(zapisny_list_key)

        self.__vyber_oba_semestre(app)
        self.__select_predmet_row(app, predmet_key)

        app.d.zobrazitTerminyAction.execute()
        try:
            index = find_row(app.d.terminyTable.all_rows(),
                             dat=datum,
                             cas=cas,
                             miestnosti=miestnost,
                             poznamka=poznamka)
        except KeyError:
            index = None

        # Ak sa pozerame na stary zapisny list, vyber_terminov_dialog
        # bude disabled, preto termin musi byt v hlavnom dialogu.
        if index is not None:
            app.d.terminyTable.select(index)
            # Stlacime "Zobrazit zoznam prihlasenych".
            with app.collect_operations() as ops:
                app.d.zoznamPrihlasenychStudentovAction.execute()

            return self.__process_prihlaseni_studenti_list(app, ops)
        else:
            # zapisny_list_key a predmet_key uz sme selectli predtym.
            return self.__get_prihlaseni_studenti_cez_vyber_terminu(
                app, datum, cas, miestnost, poznamka)
Esempio n. 4
0
    def prihlas_na_termin(self, termin_key):
        zapisny_list_key, predmet_key, datum, cas, miestnost, poznamka = (
            decode_key(termin_key))

        app = self._open_terminy_hodnotenia_app(zapisny_list_key)
        self.__select_predmet_row(app, predmet_key)
        self.__open_vyber_terminu_dialog(app)

        # Vyberieme spravny riadok.
        app.d.zoznamTerminovTable.select(find_row(
            app.d.zoznamTerminovTable.all_rows(),
            dat=datum, cas=cas, miestnosti=miestnost, poznamka=poznamka))

        # Stlacime OK.
        with app.collect_operations() as ops:
            app.d.enterButton.click()

        message = None
        if ops and ops[0].method == 'messageBox':
            assert_ops(ops, 'messageBox')
            message = ops[0].args[0]
            with app.collect_operations() as ops:
                app.d.click_close_button()

        # Dialog sa zavrie.
        app.awaited_close_dialog(ops)

        return message
Esempio n. 5
0
    def prihlas_na_termin(self, termin_key):
        zapisny_list_key, predmet_key, datum, cas, miestnost, poznamka = (
            decode_key(termin_key))

        app = self._open_terminy_hodnotenia_app(zapisny_list_key)
        self.__select_predmet_row(app, predmet_key)
        self.__open_vyber_terminu_dialog(app)

        # Vyberieme spravny riadok.
        app.d.zoznamTerminovTable.select(
            find_row(app.d.zoznamTerminovTable.all_rows(),
                     dat=datum,
                     cas=cas,
                     miestnosti=miestnost,
                     poznamka=poznamka))

        # Stlacime OK.
        with app.collect_operations() as ops:
            app.d.enterButton.click()

        message = None
        if ops and ops[0].method == 'messageBox':
            assert_ops(ops, 'messageBox')
            message = ops[0].args[0]
            with app.collect_operations() as ops:
                app.d.click_close_button()

        # Dialog sa zavrie.
        app.awaited_close_dialog(ops)

        return message
Esempio n. 6
0
File: zapis.py Progetto: Adman/votr
    def zapis_odstran_predmety(self, zapisny_list_key, cast, predmet_key_list):
        try:
            app = self._open_zapis_predmetov_app(zapisny_list_key)
        except CantOpenApplication:
            return UNAVAILABLE
        self.__zatvor_ponuku_predmetov(app)

        # Oznacime vrchol pre celu cast, aby sme videli vsetky predmety.
        app.d.castiZapisnehoListuTree.select('nR/' + cast)

        # Vyberieme v tabulke dane predmety.
        indexes = []
        for predmet_key in predmet_key_list:
            (skratka_predmetu,) = decode_key(predmet_key)
            indexes.append(find_row(
                app.d.predmetyTable.all_rows(),
                skratka=skratka_predmetu))
        app.d.predmetyTable.select(indexes)

        # Stlacime "Odobrat predmet".
        with app.collect_operations() as ops:
            app.d.odobratPredmetButton.click()

        # Mozno vyskoci confirm box. Zvolime "Ano".
        if len(ops) == 1 and ops[0].method == 'confirmBox':
            with app.collect_operations() as ops:
                app.confirm_box(2)

        # Mozno vyskoci chyba. Ak nie, sme hotovi.
        if ops:
            assert_ops(ops, 'messageBox')
            return ops[0].args[0]

        return None
Esempio n. 7
0
    def get_hodnotenia(self, zapisny_list_key):
        try:
            app = self._open_hodnotenia_priemery_app(zapisny_list_key)
        except CantOpenApplication:
            return [[], "Predmety a hodnotenia pre tento zápisný list nie sú dostupné."]

        # Ak uz bola aplikacia otvorena pred tymto volanim, stlacime "Refresh".
        if getattr(app, 'freshly_opened', True):
            app.freshly_opened = False
        else:
            app.d.refreshButton.click()

        studium_key, akademicky_rok = decode_key(zapisny_list_key)

        result = [Hodnotenie(akademicky_rok=akademicky_rok,
                             skratka=row['skratka'],
                             nazov=row['nazov'],
                             typ_vyucby=row['kodTypVyucbySP'],
                             semester=row['semester'],
                             kredit=row['kredit'],
                             hodn_znamka=row['znamka'],
                             hodn_termin=row['termin'],
                             hodn_datum=row['datum'],
                             hodn_znamka_popis=row['znamkaPopis'],
                             zapisny_list_key=zapisny_list_key)
                  for row in app.d.hodnoteniaTable.all_rows()]
        return [result, None]
Esempio n. 8
0
    def zapis_odstran_predmety(self, zapisny_list_key, cast, predmet_key_list):
        try:
            app = self._open_zapis_predmetov_app(zapisny_list_key)
        except CantOpenApplication:
            return UNAVAILABLE
        self.__zatvor_ponuku_predmetov(app)

        # Oznacime vrchol pre celu cast, aby sme videli vsetky predmety.
        app.d.castiZapisnehoListuTree.select('nR/' + cast)

        # Vyberieme v tabulke dane predmety.
        indexes = []
        for predmet_key in predmet_key_list:
            (skratka_predmetu, ) = decode_key(predmet_key)
            indexes.append(
                find_row(app.d.predmetyTable.all_rows(),
                         skratka=skratka_predmetu))
        app.d.predmetyTable.select(indexes)

        # Stlacime "Odobrat predmet".
        with app.collect_operations() as ops:
            app.d.odobratPredmetButton.click()

        # Mozno vyskoci confirm box. Zvolime "Ano".
        if len(ops) == 1 and ops[0].method == 'confirmBox':
            with app.collect_operations() as ops:
                app.confirm_box(2)

        # Mozno vyskoci chyba. Ak nie, sme hotovi.
        if ops:
            assert_ops(ops, 'messageBox')
            return ops[0].args[0]

        return None
Esempio n. 9
0
    def get_prihlasene_terminy(self, zapisny_list_key):
        app = self._open_terminy_hodnotenia_app(zapisny_list_key)

        # V dolnom combo boxe dame "Zobrazit terminy: Vsetkych predmetov".
        app.d.zobrazitTerminyComboBox.select(0)

        # Stlacime button vedla combo boxu.
        app.d.zobrazitTerminyAction.execute()

        studium_key, akademicky_rok = decode_key(zapisny_list_key)

        # Vytiahneme tabulku terminov.
        result = [
            Termin(datum=row['dat'],
                   cas=row['cas'],
                   miestnost=row['miestnosti'],
                   pocet_prihlasenych=row['pocetPrihlasenych'],
                   maximalne_prihlasenych=row['maxPocet'],
                   hodnotiaci=row['hodnotiaci'],
                   prihlasovanie=row['prihlasovanie'],
                   odhlasovanie=row['odhlasovanie'],
                   poznamka=row['poznamka'],
                   skratka_predmetu=row['predmetSkratka'],
                   nazov_predmetu=row['predmetNazov'],
                   hodnotenie_terminu=row['znamka'],
                   hodnotenie_predmetu=row['hodnPredmetu'],
                   moznost_prihlasit=row['moznostPrihlasenia'],
                   datum_prihlasenia=row['datumPrihlas'],
                   datum_odhlasenia=row['datumOdhlas'],
                   akademicky_rok=akademicky_rok,
                   zapisny_list_key=zapisny_list_key)
            for row in app.d.terminyTable.all_rows() if not row['datumOdhlas']
        ]
        return result
Esempio n. 10
0
    def get_prihlaseni_studenti(self, termin_key):
        zapisny_list_key, predmet_key, datum, cas, miestnost, poznamka = (
            decode_key(termin_key))

        app = self._open_terminy_hodnotenia_app(zapisny_list_key)

        self.__vyber_oba_semestre(app)
        self.__select_predmet_row(app, predmet_key)

        app.d.zobrazitTerminyAction.execute()
        try:
            index = find_row(
                app.d.terminyTable.all_rows(),
                dat=datum, cas=cas, miestnosti=miestnost, poznamka=poznamka)
        except KeyError:
            index = None

        # Ak sa pozerame na stary zapisny list, vyber_terminov_dialog
        # bude disabled, preto termin musi byt v hlavnom dialogu.
        if index is not None:
            app.d.terminyTable.select(index)
            # Stlacime "Zobrazit zoznam prihlasenych".
            with app.collect_operations() as ops:
                app.d.zoznamPrihlasenychStudentovAction.execute()

            return self.__process_prihlaseni_studenti_list(app, ops)
        else:
            # zapisny_list_key a predmet_key uz sme selectli predtym.
            return self.__get_prihlaseni_studenti_cez_vyber_terminu(app,
                datum, cas, miestnost, poznamka)
Esempio n. 11
0
    def get_prihlasene_terminy(self, zapisny_list_key):
        app = self._open_terminy_hodnotenia_app(zapisny_list_key)

        # V dolnom combo boxe dame "Zobrazit terminy: Vsetkych predmetov".
        app.d.zobrazitTerminyComboBox.select(0)

        # Stlacime button vedla combo boxu.
        app.d.zobrazitTerminyAction.execute()

        studium_key, akademicky_rok = decode_key(zapisny_list_key)

        # Vytiahneme tabulku terminov.
        result = [Termin(datum=row['dat'],
                         cas=row['cas'],
                         miestnost=row['miestnosti'],
                         pocet_prihlasenych=row['pocetPrihlasenych'],
                         maximalne_prihlasenych=row['maxPocet'],
                         hodnotiaci=row['hodnotiaci'],
                         prihlasovanie=row['prihlasovanie'],
                         odhlasovanie=row['odhlasovanie'],
                         poznamka=row['poznamka'],
                         skratka_predmetu=row['predmetSkratka'],
                         nazov_predmetu=row['predmetNazov'],
                         hodnotenie_terminu=row['znamka'],
                         hodnotenie_predmetu=row['hodnPredmetu'],
                         moznost_prihlasit=row['moznostPrihlasenia'],
                         datum_prihlasenia=row['datumPrihlas'],
                         datum_odhlasenia=row['datumOdhlas'],
                         akademicky_rok=akademicky_rok,
                         zapisny_list_key=zapisny_list_key)
                  for row in app.d.terminyTable.all_rows()
                  if not row['datumOdhlas']]
        return result
Esempio n. 12
0
    def __select_predmet_row(self, app, predmet_key):
        self.__vyber_oba_semestre(app)

        (skratka, ) = decode_key(predmet_key)
        index = find_row(app.d.predmetyTable.all_rows(), skratka=skratka)
        app.d.predmetyTable.select(index)

        return app.d.predmetyTable.all_rows()[index]
Esempio n. 13
0
    def __select_predmet_row(self, app, predmet_key):
        self.__vyber_oba_semestre(app)

        (skratka,) = decode_key(predmet_key)
        index = find_row(app.d.predmetyTable.all_rows(), skratka=skratka)
        app.d.predmetyTable.select(index)

        return app.d.predmetyTable.all_rows()[index]
Esempio n. 14
0
    def get_predmety(self, zapisny_list_key):
        studium_key, akademicky_rok = decode_key(zapisny_list_key)
        sp_skratka, zaciatok = decode_key(studium_key)

        predmety = self.context.request_json(
            "zapisnyList/predmety",
            skratkaStudijnehoProgramu=sp_skratka,
            zaciatokStudia=zaciatok,
            akademickyRok=akademicky_rok)

        result = [
            Predmet(skratka=row['skratka'],
                    nazov=row['nazov'],
                    typ_vyucby=row['kodTypVyucby'],
                    semester=row['semester'],
                    kredit=row['kredit']) for row in predmety
        ]
        return result
Esempio n. 15
0
    def __vyber_zapisny_list(self, app, zapisny_list_key):
        studium_key, akademicky_rok = decode_key(zapisny_list_key)

        # Ak este nie je vybrate spravne studium, vyberieme ho.
        self.__vyber_studium(app, studium_key)

        # Vyberieme zapisny list.
        zapisny_list_index = find_row(
            app.d.zapisneListyTable.all_rows(), popisAkadRok=akademicky_rok)
        app.d.zapisneListyTable.select(zapisny_list_index)
Esempio n. 16
0
    def __vyber_zapisny_list(self, app, zapisny_list_key):
        studium_key, akademicky_rok = decode_key(zapisny_list_key)

        # Ak este nie je vybrate spravne studium, vyberieme ho.
        self.__vyber_studium(app, studium_key)

        # Vyberieme zapisny list.
        zapisny_list_index = find_row(app.d.zapisneListyTable.all_rows(),
                                      popisAkadRok=akademicky_rok)
        app.d.zapisneListyTable.select(zapisny_list_index)
Esempio n. 17
0
    def get_predmety(self, zapisny_list_key):
        studium_key, akademicky_rok = decode_key(zapisny_list_key)
        sp_skratka, zaciatok = decode_key(studium_key)

        predmety = self.context.request_json(
            "zapisnyList/predmety",
            skratkaStudijnehoProgramu=sp_skratka,
            zaciatokStudia=zaciatok,
            akademickyRok=akademicky_rok,
        )

        result = [
            Predmet(
                skratka=row["skratka"],
                nazov=row["nazov"],
                typ_vyucby=row["kodTypVyucby"],
                semester=row["semester"],
                kredit=row["kredit"],
            )
            for row in predmety
        ]
        return result
Esempio n. 18
0
    def get_ucitelia_predmetu(self, predmet_key, akademicky_rok, semester,
                              fakulty):
        (skratka_predmetu, ) = decode_key(predmet_key)

        app = self._open_nastenka_predmetu()

        fakulta = fakulty.split(',')[0]
        fakulta_index = find_option(app.d.fakultaComboBox.options, id=fakulta)
        if app.d.fakultaComboBox.selected_index != fakulta_index:
            app.d.fakultaComboBox.select(fakulta_index)
            app.d.potvrditOrgJednotkuButton.click()

        # automaticky nacitavanie ucitelov do tabulky
        app.d.nacitavatAutomatickyCheckBox.set_to(True)

        akademicky_rok_index = find_option(app.d.rokComboBox.options,
                                           title=akademicky_rok)
        if app.d.rokComboBox.selected_index != akademicky_rok_index:
            app.d.rokComboBox.select(akademicky_rok_index)

        app.d.skratkaTextField.write(skratka_predmetu)

        # nastavime zobrazenie vsetkych predmetov, nie len tych co
        # mame zapisane.
        zobrazit_index = find_option(app.d.zobrazitComboBox.options,
                                     id="VSETKY")
        if app.d.zobrazitComboBox.selected_index != zobrazit_index:
            app.d.zobrazitComboBox.select(zobrazit_index)

        mozne_semestre = [semester] if semester else ["Z", "L"]
        for semester in mozne_semestre:
            semester_index = find_option(app.d.semesterComboBox.options,
                                         id=semester)
            if app.d.semesterComboBox.selected_index != semester_index:
                app.d.semesterComboBox.select(semester_index)

            app.d.nacitatPredmetyButton.click()

            if app.d.skupinaPredmetovTable.all_rows():
                app.d.skupinaPredmetovTable.select(
                    find_row(app.d.skupinaPredmetovTable.all_rows(),
                             skratka=skratka_predmetu))

                ucitelia = [
                    RegUcitelPredmetu(plne_meno=row['plneMeno'],
                                      typ=row['typVyucujuceho'])
                    for row in app.d.vyucujuciTable.all_rows()
                ]
                return ucitelia

        return []
Esempio n. 19
0
    def get_vypisane_terminy_predmetu(self, zapisny_list_key, predmet_key):
        studium_key, akademicky_rok = decode_key(zapisny_list_key)
        sp_skratka, zaciatok = decode_key(studium_key)
        (skratka,) = decode_key(predmet_key)

        terminy = self.context.request_json(
            "predmet/aktualneTerminyHodnotenia",
            skratkaStudijnehoProgramu=sp_skratka,
            zaciatokStudia=zaciatok,
            akademickyRok=akademicky_rok,
            skratkaPredmetu=skratka,
        )

        result = [
            Termin(
                datum=row["dat"],
                cas=row["cas"],
                miestnost=row["miestnosti"],
                pocet_prihlasenych=row["pocetPrihlasenych"],
                maximalne_prihlasenych=row["maxPocet"],
                hodnotiaci=row["hodnotiaci"],
                prihlasovanie=row["prihlasovanie"],
                odhlasovanie=row["odhlasovanie"],
                poznamka=row["poznamka"],
                skratka_predmetu=row["skratkaPredmetu"],
                nazov_predmetu=row["nazovPredmetu"],
                hodnotenie_terminu=row["hodnotenieTerminu"],
                hodnotenie_predmetu=row["hodnoteniePredmetu"],
                moznost_prihlasit=row["moznostPrihlasenia"],
                datum_prihlasenia="",
                datum_odhlasenia="",
                akademicky_rok=akademicky_rok,
                zapisny_list_key=zapisny_list_key,
            )
            for row in terminy
        ]

        return result
Esempio n. 20
0
    def odhlas_z_terminu(self, termin_key):
        zapisny_list_key, predmet_key, datum, cas, miestnost, poznamka = (
            decode_key(termin_key))
        (skratka_predmetu, ) = decode_key(predmet_key)

        app = self._open_terminy_hodnotenia_app(zapisny_list_key)

        # V dolnom combo boxe dame "Zobrazit terminy: Vsetkych predmetov".
        app.d.zobrazitTerminyComboBox.select(0)

        # Stlacime button vedla combo boxu.
        app.d.zobrazitTerminyAction.execute()

        # Vyberieme spravny riadok.
        app.d.terminyTable.select(
            find_row(app.d.terminyTable.all_rows(),
                     dat=datum,
                     cas=cas,
                     miestnosti=miestnost,
                     poznamka=poznamka,
                     predmetSkratka=skratka_predmetu))

        # Stlacime "Odhlasit sa z terminu".
        with app.collect_operations() as ops:
            app.d.odstranitButton.click()

        # Vyskoci confirm box, ci sa naozaj chceme odhlasit. Stlacime "Ano".
        assert_ops(ops, 'confirmBox')
        with app.collect_operations() as ops:
            app.confirm_box(2)

        if ops:
            assert_ops(ops, 'messageBox')
            return ops[0].args[0]

        return None
Esempio n. 21
0
    def get_priebezne_hodnotenia(self, zapisny_list_key):
        try:
            app = self._open_priebezne_hodnotenie_app(zapisny_list_key)
        except CantOpenApplication:
            return [
                [],
                "Priebežné hodnotenia pre tento zápisný list nie sú dostupné."
            ]

        # Ak uz bola aplikacia otvorena pred tymto volanim, stlacime "Refresh".
        if getattr(app, 'freshly_opened', True):
            app.freshly_opened = False
        else:
            app.d.refreshButton.click()

        studium_key, akademicky_rok = decode_key(zapisny_list_key)

        result = []
        for i, row in enumerate(
                app.d.predmetySPriebeznymHodnotenimTable.all_rows()):
            # Klikneme na predmet s priebeznym hodnotenim a pockame na nacitanie
            with app.collect_operations() as ops:
                app.d.predmetySPriebeznymHodnotenimTable.select(i)
            if ops:
                app.awaited_refresh_dialog(ops)

            # Klikneme na button nacitatHodnotenie
            app.d.nacitatHodnotenieButton.click()

            records = [
                PriebezneHodnotenie(dovod=prow['dovod'],
                                    poc_bodov=prow['pocetBodov'],
                                    maximum=prow['dovodPriebHodHranica'],
                                    zaevidoval=prow['zapisalPlneMeno'],
                                    zapocitavat=prow['zapocitat'],
                                    minimum=prow['dovodPriebHodMinHranica'])
                for prow in app.d.hodnotenieTable.all_rows()
            ]

            result.append(
                PriebezneHodnoteniaPredmetu(akademicky_rok=akademicky_rok,
                                            skratka=row['skratka'],
                                            nazov=row['predmetNazov'],
                                            kredit=row['kredit'],
                                            semester=row['semesterKodJ'],
                                            zaznamy=records))
        return [result, None]
Esempio n. 22
0
    def get_zapisne_listy(self, studium_key):
        sp_skratka, zaciatok = decode_key(studium_key)

        zapisne_listy = convert(self.context.request_json(
            "studium/zapisneListy",
            skratkaStudijnehoProgramu=sp_skratka,
            zaciatokStudia=zaciatok))

        result = [ZapisnyList(akademicky_rok=row['popisAkadRok'],
                              rocnik=row['rokRocnik'],
                              sp_skratka=row['studProgramSkratka'],
                              sp_popis=row['studProgramPopis'],
                              datum_zapisu=row['datumZapisu'],
                              studium_key=studium_key)
                  for row in zapisne_listy]

        return result
Esempio n. 23
0
    def get_informacny_list(self, kod_predmetu, akademicky_rok):
        app = self._open_register_predmetov()

        stredisko, _, zvysok = decode_key(kod_predmetu)[0].partition('/')
        skratka = zvysok.rpartition('/')[0]

        # Napiseme stredisko a skratku predmetu.
        self.__query_dialog(app,
                            akademicky_rok,
                            stredisko=stredisko,
                            skratka_predmetu=skratka)

        # Stlacime nacitavaci button (sipku dole).
        app.d.zobrazitPredmetyButton.click()

        if not app.d.zoznamPredmetovTable.loaded_rows:
            return None
        # TODO: zdokumentovat, ze ak matchuju viacere informacne listy, je
        # undefined behavior ktory vratime. (asi vzdy ten prvy, ale kto vie ako
        # ich AIS zoradi.)

        # Stlacime v menu "Informacny list".
        with app.collect_operations() as ops:
            app.d.infListMenuItem.click()

        # Otvori sa dialog na vyber formatu.
        app.awaited_open_dialog(ops)

        # Vyberieme vrchny riadok. TODO: fakt chceme ten?
        app.d.sablonyTable.select(0)

        # Stlacime OK.
        with app.collect_operations() as ops:
            app.d.enterButton.click()

        # Dialog sa zavrie a otvori sa "prosim cakajte", tak cakame.
        assert_ops(ops, 'closeDialog', 'abortBox')
        app.close_dialog(*ops[0].args)
        with app.collect_operations() as ops2:
            app.abort_box(*ops[1].args)

        # Vratime zakodove PDF.
        url = app.awaited_shell_exec(ops2)
        return base64.b64encode(url.content).decode()
Esempio n. 24
0
    def __vyber_studium(self, app, studium_key):
        sp_skratka, zaciatok = decode_key(studium_key)

        # Najdeme studium.
        studium_index = find_row(app.d.studiaTable.all_rows(),
                                 studijnyProgramSkratka=sp_skratka,
                                 zaciatokStudia=zaciatok)

        # Vyberieme studium a stlacime nacitavaci button (sipku dole).
        if app.d.studiaTable.selected_row_indexes != [studium_index] or len(
                app.d.zapisneListyTable.all_rows()) == 0:
            with app.collect_operations() as ops:
                app.d.studiaTable.select(studium_index)
            if ops:
                app.awaited_refresh_dialog(ops)

            with app.collect_operations() as ops:
                app.d.nacitatButton.click()

            if ops:
                app.awaited_refresh_dialog(ops)
Esempio n. 25
0
    def __vyber_studium(self, app, studium_key):
        sp_skratka, zaciatok = decode_key(studium_key)

        # Najdeme studium.
        studium_index = find_row(
            app.d.studiaTable.all_rows(),
            studijnyProgramSkratka=sp_skratka,
            zaciatokStudia=zaciatok)

        # Vyberieme studium a stlacime nacitavaci button (sipku dole).
        if app.d.studiaTable.selected_row_indexes != [studium_index] or len(app.d.zapisneListyTable.all_rows()) == 0:
            with app.collect_operations() as ops:
                app.d.studiaTable.select(studium_index)
            if ops:
                app.awaited_refresh_dialog(ops)

            with app.collect_operations() as ops:
                app.d.nacitatButton.click()

            if ops:
                app.awaited_refresh_dialog(ops)
Esempio n. 26
0
    def get_vypisane_terminy_predmetu(self, zapisny_list_key, predmet_key):
        app = self._open_terminy_hodnotenia_app(zapisny_list_key)

        predmet_row = self.__select_predmet_row(app, predmet_key)
        self.__open_vyber_terminu_dialog(app)

        studium_key, akademicky_rok = decode_key(zapisny_list_key)

        result = [
            Termin(datum=row['dat'],
                   cas=row['cas'],
                   miestnost=row['miestnosti'],
                   pocet_prihlasenych=row['pocetPrihlasenych'],
                   maximalne_prihlasenych=row['maxPocet'],
                   hodnotiaci=row['hodnotiaci'],
                   prihlasovanie=row['prihlasovanie'],
                   odhlasovanie=row['odhlasovanie'],
                   poznamka=row['poznamka'],
                   skratka_predmetu=predmet_row['skratka'],
                   nazov_predmetu=predmet_row['nazov'],
                   hodnotenie_terminu="",
                   hodnotenie_predmetu="",
                   moznost_prihlasit=row['moznostPrihlasenia'],
                   datum_prihlasenia="",
                   datum_odhlasenia="",
                   akademicky_rok=akademicky_rok,
                   zapisny_list_key=zapisny_list_key)
            for row in app.d.zoznamTerminovTable.all_rows()
        ]

        # Stlacime zatvaraci button.
        with app.collect_operations() as ops:
            app.d.click_close_button()

        # Dialog sa zavrie.
        app.awaited_close_dialog(ops)

        return result
Esempio n. 27
0
    def get_vypisane_terminy_predmetu(self, zapisny_list_key, predmet_key):
        app = self._open_terminy_hodnotenia_app(zapisny_list_key)

        predmet_row = self.__select_predmet_row(app, predmet_key)
        self.__open_vyber_terminu_dialog(app)

        studium_key, akademicky_rok = decode_key(zapisny_list_key)

        result = [Termin(datum=row['dat'],
                         cas=row['cas'],
                         miestnost=row['miestnosti'],
                         pocet_prihlasenych=row['pocetPrihlasenych'],
                         maximalne_prihlasenych=row['maxPocet'],
                         hodnotiaci=row['hodnotiaci'],
                         prihlasovanie=row['prihlasovanie'],
                         odhlasovanie=row['odhlasovanie'],
                         poznamka=row['poznamka'],
                         skratka_predmetu=predmet_row['skratka'],
                         nazov_predmetu=predmet_row['nazov'],
                         hodnotenie_terminu="",
                         hodnotenie_predmetu="",
                         moznost_prihlasit=row['moznostPrihlasenia'],
                         datum_prihlasenia="",
                         datum_odhlasenia="",
                         akademicky_rok=akademicky_rok,
                         zapisny_list_key=zapisny_list_key)
                  for row in app.d.zoznamTerminovTable.all_rows()]

        # Stlacime zatvaraci button.
        with app.collect_operations() as ops:
            app.d.click_close_button()

        # Dialog sa zavrie.
        app.awaited_close_dialog(ops)

        return result
Esempio n. 28
0
    def zapisny_list_key_to_akademicky_rok(self, zapisny_list_key):
        studium_key, akademicky_rok = decode_key(zapisny_list_key)

        return akademicky_rok
Esempio n. 29
0
    def zapisny_list_key_to_akademicky_rok(self, zapisny_list_key):
        studium_key, akademicky_rok = decode_key(zapisny_list_key)

        return akademicky_rok
Esempio n. 30
0
    def get_studenti_zapisani_na_predmet(self, predmet_key, akademicky_rok):
        (skratka_predmetu,) = decode_key(predmet_key)
        app = self._open_register_predmetov()

        self.__query_dialog(app, akademicky_rok, skratka_predmetu='/'.join(skratka_predmetu.split('/')[1:-1]))

        app.d.zobrazitPredmetyButton.click()

        if not app.d.zoznamPredmetovTable.all_rows():
            # predmet nebol najdeny (napriklad uz je prilis stary ale napriek
            # tomu ho mam v mojom hodnoteni)
            return [[], None]

        predmet_index = find_row(app.d.zoznamPredmetovTable.all_rows(), skratka=skratka_predmetu)
        app.d.zoznamPredmetovTable.select(predmet_index)

        predmet_row = app.d.zoznamPredmetovTable.all_rows()[predmet_index]
        predmet = RegPredmet(skratka=predmet_row['skratka'],
                             nazov=predmet_row['nazov'],
                             semester=predmet_row['kodSemester'],
                             stredisko=predmet_row['stredisko'],
                             fakulta=predmet_row['FakUniv'],
                             rozsah_vyucby=predmet_row['rozsah'],
                             konanie=predmet_row['konanie'],
                             cudzi_nazov=predmet_row['nazovJ'],
                             kredit=predmet_row['kredit'])
        with app.collect_operations() as ops:
            app.d.poctyPrihlasenychStudentovAction.execute()

        app.awaited_open_dialog(ops)

        try:
            app.d.dataTable.select(
                find_row(app.d.dataTable.all_rows(), skratka=skratka_predmetu))
        except KeyError:
            with app.collect_operations() as ops:
                app.d.closeButton.click()

            app.awaited_close_dialog(ops)

            return [[], predmet]

        with app.collect_operations() as ops:
            app.d.zoznamStudentovAction.execute()

        app.awaited_open_dialog(ops)

        studenti = [PrihlasenyStudent(sp_skratka=row['studProgSkratka'],
                                      datum_prihlasenia=row['datumZapisania'],
                                      plne_meno=row['plneMeno'],
                                      rocnik=row['rokRocnik'],
                                      email=row['email'])
                    for row in app.d.zaradeniStudentiTable.all_rows()]

        # zatvarame dialog so zoznamom studentov
        with app.collect_operations() as ops:
            app.d.closeButton.click()

        app.awaited_close_dialog(ops)

        # zatvarame dialog pocty studentov
        with app.collect_operations() as ops:
            app.d.closeButton.click()

        app.awaited_close_dialog(ops)

        return [studenti, predmet]