예제 #1
0
def DodajKvad(kvad):
    '''
    Metoda koja prima objekat klase kvad, dodaje ga u kolekciju i perzistira je.
    
    :param kvad: objekat klase Kvad
    '''
    Projekat().kvadovi.append(kvad)
    Pickle('kvadovi.bin', Projekat().kvadovi)
예제 #2
0
def DodajAutomobil(automobil):
    '''
    Metoda koja prima objekat klase automobil, smesta ga u kolekciju i perzistira.
    
    :param automobil: objekat klase automobil
    '''
    Projekat().automobili.append(automobil)
    Pickle('automobili.bin', Projekat().automobili)
예제 #3
0
def DodajDzip(dzip):
    '''
    Metoda koja prima objekat klase dzip, smesta ga u kolekciju i perzistira.
    
    :param dzip: objekat klase Dzip
    '''
    Projekat().dzipovi.append(dzip)
    Pickle('dzipovi.bin', Projekat().dzipovi)
예제 #4
0
def ObrisiDzip(oznaka):
    '''
    Metoda koja prima string vrednost oznake i na osnovu nje vraca pronalazi objekat dzipa u kolekciji i
    uklanja ga.
    
    :param oznaka: string vrednost oznake
    '''
    dzip_za_brisanje = None
    for i in Projekat().dzipovi:
        if i.oznaka == oznaka:
            dzip_za_brisanje = i
    Projekat().dzipovi.remove(dzip_za_brisanje)
    Pickle('dzipovi.bin', Projekat().dzipovi)
예제 #5
0
def ObrisiAutomobil(oznaka):
    '''
    Metoda koja prima string vrednost atributa oznake i na osnovu nje u kolekciji
    pronalazi konkretan objekat klase automobil uklanja ga i ponovo perzistira kolekciju.
    
    :param oznaka: string vrednost atributa oznake
    '''
    automobil_za_brisanje = None
    for i in Projekat().automobili:
        if i.oznaka == oznaka:
            automobil_za_brisanje = i
    Projekat().automobili.remove(automobil_za_brisanje)
    Pickle('automobili.bin', Projekat().automobili)
예제 #6
0
def ObrisiKvad(oznaka):
    '''
    Metoda koja prima string vrednost oznake i na osnovu nje pronalazi konkretan objekat kvada i uklanja ga 
    iz kolekcije.
    
    :param oznaka: string vrednost oznake
    '''
    kvad_za_brisanje = None
    for i in Projekat().kvadovi:
        if i.oznaka == oznaka:
            kvad_za_brisanje = i
    Projekat().kvadovi.remove(kvad_za_brisanje)
    Pickle('kvadovi.bin', Projekat().kvadovi) 
예제 #7
0
def sortirajKvadove(kriterijum):
    '''
    Metoda koja prima string vrednost kriterijuma za sortiranje i na osnovu njega vraca sortirane kolekcije
    objkata kvadova prema vrednostima atributa koji su vezani za kriterijum.
    
    :param kriterijum: string vrednost kriterijuma sortiranja
    '''
    if kriterijum == 'maksimalna_brzina':
        sortiranaKolekcija = sorted(Projekat().kvadovi, key=lambda x: x.maksimalna_brzina)
        return sortiranaKolekcija
    elif kriterijum == 'godina_proizvodnje':
        sortiranaKolekcija = sorted(Projekat().kvadovi, key=lambda x: x.godina_proizvodnje)
        return sortiranaKolekcija
    else:
        raise ValueError('Ne postoji takav kriterijum')
