def featured_contributor_edit(request): user = getSowarStockUser(request.user) if user.type == "admin": contributors = models.Contributor.objects.filter(suspended=False) verified_contributors = list() for contributor in contributors: if contributor.is_verified(): verified_contributors.append(contributor) if request.method == "POST": for contributor in verified_contributors: contributor.featured = False contributor.save() cs = request.POST.getlist("contributors") if cs: for contributor in cs: c = get_object_or_404(models.Contributor, pk=contributor) c.featured = True c.save() messages.success( request, "Featured contributors list updated successfully") return HttpResponseRedirect("/admin/featured") return render( request, "ssw/admin/featured_contributor_edit.html", { "user": user, "contributors": verified_contributors, **showCorrectMenu(request.user) }) else: messages.error(request, "You are not authorized to view this page !") return HttpResponseRedirect("/")
def site_settings_main(request): user = getSowarStockUser(request.user) if user.type == "admin": settings = models.SiteSettings.objects.get(pk=1) form = forms.SiteSettingsForm(instance=settings) if request.method == "POST": form = forms.SiteSettingsForm(request.POST, request.FILES, instance=settings) if form.is_valid(): form.save() messages.success(request, "Settings updated successfully") else: messages.error( request, "An error occurred while trying to save the settings") return render( request, "ssw/admin/site_settings_main.html", { "user": user, "activeDashboardMenu": "site_settings", "settings": settings, "form": form, **showCorrectMenu(request.user) }) else: messages.error(request, "You are not authorized to view this page !") return HttpResponseRedirect("/")
def notifications_new(request): user = getSowarStockUser(request.user) if user.type == "admin": form = forms.NotificationForm() if request.method == "POST": recipients_type = request.POST.getlist("recipients")[0] if recipients_type == "contributors": recipients = models.SowarStockUser.objects.filter( type="contributor") elif recipients_type == "clients": recipients = models.SowarStockUser.objects.filter( type="client") else: recipients = request.POST.getlist("recipient") level = request.POST["level"] verb = request.POST["verb"] for r in recipients: user = get_object_or_404(models.SowarStockUser, pk=r) notify.send(request.user, recipient=user, level=level, verb=verb) messages.success(request, "Notification sent") return HttpResponseRedirect("/admin/notices") return render( request, "ssw/admin/notifications_new.html", { "user": user, "form": form, "activeDashboardMenu": "notifications", **showCorrectMenu(request.user) }) else: messages.error(request, "You are not authorized to view this page !") return HttpResponseRedirect("/")
def featured_product_edit(request): user = getSowarStockUser(request.user) if user.type == "admin": products = models.Product.objects.filter(status="approved") if request.method == "POST": for product in products: product.featured = False product.save() ps = request.POST.getlist("products") if ps: for product in ps: p = get_object_or_404(models.Product, pk=product) p.featured = True p.save() messages.success(request, "Featured products list updated successfully") return HttpResponseRedirect("/admin/featured") return render(request, "ssw/admin/featured_product_edit.html", { "user": user, "products": products, **showCorrectMenu(request.user) }) else: messages.error(request, "You are not authorized to view this page !") return HttpResponseRedirect("/")
def products_main(request): user = getSowarStockUser(request.user) if user.type == "admin": pending = models.Product.objects.filter(status="pending_approval") pending_admin = models.Product.objects.filter( status='pending_admin_approval') approved = models.Product.objects.filter(status="approved") rejected = models.Product.objects.filter(status="rejected") requested_to_archive = models.Product.objects.filter( requested_to_archive=True) archived = models.Product.objects.filter(status="archived") return render( request, "ssw/admin/products_main.html", { "user": user, "pending": pending, "pending_admin": pending_admin, "approved": approved, "rejected": rejected, "requested_to_archive": requested_to_archive, "archived": archived, "activeDashboardMenu": "products", **showCorrectMenu(request.user) }) else: messages.error(request, "You are not authorized to view this page !") return HttpResponseRedirect("/")
def payment_new(request, pk): user = getSowarStockUser(request.user) if user.type == "admin": earning = get_object_or_404(models.Earning, pk=pk) form = forms.PaymentForm() if request.method == "POST": form = forms.PaymentForm(request.POST, request.FILES) if form.is_valid(): payment = form.save(commit=False) payment.amount = earning.amount payment.earning = earning payment.save() messages.success(request, "Payment has been successfully made") # notify contributor and send email email_body = loader.render_to_string( "ssw/email_new_payment.html", {"payment": payment}) send_mail("عملية دفع جديدة لك", "", "Sowarstock", [payment.contributor.email], False, None, None, None, email_body) notify.send(request.user, recipient=payment.contributor, level="success", verb=_('You got paid ${}').format(payment.amount)) return HttpResponseRedirect("/fadmin/earnings") return render( request, "ssw/admin/payment_new.html", { "user": user, "earning": earning, "form": form, **showCorrectMenu(request.user) }) else: messages.error(request, "You are not authorized to view this page !") return HttpResponseRedirect("/")
def orders_main(request): user = getSowarStockUser(request.user) if user.type == "admin": orders = models.Order.objects.all() return render( request, "ssw/admin/orders_main.html", { "user": user, "orders": orders, "activeDashboardMenu": "orders", **showCorrectMenu(request.user) }) else: messages.error(request, "You are not authorized to view this page !") return HttpResponseRedirect("/")
def notifications_main(request): user = getSowarStockUser(request.user) if user.type == "admin": notifications = request.user.notifications.all() return render( request, "ssw/admin/notifications_main.html", { "user": user, "notifications": notifications, "activeDashboardMenu": "notifications", **showCorrectMenu(request.user) }) else: messages.error(request, "You are not authorized to view this page !") return HttpResponseRedirect("/")
def order_details(request, order_no): order = get_object_or_404(models.Order, order_no=order_no) user = getSowarStockUser(request.user) if user.type == "admin": return render( request, "ssw/admin/order_details.html", { "user": getSowarStockUser(request.user), "order": order, "activeDashboardMenu": "orders", **showCorrectMenu(request.user) }) else: messages.error(request, "You are not authorized to view this page !") return HttpResponseRedirect("/")
def payment_new(request): user = getSowarStockUser(request.user) if user.type == "financial_admin": form = forms.PaymentForm() if request.method == "POST": form = forms.PaymentForm(request.POST, request.FILES) if form.is_valid(): payment = form.save(commit=False) try: earnings = models.Earning.objects.filter( type="contributor", payment=None, contributor=payment.contributor) owed = earnings.aggregate(Sum('amount')) owed_amount = round(owed['amount__sum'], 2) except: owed_amount = 0 payment.amount = owed_amount payment.save() for earning in earnings: earning.payment = payment earning.save() messages.success(request, "Payment has been successfully made") # notify contributor and send email email_body = loader.render_to_string( "ssw/email_new_payment.html", {"payment": payment}) send_mail("عملية دفع جديدة لك", "", "Sowarstock", [payment.contributor.email], False, None, None, None, email_body) notify.send(request.user, recipient=payment.contributor, level="success", verb='You got paid ${}'.format(payment.amount)) return HttpResponseRedirect("/fadmin/earnings") return render( request, "ssw/fadmin/payment_new.html", { "user": user, "form": form, "activeDashboardMenu": "earnings", **showCorrectMenu(request.user) }) else: messages.error(request, "You are not authorized to view this page !") return HttpResponseRedirect("/")
def earnings_main(request): user = getSowarStockUser(request.user) if user.type == "financial_admin": searnings = models.Earning.objects.filter(type="sowarstock") cearnings = models.Earning.objects.filter(type="contributor") return render( request, "ssw/fadmin/earnings_main.html", { "user": user, "searnings": searnings, "cearnings": cearnings, "activeDashboardMenu": "earnings", **showCorrectMenu(request.user) }) else: messages.error(request, "You are not authorized to view this page !") return HttpResponseRedirect("/")
def featured_main(request): user = getSowarStockUser(request.user) if user.type == "admin": contributors = models.Contributor.objects.filter(featured=True) products = models.Product.objects.filter(featured=True) return render( request, "ssw/admin/featured_main.html", { "user": user, "contributors": contributors, "products": products, "activeDashboardMenu": "featured", **showCorrectMenu(request.user) }) else: messages.error(request, "You are not authorized to view this page !") return HttpResponseRedirect("/")
def requests_profile(request, pk): user = getSowarStockUser(request.user) if user.type == "admin": r = get_object_or_404(models.UserRequest, pk=pk) sample_products = models.SampleProduct.objects.filter(owner=r.owner) return render( request, "ssw/admin/requests_profile.html", { "user": user, "r": r, "sample_products": sample_products, "activeDashboardMenu": "requests", **showCorrectMenu(request.user) }) else: messages.error(request, "You are not authorized to view this page !") return HttpResponseRedirect("/")
def search_keywords_main(request): user = getSowarStockUser(request.user) if user.type == "admin": keywords = models.SearchKeyword.objects.all() synonyms = models.SearchKeywordSynonyms.objects.all() return render( request, "ssw/admin/search_keywords_main.html", { "user": user, "keywords": keywords, "synonyms": synonyms, "activeDashboardMenu": "keywords", **showCorrectMenu(request.user) }) else: messages.error(request, "You are not authorized to view this page !") return HttpResponseRedirect("/")
def collections_edit(request, pk): collection = get_object_or_404(models.Collection, pk=pk) user = getSowarStockUser(request.user) if user.type == "admin": if user == collection.owner: products = models.Product.objects.filter(status="approved") else: products = models.Product.objects.filter(owner=collection.owner, status="approved") if request.method == "POST": title = request.POST["title"] description = request.POST["description"] products_pks = request.POST.getlist("products") if title == "": messages.error(request, "Please choose a title for your collection") return HttpResponseRedirect( "/admin/collections/{}/edit".format(collection.pk)) if description == "": messages.error( request, "Please choose a description for your collection") return HttpResponseRedirect( "/admin/collections/{}/edit".format(collection.pk)) if not products_pks: messages.error(request, "Please select at least one product") return HttpResponseRedirect( "/admin/collections/{}/edit".format(collection.pk)) collection.title = title collection.description = description collection.products.clear() for product in products_pks: p = get_object_or_404(models.Product, pk=product) collection.products.add(p) collection.save() messages.success(request, "Collection updated successfully") return HttpResponseRedirect("/admin/collections") return render( request, "ssw/admin/collections_new.html", { "user": getSowarStockUser(request.user), "products": products, "collection": collection, "activeDashboardMenu": "collections", **showCorrectMenu(request.user) }) else: messages.error(request, "You are not authorized to view this page !") return HttpResponseRedirect("/")
def search_keyword_synonyms_new(request): user = getSowarStockUser(request.user) if user.type == "admin": form = forms.SearchKeywordSynonymsForm() if request.method == "POST": form = forms.SearchKeywordSynonymsForm(request.POST) if form.is_valid(): form.save() messages.success(request, "Word synonyms added successfully") return HttpResponseRedirect("/admin/search-keywords") return render( request, "ssw/admin/search_keyword_synonyms_new.html", { "user": user, "form": form, "activeDashboardMenu": "keywords", **showCorrectMenu(request.user) }) else: messages.error(request, "You are not authorized to view this page !") return HttpResponseRedirect("/")
def subcategories_new(request): user = getSowarStockUser(request.user) if user.type == "admin": form = forms.SubcategoryForm() if request.method == "POST": form = forms.SubcategoryForm(request.POST) if form.is_valid(): form.save() messages.success(request, "Subcategory updated") else: messages.error(request, "An error has occurred") return HttpResponseRedirect("/admin/categories") return render( request, "ssw/admin/subcategories_new.html", { "user": getSowarStockUser(request.user), "form": form, "activeDashboardMenu": "categories", **showCorrectMenu(request.user) }) else: messages.error(request, "You are not authorized to view this page !") return HttpResponseRedirect("/")
def reports_main(request): user = getSowarStockUser(request.user) if user.type == "admin": approved_queryset = models.Product.objects.filter( status="approved").values('reviewed_by').annotate( total=Count('reviewed_by')) rejected_queryset = models.Product.objects.filter( status="rejected").values('reviewed_by').annotate( total=Count('reviewed_by')) approved_list = list() rejected_list = list() for q in approved_queryset: pk = q['reviewed_by'] total = q['total'] approved = {} reviewer = models.SowarStockUser.objects.get(pk=pk) approved["reviewer"] = reviewer approved["total"] = total approved_list.append(approved) for q in rejected_queryset: pk = q['reviewed_by'] total = q['total'] rejected = {} reviewer = models.SowarStockUser.objects.get(pk=pk) rejected["reviewer"] = reviewer rejected["total"] = total rejected_list.append(rejected) return render( request, "ssw/admin/reports_main.html", { "user": user, "activeDashboardMenu": "reports", "approved_list": approved_list, "rejected_list": rejected_list, **showCorrectMenu(request.user) }) else: messages.error(request, "You are not authorized to view this page !") return HttpResponseRedirect("/")
def faqs_edit(request, pk): user = getSowarStockUser(request.user) if user.type == "admin": faq = get_object_or_404(models.Faq, pk=pk) form = forms.FaqForm(instance=faq) if request.method == "POST": form = forms.FaqForm(request.POST, instance=faq) if form.is_valid(): form.save() messages.success(request, "FAQ has been edit") else: messages.error(request, "FAQ has been added") return HttpResponseRedirect("/admin/faqs") return render( request, "ssw/admin/faqs_new.html", { "user": getSowarStockUser(request.user), "faq": faq, "form": form, "activeDashboardMenu": "faqs", **showCorrectMenu(request.user) }) else: messages.error(request, "You are not authorized to view this page !") return HttpResponseRedirect("/")
def legal_edit(request, pk): user = getSowarStockUser(request.user) if user.type == "admin": document = get_object_or_404(models.LegalDocument, pk=pk) form = forms.LegalDocumentForm(instance=document) if request.method == "POST": form = forms.LegalDocumentForm(request.POST, request.FILES, instance=document) if form.is_valid(): form.save() messages.success(request, "document updated") return HttpResponseRedirect("/admin/legal") return render( request, "ssw/admin/legal_edit.html", { "user": user, "document": document, "form": form, "activeDashboardMenu": "legal", **showCorrectMenu(request.user) }) else: messages.error(request, "You are not authorized to view this page !") return HttpResponseRedirect("/")
def categories_edit(request, pk): user = getSowarStockUser(request.user) if user.type == "admin": category = get_object_or_404(models.Category, pk=pk) form = forms.CategoryForm(instance=category) if request.method == "POST": form = forms.CategoryForm(request.POST, instance=category) if form.is_valid(): form.save() messages.success(request, "Category updated") else: messages.error(request, "An error has occurred") return HttpResponseRedirect("/admin/categories") return render( request, "ssw/admin/categories_new.html", { "user": user, "form": form, "category": category, "activeDashboardMenu": "categories", **showCorrectMenu(request.user) }) else: messages.error(request, "You are not authorized to view this page !") return HttpResponseRedirect("/")