class SzervezetTorloUrlap(simpledialog.Dialog): def __init__(self, szulo, kon=None): self._kon = kon super().__init__(szulo, title="Szervezet törlése") def body(self, szulo): self._nev_valaszto = Valaszto("név", self._nevsor(), self) self._nev_valaszto.pack(ipadx=2, ipady=2) return self._nev_valaszto.valaszto def validate(self): szervezet = self._nev_valaszto.elem if szervezet.azonosito in (MAGANSZEMELY.azonosito, WEVIK.azonosito): return False # nem engedem törölni a speciális eseteket biztos = messagebox.askokcancel("Biztos vagy benne?", "VÉGLEGESEN és MINDEN adata törlődik!", parent=self) return szervezet and biztos def apply(self): szervezet = self._nev_valaszto.elem self._kon.szervezet.delete("telefon", szervezet=szervezet.azonosito) self._kon.szervezet.delete("email", szervezet=szervezet.azonosito) self._kon.szervezet.delete("cim", szervezet=szervezet.azonosito) self._kon.szervezet.delete("kontakt", szervezet=szervezet.azonosito) if szervezet.torol(self._kon.szervezet): print("{}: Bejegyzés törölve.".format(szervezet)) self._nev_valaszto.beallit(self._nevsor()) else: print("Nem sikerült törölni.") def _nevsor(self): return sorted(map(lambda szervezet: Szervezet(**szervezet), self._kon.szervezet.select("szervezet")), key=repr)
class CimModositoUrlap(simpledialog.Dialog): def __init__(self, szulo, kon=None): self._kon = kon self._cim = None super().__init__(szulo, title="Cím módosítása") def body(self, szulo): self._nev_valaszto = Valaszto("név", self._nevsor(), self) self._nev_valaszto.valaszto.bind("<<ComboboxSelected>>", self._elerhetosegek) self._nev_valaszto.pack(ipadx=2, ipady=2) self._cim_valaszto = Valaszto("módosítandó cím", self._cimek(), self) self._cim_valaszto.valaszto.bind("<<ComboboxSelected>>", self._kiir_elerhetoseg) self._cim_valaszto.pack(ipadx=2, ipady=2) self._cim_urlap = CimUrlap(self) self._cim_urlap.pack(ipadx=2, ipady=2) self._kiir_elerhetoseg(1) return self._nev_valaszto.valaszto def validate(self): if not self._cim_valaszto.elem: return False else: self._cim = self._uj_cim() if not self._cim: messagebox.showwarning("Hiányos adat!", "Legalább a helységet add meg!", parent=self) return False else: return True def apply(self): if self._cim.ment(self._kon.szemely): print("Bejegyzés módosítva.") else: print("Nem sikerült módosítani.") self._elerhetosegek(1) def _nevsor(self): return sorted(map(lambda szemely: Szemely(**szemely), self._kon.szemely.select("szemely")), key=repr) def _cimek(self): szemely = self._nev_valaszto.elem return [Cim(**cim) for cim in self._kon.szemely.select("cim", szemely=szemely.azonosito)] def _elerhetosegek(self, event): self._cim_valaszto.beallit(self._cimek()) self._kiir_elerhetoseg(1) def _kiir_elerhetoseg(self, event): self._cim_urlap.beallit(self._cim_valaszto.elem or Cim()) def _uj_cim(self): cim = self._cim_valaszto.elem if cim: cim.adatok = self._cim_urlap.export() return cim
class TelefonModositoUrlap(simpledialog.Dialog): def __init__(self, szulo, kon=None): self._kon = kon self._telefonszam = None super().__init__(szulo, title="Telefonszám módosítása") def body(self, szulo): self._nev_valaszto = Valaszto("név", self._nevsor(), self) self._nev_valaszto.valaszto.bind("<<ComboboxSelected>>", self._elerhetosegek) self._nev_valaszto.pack(ipadx=2, ipady=2) self._telefon_valaszto = Valaszto("módosítandó telefonszam", self._telefonszamok(), self) self._telefon_valaszto.valaszto.bind("<<ComboboxSelected>>", self._kiir_elerhetoseg) self._telefon_valaszto.pack(ipadx=2, ipady=2) self._telefonszam_urlap = TelefonszamUrlap(self) self._telefonszam_urlap.pack(ipadx=2, ipady=2) self._kiir_elerhetoseg(1) return self._nev_valaszto.valaszto def validate(self): if not self._telefon_valaszto.elem: return False else: self._telefonszam = self._uj_telefonszam() if not self._telefonszam: messagebox.showwarning("Hiányos adat!", "Add meg a telefonszámot!", parent=self) return False else: return True def apply(self): if self._telefonszam.ment(self._kon.szemely): print("Bejegyzés módosítva.") else: print("Nem sikerült módosítani.") self._elerhetosegek(1) def _nevsor(self): return sorted(map(lambda szemely: Szemely(**szemely), self._kon.szemely.select("szemely")), key=repr) def _telefonszamok(self): szemely = self._nev_valaszto.elem return [Telefon(**telefon) for telefon in self._kon.szemely.select("telefon", szemely=szemely.azonosito)] def _elerhetosegek(self, event): self._telefon_valaszto.beallit(self._telefonszamok()) self._kiir_elerhetoseg(1) def _kiir_elerhetoseg(self, event): self._telefonszam_urlap.beallit(self._telefon_valaszto.elem or Telefon()) def _uj_telefonszam(self): telefon = self._telefon_valaszto.elem if telefon: telefon.adatok = self._telefonszam_urlap.export() return telefon
class KontaktTorloUrlap(simpledialog.Dialog): def __init__(self, szulo, kon=None): self._kon = kon super().__init__(szulo, title="Kontaktszemély eltávolítása") def body(self, szulo): self._szervezetvalaszto = Valaszto("szervezet", self._szervezetnevsor(), self) self._szervezetvalaszto.valaszto.bind("<<ComboboxSelected>>", self._megjelenit) self._szervezetvalaszto.pack(ipadx=2, ipady=2) self._szemelyvalaszto = Valaszto("személy", self._szemelynevsor(), self) self._szemelyvalaszto.pack(ipadx=2, ipady=2) return self._szervezetvalaszto def validate(self): if self._szemelyvalaszto.elem: return messagebox.askokcancel("Biztos vagy benne?", "VÉGLEGESEN törlődik!", parent=self) else: return False def apply(self): kontakt = Kontakt(**(self._kon.kontakt.select( "kontakt", logic="AND", szemely=self._szemelyvalaszto.elem.azonosito, szervezet=self._szervezetvalaszto.elem.azonosito).fetchone())) if kontakt.torol(self._kon.kontakt): print("Bejegyzés törölve.") else: print("Nem sikerült törölni.") def _szervezetnevsor(self): return sorted(map(lambda szervezet: Szervezet(**szervezet), self._kon.szervezet.select("szervezet")), key=repr) def _szemelynevsor(self): szervezetazonosito = self._szervezetvalaszto.elem.azonosito szervezethez_rendelt_szemelyek = self._kon.szervezet.execute( """ SELECT * FROM szemely WHERE azonosito IN (SELECT szemely FROM kontakt WHERE szervezet = ?); """, (szervezetazonosito, )) return sorted(map(lambda szemely: Szemely(**szemely), szervezethez_rendelt_szemelyek), key=repr) def _megjelenit(self, event): self._szemelyvalaszto.beallit(self._szemelynevsor())
class UjKontaktUrlap(simpledialog.Dialog): def __init__(self, szulo, kon=None): self._kon = kon super().__init__(szulo, title="Kontaktszemély hozzárendelése") def body(self, szulo): self._szervezetvalaszto = Valaszto("szervezet", self._szervezetnevsor(), self) self._szervezetvalaszto.valaszto.bind("<<ComboboxSelected>>", self._megjelenit) self._szervezetvalaszto.pack(ipadx=2, ipady=2) self._szemelyvalaszto = Valaszto("személy", self._szemelynevsor(), self) self._szemelyvalaszto.pack(ipadx=2, ipady=2) self._megjegyzes = StringVar() Label(self, text="megjegyzés").pack(ipadx=2, ipady=2) Entry(self, textvariable=self._megjegyzes, width=32).pack(ipadx=2, ipady=2) return self._szervezetvalaszto def validate(self): return True def apply(self): kontakt = Kontakt(szemely=self._szemelyvalaszto.elem.azonosito, szervezet=self._szervezetvalaszto.elem.azonosito, megjegyzes=self._megjegyzes.get()) if kontakt.ment(self._kon.kontakt): print("Bejegyzés mentve.") else: print("Nem sikerült elmenteni.") def _szervezetnevsor(self): return sorted(map(lambda szervezet: Szervezet(**szervezet), self._kon.szervezet.select("szervezet")), key=repr) def _szemelynevsor(self): szervezetazonosito = self._szervezetvalaszto.elem.azonosito szervezethez_nem_rendelt_szemelyek = self._kon.szervezet.execute( """ SELECT * FROM szemely WHERE azonosito NOT IN (SELECT szemely FROM kontakt WHERE szervezet = ?); """, (szervezetazonosito, )) return sorted(map(lambda szemely: Szemely(**szemely), szervezethez_nem_rendelt_szemelyek), key=repr) def _megjelenit(self, event): self._szemelyvalaszto.beallit(self._szemelynevsor())
class ProjektTorloUrlap(simpledialog.Dialog): def __init__(self, szulo, kon): self._kon = kon # super() előtt kell legyen super().__init__(szulo, title="Projekt törlése") def body(self, szulo): self._projekt_valaszto = Valaszto("projekt", self._projektek(), self) self._projekt_valaszto.pack(ipadx=2, ipady=2) return self._projekt_valaszto.valaszto def validate(self): return messagebox.askokcancel("Biztos vagy benne?", "VÉGLEGESEN és MINDEN adata törlődik!", parent=self) def apply(self): hiba = False projekt = self._projekt_valaszto.elem for munkaresz in map( lambda mr: Munkaresz(**mr), self._kon.projekt.select("munkaresz", projekt=projekt.azonosito)): for cim in map( lambda cm: Cim(**cm), self._kon.projekt.select("cim", munkaresz=munkaresz.azonosito)): if not cim.torol(self._kon.projekt): hiba = True for jelleg in map( lambda jg: Jelleg(**jg), self._kon.projekt.select("jelleg", munkaresz=munkaresz.azonosito)): if not jelleg.torol(self._kon.projekt): hiba = True if not munkaresz.torol(self._kon.projekt): hiba = True if not projekt.torol(self._kon.projekt): hiba = True if hiba: print("Nem sikerült törölni.") else: print("{}: Bejegyzés törölve.".format(projekt)) self._projekt_valaszto.beallit(self._projektek()) def _projektek(self): return sorted(map(lambda projekt: Projekt(**projekt), self._kon.projekt.select("projekt")), key=lambda elem: (elem.gyakorisag, repr(elem)))
class EmailTorloUrlap(simpledialog.Dialog): def __init__(self, szulo, kon=None): self._kon = kon self._emailcim = None super().__init__(szulo, title="Email-cím törlése") def body(self, szulo): self._nev_valaszto = Valaszto("név", self._nevsor(), self) self._nev_valaszto.valaszto.bind("<<ComboboxSelected>>", self._elerhetosegek) self._nev_valaszto.pack(ipadx=2, ipady=2) self._email_valaszto = Valaszto("törlendő email-cím", self._emailcimek(), self) self._email_valaszto.pack(ipadx=2, ipady=2) return self._nev_valaszto.valaszto def validate(self): self._emailcim = self._email_valaszto.elem if self._emailcim: biztos = messagebox.askokcancel("Biztos vagy benne?", "VÉGLEGESEN törlődik!", parent=self) return self._emailcim and biztos def apply(self): if self._emailcim.torol(self._kon.szervezet): print("Bejegyzés törölve.") else: print("Nem sikerült törölni.") self._elerhetosegek(1) def _nevsor(self): return sorted(map(lambda szervezet: Szervezet(**szervezet), self._kon.szervezet.select("szervezet")), key=repr) def _emailcimek(self): szervezet = self._nev_valaszto.elem return [ Email(**email) for email in self._kon.szervezet.select( "email", szervezet=szervezet.azonosito) ] def _elerhetosegek(self, event): self._email_valaszto.beallit(self._emailcimek())
class ProjektModositoUrlap(simpledialog.Dialog): def __init__(self, szulo, kon): self._kon = kon # super() előtt kell legyen super().__init__(szulo, title="Projekt módosítása") def body(self, szulo): self._projekt_valaszto = Valaszto("megnevezés", self._projektek(), self) self._projekt_valaszto.set_callback(self._projekt_megjelenit) self._projekt_valaszto.pack(ipadx=2, ipady=2) megnevezes = LabelFrame(self, text="projekt neve") self._projekt_urlap = ProjektUrlap(megnevezes) self._projekt_urlap.pack(ipadx=2, ipady=2) self._projekt_megjelenit(1) megnevezes.pack(fill=X, padx=2, pady=2) return self._projekt_valaszto.valaszto def validate(self): """Ezen a ponton a projektek a projektszám miatt mindenképpen különbözni fognak egymástól.""" return True def apply(self): projekt = self._modositott_projekt() if projekt.ment(self._kon.projekt): print("{}: Bejegyzés módosítva.".format(projekt)) else: print("Nem sikerült módosítani.") self._projekt_valaszto.beallit(self._projektek()) self._projekt_megjelenit(1) def _projektek(self): return sorted(map(lambda projekt: Projekt(**projekt), self._kon.projekt.select("projekt")), key=lambda elem: (elem.gyakorisag, repr(elem))) def _projekt_megjelenit(self, event): self._projekt_urlap.beallit(self._projekt_valaszto.elem or Projekt()) def _modositott_projekt(self): projekt = self._projekt_valaszto.elem projekt.adatok = self._projekt_urlap.export() return projekt
class SzemelyTorloUrlap(simpledialog.Dialog): """Meglévő személy adatait törlő űrlap.""" def __init__(self, szulo, kon=None) -> simpledialog.Dialog: """Az űrlap egy simpledialog.Dialog példány. szulo: szülő widget kon: konnektor.Konnektor adatbázis-gyűjtőkapcsolat""" self._kon = kon super().__init__(szulo, title="Személy törlése") def body(self, szulo) -> Combobox: """Override Dialog.body - gui megjelenítése""" self._nev_valaszto = Valaszto("név", self._nevsor(), self) self._nev_valaszto.pack(ipadx=2, ipady=2) return self._nev_valaszto.valaszto def validate(self) -> bool: """Override Dialog.validate - törlés előtti utolsó megerősítés""" szemely = self._nev_valaszto.elem if szemely.azonosito in (VITYA.azonosito, ROLI.azonosito): return False # nem engedem törölni a speciális eseteket biztos = messagebox.askokcancel("Biztos vagy benne?", "VÉGLEGESEN és MINDEN adata törlődik!", parent=self) return szemely and biztos def apply(self) -> None: """Override Dialog.apply - személy törlése""" szemely = self._nev_valaszto.elem self._kon.szemely.delete("telefon", szemely=szemely.azonosito) # GDPR! self._kon.szemely.delete("email", szemely=szemely.azonosito) self._kon.szemely.delete("cim", szemely=szemely.azonosito) self._kon.szemely.delete("kontakt", szemely=szemely.azonosito) if szemely.torol(self._kon.szemely): print("{}: Bejegyzés törölve.".format(szemely)) self._nev_valaszto.beallit(self._nevsor()) else: print("Nem sikerült törölni.") def _nevsor(self) -> list: """Belső függvény, abc-rendbe rakott szemely. Szemely csomókból álló listát készít, a __repr__ alapján.""" return sorted(map(lambda szemely: Szemely(**szemely), self._kon.szemely.select("szemely")), key=repr)
class CimTorloUrlap(simpledialog.Dialog): def __init__(self, szulo, kon=None): self._kon = kon self._cim = None super().__init__(szulo, title="Cím törlése") def body(self, szulo): self._nev_valaszto = Valaszto("név", self._nevsor(), self) self._nev_valaszto.valaszto.bind("<<ComboboxSelected>>", self._elerhetosegek) self._nev_valaszto.pack(ipadx=2, ipady=2) self._cim_valaszto = Valaszto("törlendő cím", self._cimek(), self) self._cim_valaszto.pack(ipadx=2, ipady=2) return self._nev_valaszto.valaszto def validate(self): self._cim = self._cim_valaszto.elem if self._cim: biztos = messagebox.askokcancel("Biztos vagy benne?", "VÉGLEGESEN törlődik!", parent=self) return self._cim and biztos # rövidzárlat miatt a biztos nem értékelődik ki, ha a cím nem igaz def apply(self): if self._cim.torol(self._kon.szemely): print("Bejegyzés törölve.") else: print("Nem sikerült törölni.") self._elerhetosegek(1) def _nevsor(self): return sorted(map(lambda szemely: Szemely(**szemely), self._kon.szemely.select("szemely")), key=repr) def _cimek(self): szemely = self._nev_valaszto.elem return [Cim(**cim) for cim in self._kon.szemely.select("cim", szemely=szemely.azonosito)] def _elerhetosegek(self, event): self._cim_valaszto.beallit(self._cimek())
class KontaktModositoUrlap(simpledialog.Dialog): def __init__(self, szulo, kon=None): self._kon = kon super().__init__(szulo, title="Szervezet módosítása") def body(self, szulo): self._szemelyvalaszto = Valaszto("személy", self._szemelynevsor(), self) self._szemelyvalaszto.valaszto.bind("<<ComboboxSelected>>", self._megjelenit) self._szemelyvalaszto.pack(ipadx=2, ipady=2) self._szervezetvalaszto = Valaszto("szervezet", self._szervezetnevsor(), self) self._szervezetvalaszto.valaszto.bind("<<ComboboxSelected>>", self._reszletek) self._szervezetvalaszto.pack(ipadx=2, ipady=2) self._modszervezetvalaszto = Valaszto("módosítás erre", self._modszervezetnevsor(), self) self._modszervezetvalaszto.pack(ipadx=2, ipady=2) self._megjegyzes = StringVar() Label(self, text="megjegyzés").pack(ipadx=2, ipady=2) Entry(self, textvariable=self._megjegyzes, width=32).pack(ipadx=2, ipady=2) self._megjelenit(1) return self._szemelyvalaszto def validate(self): return True def apply(self): szemely = self._szemelyvalaszto.elem.azonosito szervezet = self._szervezetvalaszto.elem.azonosito modszervezet = self._modszervezetvalaszto.elem.azonosito megjegyzes = self._megjegyzes.get() kontakt_id = self._kon.kontakt.select("kontakt", "azonosito", szemely=szemely, szervezet=szervezet, logic="AND") kontakt_id = kontakt_id.fetchone()["azonosito"] kontakt = Kontakt(azonosito=kontakt_id, szemely=szemely, szervezet=modszervezet, megjegyzes=megjegyzes) if kontakt.ment(self._kon.kontakt): print("Bejegyzés módosítva.") else: print("Nem sikerült módosítani.") def _szemelynevsor(self): return sorted(map(lambda szemely: Szemely(**szemely), self._kon.szemely.select("szemely")), key=repr) def _szervezetnevsor(self): szemelyazonosito = self._szemelyvalaszto.elem.azonosito szemelyhez_rendelt_szervezetek = self._kon.szemely.execute(""" SELECT * FROM szervezet WHERE azonosito IN ( SELECT szervezet FROM kontakt WHERE szemely = ? ); """, (szemelyazonosito, )) return sorted(map(lambda szervezet: Szervezet(**szervezet), szemelyhez_rendelt_szervezetek), key=repr) def _modszervezetnevsor(self): szemelyazonosito = self._szemelyvalaszto.elem.azonosito szemelyhez_nem_rendelt_szervezetek = self._kon.szemely.execute(""" SELECT * FROM szervezet WHERE azonosito NOT IN ( SELECT szervezet FROM kontakt WHERE szemely = ? ); """, (szemelyazonosito, )) return sorted(map(lambda szervezet: Szervezet(**szervezet), szemelyhez_nem_rendelt_szervezetek), key=repr) def _megjelenit(self, event): self._szervezetvalaszto.beallit(self._szervezetnevsor()) self._modszervezetvalaszto.beallit(self._modszervezetnevsor()) self._reszletek(1) def _reszletek(self, event): szemely = self._szemelyvalaszto.elem.azonosito szervezet = self._szervezetvalaszto.elem.azonosito megjegyzes = self._kon.kontakt.select("kontakt", "megjegyzes", szemely=szemely, szervezet=szervezet, logic="AND").fetchone() self._megjegyzes.set(megjegyzes["megjegyzes"])
class MunkareszModositoUrlap(simpledialog.Dialog): def __init__(self, szulo, kon): self._kon = kon # super() előtt kell legyen super().__init__(szulo, title="Munkarész módosítása") def body(self, szulo): self._munkaresz_valaszto = Valaszto("munkarész", self._munkareszek(), self) self._munkaresz_valaszto.set_callback(self._munkaresz_megjelenit) self._munkaresz_valaszto.pack(ipadx=2, ipady=2) munkaresz = LabelFrame(self, text="munkarész") self._munkaresz_urlap = MunkareszUrlap(munkaresz) self._munkaresz_urlap.pack(ipadx=2, ipady=2) munkaresz.pack(fill=X, padx=2, pady=2) cim = LabelFrame(self, text="munkarész címe") self._cim_urlap = CimUrlap(cim) self._cim_urlap.pack(ipadx=2, ipady=2) cim.pack(padx=2, pady=2) jelleg = LabelFrame(self, text="munkarész jellege") self._jelleg_urlap = JellegUrlap(jelleg) self._jelleg_urlap.pack(ipadx=2, ipady=2) jelleg.pack(fill=X, padx=2, pady=2) self._munkaresz_megjelenit(1) return self._munkaresz_valaszto.valaszto def validate(self): munkaresz = self._munkaresz_urlap.export() cim = self._cim_urlap.export() jelleg = self._jelleg_urlap.export() if not munkaresz: messagebox.showwarning("Hiányos adat!", "Legalább a nevet add meg!", parent=self) return False if munkaresz.meglevo(self._kon.projekt) and cim.meglevo( self._kon.projekt) and jelleg.meglevo(self._kon.projekt): messagebox.showwarning("Létező munkarész!", "Pontosítsd!", parent=self) return False return True def apply(self): munkaresz, cim, jelleg = self._modositott_munkaresz() if munkaresz.ment(self._kon.projekt) and cim.ment( self._kon.projekt) and jelleg.ment(self._kon.projekt): print("Bejegyzés mentve.") else: print("Nem sikerült elmenteni!") def _munkareszek(self): return sorted(map(lambda jelleg: Jelleg(kon=self._kon, **jelleg), self._kon.projekt.select("jelleg")), key=repr) def _munkaresz_kivalaszt(self, event): self._munkaresz_valaszto.beallit(self._munkareszek()) self._munkaresz_megjelenit(1) def _munkaresz_megjelenit(self, event): munkaresz, cim, jelleg = self._meglevo_munkaresz() self._munkaresz_urlap.beallit(munkaresz) self._cim_urlap.beallit(cim) self._jelleg_urlap.beallit(jelleg) def _meglevo_munkaresz(self): jelleg = self._munkaresz_valaszto.elem munkaresz = self._kon.projekt.select( "munkaresz", azonosito=jelleg.munkaresz).fetchone() munkaresz = Munkaresz(**munkaresz) cim = self._kon.projekt.select( "cim", munkaresz=munkaresz.azonosito).fetchone() cim = Cim(**cim) return (munkaresz, cim, jelleg) def _modositott_munkaresz(self): munkaresz, cim, jelleg = self._meglevo_munkaresz() munkaresz.adatok = self._munkaresz_urlap.export() cim.adatok = self._cim_urlap.export() jelleg.adatok = self._jelleg_urlap.export() return (munkaresz, cim, jelleg)
class AjanlatkeresUrlap(Frame): def __init__(self, szulo, kon): self._kon = kon super().__init__(szulo) self._erkezett = StringVar() self._hatarido = StringVar() self._megjegyzes = StringVar() self._kontakt_valaszto = Valaszto("ajánlatkérő", self._kontaktszemelyek(), self) self._kontakt_valaszto.pack(ipadx=2, ipady=2) self._jelleg_valaszto = Valaszto("projekt", self._jellegek(), self) self._jelleg_valaszto.pack(ipadx=2, ipady=2) megjegyzes = LabelFrame(self, text="megjegyzés") Entry(megjegyzes, textvariable=self._megjegyzes, width=40).pack(ipadx=2, ipady=2, side=LEFT) megjegyzes.pack(ipadx=2, ipady=2, side=BOTTOM, fill=BOTH) self._temafelelos_valaszto = Valaszto("témafelelős", self._kontaktszemelyek(2), self) self._temafelelos_valaszto.pack(ipadx=2, ipady=2, side=BOTTOM) erkezett = LabelFrame(self, text="érkezett") Entry(erkezett, textvariable=self._erkezett, width=10).pack(ipadx=2, ipady=2) erkezett.pack(ipadx=2, ipady=2, side=LEFT) hatarido = LabelFrame(self, text="leadási határidő") Entry(hatarido, textvariable=self._hatarido, width=10).pack(ipadx=2, ipady=2) hatarido.pack(ipadx=2, ipady=2, side=LEFT) ma = date.isoformat(date.today()) egyhetmulva = date.isoformat(date.today() + timedelta(days=7)) self._erkezett.set(ma) self._hatarido.set(egyhetmulva) @property def fokusz(self): return self._kontakt_valaszto.valaszto def export(self): return Ajanlatkeres(jelleg=self._jelleg_valaszto.elem.azonosito, ajanlatkero=self._kontakt_valaszto.elem.azonosito, temafelelos=self._temafelelos_valaszto.elem.azonosito, erkezett=self._erkezett.get(), hatarido=self._hatarido.get(), megjegyzes=self._megjegyzes.get()) def beallit(self, ajanlatkeres): ajanlatkero = self._kon.kontakt.select("kontakt", azonosito=ajanlatkeres.ajanlatkero).fetchone() ajanlatkero = Kontakt(kon = self._kon, **ajanlatkero) jelleg = self._kon.projekt.select("jelleg", azonosito=ajanlatkeres.jelleg).fetchone() jelleg = Jelleg(kon = self._kon, **jelleg) temafelelos = self._kon.kontakt.select("kontakt", azonosito=ajanlatkeres.temafelelos).fetchone() temafelelos = Kontakt(kon = self._kon, **temafelelos) temafelelosok = self._kontaktszemelyek(2) self._kontakt_valaszto.beallit((ajanlatkero, )) self._jelleg_valaszto.beallit((jelleg, )) self._temafelelos_valaszto.beallit(temafelelosok) self._temafelelos_valaszto.valaszto.current(temafelelosok.index(temafelelos)) try: erkezett = date.isoformat(date.fromisoformat(ajanlatkeres.erkezett)) hatarido = date.isoformat(date.fromisoformat(ajanlatkeres.hatarido)) except ValueError: erkezett = hatarido = "" self._erkezett.set(erkezett) self._hatarido.set(hatarido) self._megjegyzes.set(ajanlatkeres.megjegyzes) def datum_ervenyes(self): """Dátumok formátumának és sorrendjének ellenőrzése""" try: erkezett = date.fromisoformat(self._erkezett.get()) hatarido = date.fromisoformat(self._hatarido.get()) except ValueError: return False if erkezett > hatarido: return False return True def _kontaktszemelyek(self, szervezet_id=None): if szervezet_id: kontaktok = self._kon.kontakt.select("kontakt", szervezet=szervezet_id) else: kontaktok = self._kon.kontakt.select("kontakt") return sorted(map(lambda kontakt: Kontakt(kon=self._kon, **kontakt), kontaktok), key=repr) def _jellegek(self): jellegek = self._kon.projekt.select("jelleg") return sorted(map(lambda jelleg: Jelleg(kon = self._kon, **jelleg), jellegek), key=repr)
class EmailModositoUrlap(simpledialog.Dialog): def __init__(self, szulo, kon=None): self._kon = kon self._emailcim = None super().__init__(szulo, title="Email-cím módosítása") def body(self, szulo): self._nev_valaszto = Valaszto("név", self._nevsor(), self) self._nev_valaszto.valaszto.bind("<<ComboboxSelected>>", self._elerhetosegek) self._nev_valaszto.pack(ipadx=2, ipady=2) self._email_valaszto = Valaszto("módosítandó email-cím", self._emailcimek(), self) self._email_valaszto.valaszto.bind("<<ComboboxSelected>>", self._kiir_elerhetoseg) self._email_valaszto.pack(ipadx=2, ipady=2) self._emailcim_urlap = EmailcimUrlap(self) self._emailcim_urlap.pack(ipadx=2, ipady=2) self._kiir_elerhetoseg(1) return self._nev_valaszto.valaszto def validate(self): if not self._email_valaszto.elem: return False else: self._emailcim = self._uj_emailcim() if not self._emailcim: messagebox.showwarning("Hiányos adat!", "Add meg az email-címet!", parent=self) return False else: return True def apply(self): if self._emailcim.ment(self._kon.szervezet): print("Bejegyzés módosítva.") else: print("Nem sikerült módosítani.") self._elerhetosegek(1) def _nevsor(self): return sorted(map(lambda szervezet: Szervezet(**szervezet), self._kon.szervezet.select("szervezet")), key=repr) def _emailcimek(self): szervezet = self._nev_valaszto.elem return [ Email(**email) for email in self._kon.szervezet.select( "email", szervezet=szervezet.azonosito) ] def _elerhetosegek(self, event): self._email_valaszto.beallit(self._emailcimek()) self._kiir_elerhetoseg(1) def _kiir_elerhetoseg(self, event): self._emailcim_urlap.beallit(self._email_valaszto.elem or Email()) def _uj_emailcim(self): email = self._email_valaszto.elem if email: email.adatok = self._emailcim_urlap.export() return email