Нема описа

views.py 16KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486
  1. #from django.shortcuts import render
  2. from django.shortcuts import render, redirect
  3. # Create your views here.
  4. from django.contrib.auth import login, authenticate
  5. from django.contrib.auth.forms import UserCreationForm
  6. from django.urls import reverse
  7. from django.contrib.auth.decorators import login_required
  8. from fruit.models import Store, Product, Photo, ProductSKU, Sale, Inbox, Vendor, VendorProduct
  9. from .forms import StoreForm, ProductForm, InboxForm, SaleForm, PhotoFormSet,VendorFilter, InlinePhotoFormset, ProductSKUForm, ProductFilter, SaleFilter, InboxFilter, VendorForm, VendorOrderForm, VendorOrderFilter, VendorOrder, InlineVendorProductFormset, VendorProductForm
  10. from django.contrib import messages
  11. from django.core.paginator import Paginator
  12. def index(request):
  13. return render(request, 'fruit/index.html')
  14. @login_required
  15. def mystore(request):
  16. stores = request.user.store_created.all().order_by("-created_at")
  17. products = stores[0].product_set.all().order_by("-created_at")
  18. if request.method == "POST":
  19. if 'createStore' in request.POST:
  20. print("create store")
  21. name = request.POST.get('name', None)
  22. store = Store()
  23. store.name = name
  24. store.created_by = request.user
  25. store.save()
  26. if 'updateStore' in request.POST:
  27. print("update store")
  28. storeForm = StoreForm(request.POST, instance=stores[0])
  29. if storeForm.is_valid():
  30. storeForm.save()
  31. return redirect("fruit:mystore")
  32. #print("Create Store")
  33. else:
  34. storeForm = StoreForm(instance=stores[0])
  35. #print(dir(request.user))
  36. return render(request, 'fruit/mystore_index.html', {'stores': stores, 'storeForm': storeForm, 'products': products, 'mystore': True})
  37. @login_required
  38. def product_index(request):
  39. stores = request.user.store_created.all().order_by("-created_at")
  40. products = stores[0].product_set.all().order_by("-created_at")
  41. f = ProductFilter(request.GET, queryset=products)
  42. paginator = Paginator(f.qs, 25)
  43. page_number = request.GET.get('page')
  44. page_obj = paginator.get_page(page_number)
  45. return render(request, 'fruit/product_index.html', {'products': products, 'product': True, 'page_obj': page_obj, 'filter': f})
  46. @login_required
  47. def sale_index(request):
  48. stores = request.user.store_created.all().order_by("-created_at")
  49. o_qs = stores[0].sale_set.all().order_by("-created_at")
  50. f = SaleFilter(request.GET, queryset=o_qs)
  51. paginator = Paginator(f.qs, 25)
  52. page_number = request.GET.get('page')
  53. page_obj = paginator.get_page(page_number)
  54. return render(request, 'fruit/sale_index.html', {'o_qs': o_qs, 'sale_active': True, 'page_obj': page_obj, 'filter': f})
  55. @login_required
  56. def create_product(request):
  57. stores = request.user.store_created.all().order_by("-created_at")
  58. form = ProductForm()
  59. form2 = InlinePhotoFormset()
  60. if request.method == "POST":
  61. form = ProductForm(request.POST)
  62. form2 = InlinePhotoFormset(request.POST, request.FILES)
  63. if form.is_valid() and form2.is_valid():
  64. instance1 = form.save(commit=False)
  65. instance1.created_by = request.user
  66. instance1.store = stores[0]
  67. instance1.save()
  68. instances = form2.save(commit=False)
  69. print(instances)
  70. for s in instances:
  71. s.product = instance1
  72. s.created_by = request.user
  73. s.save()
  74. messages.success(request, "Product Save")
  75. else:
  76. if form.errors:
  77. messages.error(request, form.errors)
  78. if form2.errors:
  79. messages.error(request, form2.errors)
  80. print("Invalid ")
  81. return redirect("fruit:product_edit", pk=int(instance1.id))
  82. return render(request, 'fruit/product_form.html', {'product': True, 'form': form, 'form2': form2 })
  83. @login_required
  84. def create_sku(request, pk):
  85. p = Product.objects.get(pk=pk)
  86. form = ProductSKUForm(initial={'product':p, 'created_by': request.user})
  87. if request.method == "POST":
  88. form = ProductSKUForm(request.POST)
  89. if form.is_valid():
  90. i = form.save()
  91. messages.success(request, "Product Save")
  92. return redirect("fruit:edit_sku", pk=i.pk)
  93. else:
  94. messages.error(request, form.errors)
  95. return redirect("fruit:create_sku", pk=int(pk))
  96. return render(request, 'fruit/sku_form.html', {'form': form, 'pid': p.pk})
  97. @login_required
  98. def edit_sku(request, pk):
  99. p = ProductSKU.objects.get(pk=pk)
  100. p0 = p.product
  101. form = ProductSKUForm(instance=p)
  102. if request.method == "POST":
  103. form = ProductSKUForm(request.POST)
  104. if form.is_valid():
  105. i = form.save()
  106. messages.success(request, "Product Save")
  107. return redirect("fruit:edit_sku", pk=i.pk)
  108. else:
  109. message.error(request, "SKU created failed")
  110. return redirect("fruit:create_sku", pk=int(pk))
  111. return render(request, 'fruit/sku_form.html', {'form': form, 'pid': p0.pk})
  112. @login_required
  113. def product_edit(request, pk):
  114. stores = request.user.store_created.all().order_by("-created_at")
  115. product = Product.objects.get(pk=pk)
  116. form = ProductForm(instance = product)
  117. form2 = InlinePhotoFormset(instance = product)
  118. if request.method == "POST":
  119. form = ProductForm(request.POST)
  120. form2 = InlinePhotoFormset(request.POST, request.FILES, instance = product)
  121. if form.is_valid() and form2.is_valid():
  122. instance1 = form.save(commit=False)
  123. instance1.created_by = request.user
  124. instance1.store = stores[0]
  125. instance1.save()
  126. instances = form2.save(commit=True)
  127. '''
  128. print(instances)
  129. for s in instances:
  130. s.product = instance1
  131. s.save()
  132. '''
  133. messages.success(request, "Product Save")
  134. else:
  135. print("Invalid ")
  136. print(form.errors)
  137. print(form2.errors)
  138. if form.errors:
  139. messages.error(request, form.errors)
  140. if form2.errors:
  141. messages.error(request, form2.errors)
  142. return redirect("fruit:product_edit", pk = int(pk))
  143. return render(request, 'fruit/product_form.html', {'product': True, 'form': form, 'form2': form2, 'obj': product })
  144. @login_required
  145. def sale_edit(request, pk):
  146. stores = request.user.store_created.all().order_by("-created_at")
  147. obj = Sale.objects.get(pk=pk)
  148. form = SaleForm(instance = obj)
  149. if request.method == "POST":
  150. form = SaleForm(request.POST)
  151. if form.is_valid():
  152. instance1 = form.save()
  153. '''
  154. print(instances)
  155. for s in instances:
  156. s.product = instance1
  157. s.save()
  158. '''
  159. messages.success(request, "Sale Save")
  160. else:
  161. print("Invalid ")
  162. if form.errors:
  163. messages.error(request, form.errors)
  164. return redirect("fruit:sale_edit", pk = int(pk))
  165. return render(request, 'fruit/sale_form.html', {'sale_active': True, 'form': form, 'object': obj})
  166. @login_required
  167. def inbox_index(request):
  168. stores = request.user.store_created.all().order_by("-created_at")
  169. o_qs = stores[0].inbox_set.all().order_by("-created_at")
  170. f = InboxFilter(request.GET, queryset=o_qs)
  171. paginator = Paginator(f.qs, 25)
  172. page_number = request.GET.get('page')
  173. page_obj = paginator.get_page(page_number)
  174. return render(request, 'fruit/inbox_index.html', {'o_qs': o_qs, 'inbox_active': True, 'page_obj': page_obj, 'filter': f})
  175. @login_required
  176. def inbox_edit(request, pk):
  177. stores = request.user.store_created.all().order_by("-created_at")
  178. obj = Inbox.objects.get(pk=pk)
  179. form = InboxForm(instance = obj)
  180. if request.method == "POST":
  181. form = InboxForm(request.POST)
  182. if form.is_valid():
  183. instance1 = form.save()
  184. '''
  185. print(instances)
  186. for s in instances:
  187. s.product = instance1
  188. s.save()
  189. '''
  190. messages.success(request, "Sale Save")
  191. else:
  192. print("Invalid ")
  193. if form.errors:
  194. messages.error(request, form.errors)
  195. return redirect("fruit:sale_edit", pk = int(pk))
  196. return render(request, 'fruit/inbox_form.html', {'inbox_active': True, 'form': form, 'object': obj})
  197. @login_required
  198. def vendor_index(request):
  199. stores = request.user.store_created.all().order_by("-created_at")
  200. o_qs = stores[0].vendor_set.all().order_by("-created_at")
  201. f = VendorFilter(request.GET, queryset=o_qs)
  202. paginator = Paginator(f.qs, 25)
  203. page_number = request.GET.get('page')
  204. page_obj = paginator.get_page(page_number)
  205. return render(request, 'fruit/vendor_index.html', {'o_qs': o_qs, 'vendor_active': True, 'page_obj': page_obj, 'filter': f})
  206. @login_required
  207. def vendor_edit(request, pk):
  208. stores = request.user.store_created.all().order_by("-created_at")
  209. obj = Vendor.objects.get(pk=pk)
  210. form = VendorForm(instance = obj)
  211. form2 = InlineVendorProductFormset(instance = obj)
  212. for f in form2:
  213. f.fields['product'].queryset = stores[0].product_set.all().order_by("-created_at")
  214. if request.method == "POST":
  215. form = VendorForm(request.POST)
  216. form2 = InlineVendorProductFormset(request.POST, instance = obj)
  217. if form.is_valid() and form2.is_valid():
  218. instance1 = form.save()
  219. instance2 = form2.save(commit=False)
  220. for i in instance2:
  221. i.created_by = request.user
  222. i.save()
  223. '''
  224. print(instances)
  225. for s in instances:
  226. s.product = instance1
  227. s.save()
  228. '''
  229. messages.success(request, "Vendor Save")
  230. else:
  231. print("Invalid ")
  232. if form.errors:
  233. messages.error(request, form.errors)
  234. if form2.errors:
  235. messages.error(request, form2.errors)
  236. return redirect("fruit:vendor_edit", pk = int(pk))
  237. return render(request, 'fruit/vendor_form.html', {'vendor_active': True, 'form': form, 'obj': obj, 'form2': form2})
  238. @login_required
  239. def vendor_create(request):
  240. stores = request.user.store_created.all().order_by("-created_at")
  241. form = VendorForm()
  242. form.fields['products'].queryset = stores[0].product_set.all().order_by("-created_at")
  243. if request.method == "POST":
  244. form = VendorForm(request.POST)
  245. if form.is_valid():
  246. instance1 = form.save(commit=False)
  247. instance1.store = stores[0]
  248. instance1.created_by = request.user
  249. instance1.save()
  250. '''
  251. print(instances)
  252. for s in instances:
  253. s.product = instance1
  254. s.save()
  255. '''
  256. messages.success(request, "Sale Save")
  257. else:
  258. print("Invalid ")
  259. if form.errors:
  260. messages.error(request, form.errors)
  261. return redirect("fruit:vendor_edit", pk = instance1.pk)
  262. return render(request, 'fruit/vendor_form.html', {'vendor_active': True, 'form': form})
  263. @login_required
  264. def vendorproduct_create(request, pk):
  265. stores = request.user.store_created.all().order_by("-created_at")
  266. print(pk)
  267. vendor = Vendor.objects.get(pk=pk)
  268. form = VendorProductForm()
  269. form.fields['product'].queryset = stores[0].product_set.all().order_by("-created_at")
  270. if request.method == "POST":
  271. form = VendorProductForm(request.POST)
  272. if form.is_valid():
  273. instance1 = form.save(commit=False)
  274. instance1.store = stores[0]
  275. instance1.vendor = vendor
  276. instance1.created_by = request.user
  277. instance1.save()
  278. '''
  279. print(instances)
  280. for s in instances:
  281. s.product = instance1
  282. s.save()
  283. '''
  284. messages.success(request, "Sale Save")
  285. else:
  286. print("Invalid ")
  287. if form.errors:
  288. messages.error(request, form.errors)
  289. return redirect("fruit:vendorproduct_edit", pk = instance1.pk)
  290. return render(request, 'fruit/vendorproduct_form.html', {'vendor_active': True, 'form': form, 'vendor': vendor})
  291. @login_required
  292. def vendorproduct_edit(request, pk):
  293. stores = request.user.store_created.all().order_by("-created_at")
  294. obj = VendorProduct.objects.get(pk=pk)
  295. form = VendorProductForm(instance = obj)
  296. vendor = obj.vendor
  297. form.fields['product'].queryset = stores[0].product_set.all().order_by("-created_at")
  298. if request.method == "POST":
  299. form = VendorProductForm(request.POST)
  300. if form.is_valid():
  301. instance1 = form.save()
  302. '''
  303. print(instances)
  304. for s in instances:
  305. s.product = instance1
  306. s.save()
  307. '''
  308. messages.success(request, "Vendor Product Save")
  309. else:
  310. print("Invalid ")
  311. if form.errors:
  312. messages.error(request, form.errors)
  313. return redirect("fruit:vendorproduct_edit", pk = int(pk))
  314. return render(request, 'fruit/vendorproduct_form.html', {'vendor_active': True, 'form': form, 'obj': obj, 'vendor': vendor})
  315. #vendor order
  316. @login_required
  317. def vendororder_index(request):
  318. stores = request.user.store_created.all().order_by("-created_at")
  319. o_qs = stores[0].vendororder_set.all().order_by("-created_at")
  320. f = VendorOrderFilter(request.GET, queryset=o_qs)
  321. paginator = Paginator(f.qs, 25)
  322. page_number = request.GET.get('page')
  323. page_obj = paginator.get_page(page_number)
  324. return render(request, 'fruit/vendororder_index.html', {'o_qs': o_qs, 'vendor_active': True, 'page_obj': page_obj, 'filter': f})
  325. @login_required
  326. def vendororder_edit(request, pk):
  327. stores = request.user.store_created.all().order_by("-created_at")
  328. obj = VendorOrder.objects.get(pk=pk)
  329. form = VendorOrderForm(instance = obj)
  330. #form.fields['product'].queryset = stores[0].product_set.all().order_by("-created_at")
  331. if request.method == "POST":
  332. form = VendorOrderForm(request.POST)
  333. if form.is_valid():
  334. instance1 = form.save()
  335. '''
  336. print(instances)
  337. for s in instances:
  338. s.product = instance1
  339. s.save()
  340. '''
  341. messages.success(request, "Sale Save")
  342. else:
  343. print("Invalid ")
  344. if form.errors:
  345. messages.error(request, form.errors)
  346. return redirect("fruit:vendororder_edit", pk = int(pk))
  347. return render(request, 'fruit/vendororder_form.html', {'vendor_active': True, 'form': form, 'object': obj})
  348. @login_required
  349. def vendororder_create(request):
  350. stores = request.user.store_created.all().order_by("-created_at")
  351. form = VendorOrderForm()
  352. if request.method == "POST":
  353. form = VendorOrderForm(request.POST)
  354. if form.is_valid():
  355. instance1 = form.save(commit=False)
  356. instance1.store = stores[0]
  357. instance1.save()
  358. '''
  359. print(instances)
  360. for s in instances:
  361. s.product = instance1
  362. s.save()
  363. '''
  364. messages.success(request, "Vendor Order Save")
  365. return redirect("fruit:vendororder_edit", pk = instance1.pk)
  366. else:
  367. print("Invalid ")
  368. if form.errors:
  369. messages.error(request, form.errors)
  370. return render(request, 'fruit/vendororder_form.html', {'vendororder_active': True, 'form': form})
  371. def signup(request):
  372. if request.method == 'POST':
  373. form = UserCreationForm(request.POST)
  374. if form.is_valid():
  375. form.save()
  376. username = form.cleaned_data.get('username')
  377. raw_password = form.cleaned_data.get('password1')
  378. user = authenticate(username=username, password=raw_password)
  379. login(request, user)
  380. return redirect('front:index')
  381. else:
  382. form = UserCreationForm()
  383. return render(request, 'fruit/signup.html', {'form': form})