예제 #8
0
def sortirajDzipove(kriterijum):
    '''
    Metoda koja prima string vrednost kriterijuma za sortiranje i na osnovu nje vraca sortiranu kolekciju
    objkeata dzipova prema vrednostima atributa za koji su vezani kriterijumi.
    
    :param kriterijum: string vrednost kriterijuma za sortiranje
    '''
    if kriterijum == 'maksimalna_brzina':
        sortiranaKolekcija = sorted(Projekat().dzipovi,
                                    key=lambda x: x.maksimalna_brzina)
        return sortiranaKolekcija
    elif kriterijum == 'konjskih_snaga':
        sortiranaKolekcija = sorted(Projekat().dzipovi,
                                    key=lambda x: x.konjskih_snaga)
        return sortiranaKolekcija
    else:
        raise ValueError('Ne postoji takav kriterijum')
예제 #9
0
def sortirajAutomobile(kriterijum):
    '''
    Metoda koja na osnovu proslednjenog kriterijuma sortira kompletnu kolekciju automobila po 
    rastucem poretku u odnosu na vrednost atributa koji je u vezi za kriterijumom.
    
    :param kriterijum: string vrednost kriterijuma po kojem ce se vrsiti pretraga
    '''
    if kriterijum == 'maksimalna_brzina':
        sortiranaKolekcija = sorted(Projekat().automobili,
                                    key=lambda x: x.maksimalna_brzina)
        return sortiranaKolekcija
    elif kriterijum == 'broj_sedista':
        sortiranaKolekcija = sorted(Projekat().automobili,
                                    key=lambda x: x.broj_sedista)
        return sortiranaKolekcija
    else:
        raise ValueError('Nepostojeci ili nedefinisani kriterijum')
예제 #10
0
def dzipIzOznake(oznaka):
    '''
    Metoda koja prima string vrednost oznake i na osnovu nje vraca konkretan objekat klase Dzip.
    
    :param oznaka: string vrednost oznake
    '''
    for i in Projekat().dzipovi:
        if i.oznaka == oznaka:
            return i
예제 #11
0
def IzmeniKvad(kvad):
    '''
    Metoda koja prima objekat klase kvad i na osnovu njenih vrednosti menja postojeci objekat u kolekciji
    i ponovo perzistira kolekciju.
    
    :param kvad: objekat klase Kvad
    '''
    for i in Projekat().kvadovi:
        if i.oznaka == kvad.oznaka:
            i.opis = kvad.opis
            i.duzina = kvad.duzina
            i.sirina = kvad.sirina
            i.visina = kvad.visina
            i.maksimalna_brzina = kvad.maksimalna_brzina
            i.godina_proizvodnje = kvad.godina_proizvodnje
            i.izlozbeni_prostor = kvad.izlozbeni_prostor
            i.pogon_na_sva_cetiri_tocka = kvad.pogon_na_sva_cetiri_tocka
            i.prostor_za_stvari = kvad.prostor_za_stvari
    Pickle('kvadovi.bin', Projekat().kvadovi)
예제 #12
0
def generisiOznaku():
    '''
    Metoda koja generise vrednost za atribut oznake objekata klase Kvad.
    
    '''
    brojac = 1
    for i in Projekat().kvadovi:
        brojac += 1
    oznaka = 'kv' + str(brojac)
    return oznaka
예제 #13
0
def generisiOznaku():
    '''
    Metoda koja generise vrednost za atribut oznake objekta.
    
    '''
    brojac = 1
    for i in Projekat().dzipovi:
        brojac += 1
    oznaka = 'dz' + str(brojac)
    return oznaka
예제 #14
0
def generisiOznaku():
    '''
    Metoda koja generise string koji ce se koristit kao atribut oznake objekta klase automobil.
    
    '''
    brojac = 1
    for i in Projekat().automobili:
        brojac += 1
    oznaka = 'a' + str(brojac)
    return oznaka
예제 #15
0
 def OsveziKvadove(self):
     '''
     Metoda koja osvezava graficku komponentu za prikaz entiteta kvadova tako sto je prvo ocisti i ponovo ucita iz kolekcije.
     '''
     #prvo ocisti
     for i in self.treeKvadovi.get_children():
         self.treeKvadovi.delete(i)
     #ponovo ucitaj iz kolekcije
     for index, i in enumerate(Projekat().kvadovi):
         self.treeKvadovi.insert("", 'end' ,text = index + 1, values = (i.oznaka, i.opis, i.izlozbeni_prostor.oznaka))
