Beispiel #1
0
def providerfilms(providernaam):
    """
    returnt een lijst met alle films die een gebruiker in bezit heeft
    de doctest werkt alleen op 30-10-2015 omdat de uitslagen afhankelijk zijn van de datum
    >>> providerfilms("RTL8")
    ['Penthouse North', 'Black Forest']
    >>> providerfilms("SBS9")
    ['Observe and Report', 'Beerfest']
    >>> providerfilms("BBC1")
    ['Hollywood Homicide']
    >>> providerfilms("FOX")
    ['The Frighteners']
    >>> providerfilms("CANVAS")
    []
    """
    TB.schrijf_xml(TB.response)
    TB.films_dict = TB.verwerk_xml()
    global filmnamen
    filmnamen = TB.print_filmnamen(TB.films_dict)
    list = []
    filmnamenlijst = []
    nummer = 0
    for i in filmnamen["provider"]:
        if i == providernaam:
            # print(nummer)
            list.append(nummer)
        nummer += 1
    for provider in list:
        # print(filmnamen["titel"][provider])
        filmnamenlijst.append(filmnamen["titel"][provider])
    # print(filmnamen["provider"])
    return filmnamenlijst
def providerscreen():
    window.destroy()
    rommel.destroy()
    provscreen = tk.Tk()
    provscreen.geometry("310x300")
    provscreen.title("Chill-Flix")
    provscreen.wm_iconbitmap("favicon.ico")  # de logo van het programma
    provscreen.configure(background=background)

    button = {}
    TB.schrijf_xml(TB.response)
    TB.films_dict = TB.verwerk_xml()
    filmnamen = TB.print_filmnamen(TB.films_dict)  # filmnamen geeft alle huidige films in list
    print(filmnamen)  # print de list met alle filmnamen
    rij = 0

    for i in filmnamen:  # http://stackoverflow.com/questions/7300041/tkinter-create-labels-and-entrys-dynamically
        lb = tk.Button(provscreen, text=i, bg=background, fg=textkleur, activeforeground=activeforegroundbutton,
                       activebackground=activebackgroundbutton,
                       width=len(max(filmnamen, key=len)), command=lambda piet=i: huurdersfilm(piet))
        button[i] = lb
    # button[i].grid(row=rij, column=0)

# for i in filmnamen:
        button[i].pack()
        rij += 1

    provscreen.mainloop()
Beispiel #3
0
def login(method):
    """
    checkt de login met de database
    """

    if TB.loginPogingen > 0:
        global user
        if method == 1:
            user = username.get().lower()
            pw = password.get()
            accesgranted = TB.login(user, pw)
        else:
            user = username.get()
            pw = password.get()
            accesgranted = TB.login2(user, pw)
        if accesgranted is True:
            TB.gebruiker = user
            # bron: http://stackoverflow.com/questions/10817917/how-to-disable-input-to-a-text-widget-but-allow-programatic-input
            print("[DEBUG] accesgranted was gelijk aan: "+str(accesgranted))
            username.destroy()  # destroy window
            password.destroy()
            bsignin.destroy()
            attemptsLeft.destroy()
            label.destroy()
            passlabel.destroy()
            bsignup.destroy()
            warning.destroy()
            window.configure(background="black")
            label2 = tk.Label(window, text='Login succesful, redirecting.', fg=textkleur, bg="black")
            label2.pack()
            photo2 = tk.PhotoImage(file="loading.gif")
            # TODO:laad alleen eerste frame, is animated GIF
            w = tk.Label(window, image=photo2, borderwidth="0")
            w.image = photo2
            w.pack()
            # TODO: hier de code om naar het volgende scherm te gaan waar films worden gedisplayed (nieuwe def)
            if method == 1:
                goback(2)  # TODO: wanneer geactiveerd slaat hij de accesgranted screen over
            else:
                providerscreen()
            return True
        else:
            TB.loginPogingen -= 1
            attemptsLeft['text'] = "Attempts left: "+str(TB.loginPogingen)
            warning['text'] = "Login failed, invalid username or password."
            if TB.loginPogingen == 0:
                warning['text'] = "Too many failed login attempts."
                username.configure(state="disabled")
                password.configure(state="disabled")
                bsignin.configure(state="disabled")
                bsignup.configure(state="disabled")
                baanvoerder.configure(state="disabled")
                photo.configure(file="blocked.gif")  # kan wel beter dan dit maar het idee is er
            return False
    else:
        warning['text'] = "Too many failed login attempts."
        return False
Beispiel #4
0
def filmhuren(film):
    """
    geeft popup als je een film huurd
    """
    filmnummer = filmnamen["titel"].index(film)
    t = (str(filmnamen["titel"][filmnummer]))
    p = (str(filmnamen["provider"][filmnummer]))
    print("[DEBUG] gebruiker = "+TB.gebruiker)
    TB.kaartjeKopen(p, t, TB.gebruiker, TB.generateCode())
    tk.messagebox.showinfo(film + " huren", "U heeft zojuist de film: " + film + " gehuurd.")
Beispiel #5
0
def createaccount():
    """
    checkt de account creation input voor invalide tekst
    """
    readytowrite = False
    user = ename.get().lower()
    pw = epassword.get()
    email = eemail.get().lower()
    provider = comboprovider.get()
    gender = "NA"  # TODO: gender ophalen uit radiobutton

    # velden resetten naar defaultcolor white
    ename['bg'] = "white"
    epassword['bg'] = "white"
    eemail['bg'] = "white"
    combostyle.theme_use('regular')

    ingebruik = TB.createLogin(user, pw, email, provider, gender, False)
    # ^SCHRIJFT NIET -- laatste parameter geeft aan alleen data ophalen
    print("[DEBUG] login: "******"\n", "pw: "+pw+"\n", "email: "+email+"\n", "provider: "+provider+"\n", "ingebruik: "+str(ingebruik)) # , gender --- hoe haal ik info van radiobutton @Debug

    if ingebruik is False:
        readytowrite = True

    if ("." not in email) or ("@" not in email) or ("," in email): # or (len(pw) < 5):
        eemail['bg'] = "red"
        readytowrite = False

    if ("," in pw) or (pw == ""): # or (len(pw) < 4):
        epassword['bg'] = "red"
        readytowrite = False

    if (provider == "") or ("," in provider):
        combostyle.theme_use('red')
        readytowrite = False

    if (ingebruik is True) or (user == "") or ("," in user):  # ingebruik returnt inUse van createLogin
        ename['bg'] = "red"
        readytowrite = False
        # TODO: Errortextlabel + verkeerde input roodmaken

    if ingebruik is False and readytowrite is True:
        TB.createLogin(user, pw, email, provider, gender, True)  # True dus schrijven naar login.csv
        ingebruik = True
        print("[DEBUG]: Account created - gender: "+str(gender))
        goback(1)
        # print("test"+radiogender1.selection_get())
        # TODO: maak redirect window naar login + errors uit goback(1) halen
    return ingebruik
