Advertisement
Guest User

Untitled

a guest
Oct 24th, 2018
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 12.42 KB | None | 0 0
  1. # methodsFile.py
  2.  
  3. import random
  4. import string
  5. import csv
  6. import datetime
  7.  
  8.  
  9. lstUniqueNumbers = []
  10. lstGebruikersGegevens = [0,0,0]
  11. aantalStallingen = 50
  12.  
  13.  
  14. def uniqueNumber():
  15.     'genereert een uniek getal voor de gebruiker'
  16.     uniekNummer = ''
  17.     while True:
  18.         uniekNummer = uniekNummer.join(random.choice(string.ascii_uppercase + string.ascii_lowercase + string.digits) for _ in range(10))
  19.         if uniekNummer in lstUniqueNumbers:
  20.         # exception voor een kans van n/839.299.365.868.340.224 met n=users
  21.             uniekNummer = ''
  22.         else:
  23.             break
  24.     # Moet nog uit de while loop kunnen gaan
  25.     lstUniqueNumbers.append(uniekNummer)
  26.     print(lstUniqueNumbers)
  27.     return uniekNummer
  28.  
  29.  
  30. def registreren(voornaam, tussenvoegsel, achternaam, wachtwoordPara):
  31.     'vraagt gebruiker voor zijn/haar naam'
  32.     gebruikersNummer = ''
  33.     wachtwoord = ''
  34.     noOfIntsInPass = 0
  35.     for o in wachtwoordPara:
  36.         wachtwoord += o
  37.         try:
  38.             int(o)
  39.             noOfIntsInPass += 1
  40.         except ValueError:
  41.             pass
  42.     while True:
  43.         if len(wachtwoord) >= 6 and noOfIntsInPass >= 2:
  44.             geldigWachtwoord = True
  45.             break
  46.         else:
  47.             print('Incorrect wachtwoord. Probeer het opnieuw')
  48.             geldigWachtwoord = False
  49.             break
  50.  
  51.     # formatting is moeilijk
  52.     if tussenvoegsel == '':
  53.         naamUser = voornaam + ' ' + achternaam
  54.     else:
  55.         naamUser = voornaam + ' ' + tussenvoegsel + ' ' + achternaam
  56.         # callt de functie uniqueNumber voor een random string als uniek nummer
  57.     if naamUser != "" and geldigWachtwoord == True:
  58.         gebruikersNummer = uniqueNumber()
  59.         with open('Gebruikersbestand.csv', 'a', newline='') as CSV:
  60.             writer = csv.writer(CSV, delimiter=';')
  61.  
  62.             writer.writerow((gebruikersNummer, naamUser, wachtwoord, ''))
  63.             CSV.close()
  64.     return gebruikersNummer
  65.  
  66.  
  67. def logineenmalig(unicode, wachtwooord):
  68.     ingelogd = False
  69.     with open('Gebruikersbestand.csv', 'r') as CSV:
  70.             for o in CSV.readlines():
  71.                 if unicode == o.split(';')[0]:
  72.                     if o.split(';')[2] == wachtwooord:
  73.                         print('Ingelogd')
  74.                         global lstGebruikersGegevens
  75.                         lstGebruikersGegevens = o
  76.                         ingelogd = True
  77.                         break
  78.                 else:
  79.                     continue
  80.     CSV.close()
  81.     return ingelogd
  82.  
  83.  
  84. def openStalling(unicode):
  85.     huidigeTijd = datetime.datetime.now()
  86.     with open('Stallingsbestand.csv', 'a', newline='') as CSV:
  87.         writer = csv.writer(CSV, delimiter=';')
  88.         writer.writerow((unicode, huidigeTijd, 'stalling'))
  89.     CSV.close()
  90.  
  91.  
  92. def algemeneInformatie():
  93.     beschikbareStallingen = aantalStallingen - len(lstUniqueNumbers)
  94.     return beschikbareStallingen
  95.  
  96.  
  97. def persoonlijkeInformatie():
  98.     huidigeTijd = datetime.datetime.now()
  99.     print('Welkom ', str(lstGebruikersGegevens).split(';')[1])
  100.     print('Het is nu: ', huidigeTijd)
  101.  
  102.  
  103. def fietsOphalen(unicode):
  104.     huidigeTijd = datetime.datetime.now()
  105.     with open('Stallingsbestand.csv', 'a', newline='') as CSV:
  106.         with open('Stallingsbestand.csv', 'a', newline='') as CSV:
  107.             writer = csv.writer(CSV, delimiter=';')
  108.             writer.writerow((unicode, huidigeTijd, 'opgehaald'))
  109.         CSV.close()
  110.  
  111.  
  112. def returnUsername(input):
  113.     if input == "unicode":
  114.         return lstGebruikersGegevens[0]
  115.     elif input == "username":
  116.         return lstGebruikersGegevens[1]
  117.     elif input == "password":
  118.         return lstGebruikersGegevens[2]
  119.     else:
  120.         return "Error"
  121.  
  122.  
  123. print(len(lstUniqueNumbers))
  124.  
  125.  
  126.  
  127.  
  128.  
  129. #GUI.py
  130.  
  131. from tkinter import *
  132. from tkinter.messagebox import showinfo
  133. import methodsFile
  134. import datetime
  135. import random
  136. from PIL import Image, ImageTk
  137. lstCaptchaPictures = ["captcha_1.png", "captcha_2.png", "captcha_3.png", "captcha_4.png", "captcha_5.png",
  138.                       "captcha_6.png", "captcha_7.png", "captcha_8.png", "captcha_9.png", "captcha_10.png",
  139.                       "captcha_11.png", "captcha_12.png"]
  140. lstCaptchaValues = ["W93BX", "RBSKW", "TSMS9", "R84CH", "3M56R", "UXP4D", "JA3V8", "HJ9PV", "459CT", "D4TSH",
  141.                     "HAPK3", "6H3T8"]
  142. huidigeTijd = (str(datetime.datetime.now()).split(' ')[1]).split(':')[0], ':', (str(datetime.datetime.now()).split(' ')[1]).split(':')[1]
  143. unicode = ''
  144. naamUser = ''
  145. maxStallingen = 50
  146. counter = 0
  147. x = 0
  148.  
  149.  
  150. def randomizeCaptcha():
  151.     global x, panel
  152.     panel.destroy()
  153.     x = random.randrange(0, len(lstCaptchaValues))
  154.     img = ImageTk.PhotoImage(Image.open(lstCaptchaPictures[x]))
  155.     panel = Label(master=captchaframe, image=img)
  156.     panel.image = img
  157.     panel.grid(row=1, column=2)
  158.  
  159.  
  160. def aantalStallingen():
  161.     gebruikteStallingen = 0
  162.     with open('Gebruikersbestand.csv', 'r') as CSV:
  163.         for _ in CSV.readlines():
  164.             gebruikteStallingen += 1
  165.     beschikbareStallingen = maxStallingen - gebruikteStallingen
  166.     return beschikbareStallingen
  167.  
  168.  
  169. def login():
  170.     username = usernamefield.get()
  171.     password = passwordfield.get()
  172.     global unicode
  173.     unicode = username
  174.     ingelogd = methodsFile.logineenmalig(username, password)
  175.     if ingelogd == False:
  176.         showinfo(title="Error", message="Onjuiste gegevens. Probeer het nog eens")
  177.     else:
  178.         tooncaptchaframe()
  179.  
  180.  
  181. def register():
  182.     if aantalStallingen() == 0:
  183.         showinfo(title="Error", message="Alle stallingen zijn al in gebruik")
  184.     else:
  185.         voornaam = voornaamfield.get()
  186.         tussenvoegsel = tussenvoegselfield.get()
  187.         achternaam = achternaamfield.get()
  188.         wachtwoord = wachtwoordfield.get()
  189.         uniekeCode = methodsFile.registreren(voornaam, tussenvoegsel, achternaam, wachtwoord)
  190.         if uniekeCode == "" and (voornaam == "" or achternaam == ""):
  191.             showinfo(title="Error", message="Naam onvolledig")
  192.         elif uniekeCode == "":
  193.             showinfo(title="Error",
  194.                      message="Vul een geldig wachtwoord in (langer dan 6 karakters met 2 of meer getallen")
  195.         else:
  196.             uniekeCode = ('Unieke code: ' + uniekeCode)
  197.             showinfo(title="Geregistreerd", message=uniekeCode)
  198.             toonloginframe()
  199.  
  200.  
  201. def tryanswerCaptcha():
  202.     global x, counter
  203.     if counter == 2:
  204.         showinfo(title="Error", message="3 slag = uit.")
  205.         toonloginframe()
  206.         counter = 0
  207.     elif str(lstCaptchaValues[x]) == userinputfield.get():
  208.         tooningelogdframe()
  209.     else:
  210.         counter += 1
  211.         pogingenover = 3-counter
  212.         showinfo(title="Error", message="Probeer het nog eens. Je hebt nog " + str(pogingenover) + " pogingen over.")
  213.  
  214.  
  215.  
  216. def openStalling():
  217.     methodsFile.openStalling(unicode)
  218.     showinfo(title="Open", message="Fiets kan worden gestald.")
  219.  
  220.  
  221. def fietsOphalen():
  222.     methodsFile.fietsOphalen(unicode)
  223.     showinfo(title="Open", message="Fiets kan worden opgehaald.")
  224.  
  225.  
  226. def persoonlijkeinfo():
  227.     methodsFile.persoonlijkeInformatie()
  228.  
  229.  
  230. def tooncaptchaframe():
  231.     userinputfield.delete(0, END)
  232.     loginframe.grid_forget()
  233.     captchaframe.grid()
  234.  
  235.  
  236. def toonregisterframe():
  237.     huidigeTijd = (str(datetime.datetime.now()).split(' ')[1]).split(':')[0], ':', \
  238.                   (str(datetime.datetime.now()).split(' ')[1]).split(':')[1]
  239.     global tijdLabel
  240.     tijdLabel["text"] = huidigeTijd
  241.     tijdframe.grid_forget()
  242.     tijdframe.grid()
  243.     loginframe.grid_forget()
  244.     registerframe.grid()
  245.     voornaamfield.delete(0, END)
  246.     tussenvoegselfield.delete(0, END)
  247.     achternaamfield.delete(0, END)
  248.     wachtwoordfield.delete(0, END)
  249.  
  250.  
  251. def toonloginframe():
  252.     huidigeTijd = (str(datetime.datetime.now()).split(' ')[1]).split(':')[0], ':', \
  253.                   (str(datetime.datetime.now()).split(' ')[1]).split(':')[1]
  254.     global tijdLabel
  255.     tijdLabel["text"] = huidigeTijd
  256.     tijdframe.grid_forget()
  257.     captchaframe.grid_forget()
  258.     tijdframe.grid()
  259.     registerframe.grid_forget()
  260.     loginframe.grid()
  261.     labelAantalStallingen = Label(master=loginframe, text=("Aantal vrije stallingen: " + str(aantalStallingen())))
  262.     labelAantalStallingen.place(y=100, x=0)
  263.     usernamefield.delete(0, END)
  264.     passwordfield.delete(0, END)
  265.  
  266.  
  267. def tooningelogdframe():
  268.     with open('Gebruikersbestand.csv', 'r') as CSV:
  269.         for o in CSV.readlines():
  270.             if unicode == o.split(';')[0]:
  271.                 global naamUser
  272.                 naamUser = o.split(';')[1]
  273.                 break
  274.         CSV.close()
  275.     captchaframe.grid_forget()
  276.     labelBericht = Label(master=ingelogdframe, text=('Welkom, ' + naamUser))
  277.     labelBericht.grid(row=0, column=3)
  278.     ingelogdframe.grid()
  279.  
  280.  
  281. def logout():
  282.     huidigeTijd = (str(datetime.datetime.now()).split(' ')[1]).split(':')[0], ':', \
  283.                   (str(datetime.datetime.now()).split(' ')[1]).split(':')[1]
  284.     global tijdLabel
  285.     tijdLabel["text"] = huidigeTijd
  286.     tijdframe.grid_forget()
  287.     tijdframe.grid()
  288.     loginframe.grid_forget()
  289.     ingelogdframe.grid_forget()
  290.     loginframe.grid()
  291.     labelAantalStallingen = Label(master=loginframe, text=("Aantal vrije stallingen: " + str(aantalStallingen())))
  292.     labelAantalStallingen.place(y=100, x=0)
  293.     usernamefield.delete(0, END)
  294.     passwordfield.delete(0, END)
  295.  
  296.  
  297. root = Tk()
  298. root.geometry("400x200")
  299. tijdframe = Frame(master=root)
  300. tijdframe.grid()
  301. tijdLabel = Label(master=tijdframe, text=huidigeTijd)
  302. tijdLabel.grid(row=0, column=3)
  303.  
  304. #captchaframe zooi
  305. captchaframe = Frame(master=root)
  306. panel = Label(master=captchaframe)
  307. panel.grid()
  308. userinputfield = Entry(master=captchaframe)
  309. userinputfield.grid(row=1, column=0, sticky="EW")
  310. buttontry = Button(master=captchaframe, text="Try answer", command=tryanswerCaptcha)
  311. buttontry.grid(row=2, column=0, sticky="EW")
  312. buttonklik = Button(master=captchaframe, text="Change captcha", command=randomizeCaptcha)
  313. buttonklik.grid(row=3, column=0, sticky="EW")
  314.  
  315. # loginframe zooi
  316. loginframe = Frame(master=root)
  317. loginframe.grid()
  318. labelUsername = Label(loginframe, text="Gebruikersnaam: ")
  319. labelUsername.grid(row=1, column=1, sticky="EW")
  320. labelPassword = Label(loginframe, text="Wachtwoord: ")
  321. labelPassword.grid(row=2, column=1, sticky="EW")
  322. usernamefield = Entry(loginframe)
  323. usernamefield.grid(row=1, column=2, sticky="EW")
  324. passwordfield = Entry(loginframe)
  325. passwordfield.grid(row=2, column=2, sticky="EW")
  326. buttonLogin = Button(loginframe, text="Inloggen", command=login)
  327. buttonLogin.grid(row=3, column=2, sticky="EW")
  328. buttonRegister = Button(loginframe, text="Registreren", command=toonregisterframe)
  329. buttonRegister.grid(row=3, column=0, sticky="EW")
  330.  
  331. # registerframe zooi
  332. registerframe = Frame(master=root)
  333. labelVoornaam = Label(registerframe, text="Voornaam: ")
  334. labelVoornaam.grid(row=1, column=0, sticky="EW")
  335. labelTussenvoegsel = Label(registerframe, text="Tussenvoegsel: ")
  336. labelTussenvoegsel.grid(row=2, column=0, sticky="EW")
  337. labelAchternaam = Label(registerframe, text="Achternaam: ")
  338. labelAchternaam.grid(row=3, column=0, sticky="EW")
  339. labelWachtwoord = Label(registerframe, text="Wachtwoord: ")
  340. labelWachtwoord.grid(row=4, column=0, sticky="EW")
  341. voornaamfield = Entry(registerframe)
  342. voornaamfield.grid(row=1, column=1, sticky="EW")
  343. tussenvoegselfield = Entry(registerframe)
  344. tussenvoegselfield.grid(row=2, column=1, sticky="EW")
  345. achternaamfield = Entry(registerframe)
  346. achternaamfield.grid(row=3, column=1, sticky="EW")
  347. wachtwoordfield = Entry(registerframe)
  348. wachtwoordfield.grid(row=4, column=1, sticky="EW")
  349. buttonRegistreren = Button(registerframe, text="Registreren", command=register)
  350. buttonRegistreren.grid(row=5, column=0, sticky="EW")
  351. buttonTerug = Button(registerframe, text="Terug", command=toonloginframe)
  352. buttonTerug.grid(row=5, column=1, sticky="EW")
  353.  
  354. # ingelogd frame
  355. ingelogdframe = Frame(master=root)
  356. buttonUitloggen = Button(master=ingelogdframe, text="Uitloggen", command=logout)
  357. buttonUitloggen.grid(row=3, column=3, sticky="EW")
  358. buttonOpenStalling = Button(master=ingelogdframe, text="Open stalling", command=openStalling)
  359. buttonOpenStalling.grid(row=2, column=2, sticky="EW")
  360. buttonFietsOphalen = Button(master=ingelogdframe, text="Fiets ophalen", command=fietsOphalen)
  361. buttonFietsOphalen.grid(row=2, column=3, sticky="EW")
  362. buttonPersoonlijkeInfo = Button(master=ingelogdframe, text="Persoonlijke informatie", command=persoonlijkeinfo)
  363. buttonPersoonlijkeInfo.grid(row=2, column=4, sticky="EW")
  364.  
  365.  
  366.  
  367. root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement