Keine Beschreibung

views.py 20KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675
  1. from django.shortcuts import render, redirect
  2. from django.contrib.auth.decorators import login_required
  3. from pos.pos import PosSys
  4. from pos.plot import PlotSys
  5. from .utils import uiContext
  6. from django.contrib import messages
  7. from pos.forms import CodeForm
  8. import plotly.graph_objects as go
  9. import numpy as np
  10. from base64 import b64encode
  11. from plotly.offline import plot
  12. np.random.seed(1)
  13. N = 100
  14. x = np.random.rand(N)
  15. y = np.random.rand(N)
  16. colors = np.random.rand(N)
  17. sz = np.random.rand(N) * 30
  18. fig = go.Figure()
  19. fig.add_trace(go.Scatter(
  20. x=x,
  21. y=y,
  22. mode="markers",
  23. marker=go.scatter.Marker(
  24. size=sz,
  25. color=colors,
  26. opacity=0.6,
  27. colorscale="Viridis"
  28. )
  29. ))
  30. img_bytes = fig.to_image(format="png")
  31. encoding = b64encode(img_bytes).decode()
  32. img_b64 = "data:image/png;base64," + encoding
  33. gantt_plot = plot(fig, output_type="div")
  34. @login_required
  35. def index(request):
  36. img = img_b64
  37. return render(request, 'pos/index.html', {'img': img})
  38. @login_required
  39. def admin(request):
  40. print(type(request))
  41. request.tum = "Hello"
  42. print("xxx")
  43. print(request.tum)
  44. ctx = uiContext(request.user, ['admin_menu1', 'admin_menu2'])
  45. img = img_b64
  46. plot = PlotSys(None)
  47. pie = plot.pieChart()
  48. form = CodeForm()
  49. return render(request, 'pos/admin.html', {'img': img, 'chart': gantt_plot, 'pie': pie, 'form': form})
  50. @login_required
  51. def adminOrderList(request):
  52. orderSys = request.pos.orderSys
  53. #orders = orderSys.list()
  54. filters, pageObj = orderSys.filter(request)
  55. displayList = orderSys.displayList
  56. if request.method == "POST":
  57. print(request.POST.getlist("ids[]"))
  58. return render(request, 'pos/adminOrderList.html',{
  59. #'orders': orders,
  60. 'filters': filters,
  61. 'displayList': displayList,
  62. 'pageObj': pageObj
  63. })
  64. @login_required
  65. def adminOrderCreate(request):
  66. orderSys = request.pos.orderSys
  67. form = orderSys.form()
  68. if request.method == "POST":
  69. form = orderSys.form(request=request)
  70. if form.is_valid():
  71. o = form.save()
  72. messages.success(request, 'Order Created')
  73. return redirect('pos:orderEdit', oid=o.id)
  74. else:
  75. messages.error(request, form.errors)
  76. return render(request, 'pos/adminOrderCreate.html', {'form': form})
  77. @login_required
  78. def adminOrderEdit(request, oid):
  79. orderSys = request.pos.orderSys
  80. form = orderSys.form(oid=int(oid))
  81. formset = orderSys.formset(oid=int(oid))
  82. if request.method == "POST":
  83. if 'delete' in request.POST:
  84. orderSys.delete(oid=int(oid))
  85. return redirect('pos:adminOrderList')
  86. form = orderSys.form(request=request, oid=int(oid))
  87. formset = orderSys.formset(request=request, oid=int(oid))
  88. if form.is_valid() and formset.is_valid():
  89. o = form.save()
  90. o2 = formset.save()
  91. messages.success(request, 'Order Created')
  92. return redirect('pos:orderEdit', oid=o.id)
  93. else:
  94. messages.error(request, form.errors)
  95. return render(request, 'pos/adminOrderEdit.html', {'form': form, 'formset': formset})
  96. @login_required
  97. def adminMenuList(request):
  98. sys = request.pos.menuSys
  99. filters, pageObj = sys.filter(request)
  100. displayList = sys.displayList
  101. if request.method == "POST":
  102. print(request.POST.getlist("ids[]"))
  103. return render(request, 'pos/adminMenuList.html',{
  104. #'orders': orders,
  105. 'filters': filters,
  106. 'displayList': displayList,
  107. 'pageObj': pageObj
  108. })
  109. @login_required
  110. def adminMenuCreate(request):
  111. sys = request.pos.menuSys
  112. form = sys.form()
  113. if request.method == "POST":
  114. form = sys.form(request=request)
  115. if form.is_valid():
  116. o = form.save(commit=False)
  117. o.store = request.pos.store
  118. o.save()
  119. messages.success(request, 'Menu Created')
  120. return redirect('pos:menuEdit', oid=o.id)
  121. else:
  122. messages.error(request, form.errors)
  123. return render(request, 'pos/adminMenuEdit.html', {'form': form})
  124. @login_required
  125. def adminMenuEdit(request, oid):
  126. sys = request.pos.menuSys
  127. form = sys.form(oid=int(oid))
  128. formset = sys.formset(oid=int(oid))
  129. formset2 = sys.formset2(oid=int(oid))
  130. formsets = {'Ingredient':formset, 'Files':formset2}
  131. if request.method == "POST":
  132. if 'delete' in request.POST:
  133. sys.delete(oid=int(oid))
  134. return redirect('pos:adminMenuList')
  135. form = sys.form(request=request, oid=int(oid))
  136. formset = sys.formset(request=request, oid=int(oid))
  137. formset2 = sys.formset2(request=request, oid=int(oid))
  138. if form.is_valid() and formset.is_valid() and formset2.is_valid():
  139. o = form.save()
  140. o2 = formset.save()
  141. o3 = formset2.save()
  142. messages.success(request, 'Menu updated')
  143. return redirect('pos:menuEdit', oid=o.id)
  144. else:
  145. messages.error(request, form.errors)
  146. return render(request, 'pos/adminMenuEdit.html', {'form': form, 'formsets': formsets})
  147. @login_required
  148. def adminBookingList(request):
  149. sys = request.pos.bookingSys
  150. filters, pageObj = sys.filter(request)
  151. displayList = sys.displayList
  152. if request.method == "POST":
  153. print(request.POST.getlist("ids[]"))
  154. return render(request, 'pos/adminBookingList.html',{
  155. #'orders': orders,
  156. 'filters': filters,
  157. 'displayList': displayList,
  158. 'pageObj': pageObj
  159. })
  160. @login_required
  161. def adminBookingCreate(request):
  162. sys = request.pos.bookingSys
  163. form = sys.form()
  164. if request.method == "POST":
  165. form = sys.form(request=request)
  166. if form.is_valid():
  167. o = form.save(commit=False)
  168. o.store = request.pos.store
  169. o.save()
  170. messages.success(request, 'Booking Created')
  171. return redirect('pos:bookingEdit', oid=o.id)
  172. else:
  173. messages.error(request, form.errors)
  174. return render(request, 'pos/adminBookingEdit.html', {'form': form})
  175. @login_required
  176. def adminBookingEdit(request, oid):
  177. sys = request.pos.bookingSys
  178. form = sys.form(oid=int(oid))
  179. if request.method == "POST":
  180. if 'delete' in request.POST:
  181. sys.delete(oid=int(oid))
  182. return redirect('pos:adminMenuList')
  183. form = sys.form(request=request, oid=int(oid))
  184. # formset = sys.formset(request=request, oid=int(oid))
  185. # formset2 = sys.formset2(request=request, oid=int(oid))
  186. # if form.is_valid() and formset.is_valid() and formset2.is_valid():
  187. if form.is_valid():
  188. o = form.save()
  189. # o2 = formset.save()
  190. # o3 = formset2.save()
  191. messages.success(request, 'Booking updated')
  192. return redirect('pos:bookingEdit', oid=o.id)
  193. else:
  194. messages.error(request, form.errors)
  195. return render(request, 'pos/adminBookingEdit.html', {'form': form,})
  196. @login_required
  197. def adminCustomerList(request):
  198. sys = request.pos.customerSys
  199. filters, pageObj = sys.filter(request)
  200. displayList = sys.displayList
  201. if request.method == "POST":
  202. print(request.POST.getlist("ids[]"))
  203. return render(request, 'pos/adminCustomerList.html',{
  204. #'orders': orders,
  205. 'filters': filters,
  206. 'displayList': displayList,
  207. 'pageObj': pageObj
  208. })
  209. @login_required
  210. def adminCustomerCreate(request):
  211. sys = request.pos.customerSys
  212. form = sys.form()
  213. if request.method == "POST":
  214. form = sys.form(request=request)
  215. if form.is_valid():
  216. o = form.save(commit=False)
  217. o.owner = request.user
  218. o.store = request.pos.store
  219. o.save()
  220. messages.success(request, 'Customer Created')
  221. return redirect('pos:customerEdit', oid=o.id)
  222. else:
  223. messages.error(request, form.errors)
  224. return render(request, 'pos/adminCustomerEdit.html', {'form': form})
  225. @login_required
  226. def adminCustomerEdit(request, oid):
  227. sys = request.pos.customerSys
  228. form = sys.form(oid=int(oid))
  229. if request.method == "POST":
  230. if 'delete' in request.POST:
  231. sys.delete(oid=int(oid))
  232. return redirect('pos:adminCustomerList')
  233. form = sys.form(request=request, oid=int(oid))
  234. # formset = sys.formset(request=request, oid=int(oid))
  235. # formset2 = sys.formset2(request=request, oid=int(oid))
  236. # if form.is_valid() and formset.is_valid() and formset2.is_valid():
  237. if form.is_valid():
  238. o = form.save()
  239. # o2 = formset.save()
  240. # o3 = formset2.save()
  241. messages.success(request, 'Customer updated')
  242. return redirect('pos:customerEdit', oid=o.id)
  243. else:
  244. messages.error(request, form.errors)
  245. return render(request, 'pos/adminCustomerEdit.html', {'form': form,})
  246. @login_required
  247. def adminUserList(request):
  248. sys = request.pos.userSys
  249. filters, pageObj = sys.filter(request)
  250. displayList = sys.displayList
  251. if request.method == "POST":
  252. print(request.POST.getlist("ids[]"))
  253. return render(request, 'pos/adminUserList.html',{
  254. #'orders': orders,
  255. 'filters': filters,
  256. 'displayList': displayList,
  257. 'pageObj': pageObj
  258. })
  259. @login_required
  260. def adminUserCreate(request):
  261. sys = request.pos.userSys
  262. form = sys.form()
  263. #profileForm = sys.formset()
  264. if request.method == "POST":
  265. form = sys.form(request=request)
  266. if form.is_valid():
  267. o = form.save(commit=False)
  268. o.save()
  269. o.profile.store = request.pos.store
  270. o.profile.save()
  271. messages.success(request, 'User Created')
  272. return redirect('pos:userEdit', oid=o.id)
  273. else:
  274. messages.error(request, form.errors)
  275. return render(request, 'pos/adminUserEdit.html', {'form': form})
  276. @login_required
  277. def adminUserEdit(request, oid):
  278. sys = request.pos.userSys
  279. form = sys.form2(oid=int(oid))
  280. profileForm = sys.formset(oid=int(oid))
  281. if request.method == "POST":
  282. if 'delete' in request.POST:
  283. sys.delete(oid=int(oid))
  284. return redirect('pos:adminUserList')
  285. form = sys.form2(request=request, oid=int(oid))
  286. profileForm = sys.formset(request=request, oid=int(oid))
  287. # formset = sys.formset(request=request, oid=int(oid))
  288. # formset2 = sys.formset2(request=request, oid=int(oid))
  289. # if form.is_valid() and formset.is_valid() and formset2.is_valid():
  290. if form.is_valid() and profileForm.is_valid():
  291. o = form.save()
  292. o2 = profileForm.save()
  293. # o2 = formset.save()
  294. # o3 = formset2.save()
  295. messages.success(request, 'User updated')
  296. return redirect('pos:userEdit', oid=o.id)
  297. else:
  298. messages.error(request, form.errors)
  299. return render(request, 'pos/adminUserEdit.html', {'form': form, 'formsets': { 'Profile': profileForm}})
  300. @login_required
  301. def adminPostList(request):
  302. sys = request.pos.postSys
  303. filters, pageObj = sys.filter(request)
  304. displayList = sys.displayList
  305. if request.method == "POST":
  306. print(request.POST.getlist("ids[]"))
  307. return render(request, 'pos/adminPostList.html',{
  308. #'orders': orders,
  309. 'filters': filters,
  310. 'displayList': displayList,
  311. 'pageObj': pageObj
  312. })
  313. @login_required
  314. def adminPostCreate(request):
  315. sys = request.pos.postSys
  316. form = sys.form()
  317. sf = sys.sideFields(form)
  318. if request.method == "POST":
  319. form = sys.form(request=request)
  320. if form.is_valid():
  321. o = form.save(commit=False)
  322. o.store = request.pos.store
  323. o.owner = request.user
  324. o.save()
  325. form.save_m2m()
  326. messages.success(request, 'Post Created')
  327. return redirect('pos:postEdit', oid=o.id)
  328. else:
  329. messages.error(request, form.errors)
  330. return render(request, 'pos/adminPostEdit.html', {'form': form, 'sideFields': sf})
  331. @login_required
  332. def adminPostEdit(request, oid):
  333. sys = request.pos.postSys
  334. form = sys.form(oid=int(oid))
  335. sf = sys.sideFields(form)
  336. formset = sys.formset(oid=int(oid))
  337. if request.method == "POST":
  338. if 'delete' in request.POST:
  339. sys.delete(oid=int(oid))
  340. return redirect('pos:adminPostList')
  341. form = sys.form(request=request, oid=int(oid))
  342. formset = sys.formset(request=request, oid=int(oid))
  343. # formset2 = sys.formset2(request=request, oid=int(oid))
  344. # if form.is_valid() and formset.is_valid() and formset2.is_valid():
  345. if form.is_valid() and formset.is_valid():
  346. o = form.save(commit=False)
  347. o.save()
  348. form.save_m2m()
  349. o2 = formset.save()
  350. # o3 = formset2.save()
  351. messages.success(request, 'Post updated')
  352. return redirect('pos:postEdit', oid=o.id)
  353. else:
  354. messages.error(request, form.errors)
  355. return render(request, 'pos/adminPostEdit.html', {'form': form,'formsets': {"Files":formset}, 'sideFields': sf})
  356. @login_required
  357. def adminKitchenList(request):
  358. return render(request, 'pos/adminKitchenList.html')
  359. @login_required
  360. def adminTableList(request):
  361. sys = request.pos.tableSys
  362. filters, pageObj = sys.filter(request)
  363. displayList = sys.displayList
  364. if request.method == "POST":
  365. print(request.POST.getlist("ids[]"))
  366. return render(request, 'pos/adminTableList.html',{
  367. #'orders': orders,
  368. 'filters': filters,
  369. 'displayList': displayList,
  370. 'pageObj': pageObj
  371. })
  372. @login_required
  373. def adminTableCreate(request):
  374. sys = request.pos.tableSys
  375. form = sys.form()
  376. if request.method == "POST":
  377. form = sys.form(request=request)
  378. if form.is_valid():
  379. o = form.save(commit=False)
  380. o.store = request.pos.store
  381. o.save()
  382. messages.success(request, 'Table Created')
  383. return redirect('pos:tableEdit', oid=o.id)
  384. else:
  385. messages.error(request, form.errors)
  386. return render(request, 'pos/adminTableEdit.html', {'form': form})
  387. @login_required
  388. def adminTableEdit(request, oid):
  389. sys = request.pos.tableSys
  390. form = sys.form(oid=int(oid))
  391. #formset = sys.formset(oid=int(oid))
  392. if request.method == "POST":
  393. if 'delete' in request.POST:
  394. sys.delete(oid=int(oid))
  395. return redirect('pos:adminTableList')
  396. form = sys.form(request=request, oid=int(oid))
  397. #formset = sys.formset(request=request, oid=int(oid))
  398. #if form.is_valid() and formset.is_valid():
  399. if form.is_valid():
  400. o = form.save()
  401. #o2 = formset.save()
  402. messages.success(request, 'Table updated')
  403. return redirect('pos:tableEdit', oid=o.id)
  404. else:
  405. messages.error(request, form.errors)
  406. return render(request, 'pos/adminTableEdit.html', {'form': form,})
  407. @login_required
  408. def adminMessageList(request):
  409. sys = request.pos.messageSys
  410. filters, pageObj = sys.filter(request)
  411. displayList = sys.displayList
  412. if request.method == "POST":
  413. print(request.POST.getlist("ids[]"))
  414. return render(request, 'pos/adminMessageList.html',{
  415. #'orders': orders,
  416. 'filters': filters,
  417. 'displayList': displayList,
  418. 'pageObj': pageObj
  419. })
  420. @login_required
  421. def adminMessageCreate(request):
  422. sys = request.pos.messageSys
  423. form = sys.form()
  424. if request.method == "POST":
  425. form = sys.form(request=request)
  426. if form.is_valid():
  427. o = form.save(commit=False)
  428. o.store = request.pos.store
  429. o.save()
  430. messages.success(request, 'Message Created')
  431. return redirect('pos:messageEdit', oid=o.id)
  432. else:
  433. messages.error(request, form.errors)
  434. return render(request, 'pos/adminMessageEdit.html', {'form': form})
  435. @login_required
  436. def adminMessageEdit(request, oid):
  437. sys = request.pos.messageSys
  438. form = sys.form(oid=int(oid))
  439. #formset = sys.formset(oid=int(oid))
  440. if request.method == "POST":
  441. if 'delete' in request.POST:
  442. sys.delete(oid=int(oid))
  443. return redirect('pos:messageList')
  444. form = sys.form(request=request, oid=int(oid))
  445. #formset = sys.formset(request=request, oid=int(oid))
  446. #if form.is_valid() and formset.is_valid():
  447. if form.is_valid():
  448. o = form.save()
  449. #o2 = formset.save()
  450. messages.success(request, 'Message updated')
  451. return redirect('pos:messageEdit', oid=o.id)
  452. else:
  453. messages.error(request, form.errors)
  454. return render(request, 'pos/adminMessageEdit.html', {'form': form,})
  455. @login_required
  456. def adminMarketing(request):
  457. return render(request, 'pos/adminMarketing.html')
  458. @login_required
  459. def adminCustomer(request):
  460. return render(request, 'pos/adminCustomer.html')
  461. @login_required
  462. def adminUI(request):
  463. sys = request.pos.uiSys
  464. return render(request, 'pos/adminUI.html')
  465. @login_required
  466. def adminStore(request):
  467. sys = request.pos.storeSys
  468. form = sys.form()
  469. formset = sys.formset()
  470. formset2 = sys.formset2()
  471. formsets = {'Store File': formset, 'Settings': formset2}
  472. if request.method == "POST":
  473. form = sys.form(request=request)
  474. formset = sys.formset(request=request)
  475. formset2 = sys.formset2(request=request)
  476. if form.is_valid() and formset.is_valid() and formset2.is_valid():
  477. o = form.save()
  478. o2 = formset.save()
  479. o3 = formset2.save()
  480. messages.success(request, 'Store Data Saved')
  481. return redirect('pos:adminStore')
  482. return render(request, 'pos/adminStore.html', {'form': form, 'formsets': formsets, 'formset2': formset2})
  483. @login_required
  484. def adminCode(request):
  485. sys = request.pos.codeSys
  486. form = sys.form()
  487. if request.method == "POST":
  488. form = sys.form(request=request)
  489. if form.is_valid():
  490. o = form.save()
  491. messages.success(request, 'Code Saved')
  492. return redirect('pos:adminCode')
  493. return render(request, 'pos/adminCode.html', {'form': form})
  494. @login_required
  495. def adminUIMenuList(request):
  496. sys = request.pos.uiSys
  497. filters, pageObj = sys.filter(request)
  498. displayList = sys.displayList
  499. primaryMenu = sys.menu('primary')
  500. footer1Menu = sys.menu('foooter1')
  501. footer2Menu = sys.menu('foooter2')
  502. if request.method == "POST":
  503. print(request.POST.getlist("ids[]"))
  504. return render(request, 'pos/adminUIMenuList.html',{
  505. #'orders': orders,
  506. 'filters': filters,
  507. 'displayList': displayList,
  508. 'pageObj': pageObj,
  509. 'primaryMenu': primaryMenu,
  510. 'footer1Menu': footer1Menu,
  511. 'footer2Menu': footer2Menu
  512. })
  513. @login_required
  514. def adminUIMenuCreate(request):
  515. sys = request.pos.uiSys
  516. form = sys.form()
  517. if request.method == "POST":
  518. form = sys.form(request=request)
  519. if form.is_valid():
  520. o = form.save(commit=False)
  521. o.store = request.pos.store
  522. o.save()
  523. messages.success(request, 'UIMenu Created')
  524. return redirect('pos:UIMenuEdit', oid=o.id)
  525. else:
  526. messages.error(request, form.errors)
  527. return render(request, 'pos/adminUIMenuEdit.html', {'form': form})
  528. @login_required
  529. def adminUIMenuEdit(request, oid):
  530. sys = request.pos.uiSys
  531. form = sys.form(oid=int(oid))
  532. #formset = sys.formset(oid=int(oid))
  533. if request.method == "POST":
  534. if 'delete' in request.POST:
  535. sys.delete(oid=int(oid))
  536. return redirect('pos:adminUIMenuList')
  537. form = sys.form(request=request, oid=int(oid))
  538. #formset = sys.formset(request=request, oid=int(oid))
  539. #if form.is_valid() and formset.is_valid():
  540. if form.is_valid():
  541. o = form.save()
  542. #o2 = formset.save()
  543. messages.success(request, 'UIMenu updated')
  544. return redirect('pos:UIMenuEdit', oid=o.id)
  545. else:
  546. messages.error(request, form.errors)
  547. return render(request, 'pos/adminUIMenuEdit.html', {'form': form,})