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
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
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)
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
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
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
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]
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
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
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)
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
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]
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]
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
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)
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)
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
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 []
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
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
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]
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
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()
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)
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)
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
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
def zapisny_list_key_to_akademicky_rok(self, zapisny_list_key): studium_key, akademicky_rok = decode_key(zapisny_list_key) return akademicky_rok
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]