예제 #16
0
def automobilIzOznake(oznaka):
    '''
    Metoda koja prima string vrednost atributa oznake i na osnovu nje u kolekciji
    pronalazi konkretan objekat klase automobil i vraca ga.
    
    :param oznaka: string vrednost atributa oznake
    '''
    for i in Projekat().automobili:
        if i.oznaka == oznaka:
            return i
예제 #17
0
def IzmeniAutomobil(automobil):
    '''
    Metoda koja prima objekat klase automobil i koristi njegove vrednosti da izmeni vec postojeci objekat
    u kolekciji.
    
    :param automobil: objekat klase automobil
    '''
    for i in Projekat().automobili:
        if i.oznaka == automobil.oznaka:
            i.opis = automobil.opis
            i.duzina = automobil.duzina
            i.sirina = automobil.sirina
            i.visina = automobil.visina
            i.maksimalna_brzina = automobil.maksimalna_brzina
            i.godina_proizvodnje = automobil.godina_proizvodnje
            i.izlozbeni_prostor = automobil.izlozbeni_prostor
            i.broj_vrata = automobil.broj_vrata
            i.broj_sedista = automobil.broj_sedista
            i.tip_menjaca = automobil.tip_menjaca
    Pickle('automobili.bin', Projekat().automobili)
예제 #18
0
def IzmeniDzip(dzip):
    '''
    Metoda koja prima objekat klase dzip i koristi njegove vrednosti da izmeni postojeci objekat u kolekciji.
    
    :param dzip: objekat klase Dzip
    '''
    for i in Projekat().dzipovi:
        if i.oznaka == dzip.oznaka:
            i.opis = dzip.opis
            i.duzina = dzip.duzina
            i.sirina = dzip.sirina
            i.visina = dzip.visina
            i.maksimalna_brzina = dzip.maksimalna_brzina
            i.godina_proizvodnje = dzip.godina_proizvodnje
            i.izlozbeni_prostor = dzip.izlozbeni_prostor
            i.broj_vrata = dzip.broj_vrata
            i.pogon_na_sva_cetiri_tocka = dzip.pogon_na_sva_cetiri_tocka
            i.konjskih_snaga = dzip.konjskih_snaga
            i.spustajuca_zadnja_klupa = dzip.spustajuca_zadnja_klupa
    Pickle('dzipovi.bin', Projekat().dzipovi)
예제 #19
0
def nadjiKvadove(kriterijum, pogon, prostor):
    '''
    Metoda koja prima string vrednost kriterijuma pretrege, vrednost postojanja pogona na sva 4 tocka i prostra za stvari
    i na osnovu njih vraca kolekciju konkretnih objekata klase Kvad koji predstavljaju rezultat pretrage.
    
    :param kriterijum: stirng vrednost kriterijuma pretrage
    :param pogon: bool vrednost postojanja pogona na sva 4 tocka
    :param prostor: bool vrednost postojanja prostora za stvari
    '''
    trazeniKvadovi = []
    q = str(kriterijum.lower())
    
    for i in Projekat().kvadovi:
        if((q in i.oznaka.lower() or q in str(i.opis.lower()) or q in str(i.duzina) or q in str(i.sirina) 
           or q in str(i.visina) or q in str(i.maksimalna_brzina) or q in str(i.godina_proizvodnje))
            and (pogon == i.pogon_na_sva_cetiri_tocka and prostor == i.prostor_za_stvari)):
            trazeniKvadovi.append(i)
    return trazeniKvadovi
