· 8 years ago · Jun 24, 2018, 01:28 AM
1#!/usr/bin/python3
2
3# !/usr/bin/env python
4
5import sqlite3
6import socket
7import threading
8
9class server():
10 server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
11 connections = []
12 def __init__(self):
13 self.server.bind(('0.0.0.0',4000))
14 self.server.listen(3)
15
16
17 def Querry(self,conn,addr,mode):
18 while True:
19 self.conn.send(str.encode("Welcome"))
20 if self.check_identitiy():
21 if mode == "s":
22 self.conn.sendall(str.encode(str(Database.theitem[0])+str(Database.theitem[1])+str(Database.theitem[2])+str(Database.theitem[3])))
23 self.conn.sendall(str.encode(str('S')))
24
25 elif mode =="r":
26 print('retriving\n')
27 print(Database.retrive_item)
28 if len(Database.retrive_item) <=1:
29 break
30 else:
31 self.conn.sendall(str.encode(
32 str(Database.retrive_item[0][0]) + str(Database.retrive_item[0][1]) + str(Database.retrive_item[0][2]) + str(
33 Database.retrive_item[0][3])))
34 self.conn.sendall(str.encode(str('R')))
35 data=self.conn.recv(1024)
36 if data.decode('utf-8')=="done":
37 print('operation complete')
38 break
39
40 if not data:
41
42 self.conn.close()
43 break
44 else:
45 break
46 print("in while loop")
47 break
48 return
49
50
51 def check_identitiy(self):
52 data = self.conn.recv(1024)
53 value=data.decode('utf-8')
54 print(self.addr)
55 if value =="car111414":
56 self.car=self.addr[0]
57 return True
58 elif value=="ele111414":
59 self.elevator=self.addr[0]
60 return True
61 else:
62 self.conn.sendall(str.encode(str('sorry you ate no authorized ')))
63 return False
64
65
66 def run(self,mode):
67 while True:
68 self.conn,self.addr=self.server.accept()
69 Thread= threading.Thread(target=self.Querry,args=(self.conn,self.addr,mode))
70 Thread.daemon=True
71 Thread.start()
72 self.connections.append(self.conn)
73 print(self.connections)
74 break
75
76
77class Database():
78 db = sqlite3.connect('DataBase.db')
79 c = db.cursor()
80 theitem=[]
81
82 def __init__(self):
83
84 Database.c.execute(
85 'create table if not exists StorageData(id INTEGER,name text,describtion text,floor INTEGER,cell INTEGER,position text)')
86
87 Database.c.execute("SELECT * FROM StorageData ORDER BY id DESC LIMIT 1")
88 lastid = Database.c.fetchall()
89
90 try:
91 self.id=int(lastid[0][0])
92 except:
93 self.id = 0
94
95 def store(self):
96 self.name = input('item name: ')
97 self.describtion = input('item description: ')
98 self.floor = input('floor number: ')
99 self.cell = input('cell number: ')
100 self.position = input('position R/L: ')
101 self.id += 1
102 if self.detectavailability():
103 Database.c.execute('insert into StorageData (id ,name ,describtion ,floor ,cell ,position ) values (?,?,?,?,?,?)',
104 (self.id, self.name, self.describtion, self.floor, self.cell, self.position))
105 Database.db.commit()
106
107 else:
108 print('this place is occupied')
109 return
110 Database.theitem = [self.id, self.floor, self.cell, self.position]
111
112
113 def retrive(self):
114 Database.retrive_item=[]
115 self.itemname = input("please enter item name to search")
116 Database.c.execute("SELECT * FROM StorageData WHERE name = ?", (self.itemname,))
117 temp = Database.c.fetchall()
118 for x in range(0, len(temp)):
119 print("id : " + str(temp[x][0]) + " " + "name : " + temp[x][1])
120 if len(temp) == 0:
121 print('nothing found')
122 else:
123 self.idofitem = input("please enter the id of the item for retrival")
124 Database.c.execute("SELECT * FROM StorageData WHERE id = ?", (self.idofitem,))
125 #print( Database.c.fetchall())
126 Database.retrive_item=Database.c.fetchall()
127 Database.c.execute("DELETE from StorageData WHERE id = ?", (self.idofitem,))
128 Database.db.commit()
129
130 @staticmethod
131 def showdata():
132 Database.c = Database.db.execute('select * from StorageData order by id')
133 temp = Database.c.fetchall()
134 for x in range(0, len(temp)):
135 print("id : " + str(temp[x][0]) + " " + "name : " + str(temp[x][1]) + " " + "describtion : "
136 + str(temp[x][2]) + " " + "floor : " + str(temp[x][3]) + " " + "cell : " + str(temp[x][4])
137 + " " + "position : " + str(temp[x][5]))
138
139 def detectavailability(self):
140 Database.c.execute('select * from StorageData where floor = ? AND cell = ? and position= ?',(self.floor, self.cell, self.position))
141 tempdet = Database.c.fetchall()
142 if len(tempdet) == 0:
143 return True
144 else:
145 return False
146
147 def DELETE(self):
148 passW=input('please enter password')
149 if passW== "111414":
150 mode=input("type 1 for specific entry deletion or 2 to delete ENTIRE DATABASE!!")
151 if mode=='1':
152 self.delete_id = input("please enter the id of the item for deletion : \n --->")
153 Database.c.execute("SELECT * FROM StorageData WHERE id = ?", (self.delete_id,))
154 print(str(Database.c.fetchall())+' Item deleted')
155 Database.c.execute("DELETE from StorageData WHERE id = ?", (self.delete_id,))
156 Database.db.commit()
157 elif mode=='2':
158 Database.c.execute("DELETE from StorageData")
159 Database.db.commit()
160
161
162
163
164
165
166item = Database()
167server = server()
168while (True):
169 print('please choose what operation you want to execute: ')
170 choice = input("type ( s ) for store , ( r ) for retrive , ( data ) to show database, (delete) to delete and ( x ) to exit: \n---> ")
171 if choice == 's':
172 item.store()
173 server.run('s')
174 elif choice == 'r':
175 item.retrive()
176 server.run('r')
177 elif choice == 'data':
178 item.showdata()
179 elif choice=='delete':
180 item.DELETE()
181 elif choice == 'x':
182 break
183 else:
184 print('invalid choice')
185
186Database.db.close()