Skip to content

Commit 1816dc8

Browse files
committed
Added Manage Merchant User
1 parent edd39e1 commit 1816dc8

30 files changed

+337
-3
lines changed
206 Bytes
Binary file not shown.

DjangoEcommerce/urls.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,4 +42,9 @@
4242
path('sub_category_create',AdminViews.SubCategoriesCreate.as_view(),name="sub_category_create"),
4343
path('sub_category_update/<slug:pk>',AdminViews.SubCategoriesUpdate.as_view(),name="sub_category_update"),
4444

45+
#Merchant User
46+
path('merchant_create',AdminViews.MerchantUserCreateView.as_view(),name="merchant_create"),
47+
path('merchant_list',AdminViews.MerchantUserListView.as_view(),name="merchant_list"),
48+
path('merchant_update/<slug:pk>',AdminViews.MerchantUserUpdateView.as_view(),name="merchant_update"),
49+
4550
]+static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)+static(settings.STATIC_URL,document_root=settings.STATIC_ROOT)

DjangoEcommerceApp/AdminViews.py

Lines changed: 86 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
from django.shortcuts import render
22
from django.contrib.auth.decorators import login_required
33
from django.views.generic import ListView,CreateView,UpdateView,DetailView
4-
from DjangoEcommerceApp.models import Categories,SubCategories
4+
from DjangoEcommerceApp.models import Categories,SubCategories,CustomUser,MerchantUser
55
from django.contrib.messages.views import SuccessMessageMixin
6+
from django.core.files.storage import FileSystemStorage
7+
from django.contrib.messages.views import messages
8+
from django.urls import reverse
9+
from django.http import HttpResponseRedirect
610

711
@login_required(login_url="/admin/")
812
def admin_home(request):
@@ -41,3 +45,84 @@ class SubCategoriesUpdate(SuccessMessageMixin,UpdateView):
4145
fields="__all__"
4246
template_name="admin_templates/sub_category_update.html"
4347

48+
class MerchantUserListView(ListView):
49+
model=MerchantUser
50+
template_name="admin_templates/merchant_list.html"
51+
52+
class MerchantUserCreateView(SuccessMessageMixin,CreateView):
53+
template_name="admin_templates/merchant_create.html"
54+
model=CustomUser
55+
fields=["first_name","last_name","email","username","password"]
56+
57+
def form_valid(self,form):
58+
59+
#Saving Custom User Object for Merchant User
60+
user=form.save(commit=False)
61+
user.is_active=True
62+
user.user_type=3
63+
user.set_password(form.cleaned_data["password"])
64+
user.save()
65+
66+
#Saving Merchant user
67+
profile_pic=self.request.FILES["profile_pic"]
68+
fs=FileSystemStorage()
69+
filename=fs.save(profile_pic.name,profile_pic)
70+
profile_pic_url=fs.url(filename)
71+
72+
user.merchantuser.profile_pic=profile_pic_url
73+
user.merchantuser.company_name=self.request.POST.get("company_name")
74+
user.merchantuser.gst_details=self.request.POST.get("gst_details")
75+
user.merchantuser.address=self.request.POST.get("address")
76+
is_added_by_admin=False
77+
78+
if self.request.POST.get("is_added_by_admin")=="on":
79+
is_added_by_admin=True
80+
81+
user.merchantuser.is_added_by_admin=is_added_by_admin
82+
user.save()
83+
messages.success(self.request,"Merchant User Created")
84+
return HttpResponseRedirect(reverse("merchant_list"))
85+
86+
class MerchantUserUpdateView(SuccessMessageMixin,UpdateView):
87+
template_name="admin_templates/merchant_update.html"
88+
model=CustomUser
89+
fields=["first_name","last_name","email","username","password"]
90+
91+
def get_context_data(self,**kwargs):
92+
context=super().get_context_data(**kwargs)
93+
merchantuser=MerchantUser.objects.get(auth_user_id=self.object.pk)
94+
context["merchantuser"]=merchantuser
95+
return context
96+
97+
def form_valid(self,form):
98+
99+
#Saving Custom User Object for Merchant User
100+
user=form.save(commit=False)
101+
user.set_password(form.cleaned_data["password"])
102+
user.save()
103+
104+
#Saving Merchant user
105+
merchantuser=MerchantUser.objects.get(auth_user_id=user.id)
106+
if self.request.FILES.get("profile_pic",False):
107+
profile_pic=self.request.FILES["profile_pic"]
108+
fs=FileSystemStorage()
109+
filename=fs.save(profile_pic.name,profile_pic)
110+
profile_pic_url=fs.url(filename)
111+
merchantuser.profile_pic=profile_pic_url
112+
113+
merchantuser.company_name=self.request.POST.get("company_name")
114+
merchantuser.gst_details=self.request.POST.get("gst_details")
115+
merchantuser.address=self.request.POST.get("address")
116+
is_added_by_admin=False
117+
118+
if self.request.POST.get("is_added_by_admin")=="on":
119+
is_added_by_admin=True
120+
121+
merchantuser.is_added_by_admin=is_added_by_admin
122+
merchantuser.save()
123+
messages.success(self.request,"Merchant User Updated")
124+
return HttpResponseRedirect(reverse("merchant_list"))
125+
126+
127+
128+
2.56 KB
Binary file not shown.
72 Bytes
Binary file not shown.
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Generated by Django 3.1.7 on 2021-04-09 11:28
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('DjangoEcommerceApp', '0001_initial'),
10+
]
11+
12+
operations = [
13+
migrations.AddField(
14+
model_name='merchantuser',
15+
name='is_added_by_admin',
16+
field=models.BooleanField(default=False),
17+
),
18+
]
Binary file not shown.

DjangoEcommerceApp/models.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,9 @@ class MerchantUser(models.Model):
2626
company_name=models.CharField(max_length=255)
2727
gst_details=models.CharField(max_length=255)
2828
address=models.TextField()
29+
is_added_by_admin=models.BooleanField(default=False)
2930
created_at=models.DateTimeField(auto_now_add=True)
31+
objects=models.Manager()
3032

3133

3234
class CustomerUser(models.Model):

DjangoEcommerceApp/templates/admin_templates/base_template.html

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@
3030
ul.errorlist{
3131
margin:0px;
3232
}
33+
.no-margin{
34+
margin:0px;
35+
}
3336
</style>
3437
<!-- /END GA --></head>
3538

DjangoEcommerceApp/templates/admin_templates/category_list.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
</div>
2626
<div class="article-details">
2727
<p>{{ category.description }}</p>
28-
<p>Url Slug : {{ category.url_slug }}</p>
28+
<p><span class="badge badge-warning">Url Slug : {{ category.url_slug }}</span></p>
2929
<div class="article-cta">
3030
<label class="custom-switch mt-2" style="float:left">
3131
<input type="checkbox" name="custom-switch-checkbox" class="custom-switch-input" {% if category.is_active == 1 %}checked{% endif %}>

0 commit comments

Comments
 (0)