예제 #20
0
def nadjiAutomobile(kriterijum):
    '''
    Metoda koja na osnovu proslednjenog kriterijuma pronalazi objekte iz kolekcije automobila i vraca ih
    da budu korisceni kao rezultat pretrage.
    
    :param kriterijum: string vrednost kriterijuma po kojem ce se vrsiti pretraga
    '''
    if (kriterijum is None):
        raise ValueError("Kriterijum ne sme biti nedefinisan")
    trazeniAutomobili = []
    q = str(kriterijum).lower()
    if (kriterijum != ''):
        for i in Projekat().automobili:
            if (q in i.oznaka.lower() or q in str(i.opis.lower())
                    or q in str(i.duzina) or q in str(i.sirina)
                    or q in str(i.visina) or q in str(i.maksimalna_brzina)
                    or q in str(i.godina_proizvodnje) or q in str(i.broj_vrata)
                    or q in str(i.broj_sedista)
                    or q in str(i.tip_menjaca.name)):
                trazeniAutomobili.append(i)
        return trazeniAutomobili
예제 #21
0
def nadjiDzipove(kriterijum, pogon, zadnja_klupa):
    '''
    Metoda koja prima string vrednost oznake, pogona na sva 4 tocka i spustajuce zadnje klupe i na osnovu njih
    vraca kolekciju konkretnih objekata koje se koriste kao rezultat pretrage.
    
    :param kriterijum: string vrednost kriterijuma pretrage
    :param pogon: bool vrednost postojanja pogona na sva 4 tocka
    :param zadnja_klupa: bool vrednost postojanja spustajuce zadnje klupe
    '''
    if (kriterijum is None or pogon is None or zadnja_klupa is None):
        raise ValueError('Parametrni ne smeju biti nedefinisani')
    trazeniDzipovi = []
    q = str(kriterijum).lower()
    #pogon i zadnja klpua?
    for i in Projekat().dzipovi:
        if ((q in i.oznaka.lower() or q in str(i.opis.lower())
             or q in str(i.duzina) or q in str(i.sirina) or q in str(i.visina)
             or q in str(i.maksimalna_brzina) or q in str(i.godina_proizvodnje)
             or q in str(i.konjskih_snaga))
                and (pogon == i.pogon_na_sva_cetiri_tocka
                     and zadnja_klupa == i.spustajuca_zadnja_klupa)):
            trazeniDzipovi.append(i)
    return trazeniDzipovi