Beispiel #6
0
def filmscreen():
    """
    Laat alle films zien d.m.v. dynamic buttons, hier kan je naar de site gaan of een film huren
    """
    afmeting = correctwindowsize(2)
    global filmwindow
    filmwindow = tkinter.Tk()
    filmwindow.geometry(afmeting)
    filmwindow.title("Chill-Flix")  # http://stackoverflow.com/questions/2395431/using-tkinter-in-python-to-edit-the-title-bar
    filmwindow.wm_iconbitmap("favicon.ico")  # de logo van het programma
    filmwindow.configure(background=background)
    button = {}
    buttonkopen = {}
    TB.schrijf_xml(TB.response)
    TB.films_dict = TB.verwerk_xml()
    global filmnamen
    filmnamen = TB.print_filmnamen(TB.films_dict)  # filmnamen geeft alle huidige films weer in een list
    rij = 0

    for i in filmnamen["titel"]:  # http://stackoverflow.com/questions/7300041/tkinter-create-labels-and-entrys-dynamically
        lb = tk.Button(filmwindow, text=(i + " (bekijk inhoud)"), bg=background, activeforeground=activeforegroundbutton,
                       activebackground=activebackgroundbutton,
                       fg=textkleur, width=17 + len(max(filmnamen["titel"], key=len)),
                       command=lambda piet=i: filmdescription(piet))
        # http://www.tutorialspoint.com/python/tk_button.htm    voor de button arguments
        button[i] = lb
        button[i].grid(row=rij, column=0)

        lb2 = tk.Button(filmwindow, text=(i + " Huren"), bg=background, activeforeground=activeforegroundbutton,
                        activebackground=activebackgroundbutton,
                        fg=textkleur, width=7 + len(max(filmnamen["titel"], key=len)), command=lambda piet=i: filmhuren(piet))
        buttonkopen[i] = lb2
        # http://stackoverflow.com/questions/11504571/clickable-tkinter-labels
        buttonkopen[i].grid(row=rij, column=1)
        # voor de dynamische button breedte: http://stackoverflow.com/questions/873327/pythons-most-efficient-way-to-choose-longest-string-in-list

     # TODO: een goede layout op het scherm krijgen (met .grid werkt column argument niet?)

        rij += 1

    bgoback = tk.Button(filmwindow, text="Go Back", command=lambda: goback(3), bg=background,
                        fg=textkleur, activebackground=activebackgroundbutton, activeforeground=activeforegroundbutton)
    bgoback.grid(row=(rij + 1), column=0)

    bfilmkijken = tk.Button(filmwindow, text="Film kijken", command=lambda: filmkijken(), bg=background, fg=textkleur, activebackground=activebackgroundbutton, activeforeground=activeforegroundbutton)
    bfilmkijken.grid(row=(rij+1), column=1)

    filmwindow.mainloop()
Beispiel #7
0
def huurdersfilm(film):
    """
    Hier worden de huurders van de films bekeken
    """
    global mijnfilm
    mijnfilm = film
    afmeting = correctwindowsize(3)
    useroverzicht = tk.Tk()
    useroverzicht.geometry(afmeting)
    useroverzicht.title("Chill-Flix")
    useroverzicht.wm_iconbitmap("favicon.ico")  # de logo van het programma
    useroverzicht.configure(background=background)
    lfilm = tk.Label(useroverzicht, text="Naam: "+film+ "\nin gebruik door:", fg=textkleur, bg=background)
    lfilm.pack()
    users = TB.aanbiederInfo(film)  # TODO: hier komen de users van de film
    userlabel = {}
    for i in users:
        lb3 = tk.Label(useroverzicht, text=i, fg="#44FF66", bg=background)
        userlabel[i] = lb3
        userlabel[i].pack()

    bgoback = tk.Button(useroverzicht, text="Go Back", command=lambda: useroverzicht.destroy(), bg=background, fg=textkleur, activeforeground=activeforegroundbutton, activebackground=activebackgroundbutton)
    bgoback.pack()

    useroverzicht.mainloop()
def filmscreen():
    filmwindow = tkinter.Tk()
    filmwindow.geometry("300x500")
    filmwindow.title("Chill-Flix")
    filmwindow.wm_iconbitmap("favicon.ico")  # het logo van het programma
    filmwindow.configure(background=background)
    # names = ["kees", "philippe", "dylan"]
    button = {}
    buttonkopen = {}
    TB.schrijf_xml(TB.response)
    TB.films_dict = TB.verwerk_xml()
    filmnamen = TB.print_filmnamen(TB.films_dict)  # filmnamen geeft alle huidige films in list
    print(filmnamen)  # print de list met alle filmnamen
    rij = 0

    for i in filmnamen:  # http://stackoverflow.com/questions/7300041/tkinter-create-labels-and-entrys-dynamically
        lb = tk.Button(filmwindow, text=i + " (bekijk inhoud)", bg=background, activeforeground=activeforegroundbutton,
                       activebackground=activebackgroundbutton,
                       fg=textkleur, width=17 + len(max(filmnamen, key=len)),
                       command=lambda piet=i: filmdescription(piet))
        button[i] = lb
        # label[i].bind("<Button-1>",command=(lambda filmdescription("a")))   # http://stackoverflow.com/questions/11504571/clickable-tkinter-labels
        # button[i].grid(row=rij, column=0)

        lb2 = tk.Button(filmwindow, text=i + " Huren", bg=background, activeforeground=activeforegroundbutton,
                        activebackground=activebackgroundbutton,
                        fg=textkleur, width=7 + len(max(filmnamen, key=len)), command=lambda piet=i: filmdescription(piet))
        buttonkopen[i] = lb2
        # http://stackoverflow.com/questions/11504571/clickable-tkinter-labels
        # button[i].grid(row=rij, column=1)
        # voor de dynamische button breedte: http://stackoverflow.com/questions/873327/pythons-most-efficient-way-to-choose-longest-string-in-list

    # for i in filmnamen:
        buttonkopen[i].pack()  # TODO: een goede layout op het scherm krijgen (met .grid werkt column argument niet?)
        button[i].pack()
        rij += 1

    filmwindow.mainloop()
