Skip to content

Commit 75e9908

Browse files
committed
Added Add Product Page
1 parent 9277f5c commit 75e9908

19 files changed

+486
-30
lines changed
-800 Bytes
Binary file not shown.

DjangoEcommerce/urls.py

Lines changed: 2 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -18,33 +18,10 @@
1818
from DjangoEcommerceApp import views
1919
from DjangoEcommerceApp import AdminViews
2020
from django.conf.urls.static import static
21+
from django.urls import include
2122

2223
from DjangoEcommerce import settings
2324

2425
urlpatterns = [
25-
path('admin/', views.adminLogin,name="admin_login"),
26-
path('demo',views.demoPage),
27-
path('demoPage',views.demoPageTemplate),
28-
path('admin_login_process',views.adminLoginProcess,name="admin_login_process"),
29-
path('admin_logout_process',views.adminLogoutProcess,name="admin_logout_process"),
30-
31-
# PAGE FOR ADMIN
32-
path('admin_home',AdminViews.admin_home,name="admin_home"),
33-
34-
#CATEGORIES
35-
path('category_list',AdminViews.CategoriesListView.as_view(),name="category_list"),
36-
path('category_create',AdminViews.CategoriesCreate.as_view(),name="category_create"),
37-
path('category_update/<slug:pk>',AdminViews.CategoriesUpdate.as_view(),name="category_update"),
38-
39-
#SUBCATEGORIES
40-
41-
path('sub_category_list',AdminViews.SubCategoriesListView.as_view(),name="sub_category_list"),
42-
path('sub_category_create',AdminViews.SubCategoriesCreate.as_view(),name="sub_category_create"),
43-
path('sub_category_update/<slug:pk>',AdminViews.SubCategoriesUpdate.as_view(),name="sub_category_update"),
44-
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-
26+
path('admindashboard/',include("DjangoEcommerceApp.adminurls"))
5027
]+static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)+static(settings.STATIC_URL,document_root=settings.STATIC_ROOT)

DjangoEcommerceApp/AdminViews.py

Lines changed: 65 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
from django.shortcuts import render
22
from django.contrib.auth.decorators import login_required
3-
from django.views.generic import ListView,CreateView,UpdateView,DetailView
4-
from DjangoEcommerceApp.models import Categories,SubCategories,CustomUser,MerchantUser
3+
from django.views.generic import ListView,CreateView,UpdateView,DetailView,View
4+
from DjangoEcommerceApp.models import Categories,SubCategories,CustomUser,MerchantUser,Products,ProductAbout,ProductDetails,ProductMedia,ProductTransaction,ProductTags
55
from django.contrib.messages.views import SuccessMessageMixin
66
from django.core.files.storage import FileSystemStorage
77
from django.contrib.messages.views import messages
88
from django.urls import reverse
9-
from django.http import HttpResponseRedirect
9+
from django.http import HttpResponseRedirect,HttpResponse
1010
from django.db.models import Q
1111

1212
@login_required(login_url="/admin/")
@@ -183,4 +183,66 @@ def form_valid(self,form):
183183

184184

185185

186+
class ProductView(View):
187+
def get(self,request,*args,**kwargs):
188+
categories=Categories.objects.filter(is_active=1)
189+
categories_list=[]
190+
for category in categories:
191+
sub_category=SubCategories.objects.filter(is_active=1,category_id=category.id)
192+
categories_list.append({"category":category,"sub_category":sub_category})
193+
194+
merchant_users=MerchantUser.objects.filter(auth_user_id__is_active=True)
195+
196+
return render(request,"admin_templates/product_create.html",{"categories":categories_list,"merchant_users":merchant_users})
197+
198+
def post(self,request,*args,**kwargs):
199+
product_name=request.POST.get("product_name")
200+
brand=request.POST.get("brand")
201+
url_slug=request.POST.get("url_slug")
202+
sub_category=request.POST.get("sub_category")
203+
product_max_price=request.POST.get("product_max_price")
204+
product_discount_price=request.POST.get("product_discount_price")
205+
product_description=request.POST.get("product_description")
206+
added_by_merchant=request.POST.get("added_by_merchant")
207+
in_stock_total=request.POST.get("in_stock_total")
208+
media_type_list=request.POST.getlist("media_type[]")
209+
media_content_list=request.FILES.getlist("media_content[]")
210+
title_title_list=request.POST.getlist("title_title[]")
211+
title_details_list=request.POST.getlist("title_details[]")
212+
about_title_list=request.POST.getlist("about_title[]")
213+
product_tags=request.POST.get("product_tags")
214+
long_desc=request.POST.get("long_desc")
215+
216+
subcat_obj=SubCategories.objects.get(id=sub_category)
217+
merchant_user_obj=MerchantUser.objects.get(id=added_by_merchant)
218+
product=Products(product_name=product_name,in_stock_total=in_stock_total,url_slug=url_slug,brand=brand,subcategories_id=subcat_obj,product_description=product_description,product_max_price=product_max_price,product_discount_price=product_discount_price,product_long_description=long_desc,added_by_merchant=merchant_user_obj)
219+
product.save()
220+
221+
i=0
222+
for media_content in media_content_list:
223+
fs=FileSystemStorage()
224+
filename=fs.save(media_content.name,media_content)
225+
media_url=fs.url(filename)
226+
product_media=ProductMedia(product_id=product,media_type=media_type_list[i],media_content=media_url)
227+
product_media.save()
228+
i=i+1
229+
230+
j=0
231+
for title_title in title_title_list:
232+
product_details=ProductDetails(title=title_title,title_details=title_details_list[j],product_id=product)
233+
product_details.save()
234+
j=j+1
235+
236+
for about in about_title_list:
237+
product_about=ProductAbout(title=about,product_id=product)
238+
product_about.save()
239+
240+
product_tags_list=product_tags.split(",")
186241