예제 #22
0
    def __init__(self, kvad, operacija, glavni):
        '''
        Constructor
        
        :param kvad: objekat kvada koji se obradjuje (create - prazan, postojeci - update)
        :param operacija: enumeracija koja odredjuje da li se forma koristi za insert ili update
        :param glavni: referenca na root view koji ga poziva
        '''

        tk.Tk.__init__(self)

        tk.Tk.wm_title(self, "Kvad UD")
        tk.Tk.geometry(self, '220x300')
        self.resizable(False, False)
        Centriraj(self)

        self.kvad = kvad
        self.operacija = operacija

        #self.izabraniMenjac = self.automobil.tip_menjaca
        self.izabraniProstor = self.kvad.izlozbeni_prostor

        #referenca na glavni da se moze iskoristiti Osvezi
        self.glavni = glavni

        rows = 0
        while rows < 15:
            self.rowconfigure(rows, weight=1)
            self.columnconfigure(rows, weight=1)
            rows += 1

        Input = Frame(self)

        #oznaka ce se kreirati sama i inkrementirati na odredjen nacin
        self.opisLabel = Label(Input, text="Opis: ")
        self.duzinaLabel = Label(Input, text="Duzina: ")
        self.sirinaLabel = Label(Input, text="Sirina: ")
        self.visinaLabel = Label(Input, text="Visina: ")
        self.brzinaLabel = Label(Input, text="Max. brzina: ")
        self.godinaLabel = Label(Input, text="God. proizv: ")
        self.prostorLabel = Label(Input, text="Izloz. prostor: ")
        self.pogonLabel = Label(Input, text="Pogon 4x4: ")
        self.stvariLabel = Label(Input, text="Prostor za stvari: ")

        self.opisEntry = Entry(Input)
        self.duzinaEntry = Entry(Input)
        self.sirinaEntry = Entry(Input)
        self.visinaEntry = Entry(Input)
        self.brzinaEntry = Entry(Input)
        self.godinaEntry = Entry(Input)

        ponudjenoProstora = []
        for i in Projekat().prostori:
            ponudjenoProstora.append(i.oznaka)
        izborProstora = StringVar()
        if (self.kvad.izlozbeni_prostor != None):
            izborProstora.set([
                s for s in ponudjenoProstora
                if self.kvad.izlozbeni_prostor.oznaka in s
            ][0])
            self.prostorIzbor(izborProstora.get())
        else:
            izborProstora.set(ponudjenoProstora[0])
            self.prostorIzbor(izborProstora.get())

        self.prostorMenu = OptionMenu(
            Input,
            izborProstora,
            *ponudjenoProstora,
            command=lambda x: self.prostorIzbor(izborProstora.get()))

        self.izborPogona = IntVar()
        self.izborPogona.set(1 if self.kvad.pogon_na_sva_cetiri_tocka ==
                             True else 0)
        self.pogonBox = Checkbutton(Input,
                                    variable=self.izborPogona,
                                    onvalue=1,
                                    offvalue=0)

        self.izborStvari = IntVar()
        self.izborStvari.set(1 if self.kvad.prostor_za_stvari == True else 0)
        self.stvariBox = Checkbutton(Input,
                                     variable=self.izborStvari,
                                     onvalue=1,
                                     offvalue=0)

        #napuni ostale vrednostima, ako se prosledi prazan student bice prazno
        self.opisEntry.insert(0, kvad.opis)
        self.duzinaEntry.insert(0, kvad.duzina)
        self.sirinaEntry.insert(0, kvad.sirina)
        self.visinaEntry.insert(0, kvad.visina)
        self.brzinaEntry.insert(0, kvad.maksimalna_brzina)
        self.godinaEntry.insert(0, kvad.godina_proizvodnje)

        self.potvrdiBTN = Button(Input, text="Potvrdi", command=self.KvadCU)

        #Pozicije
        self.opisLabel.grid(row=1, sticky=E)  #
        self.duzinaLabel.grid(row=2, sticky=E)
        self.sirinaLabel.grid(row=3, sticky=E)
        self.visinaLabel.grid(row=4, sticky=E)
        self.brzinaLabel.grid(row=5, sticky=E)
        self.godinaLabel.grid(row=6, sticky=E)
        self.prostorLabel.grid(row=7, sticky=E)
        self.pogonLabel.grid(row=8, sticky=E)
        self.stvariLabel.grid(row=9, sticky=E)

        self.opisEntry.grid(row=1, column=1)
        self.duzinaEntry.grid(row=2, column=1)
        self.sirinaEntry.grid(row=3, column=1)
        self.visinaEntry.grid(row=4, column=1)
        self.brzinaEntry.grid(row=5, column=1)
        self.godinaEntry.grid(row=6, column=1)
        self.prostorMenu.grid(row=7, column=1)
        self.pogonBox.grid(row=8, column=1)
        self.stvariBox.grid(row=9, column=1)

        self.potvrdiBTN.grid(columnspan=2)

        Input.grid(row=2, column=0, columnspan=15, rowspan=15, sticky='NESW')