Beispiel #9
0
def providerscreen():
    """
    In dit scherm krijgen de providers de films te zien die zij zelf aanvoeren, als ze op een film drukken kunnen ze de
    huurders zien
    """
    window.destroy()
    rommel.destroy()
    TB.schrijf_xml(TB.response)
    TB.films_dict = TB.verwerk_xml()
    filmnamen = TB.print_filmnamen(TB.films_dict)  # filmnamen geeft alle huidige films in list
    afmeting = correctwindowsize(1)
    # print(filmnamen)  # print de dictionaries met alle filmnamen

    global provscreen
    provscreen = tk.Tk()
    provscreen.geometry(afmeting)
    provscreen.title("Chill-Flix")
    provscreen.wm_iconbitmap("favicon.ico")  # de logo van het programma
    provscreen.configure(background=background)

    button = {}
    rij = 0
    providernaam = TB.gebruiker

    for i in providerfilms(providernaam):  # http://stackoverflow.com/questions/7300041/tkinter-create-labels-and-entrys-dynamically
        lb = tk.Button(provscreen, text=i, bg=background, fg=textkleur, activeforeground=activeforegroundbutton,
                       activebackground=activebackgroundbutton,
                       width=len(max(providerfilms(providernaam), key=len)), command=lambda piet=i: huurdersfilm(piet))
        button[i] = lb
    # button[i].grid(row=rij, column=0)

# for i in filmnamen:
        button[i].pack()
        rij += 1

    bgoback = tk.Button(provscreen, text="Go Back", command=lambda: goback(4), bg=background, fg=textkleur, activeforeground=activeforegroundbutton, activebackground=activebackgroundbutton)
    bgoback.pack(side="left")
    provscreen.mainloop()
Beispiel #10
0
def filmkijken():
    """
    Dit scherm laat zien welke films er gehuurt zijn door de user, zodat ze deze kunnen bekijken
    """
    bioscoop = tk.Tk()
    bioscoop.geometry("200x200")
    bioscoop.title("Chill-Flix")
    bioscoop.wm_iconbitmap("favicon.ico")  # de logo van het programma
    bioscoop.configure(background=background)
    availablefilms = TB.userownedfilms(TB.gebruiker)
    button = {}
    for i in availablefilms:  # http://stackoverflow.com/questions/7300041/tkinter-create-labels-and-entrys-dynamically
        lb = tk.Button(bioscoop, text=(i), bg=background, activeforeground=activeforegroundbutton,
                       activebackground=activebackgroundbutton,
                       fg=textkleur, width=17 + len(max(availablefilms, key=len)),
                       command=lambda piet=i: tk.messagebox.showinfo(piet, "u kunt nu de film: " + piet + " kijken") and bioscoop.destroy())
        button[i] = lb
        button[i].pack()

    bgoback = tk.Button(bioscoop, text="Go Back", command=lambda: bioscoop.destroy(), bg=background,
                        fg=textkleur, activebackground=activebackgroundbutton, activeforeground=activeforegroundbutton)
    bgoback.pack(side="left")

    bioscoop.mainloop()
