Ejemplo n.º 1
0
def collections_main(request):
    user = getSowarStockUser(request.user)
    if user.type == "admin":
        collections = models.Collection.objects.all()
        return render(
            request, "ssw/admin/collections_main.html", {
                "user": getSowarStockUser(request.user),
                "collections": collections,
                "activeDashboardMenu": "collections",
                **showCorrectMenu(request.user)
            })
    else:
        messages.error(request, "You are not authorized to view this page !")
        return HttpResponseRedirect("/")
Ejemplo n.º 2
0
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("/")
Ejemplo n.º 3
0
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("/")
Ejemplo n.º 4
0
def product_reject(request, pk):
    user = getSowarStockUser(request.user)
    if user.type == "admin":
        if request.method == "POST":
            product = get_object_or_404(models.Product, pk=pk)
            rejection_reason = request.POST["rejection_reason"]
            rejection_note = request.POST["rejection_note"]
            product.status = "rejected"
            product.rejection_reason = rejection_reason
            product.rejection_note = rejection_note
            product.reviewed_by = user
            product.save()
            email_body = loader.render_to_string(
                "ssw/email_product_reject.html", {"product": product})
            send_mail("رفض عملك {}".format(product.public_id), "",
                      "Sowarstock", [product.owner.email], False, None, None,
                      None, email_body)
            notify.send(
                request.user,
                recipient=product.owner,
                level="error",
                verb=
                'Product {} has been rejected for the following reason: {}, {}'
                .format(product.public_id, rejection_reason, rejection_note))
            messages.success(request, "Product has been rejected")
            models.ActivityLog.objects.create(
                short_description="admin %s rejected product %s" %
                (user, product),
                owner=user)
            return HttpResponseRedirect("/admin/products")
        return HttpResponseRedirect("/admin/products")
    else:
        messages.error(request, "You are not authorized to view this page !")
        return HttpResponseRedirect("/")
Ejemplo n.º 5
0
def requests_approve(request, pk):
    user = getSowarStockUser(request.user)
    if user.type == "admin":
        r = get_object_or_404(models.UserRequest, pk=pk)
        r.status = "approved"
        r.save()
        if r.type == "new_contributor":
            r.owner.photo_id_verified = True
            r.owner.save()
            notify.send(request.user,
                        recipient=r.owner,
                        level="success",
                        verb=_('Your account has been verified'))
            email_body = loader.render_to_string(
                "ssw/email_account_verified.html", {"user": r.owner})
            send_mail("تهانينا. تم توثيق حسابك. ابدأ الآن", "", "Sowarstock",
                      [r.owner.email], False, None, None, None, email_body)
            models.ActivityLog.objects.create(
                short_description="admin %s approved user request %s" %
                (user, r),
                owner=user)
        messages.success(request, "Request has been approved")
        return HttpResponseRedirect("/admin/requests")
    else:
        messages.error(request, "You are not authorized to view this page !")
        return HttpResponseRedirect("/")
Ejemplo n.º 6
0
def product_approve(request, pk):
    user = getSowarStockUser(request.user)
    if user.type == "image_reviewer":
        product = get_object_or_404(models.Product, pk=pk)
        product.status = "approved"
        product.reviewed_by = user
        product.save()
        email_body = loader.render_to_string("ssw/email_product_accept.html",
                                             {"product": product})
        send_mail("قبول عملك {}".format(product.public_id), "", "Sowarstock",
                  [product.owner.email], False, None, None, None, email_body)
        notify.send(user,
                    recipient=product.owner,
                    level="success",
                    verb='Product {} has been approved'.format(
                        product.public_id))
        admin = models.SowarStockUser.objects.filter(type="admin")
        notify.send(request.user,
                    recipient=admin,
                    level="success",
                    verb='Product {} has been approved by {}'.format(
                        product.public_id, user.get_full_name()))
        messages.success(request, "Product has been approved")
        models.ActivityLog.objects.create(
            short_description="image reviewer %s approved product %s" %
            (user, product),
            owner=user)
        return HttpResponseRedirect("/reviewer/products")
    else:
        messages.error(request, "You are not authorized to view this page !")
        return HttpResponseRedirect("/")
Ejemplo n.º 7
0
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("/")
Ejemplo n.º 8
0
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("/")
Ejemplo n.º 9
0
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("/")
Ejemplo n.º 10
0
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("/")
Ejemplo n.º 11
0
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("/")
Ejemplo n.º 12
0
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("/")
Ejemplo n.º 13
0
def reviews_delete(request, pk):
    user = getSowarStockUser(request.user)
    if user.type == "admin":
        review = get_object_or_404(models.Review, pk=pk)
        review.delete()
        messages.success(request, "Review has been deleted")
        return HttpResponseRedirect("/admin/reviews")
    else:
        messages.error(request, "You are not authorized to view this page !")
        return HttpResponseRedirect("/")
Ejemplo n.º 14
0
def faqs_delete(request, pk):
    user = getSowarStockUser(request.user)
    if user.type == "admin":
        faq = get_object_or_404(models.Faq, pk=pk)
        faq.delete()
        messages.success(request, "FAQ has been deleted")
        return HttpResponseRedirect("/admin/faqs")
    else:
        messages.error(request, "You are not authorized to view this page !")
        return HttpResponseRedirect("/")
Ejemplo n.º 15
0
def collections_delete(request, pk):
    collection = get_object_or_404(models.Collection, pk=pk)
    user = getSowarStockUser(request.user)
    if user.type == "admin":
        collection.delete()
        messages.success(request, "Collection deleted")
        return HttpResponseRedirect("/admin/collections")
    else:
        messages.error(request, "You are not authorized to view this page !")
        return HttpResponseRedirect("/")
Ejemplo n.º 16
0
def search_keyword_synonyms_delete(request, pk):
    user = getSowarStockUser(request.user)
    if user.type == "admin":
        synonym = get_object_or_404(models.SearchKeywordSynonyms, pk=pk)
        synonym.delete()
        messages.success(request, "Word synonyms deleted successfully")
        return HttpResponseRedirect("/admin/search-keywords")
    else:
        messages.error(request, "You are not authorized to view this page !")
        return HttpResponseRedirect("/")
Ejemplo n.º 17
0
def subcategories_delete(request, pk):
    user = getSowarStockUser(request.user)
    if user.type == "admin":
        subcategory = get_object_or_404(models.SubCategory, pk=pk)
        subcategory.delete()
        messages.success(request, "Subcategory deleted")
        return HttpResponseRedirect("/admin/categories")
    else:
        messages.error(request, "You are not authorized to view this page !")
        return HttpResponseRedirect("/")
Ejemplo n.º 18
0
def pending_requests_count(request):
    if request.user.is_authenticated:
        user = getSowarStockUser(request.user)
        if user.type == "admin":
            count = models.UserRequest.objects.filter(
                status="pending_approval").count()
            return JsonResponse({"result": "success", "count": count})
        else:
            return JsonResponse({"result": "error", "msg": "no admin"})
    else:
        return JsonResponse({"result": "error", "msg": "no user"})
Ejemplo n.º 19
0
def pending_faqs_count(request):
    if request.user.is_authenticated:
        user = getSowarStockUser(request.user)
        if user.type == "admin":
            count = models.FaqPersonal.objects.filter(
                replier__isnull=True).count()
            return JsonResponse({"result": "success", "count": count})
        else:
            return JsonResponse({"result": "error", "msg": "no admin"})
    else:
        return JsonResponse({"result": "error", "msg": "no user"})
Ejemplo n.º 20
0
def unsuspend_account(request, username):
    user = getSowarStockUser(request.user)
    account = get_object_or_404(models.SowarStockUser, username=username)
    if user.type == "admin":
        account.suspended = False
        account.suspension_reason = None
        account.save()
        messages.success(request, "Account un-suspended")
        return HttpResponseRedirect("/admin/users")
    else:
        messages.error(request, "You are not authorized to view this page !")
        return HttpResponseRedirect("/")
Ejemplo n.º 21
0
def product_archive(request, pk):
    user = getSowarStockUser(request.user)
    if user.type == "admin":
        product = get_object_or_404(models.Product, pk=pk)
        product.status = "archived"
        product.requested_to_archive = False
        product.save()
        messages.success(request, "Product has been archived")
        return HttpResponseRedirect("/admin/products")
    else:
        messages.error(request, "You are not authorized to view this page !")
        return HttpResponseRedirect("/")
Ejemplo n.º 22
0
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("/")
Ejemplo n.º 23
0
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("/")
Ejemplo n.º 24
0
def legal_main(request):
    user = getSowarStockUser(request.user)
    if user.type == "admin":
        documents = models.LegalDocument.objects.all()
        return render(
            request, "ssw/admin/legal_main.html", {
                "user": user,
                "documents": documents,
                "activeDashboardMenu": "legal",
                **showCorrectMenu(request.user)
            })
    else:
        messages.error(request, "You are not authorized to view this page !")
        return HttpResponseRedirect("/")
Ejemplo n.º 25
0
def product_delete(request, pk):
    user = getSowarStockUser(request.user)
    if user.type == "admin":
        product = get_object_or_404(models.Product, pk=pk)
        models.ActivityLog.objects.create(
            short_description="admin %s deleted product %s" % (user, product),
            owner=user)
        delete_product_image(product)
        product.delete()
        messages.success(request, "Product has been deleted")
        return HttpResponseRedirect("/admin/products")
    else:
        messages.error(request, "You are not authorized to view this page !")
        return HttpResponseRedirect("/")
Ejemplo n.º 26
0
def reviews_undread_to_read(request):
    user = getSowarStockUser(request.user)
    if user.type == "contributor":
        reviews = models.Review.objects.filter(product__owner=user,
                                               read_by_product_owner=False)
        for review in reviews:
            review.read_by_product_owner = True
            review.save()
    elif user.type == "admin":
        reviews = models.Review.objects.filter(read_by_admin=False)
        for review in reviews:
            review.read_by_admin = True
            review.save()
    return JsonResponse({"result": "success"})
Ejemplo n.º 27
0
def users(request):
    user = getSowarStockUser(request.user)
    if user.type == "admin" or user.type == "customer_rep":
        users = models.SowarStockUser.objects.all()
        return render(
            request, "ssw/admin/users.html", {
                "user": user,
                "users": users,
                "activeDashboardMenu": "users",
                **showCorrectMenu(request.user)
            })
    else:
        messages.error(request, "You are not authorized to view this page !")
        return HttpResponseRedirect("/")
Ejemplo n.º 28
0
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("/")
Ejemplo n.º 29
0
def personal_faqs_reply(request, pk):
    user = getSowarStockUser(request.user)
    if user.type == "admin":
        if request.method == "POST":
            faq = get_object_or_404(models.FaqPersonal, pk=pk)
            user = get_object_or_404(models.SowarStockUser, pk=request.user.pk)
            answer = request.POST['answer']
            faq.answer = answer
            faq.replier = user
            faq.save()
            messages.success(request, "FAQ has been answered")
        return HttpResponseRedirect("/admin/faqs")
    else:
        messages.error(request, "You are not authorized to view this page !")
        return HttpResponseRedirect("/")
Ejemplo n.º 30
0
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("/")