Esempio n. 1
0
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)
Esempio n. 2
0
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
Esempio n. 3
0
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
Esempio n. 4
0
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())
Esempio n. 5
0
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())
Esempio n. 6
0
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)))
Esempio n. 7
0
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())
Esempio n. 8
0
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
Esempio n. 9
0
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)
Esempio n. 10
0
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())
Esempio n. 11
0
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"])
Esempio n. 12
0
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)
Esempio n. 13
0
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)
Esempio n. 14
0
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