class AjanlatkeresTorloUrlap(simpledialog.Dialog): """Csak ajánlatkérést lehet törölni, és csak olyat, amire nem született még ajánlat.""" def __init__(self, szulo, kon): self._kon = kon super().__init__(szulo, title="Ajánlatkérés törlése") def body(self, szulo): self._ajanlatkeres_valaszto = Valaszto("ajánlatkérés", self._ajanlatkeresek(), szulo) self._ajanlatkeres_valaszto.pack(ipadx=2, ipady=2) return self._ajanlatkeres_valaszto.valaszto def validate(self): return messagebox.askokcancel("Biztos vagy benne?", "VÉGLEGESEN törlődik!", parent=self) def apply(self): ajanlatkeres = self._ajanlatkeres_valaszto.elem if ajanlatkeres.torol(self._kon.ajanlat): print("Bejegyzés törölve.") else: print("Nem sikerült törölni!") def _ajanlatkeresek(self): # azok az ajánlatkérések kellenek, melyekre még nem született ajánlat ajanlatkeresek = self._kon.ajanlat.execute(""" SELECT * FROM ajanlatkeres WHERE azonosito NOT IN ( SELECT ajanlatkeres.azonosito FROM ajanlatkeres, ajanlat ON ajanlatkeres.azonosito = ajanlat.ajanlatkeres ); """) return sorted(map(lambda ajanlatkeres: Ajanlatkeres(kon = self._kon, **ajanlatkeres), ajanlatkeresek), key=repr)
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 UjCimUrlap(simpledialog.Dialog): def __init__(self, szulo, kon=None): self._kon = kon self._cim = None super().__init__(szulo, title="Új cím hozzáadása") def body(self, szulo): self._nev_valaszto = Valaszto("név", self._nevsor(), self) self._nev_valaszto.pack(ipadx=2, ipady=2) self._cim_urlap = CimUrlap(self) self._cim_urlap.pack(ipadx=2, ipady=2) return self._nev_valaszto.valaszto def validate(self): self._cim = self._cim_urlap.export() if not self._cim: messagebox.showwarning("Hiányos adat!", "Legalább a helységet add meg!", parent=self) return False return True def apply(self): self._cim.szemely = self._nev_valaszto.elem.azonosito if self._cim.ment(self._kon.szemely): print("Bejegyzés mentve.") else: print("Nem sikerült elmenteni.") def _nevsor(self): return sorted(map(lambda szemely: Szemely(**szemely), self._kon.szemely.select("szemely")), key=repr)
class AjanlatTorloUrlap(simpledialog.Dialog): """Csak ajánlatkérést lehet törölni, és csak olyat, amire nem született még ajánlat.""" def __init__(self, szulo, kon): self._kon = kon super().__init__(szulo, title="Ajánlat törlése") def body(self, szulo): self._ajanlat_valaszto = Valaszto("ajánlat", self._ajanlatok(), szulo) self._ajanlat_valaszto.pack(ipadx=2, ipady=2) return self._ajanlat_valaszto.valaszto def validate(self): return messagebox.askokcancel("Biztos vagy benne?", "VÉGLEGESEN törlődik!", parent=self) def apply(self): ajanlat = self._ajanlat_valaszto.elem if ajanlat.torol(self._kon.ajanlat): print("Bejegyzés törölve.") else: print("Nem sikerült törölni!") def _ajanlatok(self): ajanlatok = self._kon.ajanlat.select("ajanlat") return sorted(map(lambda ajanlat: Ajanlat(kon=self._kon, **ajanlat), ajanlatok), key=repr)
def body(self, szulo): self._nev_valaszto = Valaszto("név", self._nevsor(), self) self._nev_valaszto.pack(ipadx=2, ipady=2) self._cim_urlap = CimUrlap(self) self._cim_urlap.pack(ipadx=2, ipady=2) return self._nev_valaszto.valaszto
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 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.pack(ipadx=2, ipady=2) return self._szemelyvalaszto
def body(self, szulo): ajanlatkeres = Frame(self) self._ajanlatkeres_valaszto = Valaszto("ajánlatkérés", self._ajanlatkeresek(), ajanlatkeres) self._ajanlatkeres_valaszto.set_callback(self._megjelenit) self._ajanlatkeres_valaszto.pack(ipadx=2, ipady=2) self._ajanlatkeres_urlap = AjanlatkeresUrlap(ajanlatkeres, self._kon) self._ajanlatkeres_urlap.pack(padx=2, pady=2, ipadx=2, ipady=2, fill=BOTH, side=BOTTOM) ajanlatkeres.pack(ipadx=2, ipady=2, fill=BOTH, side=TOP) self._megjelenit(1) return self._ajanlatkeres_valaszto.valaszto
def body(self, szulo): self._nev_valaszto = Valaszto("név", self._nevsor(), self) self._nev_valaszto.valaszto.bind("<<ComboboxSelected>>", self._megjelenit) self._nev_valaszto.pack(ipadx=2, ipady=2) self._szemelyurlap = SzemelyUrlap(self) self._szemelyurlap.pack(ipadx=2, ipady=2) self._megjelenit(1) return self._nev_valaszto.valaszto
class AjanlatModositoUrlap(simpledialog.Dialog): def __init__(self, szulo, kon): self._kon = kon super().__init__(szulo, title="Ajánlat módosítása") def body(self, szulo): self._ajanlat_valaszto = Valaszto("ajánlat", self._ajanlatok(), self) self._ajanlat_valaszto.set_callback(self._reszletek) self._ajanlat_valaszto.pack(ipadx=2, ipady=2) self._ajanlat_urlap = AjanlatUrlap(self) self._ajanlat_urlap.pack(padx=2, pady=2, ipadx=2, ipady=2, fill=BOTH) self._reszletek(1) return self._ajanlat_valaszto.valaszto def validate(self): if not bool(self._ajanlat_urlap.export()): messagebox.showwarning("Hiányos adat!", "Add meg az ajánlati árat!", parent=self) return False if not self._ajanlat_urlap.datum_ervenyes(): messagebox.showwarning("Dátumhiba!", "Formátum vagy sorrend hibás!", parent=self) return False return True def apply(self): meglevo_ajanlat = self._ajanlat_valaszto.elem modositott_ajanlat = self._ajanlat_urlap.export() meglevo_ajanlat.adatok = modositott_ajanlat if meglevo_ajanlat.ment(self._kon.ajanlat): print("Bejegyzés módosítva.") else: print("Nem sikerült módosítani!") def _ajanlatok(self): ajanlatok = self._kon.ajanlat.select("ajanlat") return sorted(map(lambda ajanlat: Ajanlat(kon=self._kon, **ajanlat), ajanlatok), key=repr) def _reszletek(self, event): """Megjeleníti a kiválasztott ajánlat módosítható részleteit. event: tkinter esemény-paraméter (itt nincs rá szükség)""" meglevo_ajanlat = self._ajanlat_valaszto.elem if not meglevo_ajanlat.leadva: meglevo_ajanlat.leadva = date.isoformat(date.today()) if not meglevo_ajanlat.ervenyes: meglevo_ajanlat.ervenyes = date.isoformat(date.today() + timedelta(days=30)) self._ajanlat_urlap.beallit(meglevo_ajanlat)
def body(self, szulo): self._ajanlatkeres_valaszto = Valaszto("ajánlatkérés", self._ajanlatkeresek(), self) self._ajanlatkeres_valaszto.set_callback(self._alapertelmezes) self._ajanlatkeres_valaszto.pack(ipadx=2, ipady=2, fill=BOTH) self._ajanlat_urlap = AjanlatUrlap(self) self._ajanlat_urlap.pack(padx=2, pady=2, ipadx=2, ipady=2, fill=BOTH) self._alapertelmezes(1) return self._ajanlatkeres_valaszto.valaszto
def body(self, szulo): self._ajanlat_valaszto = Valaszto("ajánlat", self._ajanlatok(), self) self._ajanlat_valaszto.set_callback(self._reszletek) self._ajanlat_valaszto.pack(ipadx=2, ipady=2) self._ajanlat_urlap = AjanlatUrlap(self) self._ajanlat_urlap.pack(padx=2, pady=2, ipadx=2, ipady=2, fill=BOTH) self._reszletek(1) return self._ajanlat_valaszto.valaszto
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.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._szemelyvalaszto
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 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
class SzervezetModositoUrlap(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._nev_valaszto = Valaszto("név", self._nevsor(), self) self._nev_valaszto.valaszto.bind("<<ComboboxSelected>>", self._megjelenit) self._nev_valaszto.pack(ipadx=2, ipady=2) self._szervezeturlap = SzervezetUrlap(self) self._szervezeturlap.pack(ipadx=2, ipady=2) self._megjelenit(1) return self._nev_valaszto.valaszto def validate(self): if self._nev_valaszto.elem.azonosito == MAGANSZEMELY.azonosito: return False # nem engedem módosítani a speciális esetet szervezet = self._szervezeturlap.export() if not szervezet: messagebox.showwarning("Hiányos adat!", "Legalább a rövid nevet add meg!", parent=self) return False if szervezet.meglevo(self._kon.szervezet): messagebox.showwarning( "Hiba!", "Ez a szervezet már szerepel az adatbázisban.", parent=self) return False return True def apply(self): szervezet = self._nev_valaszto.elem szervezet.adatok = self._szervezeturlap.export() if szervezet.ment(self._kon.szervezet): print("{}: Bejegyzés módosítva.".format(szervezet)) else: print("Nem sikerült módosítani.") def _nevsor(self): return sorted(map(lambda szervezet: Szervezet(**szervezet), self._kon.szervezet.select("szervezet")), key=repr) def _megjelenit(self, event): self._szervezeturlap.beallit(self._nev_valaszto.elem or Szervezet())
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 AjanlatkeresModositoUrlap(simpledialog.Dialog): """Csak olyan ajánlatkérést lehet módosítani, amire nem született még ajánlat.""" def __init__(self, szulo, kon): self._kon = kon super().__init__(szulo, title="Ajánlatkérés módosítása") def body(self, szulo): ajanlatkeres = Frame(self) self._ajanlatkeres_valaszto = Valaszto("ajánlatkérés", self._ajanlatkeresek(), ajanlatkeres) self._ajanlatkeres_valaszto.set_callback(self._megjelenit) self._ajanlatkeres_valaszto.pack(ipadx=2, ipady=2) self._ajanlatkeres_urlap = AjanlatkeresUrlap(ajanlatkeres, self._kon) self._ajanlatkeres_urlap.pack(padx=2, pady=2, ipadx=2, ipady=2, fill=BOTH, side=BOTTOM) ajanlatkeres.pack(ipadx=2, ipady=2, fill=BOTH, side=TOP) self._megjelenit(1) return self._ajanlatkeres_valaszto.valaszto def validate(self): if not self._ajanlatkeres_urlap.datum_ervenyes(): messagebox.showwarning("Dátumhiba!", "Formátum vagy sorrend hibás!", parent=self) return False return True def apply(self): ajanlatkeres = self._ajanlatkeres_valaszto.elem modositas = self._ajanlatkeres_urlap.export() ajanlatkeres.adatok = modositas if ajanlatkeres.ment(self._kon.ajanlat): print("Bejegyzés módosítva.") else: print("Nem sikerült módosítani!") def _megjelenit(self, event): self._ajanlatkeres_urlap.beallit(self._ajanlatkeres_valaszto.elem) def _ajanlatkeresek(self): # azok az ajánlatkérések kellenek, melyekre még nem született ajánlat ajanlatkeresek = self._kon.ajanlat.execute(""" SELECT * FROM ajanlatkeres WHERE azonosito NOT IN ( SELECT ajanlatkeres.azonosito FROM ajanlatkeres, ajanlat ON ajanlatkeres.azonosito = ajanlat.ajanlatkeres ); """) return sorted(map(lambda ajanlatkeres: Ajanlatkeres(kon = self._kon, **ajanlatkeres), ajanlatkeresek), key=repr)
class MunkareszTorloUrlap(simpledialog.Dialog): def __init__(self, szulo, kon): self._kon = kon # super() előtt kell legyen super().__init__(szulo, title="Munkarész törlése") def body(self, szulo): self._munkaresz_valaszto = Valaszto("munkarész", self._munkareszek(), self) self._munkaresz_valaszto.pack(ipadx=2, ipady=2) return self._munkaresz_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 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) if not cim.torol(self._kon.projekt): hiba = True if not jelleg.torol(self._kon.projekt): hiba = True if not self._kon.projekt.select("jelleg", munkaresz=jelleg.munkaresz).fetchone(): if not munkaresz.torol(self._kon.projekt): hiba = True if hiba: print("Nem sikerült törölni.") else: print("Bejegyzés törölve.") def _munkareszek(self): return sorted(map(lambda jelleg: Jelleg(kon=self._kon, **jelleg), self._kon.projekt.select("jelleg")), key=repr)
class SzemelyModositoUrlap(simpledialog.Dialog): def __init__(self, szulo, kon=None): self._kon = kon super().__init__(szulo, title="Személy módosítása") def body(self, szulo): self._nev_valaszto = Valaszto("név", self._nevsor(), self) self._nev_valaszto.valaszto.bind("<<ComboboxSelected>>", self._megjelenit) self._nev_valaszto.pack(ipadx=2, ipady=2) self._szemelyurlap = SzemelyUrlap(self) self._szemelyurlap.pack(ipadx=2, ipady=2) self._megjelenit(1) return self._nev_valaszto.valaszto def validate(self): if self._nev_valaszto.elem.azonosito in (VITYA.azonosito, ROLI.azonosito): return False # nem engedem módosítani a speciális eseteket szemely = self._szemelyurlap.export() if not szemely: messagebox.showwarning("Hiányos adat!", "Legalább az egyik nevet add meg!", parent=self) return False if szemely.meglevo(self._kon.szemely): messagebox.showwarning("A név már létezik!", "Különböztesd meg a megjegyzésben!", parent=self) return False return True def apply(self): szemely = self._nev_valaszto.elem szemely.adatok = self._szemelyurlap.export() if szemely.ment(self._kon.szemely): print("{}: Bejegyzés módosítva.".format(szemely)) else: print("Nem sikerült módosítani.") def _nevsor(self): return sorted(map(lambda szemely: Szemely(**szemely), self._kon.szemely.select("szemely")), key=repr) def _megjelenit(self, event): self._szemelyurlap.beallit(self._nev_valaszto.elem or Szemely())
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)
def body(self, szulo): self._projekt_valaszto = Valaszto("projekt", self._projektek(), self) self._projekt_valaszto.set_callback(self._cim_megjelenit) self._projekt_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) self._cim_megjelenit(1) 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) return self._projekt_valaszto.valaszto
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 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 UjEmailUrlap(simpledialog.Dialog): def __init__(self, szulo, kon=None): self._kon = kon self._emailcim = None super().__init__(szulo, title="Új email-cím hozzáadása") def body(self, szulo): self._nev_valaszto = Valaszto("név", self._nevsor(), self) self._nev_valaszto.pack(ipadx=2, ipady=2) self._emailcim_urlap = EmailcimUrlap(self) self._emailcim_urlap.pack(ipadx=2, ipady=2) return self._nev_valaszto.valaszto def validate(self): if self._nev_valaszto.elem.azonosito == MAGANSZEMELY.azonosito: return False # nem engedem módosítani a speciális esetet self._emailcim = self._emailcim_urlap.export() if not self._emailcim: messagebox.showwarning("Hiányos adat!", "Add meg az email-címet!", parent=self) return False return True def apply(self): self._emailcim.szervezet = self._nev_valaszto.elem.azonosito if self._emailcim.ment(self._kon.szervezet): print("Bejegyzés mentve.") else: print("Nem sikerült elmenteni.") def _nevsor(self): return sorted(map(lambda szervezet: Szervezet(**szervezet), self._kon.szervezet.select("szervezet")), key=repr)
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 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