Advertisement
Guest User

Untitled

a guest
Dec 4th, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.59 KB | None | 0 0
  1. import tkinter as tk
  2. from tkinter import messagebox as ms
  3. from PIL import ImageTk, Image
  4. import sqlite3
  5. import datetime
  6. from xlsxwriter.workbook import Workbook
  7. import sys, os
  8.  
  9.  
  10. with sqlite3.connect('my.db') as db:
  11.     c = db.cursor()
  12.  
  13. #CHANGE USERNAME FOR PRIMARY KEY
  14. c.execute("CREATE TABLE IF NOT EXISTS user(username TEXT NOT NULL, name TEXT NOT NULL, surname TEXT NOT NULL, password TEXT NOT NULL, employee_id INTEGER PRIMARY KEY);")
  15. db.commit()
  16. db.close()
  17.  
  18.  
  19. mycolor = '#%02x%02x%02x' %(0, 173, 239)
  20.  
  21.  
  22.  
  23.  
  24.  
  25. class Main:
  26.  
  27.     def __init__(self, master):
  28.         # Window
  29.         self.master = master
  30.         # Some Usefull variables
  31.         self.username = tk.StringVar()
  32.         self.name = tk.StringVar()
  33.         self.surname = tk.StringVar()
  34.         self.password = tk.StringVar()
  35.         self.n_username = tk.StringVar()
  36.         self.n_password = tk.StringVar()
  37.         # Create Widgets
  38.         self.widgets()
  39.  
  40.     def generate_report(self):
  41.  
  42.         with sqlite3.connect('my.db') as db:
  43.             c = db.cursor()
  44.         name_select = ("SELECT * FROM shifts WHERE name = ? AND surname = ?;")
  45.         db_to_xls = c.execute(name_select, [(self.name.get()), (self.surname.get())])
  46.  
  47.         wb = Workbook('moje_zmiany.xlsx')
  48.         ws = wb.add_worksheet()
  49.  
  50.         for i, row in enumerate(db_to_xls):
  51.             for j, value in enumerate(row):
  52.                 ws.write(i, j, value)
  53.  
  54.         wb.close()
  55.  
  56.         #todo everytime after generating - drop table before next month
  57.  
  58.     def register_day(self):
  59.  
  60.         date = str(datetime.date.today())
  61.  
  62.         with sqlite3.connect('my.db') as db:
  63.             c = db.cursor()
  64.  
  65.             c.execute("""CREATE TABLE IF NOT EXISTS shifts
  66.            (name TEXT,
  67.            surname TEXT,
  68.            date TEXT,
  69.            FOREIGN KEY (name) REFERENCES user(name),
  70.            FOREIGN KEY (surname) REFERENCES user(surname));""")
  71.  
  72.  
  73.             saving_date = ("""INSERT INTO shifts (name, surname, date) VALUES (?, ?, ?)""")
  74.             c.execute(saving_date, ((self.name.get()), (self.surname.get()), date))
  75.  
  76.         db.commit()
  77.         c.close()
  78.         db.close()
  79.         self.generate_report()
  80.  
  81.         ms.showinfo('Zapis zmiany', 'Data zapisana')
  82.         self.master.destroy()
  83.  
  84.  
  85.     # Login Function
  86.     def login(self):
  87.         # Establish Connection
  88.         with sqlite3.connect('my.db') as db:
  89.             c = db.cursor()
  90.  
  91.         # Find user If there is any take proper action
  92.         find_user = ('SELECT * FROM user WHERE username = ? and password = ?')
  93.         c.execute(find_user, [(self.username.get()), (self.password.get())])
  94.         result = c.fetchall()
  95.         if result:
  96.             [x.destroy() for x in self.master.slaves()]
  97.             temp1 = tk.Label(self.master.geometry('250x125'), text='Czy dziś jest twoja zmiana ' + self.username.get() + '?')
  98.             temp2 = tk.Button(self.master, text='OK', command= self.register_day)
  99.             temp1.pack(), temp2.pack()
  100.         else:
  101.             ms.showerror('Oops!', 'Username Not Found.')
  102.  
  103.     def new_user(self):
  104.         # Establish Connection
  105.         with sqlite3.connect('my.db') as db:
  106.             c = db.cursor()
  107.  
  108.         # Find Existing username if any take proper action
  109.         find_user = ("SELECT DISTINCT username, name, surname FROM user WHERE username = ? and name = ? and surname = ? ")
  110.         c.execute(find_user, [(self.n_username.get()), (self.name.get()), (self.surname.get())])
  111.         if c.fetchall():
  112.             ms.showerror('Error!', 'Username Taken Try a Diffrent One.')
  113.         else:
  114.             ms.showinfo('Success!', 'Account Created!')
  115.             self.log()
  116.         # Create New Account
  117.             insert = ("INSERT INTO user (username, name, surname, password) VALUES(?, ?, ?, ?)")
  118.             c.execute(insert, [(self.n_username.get()), (self.name.get()), (self.surname.get()), (self.n_password.get())])
  119.             db.commit()
  120.  
  121.  
  122.  
  123.     def log(self):
  124.         self.username.set('')
  125.         self.password.set('')
  126.         self.crf.pack_forget()
  127.         self.head['text'] = 'LOGIN'
  128.         self.logf.pack()
  129.  
  130.     def cr(self):
  131.         self.n_username.set('')
  132.         self.name.set('')
  133.         self.surname.set('')
  134.         self.n_password.set('')
  135.         self.logf.pack_forget()
  136.         self.head['text'] = 'Create Account'
  137.         self.crf.pack()
  138.  
  139.     # Draw Widgets
  140.     def widgets(self):
  141.         self.head = tk.Label(self.master, text='LOGIN', font=('', 35), pady=10)
  142.         self.head.pack()
  143.         self.logf = tk.Frame(self.master, padx=10, pady=10)
  144.         tk.Label(self.logf, text='Username: ', font=('', 20), pady=5, padx=5).grid(sticky='W')
  145.         tk.Entry(self.logf, textvariable=self.username, bd=5, font=('', 15)).grid(row=0, column=1)
  146.         tk.Label(self.logf, text='Password: ', font=('', 20), pady=5, padx=5).grid(sticky='W')
  147.         tk.Entry(self.logf, textvariable=self.password, bd=5, font=('', 15), show='*').grid(row=1, column=1)
  148.         tk.Button(self.logf, text=' Login ', bd=3, font=('', 15), padx=5, pady=5, command=self.login).grid()
  149.         tk.Button(self.logf, text=' Create Account ', bd=3, font=('', 15), padx=5, pady=5, command=self.cr).grid(row=2,
  150.                                                                                                               column=1)
  151.         self.logf.pack()
  152.  
  153.         self.crf = tk.Frame(self.master, padx=10, pady=10)
  154.         tk.Label(self.crf, text='Username: ', font=('', 20), pady=5, padx=5).grid(sticky='W')
  155.         tk.Entry(self.crf, textvariable=self.n_username, bd=5, font=('', 15)).grid(row=0, column=1)
  156.         tk.Label(self.crf, text='Name: ', font=('', 20), pady=5, padx=5).grid(sticky='W')
  157.         tk.Entry(self.crf, textvariable=self.name, bd=5, font=('', 15)).grid(row=1, column=1)
  158.         tk.Label(self.crf, text='Surname: ', font=('', 20), pady=5, padx=5).grid(sticky='W')
  159.         tk.Entry(self.crf, textvariable=self.surname, bd=5, font=('', 15)).grid(row=2, column=1)
  160.         tk.Label(self.crf, text='Password: ', font=('', 20), pady=5, padx=5).grid(sticky='W')
  161.         tk.Entry(self.crf, textvariable=self.n_password, bd=5, font=('', 15), show='*').grid(row=3, column=1)
  162.         tk.Button(self.crf, text='Create Account', bd=3, font=('', 15), padx=5, pady=5, command=self.new_user).grid()
  163.         tk.Button(self.crf, text='Go to Login', bd=3, font=('', 15), padx=5, pady=5, command=self.log).grid(row=4,
  164.                                                                                                          column=1)
  165.  
  166.  
  167.  
  168.  
  169. if __name__ == '__main__':
  170.     root = tk.Tk()
  171.     root.title('Login Form')
  172.     Main(root)
  173.     root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement