Bez popisu

views.py 8.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
  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
  9. from .forms import StoreForm, ProductForm, InboxForm, SaleForm, PhotoFormSet, InlinePhotoFormset, ProductSKUForm, ProductFilter, SaleFilter, InboxFilter
  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. message.error(request, "SKU created failed")
  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. def signup(request):
  198. if request.method == 'POST':
  199. form = UserCreationForm(request.POST)
  200. if form.is_valid():
  201. form.save()
  202. username = form.cleaned_data.get('username')
  203. raw_password = form.cleaned_data.get('password1')
  204. user = authenticate(username=username, password=raw_password)
  205. login(request, user)
  206. return redirect('front:index')
  207. else:
  208. form = UserCreationForm()
  209. return render(request, 'fruit/signup.html', {'form': form})