Нема описа

views.py 18KB

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