예제 #23
0
    def __init__(self, dzip, operacija, glavni):
        '''
        Constructor
        
        :param dzip: objekat dzipa koji se obradjuje (create - prazan, postojeci - update)
        :param operacija: enumeracija koja odredjuje da li se forma koristi za insert ili update
        :param glavni: referenca na root view koji ga poziva
        '''
        tk.Tk.__init__(self)

        tk.Tk.wm_title(self, "Dzip UD")
        tk.Tk.geometry(self, '220x300')
        self.resizable(False, False)
        Centriraj(self)

        self.dzip = dzip
        self.operacija = operacija

        #self.izabraniMenjac = self.automobil.tip_menjaca
        self.izabraniProstor = self.dzip.izlozbeni_prostor

        #referenca na glavni da se moze iskoristiti Osvezi
        self.glavni = glavni

        rows = 0
        while rows < 15:
            self.rowconfigure(rows, weight=1)
            self.columnconfigure(rows, weight=1)
            rows += 1

        Input = Frame(self)

        #oznaka ce se kreirati sama i inkrementirati na odredjen nacin
        self.opisLabel = Label(Input, text="Opis: ")
        self.duzinaLabel = Label(Input, text="Duzina: ")
        self.sirinaLabel = Label(Input, text="Sirina: ")
        self.visinaLabel = Label(Input, text="Visina: ")
        self.brzinaLabel = Label(Input, text="Max. brzina: ")
        self.godinaLabel = Label(Input, text="God. proizv: ")
        self.prostorLabel = Label(Input, text="Izloz. prostor: ")
        self.vrataLabel = Label(Input, text="Broj vrata: ")
        self.pogonLabel = Label(Input, text="Pogon 4x4: ")
        self.konjskihLabel = Label(Input, text="Konjskih snaga: ")
        self.spustajucaKlupaLabel = Label(Input, text="Spustajuca klupa: ")

        self.opisEntry = Entry(Input)
        self.duzinaEntry = Entry(Input)
        self.sirinaEntry = Entry(Input)
        self.visinaEntry = Entry(Input)
        self.brzinaEntry = Entry(Input)
        self.godinaEntry = Entry(Input)

        ponudjenoProstora = []
        for i in Projekat().prostori:
            ponudjenoProstora.append(i.oznaka)
        izborProstora = StringVar()
        if (self.dzip.izlozbeni_prostor != None):
            izborProstora.set([
                s for s in ponudjenoProstora
                if self.dzip.izlozbeni_prostor.oznaka in s
            ][0])
            self.prostorIzbor(izborProstora.get())
        else:
            izborProstora.set(ponudjenoProstora[0])
            self.prostorIzbor(izborProstora.get())

        self.prostorMenu = OptionMenu(
            Input,
            izborProstora,
            *ponudjenoProstora,
            command=lambda x: self.prostorIzbor(izborProstora.get()))

        self.vrataEntry = Entry(Input)

        self.izborPogonaDzip = IntVar()
        #da checkbox oslikava vrednost propertija pri izmeni:
        vrednost = 1 if self.dzip.pogon_na_sva_cetiri_tocka == True else 0
        self.izborPogonaDzip.set(vrednost)
        self.pogonBox = Checkbutton(Input,
                                    variable=self.izborPogonaDzip,
                                    onvalue=1,
                                    offvalue=0)

        #self.izborPogona.trace('w', self.test)

        self.konjskihEntry = Entry(Input)

        self.izborKlupe = IntVar()
        vrednost1 = 1 if self.dzip.spustajuca_zadnja_klupa == True else 0
        self.izborKlupe.set(vrednost1)
        self.klupaBox = Checkbutton(Input,
                                    variable=self.izborKlupe,
                                    onvalue=1,
                                    offvalue=0)

        #napuni ostale vrednostima, ako se prosledi prazan student bice prazno
        self.opisEntry.insert(0, dzip.opis)
        self.duzinaEntry.insert(0, dzip.duzina)
        self.sirinaEntry.insert(0, dzip.sirina)
        self.visinaEntry.insert(0, dzip.visina)
        self.brzinaEntry.insert(0, dzip.maksimalna_brzina)
        self.godinaEntry.insert(0, dzip.godina_proizvodnje)
        self.vrataEntry.insert(0, dzip.broj_vrata)
        self.konjskihEntry.insert(0, dzip.konjskih_snaga)

        self.potvrdiBTN = Button(Input, text="Potvrdi", command=self.DzipCU)

        #Pozicije
        self.opisLabel.grid(row=1, sticky=E)  #
        self.duzinaLabel.grid(row=2, sticky=E)
        self.sirinaLabel.grid(row=3, sticky=E)
        self.visinaLabel.grid(row=4, sticky=E)
        self.brzinaLabel.grid(row=5, sticky=E)
        self.godinaLabel.grid(row=6, sticky=E)
        self.prostorLabel.grid(row=7, sticky=E)
        self.vrataLabel.grid(row=8, sticky=E)
        self.pogonLabel.grid(row=9, sticky=E)
        self.konjskihLabel.grid(row=10, sticky=E)
        self.spustajucaKlupaLabel.grid(row=11, sticky=E)

        self.opisEntry.grid(row=1, column=1)
        self.duzinaEntry.grid(row=2, column=1)
        self.sirinaEntry.grid(row=3, column=1)
        self.visinaEntry.grid(row=4, column=1)
        self.brzinaEntry.grid(row=5, column=1)
        self.godinaEntry.grid(row=6, column=1)
        self.prostorMenu.grid(row=7, column=1)
        self.vrataEntry.grid(row=8, column=1)
        self.pogonBox.grid(row=9, column=1)
        self.konjskihEntry.grid(row=10, column=1)
        self.klupaBox.grid(row=11, column=1)

        self.potvrdiBTN.grid(columnspan=2)

        Input.grid(row=2, column=0, columnspan=15, rowspan=15, sticky='NESW')
