Ei kuvausta

views.py 5.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  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
  9. from .forms import StoreForm, ProductForm, PhotoFormSet, InlinePhotoFormset, ProductSKUForm
  10. from django.contrib import messages
  11. def index(request):
  12. return render(request, 'fruit/index.html')
  13. @login_required
  14. def mystore(request):
  15. stores = request.user.store_created.all().order_by("-created_at")
  16. products = stores[0].product_set.all().order_by("-created_at")
  17. if request.method == "POST":
  18. if 'createStore' in request.POST:
  19. print("create store")
  20. name = request.POST.get('name', None)
  21. store = Store()
  22. store.name = name
  23. store.created_by = request.user
  24. store.save()
  25. if 'updateStore' in request.POST:
  26. print("update store")
  27. storeForm = StoreForm(request.POST, instance=stores[0])
  28. if storeForm.is_valid():
  29. storeForm.save()
  30. return redirect("fruit:mystore")
  31. #print("Create Store")
  32. else:
  33. storeForm = StoreForm(instance=stores[0])
  34. #print(dir(request.user))
  35. return render(request, 'fruit/mystore_index.html', {'stores': stores, 'storeForm': storeForm, 'products': products, 'mystore': True})
  36. @login_required
  37. def product_index(request):
  38. stores = request.user.store_created.all().order_by("-created_at")
  39. products = stores[0].product_set.all().order_by("-created_at")
  40. return render(request, 'fruit/product_index.html', {'products': products, 'product': True})
  41. @login_required
  42. def create_product(request):
  43. stores = request.user.store_created.all().order_by("-created_at")
  44. form = ProductForm()
  45. form2 = InlinePhotoFormset()
  46. if request.method == "POST":
  47. form = ProductForm(request.POST)
  48. form2 = InlinePhotoFormset(request.POST, request.FILES)
  49. if form.is_valid() and form2.is_valid():
  50. instance1 = form.save(commit=False)
  51. instance1.created_by = request.user
  52. instance1.store = stores[0]
  53. instance1.save()
  54. instances = form2.save(commit=False)
  55. print(instances)
  56. for s in instances:
  57. s.product = instance1
  58. s.created_by = request.user
  59. s.save()
  60. messages.success(request, "Product Save")
  61. else:
  62. if form.errors:
  63. messages.error(request, form.errors)
  64. if form2.errors:
  65. messages.error(request, form2.errors)
  66. print("Invalid ")
  67. return redirect("fruit:product_edit", pk=int(instance1.id))
  68. return render(request, 'fruit/product_form.html', {'product': True, 'form': form, 'form2': form2 })
  69. @login_required
  70. def create_sku(request, pk):
  71. p = Product.objects.get(pk=pk)
  72. form = ProductSKUForm(initial={'product':p, 'created_by': request.user})
  73. if request.method == "POST":
  74. form = ProductSKUForm(request.POST)
  75. if form.is_valid():
  76. i = form.save()
  77. messages.success(request, "Product Save")
  78. return redirect("fruit:edit_sku", pk=i.pk)
  79. else:
  80. message.error(request, "SKU created failed")
  81. return redirect("fruit:create_sku", pk=int(pk))
  82. return render(request, 'fruit/sku_form.html', {'form': form})
  83. @login_required
  84. def edit_sku(request, pk):
  85. p = ProductSKU.objects.get(pk=pk)
  86. form = ProductSKUForm(instance=p)
  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})
  97. @login_required
  98. def product_edit(request, pk):
  99. stores = request.user.store_created.all().order_by("-created_at")
  100. product = Product.objects.get(pk=pk)
  101. form = ProductForm(instance = product)
  102. form2 = InlinePhotoFormset(instance = product)
  103. if request.method == "POST":
  104. form = ProductForm(request.POST)
  105. form2 = InlinePhotoFormset(request.POST, request.FILES, instance = product)
  106. if form.is_valid() and form2.is_valid():
  107. instance1 = form.save(commit=False)
  108. instance1.created_by = request.user
  109. instance1.store = stores[0]
  110. instance1.save()
  111. instances = form2.save(commit=True)
  112. '''
  113. print(instances)
  114. for s in instances:
  115. s.product = instance1
  116. s.save()
  117. '''
  118. messages.success(request, "Product Save")
  119. else:
  120. print("Invalid ")
  121. print(form.errors)
  122. print(form2.errors)
  123. if form.errors:
  124. messages.error(request, form.errors)
  125. if form2.errors:
  126. messages.error(request, form2.errors)
  127. return redirect("fruit:product_edit", pk = int(pk))
  128. return render(request, 'fruit/product_form.html', {'product': True, 'form': form, 'form2': form2, 'object': product })
  129. def signup(request):
  130. if request.method == 'POST':
  131. form = UserCreationForm(request.POST)
  132. if form.is_valid():
  133. form.save()
  134. username = form.cleaned_data.get('username')
  135. raw_password = form.cleaned_data.get('password1')
  136. user = authenticate(username=username, password=raw_password)
  137. login(request, user)
  138. return redirect('front:index')
  139. else:
  140. form = UserCreationForm()
  141. return render(request, 'fruit/signup.html', {'form': form})