Beispiel #11
0
def correctwindowsize(input):
    """
    Returnt een window size gebaseerd op berekeningen ivm grote van elementen
    """
    TB.schrijf_xml(TB.response)
    TB.films_dict = TB.verwerk_xml()
    filmnamen = TB.print_filmnamen(TB.films_dict)  # filmnamen geeft alle huidige films in list
    aantal = 0
    for i in filmnamen['titel']:
        aantal = aantal + 1
    if input == 1:
        lengte = len(providerfilms(TB.gebruiker))
        afmeting = ("310x"+str(40+26*lengte)) # 26 = approx 1 button, 40 = extra voor go back button
    elif input == 2:
        afmeting = ("600x"+str(40+26*aantal)) # 26 = approx 1 button, 40 = extra voor go back button
    elif input == 3:
        TB.aanbiederInfo(mijnfilm)
        if TB.aantalgebruikers < 30:
            afmeting = ("310x"+str(22*(TB.aantalgebruikers+3))) # 26 = approx 1 button, 40 = extra voor go back button
        else:
            afmeting = ("310x1000")
    else:
        afmeting = ("310x300") # default afmeting
    return afmeting
Beispiel #12
0
import Thuisbioscoop as TB
TB.schrijf_xml(TB.response) #
TB.films_dict = TB.verwerk_xml()
global filmnamen
filmnamen = TB.print_filmnamen(TB.films_dict)
naam = "RTL8"
list = []
filmnamenlijst = []
nummer = 0
for i in filmnamen["provider"]:
    if i == naam:
        print(nummer)
        list.append(nummer)
    nummer += 1
for provider in list:
    print(filmnamen["titel"][provider])
    filmnamenlijst.append(filmnamen["titel"][provider])
print(filmnamen["provider"])

return filmnamenlijst

Beispiel #13
0
highlightbuttoncolorthingy = "#6B99A0"


def filmscreen():
    filmwindow = tkinter.Tk()
    filmwindow.geometry(windowsize)
    filmwindow.title("Chill-Flix")
    filmwindow.wm_iconbitmap("favicon.ico")  # het logo van het programma
    filmwindow.configure(background=background)
    names = ["kees", "philippe", "dylan"]
    button = {}
    for i in names: # http://stackoverflow.com/questions/7300041/tkinter-create-labels-and-entrys-dynamically
        lb = tk.Button(filmwindow, text=i, command=lambda piet=i:filmdescription(piet), bg=background, fg=textkleur)
        button[i] = lb
        # label[i].bind("<Button-1>",command=(lambda filmdescription("a")))   # http://stackoverflow.com/questions/11504571/clickable-tkinter-labels   hoort filmdescription op te roepen wanneer je drukt op de label
        button[i].pack()

    filmwindow.mainloop()


def filmdescription(film):
    print("hoi" + film)

filmscreen()
TB.schrijf_xml(TB.response)
TB.films_dict = TB.verwerk_xml()
filmNamen = TB.print_filmnamen(TB.films_dict) # filmNamen geeft alle huidige films in list
print(filmNamen) # print de list met alle filmnamen
for i in filmNamen: # print films 1 voor 1
    print(str(i)) # TODO: hier code om in tkinter te zetten
Beispiel #14
0
tk = tkinter
global background
background = "#153341"
global textkleur
textkleur = "#51dfd4"
global windowsize
windowsize = "350x300"
global titelimage
titleimage = "deze.gif"
global activebackgroundbutton
activebackgroundbutton = "#245A69"
global activeforegroundbutton
activeforegroundbutton = "#48ABAA"
global highlightbuttoncolorthingy
highlightbuttoncolorthingy = "#6B99A0"
TB.preparelogin2()


def filmscreen():
    """
    Laat alle films zien d.m.v. dynamic buttons, hier kan je naar de site gaan of een film huren
    """
    afmeting = correctwindowsize(2)
    global filmwindow
    filmwindow = tkinter.Tk()
    filmwindow.geometry(afmeting)
    filmwindow.title("Chill-Flix")  # http://stackoverflow.com/questions/2395431/using-tkinter-in-python-to-edit-the-title-bar
    filmwindow.wm_iconbitmap("favicon.ico")  # de logo van het programma
    filmwindow.configure(background=background)
    button = {}
    buttonkopen = {}