242+
for product_tag in product_tags_list:
243+
product_tag_obj=ProductTags(product_id=product,title=product_tag)
244+
product_tag_obj.save()
245+
246+
product_transaction=ProductTransaction(product_id=product,transaction_type=1,transaction_product_count=in_stock_total,transaction_description="Intially Item Added in Stocks")
247+
product_transaction.save()
248+
return HttpResponse("OK")
2.42 KB
Binary file not shown.
2 KB
Binary file not shown.
-5 Bytes
Binary file not shown.

DjangoEcommerceApp/adminurls.py

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
"""DjangoEcommerce URL Configuration
2+
3+
The `urlpatterns` list routes URLs to views. For more information please see:
4+
https://docs.djangoproject.com/en/3.1/topics/http/urls/
5+
Examples:
6+
Function views
7+
1. Add an import: from my_app import views
8+
2. Add a URL to urlpatterns: path('', views.home, name='home')
9+
Class-based views
10+
1. Add an import: from other_app.views import Home
11+
2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
12+
Including another URLconf
13+
1. Import the include() function: from django.urls import include, path
14+
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
15+
"""
16+
from django.contrib import admin
17+
from django.urls import path
18+
from DjangoEcommerceApp import views
19+
from DjangoEcommerceApp import AdminViews
20+
from django.conf.urls.static import static
21+
22+
from DjangoEcommerce import settings
23+
24+
urlpatterns = [
25+
path('admin/', views.adminLogin,name="admin_login"),
26+
path('demo',views.demoPage),
27+
path('demoPage',views.demoPageTemplate),
28+
path('admin_login_process',views.adminLoginProcess,name="admin_login_process"),
29+
path('admin_logout_process',views.adminLogoutProcess,name="admin_logout_process"),
30+
31+
# PAGE FOR ADMIN
32+
path('admin_home',AdminViews.admin_home,name="admin_home"),
33+
34+
#CATEGORIES
35+
path('category_list',AdminViews.CategoriesListView.as_view(),name="category_list"),
36+
path('category_create',AdminViews.CategoriesCreate.as_view(),name="category_create"),
37+
path('category_update/<slug:pk>',AdminViews.CategoriesUpdate.as_view(),name="category_update"),
38+
39+
#SUBCATEGORIES
40+
41+
path('sub_category_list',AdminViews.SubCategoriesListView.as_view(),name="sub_category_list"),
42+
path('sub_category_create',AdminViews.SubCategoriesCreate.as_view(),name="sub_category_create"),
43+
path('sub_category_update/<slug:pk>',AdminViews.SubCategoriesUpdate.as_view(),name="sub_category_update"),
44+
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+
50+
#Products
51+
path('product_create',AdminViews.ProductView.as_view(),name="product_view")
52+
]
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# Generated by Django 3.1.7 on 2021-04-25 22:30
2+
3+
from django.db import migrations, models
4+
import django.db.models.deletion
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
('DjangoEcommerceApp', '0002_merchantuser_is_added_by_admin'),
11+
]
12+
13+
operations = [
14+
migrations.CreateModel(
15+
name='ProductDetails',
16+
fields=[
17+
('id', models.AutoField(primary_key=True, serialize=False)),
18+
('title', models.CharField(max_length=255)),
19+
('title_details', models.CharField(max_length=255)),
20+
('created_at', models.DateTimeField(auto_now_add=True)),
21+
('is_active', models.IntegerField(default=1)),
22+
('product_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='DjangoEcommerceApp.products')),
23+
],
24+
),
25+
migrations.CreateModel(
26+
name='ProductAbout',
27+
fields=[
28+
('id', models.AutoField(primary_key=True, serialize=False)),
29+
('title', models.CharField(max_length=255)),
30+
('created_at', models.DateTimeField(auto_now_add=True)),
31+
('is_active', models.IntegerField(default=1)),
32+
('product_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='DjangoEcommerceApp.products')),
33+
],
34+
),
35+
]
Binary file not shown.

DjangoEcommerceApp/models.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,15 +104,15 @@ class ProductTransaction(models.Model):
104104
created_at=models.DateTimeField(auto_now_add=True)
105105

106106

107-
class ProductDetails(models.CharField):
107+
class ProductDetails(models.Model):
108108
id=models.AutoField(primary_key=True)
109109
product_id=models.ForeignKey(Products,on_delete=models.CASCADE)
110110
title=models.CharField(max_length=255)
111111
title_details=models.CharField(max_length=255)
112112
created_at=models.DateTimeField(auto_now_add=True)
113113
is_active=models.IntegerField(default=1)
114114

115-
class ProductAbout(models.CharField):
115+
class ProductAbout(models.Model):
116116
id=models.AutoField(primary_key=True)
117117
product_id=models.ForeignKey(Products,on_delete=models.CASCADE)
118118
title=models.CharField(max_length=255)

0 commit comments

Comments
 (0)