· 5 years ago · Jun 07, 2020, 03:12 PM
1import sqlite3
2
3from kivy.app import App
4from kivy.uix.boxlayout import BoxLayout
5from kivy.lang import Builder
6from kivy.uix.button import Button
7from kivy.uix.textinput import TextInput
8from collections import OrderedDict
9from src.BillingKiv.utils.datatable import DataTable
10Builder.load_file('admin/admin.kv')
11class AdminWindow(BoxLayout):
12 def __init__(self, **kwargs):
13 super().__init__(**kwargs)
14 content = self.ids.scrn_product_contents
15 product = self.get_products()
16 producttable = DataTable(table=product)
17 content.add_widget(producttable)
18 def add_product_fields(self):
19 target = self.ids.ops_fields_p
20 target.clear_widgets()
21 crud_code = TextInput(hint_text = 'Product Code')
22 crud_name = TextInput(hint_text='Product Name')
23 crud_weight = TextInput(hint_text='Quantity')
24 crud_price = TextInput(hint_text='Price')
25 crud_submit = Button(text= 'Add',size_hint_x=None,width=100,on_release=lambda x:self.add_product(crud_code.text,crud_name.text,crud_weight.text,crud_price.text))
26 target.add_widget(crud_code)
27 target.add_widget(crud_name)
28 target.add_widget(crud_weight)
29 target.add_widget(crud_price)
30 target.add_widget(crud_submit)
31 def update_product_fields(self):
32 target = self.ids.ops_fields_p
33 target.clear_widgets()
34 crud_code = TextInput(hint_text='Product Code')
35 crud_name = TextInput(hint_text='Product Name')
36 crud_quantity = TextInput(hint_text='Quantity')
37 crud_price = TextInput(hint_text='Price')
38 crud_submit = Button(text='Update', size_hint_x=None,width=100,on_release=lambda x:self.update_product(crud_code.text,crud_name.text,crud_quantity.text,crud_price.text))
39 target.add_widget(crud_code)
40 target.add_widget(crud_name)
41 target.add_widget(crud_quantity)
42 target.add_widget(crud_price)
43 target.add_widget(crud_submit)
44 def add_product(self,crud_code,crud_name,crud_weight,crud_price):
45 task = (crud_code,crud_name,crud_weight,crud_price)
46 sql = ''' INSERT INTO products(productcode,productname,instock,price)
47 VALUES(?,?,?,?) '''
48 conn = sqlite3.connect('jdbc:sqlite:sqlite.db')
49 c = conn.cursor()
50 c.execute(sql,task)
51 conn.commit()
52 content = self.ids.scrn_product_contents
53 content.clear_widgets()
54 product = self.get_products()
55 producttable = DataTable(table=product)
56 content.add_widget(producttable)
57 conn.close()
58 def update_product(self,crud_code,crud_name,crud_quantity,crud_price):
59 sql = ''' Update products set productname = ?, instock = ?, price = ? where productcode = ?'''
60 columnValues = (crud_name,crud_quantity,crud_price,crud_code)
61 conn = sqlite3.connect('jdbc:sqlite:sqlite.db')
62 c = conn.cursor()
63 c.execute(sql, columnValues)
64 conn.commit()
65 content = self.ids.scrn_product_contents
66 content.clear_widgets()
67 product = self.get_products()
68 producttable = DataTable(table=product)
69 content.add_widget(producttable)
70 conn.close()
71
72 def remove_product_fields(self):
73 target = self.ids.ops_fields_p
74 target.clear_widgets()
75 crud_code = TextInput(hint_text='Product Code')
76 crud_submit = Button(text='Remove',size_hint_x=None,width=100,on_release=lambda x:self.remove_product(crud_code.text))
77 target.add_widget(crud_code)
78 target.add_widget(crud_submit)
79 def remove_product(self,crud_code):
80 sql = '''DELETE FROM products
81 WHERE productcode = ?'''
82 columnValues = (crud_code)
83 conn = sqlite3.connect('jdbc:sqlite:sqlite.db')
84 c = conn.cursor()
85 c.execute(sql,(columnValues,))
86 conn.commit()
87 content = self.ids.scrn_product_contents
88 content.clear_widgets()
89 product = self.get_products()
90 producttable = DataTable(table=product)
91 content.add_widget(producttable)
92 conn.close()
93 def get_products(self):
94 sql_create_projects_table = """ CREATE TABLE IF NOT EXISTS products (
95 id integer PRIMARY KEY,
96 productcode text NOT NULL,
97 productname text NOT NULL,
98 instock text ,
99 price text
100
101 ); """
102 conn = sqlite3.connect('jdbc:sqlite:sqlite.db')
103 c = conn.cursor()
104 c.execute(sql_create_projects_table)
105 takser = '''SELECT * FROM products'''
106 c.execute(takser)
107 _stocks = OrderedDict()
108 _stocks['product code'] = {}
109 _stocks['product name'] = {}
110 _stocks['product weight'] = {}
111 _stocks['price'] = {}
112 product_code = []
113 product_name = []
114 product_weight = []
115 price = []
116 rows = c.fetchall()
117 '''if (len(name) > 10):
118 name = name[:10] + '...'
119 '''
120 for j in rows:
121 product_code.append(j[1])
122 product_name.append(j[2])
123 product_weight.append(j[3])
124 price.append(j[4])
125 products_length = len(product_code)
126 idx = 0
127 while idx < products_length:
128 _stocks['product code'][idx] = product_code[idx]
129 _stocks['product name'][idx] = product_name[idx]
130 _stocks['product weight'][idx] = product_weight[idx]
131 _stocks['price'][idx] = price[idx]
132 idx += 1
133 return _stocks
134
135 def change_screen(self,instance):
136 if instance.text == 'Manage Users':
137 self.ids.scrn_mngr.current = 'scrn_content'
138 elif instance.text == 'Manage Products':
139 self.ids.scrn_mngr.current = 'scrn_product_content'
140 else:
141 self.ids.scrn_mngr.current = 'scrn_analysis'
142class AdminApp(App):
143 def build(self):
144 return AdminWindow()
145if __name__ == '__main__':
146 AdminApp().run()