예제 #24
0
def test_sortiraj_automobile():
    sorted = sortirajAutomobile('maksimalna_brzina')
    assert sorted != None
    assert len(sorted) == len(Projekat().automobili)
예제 #25
0
    def __init__(self, automobil, operacija, glavni):
        '''
        Constructor
        
        :param automobil: objekat automobila koji se obradjuje (create - prazan, postojeci - update)
        :param operacija: enumeracija koja odredjuje da li se forma koristi za insert ili update
        :param glavni: referenca na root view koji ga poziva
        '''
        tk.Tk.__init__(self)
        '''
        self.izabraniMenjac
        self.izabraniProstor
        '''

        tk.Tk.wm_title(self, "Automobil UD")
        tk.Tk.geometry(self, '220x300')
        self.resizable(False, False)
        Centriraj(self)

        self.automobil = automobil
        self.operacija = operacija

        self.izabraniMenjac = self.automobil.tip_menjaca
        self.izabraniProstor = self.automobil.izlozbeni_prostor

        #referenca na glavni da se moze iskoristiti Osvezi
        self.glavni = glavni

        rows = 0
        while rows < 15:
            self.rowconfigure(rows, weight=1)
            self.columnconfigure(rows, weight=1)
            rows += 1

        Input = Frame(self)

        #oznaka ce se kreirati sama i inkrementirati na odredjen nacin
        self.opisLabel = Label(Input, text="Opis: ")
        self.duzinaLabel = Label(Input, text="Duzina: ")
        self.sirinaLabel = Label(Input, text="Sirina: ")
        self.visinaLabel = Label(Input, text="Visina: ")
        self.brzinaLabel = Label(Input, text="Max. brzina: ")
        self.godinaLabel = Label(Input, text="God. proizv: ")
        self.prostorLabel = Label(Input, text="Izloz. prostor: ")
        self.vrataLabel = Label(Input, text="Broj vrata: ")
        self.sedistaLabel = Label(Input, text="Broj sedista: ")
        self.menjacLabel = Label(Input, text="Tip menjaca: ")

        self.opisEntry = Entry(Input)
        self.duzinaEntry = Entry(Input)
        self.sirinaEntry = Entry(Input)
        self.visinaEntry = Entry(Input)
        self.brzinaEntry = Entry(Input)
        self.godinaEntry = Entry(Input)

        ponudjenoProstora = []
        for i in Projekat().prostori:
            ponudjenoProstora.append(i.oznaka)
        izborProstora = StringVar()
        if (self.automobil.izlozbeni_prostor != None):
            izborProstora.set([
                s for s in ponudjenoProstora
                if self.automobil.izlozbeni_prostor.oznaka in s
            ][0])
            self.prostorIzbor(izborProstora.get())
        else:
            izborProstora.set(ponudjenoProstora[0])
            self.prostorIzbor(izborProstora.get())

        self.prostorMenu = OptionMenu(
            Input,
            izborProstora,
            *ponudjenoProstora,
            command=lambda x: self.prostorIzbor(izborProstora.get()))

        self.vrataEntry = Entry(Input)
        self.sedistaEntry = Entry(Input)

        ponudjenoMenjaca = []
        for i in TipMenjaca:
            ponudjenoMenjaca.append(i.name)
        izborMenjaca = StringVar()
        if (self.automobil.tip_menjaca != None):
            izborMenjaca.set([
                s for s in ponudjenoMenjaca
                if self.automobil.tip_menjaca.name in s
            ][0])
            self.menjacIzbor(izborMenjaca.get())
        else:
            izborMenjaca.set(ponudjenoMenjaca[0])
            self.menjacIzbor(izborMenjaca.get())
        self.menjacMenu = OptionMenu(
            Input,
            izborMenjaca,
            *ponudjenoMenjaca,
            command=lambda x: self.menjacIzbor(izborMenjaca.get()))

        #napuni ostale vrednostima, ako se prosledi prazan student bice prazno
        self.opisEntry.insert(0, automobil.opis)
        self.duzinaEntry.insert(0, automobil.duzina)
        self.sirinaEntry.insert(0, automobil.sirina)
        self.visinaEntry.insert(0, automobil.visina)
        self.brzinaEntry.insert(0, automobil.maksimalna_brzina)
        self.godinaEntry.insert(0, automobil.godina_proizvodnje)
        self.vrataEntry.insert(0, automobil.broj_vrata)
        self.sedistaEntry.insert(0, automobil.broj_sedista)

        self.potvrdiBTN = Button(Input,
                                 text="Potvrdi",
                                 command=self.AutomobilCU)

        #Pozicije
        self.opisLabel.grid(row=1, sticky=E)  #
        self.duzinaLabel.grid(row=2, sticky=E)
        self.sirinaLabel.grid(row=3, sticky=E)
        self.visinaLabel.grid(row=4, sticky=E)
        self.brzinaLabel.grid(row=5, sticky=E)
        self.godinaLabel.grid(row=6, sticky=E)
        self.prostorLabel.grid(row=7, sticky=E)
        self.vrataLabel.grid(row=8, sticky=E)
        self.sedistaLabel.grid(row=9, sticky=E)
        self.menjacLabel.grid(row=10, sticky=E)

        self.opisEntry.grid(row=1, column=1)
        self.duzinaEntry.grid(row=2, column=1)
        self.sirinaEntry.grid(row=3, column=1)
        self.visinaEntry.grid(row=4, column=1)
        self.brzinaEntry.grid(row=5, column=1)
        self.godinaEntry.grid(row=6, column=1)
        self.prostorMenu.grid(row=7, column=1)
        self.vrataEntry.grid(row=8, column=1)
        self.sedistaEntry.grid(row=9, column=1)
        self.menjacMenu.grid(row=10, column=1)

        self.potvrdiBTN.grid(columnspan=2)

        Input.grid(row=2, column=0, columnspan=15, rowspan=15, sticky='NESW')
예제 #26
0
def test_sortiraj_dzipove():
    sorted = sortirajDzipove('konjskih_snaga')
    assert sorted != None
    assert len(sorted) == len(Projekat().dzipovi)