└── ecommerce ├── static ├── css │ ├── test.js │ ├── test.css │ ├── phoneregister.css │ └── virtualregister.css ├── images │ └── bg.jpg └── assets │ ├── vendor │ ├── font-awesome │ │ └── fonts │ │ │ ├── FontAwesome.otf │ │ │ ├── fontawesome-webfont.eot │ │ │ ├── fontawesome-webfont.ttf │ │ │ ├── fontawesome-webfont.woff │ │ │ └── fontawesome-webfont.woff2 │ ├── owl.carousel │ │ ├── assets │ │ │ ├── ajax-loader.gif │ │ │ ├── owl.video.play.png │ │ │ ├── owl.theme.green.min.css │ │ │ ├── owl.theme.default.min.css │ │ │ ├── owl.theme.default.css │ │ │ ├── owl.theme.green.css │ │ │ ├── owl.carousel.min.css │ │ │ └── owl.carousel.css │ │ ├── LICENSE │ │ └── README.md │ ├── jquery.easing │ │ └── jquery.easing.min.js │ ├── superfish │ │ └── superfish.min.js │ ├── bootstrap │ │ └── css │ │ │ ├── bootstrap-reboot.min.css │ │ │ ├── bootstrap-reboot.rtl.min.css │ │ │ ├── bootstrap-reboot.rtl.css │ │ │ └── bootstrap-reboot.css │ ├── hoverIntent │ │ └── hoverIntent.js │ ├── php-email-form │ │ └── validate.js │ ├── aos │ │ └── aos.js │ └── venobox │ │ ├── venobox.min.js │ │ ├── venobox.min.css │ │ └── venobox.css │ └── js │ └── main.js ├── ecomapp ├── __init__.py ├── migrations │ ├── __init__.py │ ├── __pycache__ │ │ ├── __init__.cpython-37.pyc │ │ ├── __init__.cpython-38.pyc │ │ ├── __init__.cpython-39.pyc │ │ ├── 0001_initial.cpython-37.pyc │ │ ├── 0001_initial.cpython-38.pyc │ │ ├── 0001_initial.cpython-39.pyc │ │ ├── 0002_auto_20210122_1134.cpython-37.pyc │ │ ├── 0002_auto_20210122_1134.cpython-38.pyc │ │ ├── 0002_auto_20210122_1134.cpython-39.pyc │ │ ├── 0003_auto_20210122_1238.cpython-37.pyc │ │ ├── 0003_auto_20210122_1238.cpython-38.pyc │ │ └── 0003_auto_20210122_1238.cpython-39.pyc │ ├── 0003_auto_20210122_1238.py │ ├── 0002_auto_20210122_1134.py │ └── 0001_initial.py ├── tests.py ├── apps.py ├── __pycache__ │ ├── admin.cpython-37.pyc │ ├── admin.cpython-38.pyc │ ├── admin.cpython-39.pyc │ ├── apps.cpython-39.pyc │ ├── urls.cpython-37.pyc │ ├── urls.cpython-38.pyc │ ├── urls.cpython-39.pyc │ ├── views.cpython-37.pyc │ ├── views.cpython-38.pyc │ ├── views.cpython-39.pyc │ ├── __init__.cpython-37.pyc │ ├── __init__.cpython-38.pyc │ ├── __init__.cpython-39.pyc │ ├── models.cpython-37.pyc │ ├── models.cpython-38.pyc │ └── models.cpython-39.pyc ├── admin.py ├── urls.py ├── models.py └── views.py ├── ecommerce ├── __init__.py ├── __pycache__ │ ├── urls.cpython-37.pyc │ ├── urls.cpython-38.pyc │ ├── urls.cpython-39.pyc │ ├── wsgi.cpython-37.pyc │ ├── wsgi.cpython-38.pyc │ ├── wsgi.cpython-39.pyc │ ├── __init__.cpython-37.pyc │ ├── __init__.cpython-38.pyc │ ├── __init__.cpython-39.pyc │ ├── settings.cpython-37.pyc │ ├── settings.cpython-38.pyc │ └── settings.cpython-39.pyc ├── asgi.py ├── wsgi.py ├── urls.py └── settings.py ├── templates ├── about.html ├── paytm.html ├── test.html ├── login.html ├── contactus.html ├── signup.html ├── auth.html ├── tracker.html ├── paymentstatus.html ├── base.html ├── index.html └── checkout.html ├── db.sqlite3 ├── media └── shop │ └── images │ ├── threee.jpg │ ├── About_Us3x.png │ ├── Artboard__43x.png │ ├── Artboard__73x.png │ ├── clock-3179167.jpg │ ├── Screenshot_242.png │ ├── hipster-958805.jpg │ ├── wristwatch-407096.jpg │ ├── brown-shoes-1150071.jpg │ ├── wristwatch-407096_4hRuQXd.jpg │ └── wristwatch-407096_ahtkfzn.jpg ├── PayTm ├── __pycache__ │ ├── Checksum.cpython-37.pyc │ ├── Checksum.cpython-38.pyc │ └── Checksum.cpython-39.pyc └── Checksum.py └── manage.py /ecommerce/static/css/test.js: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ecommerce/ecomapp/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ecommerce/ecommerce/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ecommerce/static/css/test.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ecommerce/ecomapp/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ecommerce/templates/about.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} -------------------------------------------------------------------------------- /ecommerce/ecomapp/tests.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | 3 | # Create your tests here. 4 | -------------------------------------------------------------------------------- /ecommerce/db.sqlite3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/db.sqlite3 -------------------------------------------------------------------------------- /ecommerce/static/images/bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/static/images/bg.jpg -------------------------------------------------------------------------------- /ecommerce/ecomapp/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class EcomappConfig(AppConfig): 5 | name = 'ecomapp' 6 | -------------------------------------------------------------------------------- /ecommerce/media/shop/images/threee.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/media/shop/images/threee.jpg -------------------------------------------------------------------------------- /ecommerce/media/shop/images/About_Us3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/media/shop/images/About_Us3x.png -------------------------------------------------------------------------------- /ecommerce/media/shop/images/Artboard__43x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/media/shop/images/Artboard__43x.png -------------------------------------------------------------------------------- /ecommerce/media/shop/images/Artboard__73x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/media/shop/images/Artboard__73x.png -------------------------------------------------------------------------------- /ecommerce/media/shop/images/clock-3179167.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/media/shop/images/clock-3179167.jpg -------------------------------------------------------------------------------- /ecommerce/media/shop/images/Screenshot_242.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/media/shop/images/Screenshot_242.png -------------------------------------------------------------------------------- /ecommerce/media/shop/images/hipster-958805.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/media/shop/images/hipster-958805.jpg -------------------------------------------------------------------------------- /ecommerce/ecomapp/__pycache__/admin.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/ecomapp/__pycache__/admin.cpython-37.pyc -------------------------------------------------------------------------------- /ecommerce/ecomapp/__pycache__/admin.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/ecomapp/__pycache__/admin.cpython-38.pyc -------------------------------------------------------------------------------- /ecommerce/ecomapp/__pycache__/admin.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/ecomapp/__pycache__/admin.cpython-39.pyc -------------------------------------------------------------------------------- /ecommerce/ecomapp/__pycache__/apps.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/ecomapp/__pycache__/apps.cpython-39.pyc -------------------------------------------------------------------------------- /ecommerce/ecomapp/__pycache__/urls.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/ecomapp/__pycache__/urls.cpython-37.pyc -------------------------------------------------------------------------------- /ecommerce/ecomapp/__pycache__/urls.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/ecomapp/__pycache__/urls.cpython-38.pyc -------------------------------------------------------------------------------- /ecommerce/ecomapp/__pycache__/urls.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/ecomapp/__pycache__/urls.cpython-39.pyc -------------------------------------------------------------------------------- /ecommerce/ecomapp/__pycache__/views.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/ecomapp/__pycache__/views.cpython-37.pyc -------------------------------------------------------------------------------- /ecommerce/ecomapp/__pycache__/views.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/ecomapp/__pycache__/views.cpython-38.pyc -------------------------------------------------------------------------------- /ecommerce/ecomapp/__pycache__/views.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/ecomapp/__pycache__/views.cpython-39.pyc -------------------------------------------------------------------------------- /ecommerce/media/shop/images/wristwatch-407096.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/media/shop/images/wristwatch-407096.jpg -------------------------------------------------------------------------------- /ecommerce/PayTm/__pycache__/Checksum.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/PayTm/__pycache__/Checksum.cpython-37.pyc -------------------------------------------------------------------------------- /ecommerce/PayTm/__pycache__/Checksum.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/PayTm/__pycache__/Checksum.cpython-38.pyc -------------------------------------------------------------------------------- /ecommerce/PayTm/__pycache__/Checksum.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/PayTm/__pycache__/Checksum.cpython-39.pyc -------------------------------------------------------------------------------- /ecommerce/ecomapp/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/ecomapp/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /ecommerce/ecomapp/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/ecomapp/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /ecommerce/ecomapp/__pycache__/__init__.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/ecomapp/__pycache__/__init__.cpython-39.pyc -------------------------------------------------------------------------------- /ecommerce/ecomapp/__pycache__/models.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/ecomapp/__pycache__/models.cpython-37.pyc -------------------------------------------------------------------------------- /ecommerce/ecomapp/__pycache__/models.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/ecomapp/__pycache__/models.cpython-38.pyc -------------------------------------------------------------------------------- /ecommerce/ecomapp/__pycache__/models.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/ecomapp/__pycache__/models.cpython-39.pyc -------------------------------------------------------------------------------- /ecommerce/ecommerce/__pycache__/urls.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/ecommerce/__pycache__/urls.cpython-37.pyc -------------------------------------------------------------------------------- /ecommerce/ecommerce/__pycache__/urls.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/ecommerce/__pycache__/urls.cpython-38.pyc -------------------------------------------------------------------------------- /ecommerce/ecommerce/__pycache__/urls.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/ecommerce/__pycache__/urls.cpython-39.pyc -------------------------------------------------------------------------------- /ecommerce/ecommerce/__pycache__/wsgi.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/ecommerce/__pycache__/wsgi.cpython-37.pyc -------------------------------------------------------------------------------- /ecommerce/ecommerce/__pycache__/wsgi.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/ecommerce/__pycache__/wsgi.cpython-38.pyc -------------------------------------------------------------------------------- /ecommerce/ecommerce/__pycache__/wsgi.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/ecommerce/__pycache__/wsgi.cpython-39.pyc -------------------------------------------------------------------------------- /ecommerce/media/shop/images/brown-shoes-1150071.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/media/shop/images/brown-shoes-1150071.jpg -------------------------------------------------------------------------------- /ecommerce/ecommerce/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/ecommerce/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /ecommerce/ecommerce/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/ecommerce/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /ecommerce/ecommerce/__pycache__/__init__.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/ecommerce/__pycache__/__init__.cpython-39.pyc -------------------------------------------------------------------------------- /ecommerce/ecommerce/__pycache__/settings.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/ecommerce/__pycache__/settings.cpython-37.pyc -------------------------------------------------------------------------------- /ecommerce/ecommerce/__pycache__/settings.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/ecommerce/__pycache__/settings.cpython-38.pyc -------------------------------------------------------------------------------- /ecommerce/ecommerce/__pycache__/settings.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/ecommerce/__pycache__/settings.cpython-39.pyc -------------------------------------------------------------------------------- /ecommerce/media/shop/images/wristwatch-407096_4hRuQXd.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/media/shop/images/wristwatch-407096_4hRuQXd.jpg -------------------------------------------------------------------------------- /ecommerce/media/shop/images/wristwatch-407096_ahtkfzn.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/media/shop/images/wristwatch-407096_ahtkfzn.jpg -------------------------------------------------------------------------------- /ecommerce/ecomapp/migrations/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/ecomapp/migrations/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /ecommerce/ecomapp/migrations/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/ecomapp/migrations/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /ecommerce/ecomapp/migrations/__pycache__/__init__.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/ecomapp/migrations/__pycache__/__init__.cpython-39.pyc -------------------------------------------------------------------------------- /ecommerce/static/assets/vendor/font-awesome/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/static/assets/vendor/font-awesome/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /ecommerce/ecomapp/migrations/__pycache__/0001_initial.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/ecomapp/migrations/__pycache__/0001_initial.cpython-37.pyc -------------------------------------------------------------------------------- /ecommerce/ecomapp/migrations/__pycache__/0001_initial.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/ecomapp/migrations/__pycache__/0001_initial.cpython-38.pyc -------------------------------------------------------------------------------- /ecommerce/ecomapp/migrations/__pycache__/0001_initial.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/ecomapp/migrations/__pycache__/0001_initial.cpython-39.pyc -------------------------------------------------------------------------------- /ecommerce/static/assets/vendor/owl.carousel/assets/ajax-loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/static/assets/vendor/owl.carousel/assets/ajax-loader.gif -------------------------------------------------------------------------------- /ecommerce/static/assets/vendor/owl.carousel/assets/owl.video.play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/static/assets/vendor/owl.carousel/assets/owl.video.play.png -------------------------------------------------------------------------------- /ecommerce/static/assets/vendor/font-awesome/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/static/assets/vendor/font-awesome/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /ecommerce/static/assets/vendor/font-awesome/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/static/assets/vendor/font-awesome/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /ecommerce/static/assets/vendor/font-awesome/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/static/assets/vendor/font-awesome/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /ecommerce/static/assets/vendor/font-awesome/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/static/assets/vendor/font-awesome/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /ecommerce/ecomapp/migrations/__pycache__/0002_auto_20210122_1134.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/ecomapp/migrations/__pycache__/0002_auto_20210122_1134.cpython-37.pyc -------------------------------------------------------------------------------- /ecommerce/ecomapp/migrations/__pycache__/0002_auto_20210122_1134.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/ecomapp/migrations/__pycache__/0002_auto_20210122_1134.cpython-38.pyc -------------------------------------------------------------------------------- /ecommerce/ecomapp/migrations/__pycache__/0002_auto_20210122_1134.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/ecomapp/migrations/__pycache__/0002_auto_20210122_1134.cpython-39.pyc -------------------------------------------------------------------------------- /ecommerce/ecomapp/migrations/__pycache__/0003_auto_20210122_1238.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/ecomapp/migrations/__pycache__/0003_auto_20210122_1238.cpython-37.pyc -------------------------------------------------------------------------------- /ecommerce/ecomapp/migrations/__pycache__/0003_auto_20210122_1238.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/ecomapp/migrations/__pycache__/0003_auto_20210122_1238.cpython-38.pyc -------------------------------------------------------------------------------- /ecommerce/ecomapp/migrations/__pycache__/0003_auto_20210122_1238.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arkprocoder/Ecommerce-Django-Project/HEAD/ecommerce/ecomapp/migrations/__pycache__/0003_auto_20210122_1238.cpython-39.pyc -------------------------------------------------------------------------------- /ecommerce/ecomapp/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | 3 | # Register your models here. 4 | from .models import Product,Contact,Orders,OrderUpdate 5 | 6 | admin.site.register(Product) 7 | admin.site.register(Contact) 8 | admin.site.register(Orders) 9 | admin.site.register(OrderUpdate) -------------------------------------------------------------------------------- /ecommerce/ecommerce/asgi.py: -------------------------------------------------------------------------------- 1 | """ 2 | ASGI config for ecommerce project. 3 | 4 | It exposes the ASGI callable as a module-level variable named ``application``. 5 | 6 | For more information on this file, see 7 | https://docs.djangoproject.com/en/3.0/howto/deployment/asgi/ 8 | """ 9 | 10 | import os 11 | 12 | from django.core.asgi import get_asgi_application 13 | 14 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'ecommerce.settings') 15 | 16 | application = get_asgi_application() 17 | -------------------------------------------------------------------------------- /ecommerce/ecommerce/wsgi.py: -------------------------------------------------------------------------------- 1 | """ 2 | WSGI config for ecommerce project. 3 | 4 | It exposes the WSGI callable as a module-level variable named ``application``. 5 | 6 | For more information on this file, see 7 | https://docs.djangoproject.com/en/3.0/howto/deployment/wsgi/ 8 | """ 9 | 10 | import os 11 | 12 | from django.core.wsgi import get_wsgi_application 13 | 14 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'ecommerce.settings') 15 | 16 | application = get_wsgi_application() 17 | -------------------------------------------------------------------------------- /ecommerce/ecomapp/migrations/0003_auto_20210122_1238.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.6 on 2021-01-22 07:08 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('ecomapp', '0002_auto_20210122_1134'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='orders', 15 | name='amountpaid', 16 | field=models.CharField(blank=True, max_length=500, null=True), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /ecommerce/templates/paytm.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Paytm merchant payment page 6 | 7 | 8 |

Redirecting you to the merchant....

9 |

Please do not refresh your page....

10 |
11 | {% for key, value in param_dict.items %} 12 | 13 | {% endfor %} 14 | 15 |
16 | 17 | 20 | -------------------------------------------------------------------------------- /ecommerce/static/css/phoneregister.css: -------------------------------------------------------------------------------- 1 | .form-group input { 2 | width: 100%; 3 | border: none; 4 | border-bottom: 1px solid #6617cb; 5 | outline: none; 6 | font-size: 20px; 7 | margin-bottom: 3px; 8 | } 9 | 10 | .drop { 11 | width: 100%; 12 | border: none; 13 | border-bottom: 1px solid orangered; 14 | outline: none; 15 | font-size: 16px; 16 | margin-bottom: 5px; 17 | background: white; 18 | } 19 | 20 | textarea { 21 | margin-top: 0px; 22 | margin-bottom: 0px; 23 | height: 120px; 24 | width: 100%; 25 | } 26 | 27 | .form-group input:hover { 28 | background-color: gainsboro 29 | } -------------------------------------------------------------------------------- /ecommerce/ecomapp/urls.py: -------------------------------------------------------------------------------- 1 | from django.urls import path 2 | from ecomapp import views 3 | 4 | 5 | urlpatterns = [ 6 | path('',views.home,name='home'), 7 | path('login',views.handlelogin,name='handlelogin'), 8 | path('signup',views.signup,name='signup'), 9 | path('logout',views.logouts,name='logouts'), 10 | path('about', views.about, name="AboutUs"), 11 | path('contactus',views.contactus,name='contactus'), 12 | path('tracker', views.tracker, name="TrackingStatus"), 13 | path('products/', views.productView, name="ProductView"), 14 | path('checkout/', views.checkout, name="Checkout"), 15 | path('handlerequest/', views.handlerequest, name="HandleRequest") 16 | 17 | 18 | 19 | 20 | ] -------------------------------------------------------------------------------- /ecommerce/manage.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | """Django's command-line utility for administrative tasks.""" 3 | import os 4 | import sys 5 | 6 | 7 | def main(): 8 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'ecommerce.settings') 9 | try: 10 | from django.core.management import execute_from_command_line 11 | except ImportError as exc: 12 | raise ImportError( 13 | "Couldn't import Django. Are you sure it's installed and " 14 | "available on your PYTHONPATH environment variable? Did you " 15 | "forget to activate a virtual environment?" 16 | ) from exc 17 | execute_from_command_line(sys.argv) 18 | 19 | 20 | if __name__ == '__main__': 21 | main() 22 | -------------------------------------------------------------------------------- /ecommerce/ecomapp/migrations/0002_auto_20210122_1134.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.6 on 2021-01-22 06:04 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('ecomapp', '0001_initial'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='orders', 15 | name='amountpaid', 16 | field=models.IntegerField(blank=True, null=True), 17 | ), 18 | migrations.AddField( 19 | model_name='orders', 20 | name='oid', 21 | field=models.CharField(blank=True, max_length=50), 22 | ), 23 | migrations.AddField( 24 | model_name='orders', 25 | name='paymentstatus', 26 | field=models.CharField(blank=True, max_length=20), 27 | ), 28 | ] 29 | -------------------------------------------------------------------------------- /ecommerce/static/assets/vendor/owl.carousel/assets/owl.theme.green.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Owl Carousel v2.3.4 3 | * Copyright 2013-2018 David Deutsch 4 | * Licensed under: SEE LICENSE IN https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE 5 | */ 6 | .owl-theme .owl-dots,.owl-theme .owl-nav{text-align:center;-webkit-tap-highlight-color:transparent}.owl-theme .owl-nav{margin-top:10px}.owl-theme .owl-nav [class*=owl-]{color:#FFF;font-size:14px;margin:5px;padding:4px 7px;background:#D6D6D6;display:inline-block;cursor:pointer;border-radius:3px}.owl-theme .owl-nav [class*=owl-]:hover{background:#4DC7A0;color:#FFF;text-decoration:none}.owl-theme .owl-nav .disabled{opacity:.5;cursor:default}.owl-theme .owl-nav.disabled+.owl-dots{margin-top:10px}.owl-theme .owl-dots .owl-dot{display:inline-block;zoom:1}.owl-theme .owl-dots .owl-dot span{width:10px;height:10px;margin:5px 7px;background:#D6D6D6;display:block;-webkit-backface-visibility:visible;transition:opacity .2s ease;border-radius:30px}.owl-theme .owl-dots .owl-dot.active span,.owl-theme .owl-dots .owl-dot:hover span{background:#4DC7A0} -------------------------------------------------------------------------------- /ecommerce/static/assets/vendor/owl.carousel/assets/owl.theme.default.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Owl Carousel v2.3.4 3 | * Copyright 2013-2018 David Deutsch 4 | * Licensed under: SEE LICENSE IN https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE 5 | */ 6 | .owl-theme .owl-dots,.owl-theme .owl-nav{text-align:center;-webkit-tap-highlight-color:transparent}.owl-theme .owl-nav{margin-top:10px}.owl-theme .owl-nav [class*=owl-]{color:#FFF;font-size:14px;margin:5px;padding:4px 7px;background:#D6D6D6;display:inline-block;cursor:pointer;border-radius:3px}.owl-theme .owl-nav [class*=owl-]:hover{background:#869791;color:#FFF;text-decoration:none}.owl-theme .owl-nav .disabled{opacity:.5;cursor:default}.owl-theme .owl-nav.disabled+.owl-dots{margin-top:10px}.owl-theme .owl-dots .owl-dot{display:inline-block;zoom:1}.owl-theme .owl-dots .owl-dot span{width:10px;height:10px;margin:5px 7px;background:#D6D6D6;display:block;-webkit-backface-visibility:visible;transition:opacity .2s ease;border-radius:30px}.owl-theme .owl-dots .owl-dot.active span,.owl-theme .owl-dots .owl-dot:hover span{background:#869791} -------------------------------------------------------------------------------- /ecommerce/ecommerce/urls.py: -------------------------------------------------------------------------------- 1 | """ecommerce URL Configuration 2 | 3 | The `urlpatterns` list routes URLs to views. For more information please see: 4 | https://docs.djangoproject.com/en/3.0/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,include 18 | from django.conf.urls.static import static 19 | from django.conf import settings 20 | 21 | 22 | admin.site.site_header = "ECOMMERCE" 23 | admin.site.site_title = "ARK ADMIN" 24 | 25 | urlpatterns = [ 26 | path('admin/', admin.site.urls), 27 | path('',include('ecomapp.urls')), 28 | 29 | 30 | ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 31 | -------------------------------------------------------------------------------- /ecommerce/static/assets/vendor/owl.carousel/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2014 Owl 2 | Modified work Copyright 2016-2018 David Deutsch 3 | 4 | Permission is hereby granted, free of charge, to any person 5 | obtaining a copy of this software and associated documentation 6 | files (the "Software"), to deal in the Software without 7 | restriction, including without limitation the rights to use, 8 | copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the 10 | Software is furnished to do so, subject to the following 11 | conditions: 12 | 13 | The above copyright notice and this permission notice shall be 14 | included in all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 18 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 20 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 21 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 22 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 23 | OTHER DEALINGS IN THE SOFTWARE. 24 | -------------------------------------------------------------------------------- /ecommerce/templates/test.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Document 7 | 20 | 21 | 22 |
23 | 24 | 25 | 26 |
27 | 28 | 44 | 45 | 46 | 47 | let screen = document.getElementById('screen') 48 | let buttons = document.querySelectorAll('button'); 49 | let screenvalue = ""; 50 | 51 | for (items of buttons) { 52 | items.addEventListener('click', (e) => { 53 | buttonText = e.target.innerText; 54 | if (buttonText == '=') { 55 | screen.value = eval(screenvalue) 56 | 57 | } else if (buttonText == 'C') { 58 | screenvalue = ""; 59 | screen.value = ""; 60 | } else { 61 | screenvalue += buttonText 62 | screen.value = screenvalue 63 | } 64 | }) 65 | } -------------------------------------------------------------------------------- /ecommerce/static/assets/vendor/owl.carousel/assets/owl.theme.default.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Owl Carousel v2.3.4 3 | * Copyright 2013-2018 David Deutsch 4 | * Licensed under: SEE LICENSE IN https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE 5 | */ 6 | /* 7 | * Default theme - Owl Carousel CSS File 8 | */ 9 | .owl-theme .owl-nav { 10 | margin-top: 10px; 11 | text-align: center; 12 | -webkit-tap-highlight-color: transparent; } 13 | .owl-theme .owl-nav [class*='owl-'] { 14 | color: #FFF; 15 | font-size: 14px; 16 | margin: 5px; 17 | padding: 4px 7px; 18 | background: #D6D6D6; 19 | display: inline-block; 20 | cursor: pointer; 21 | border-radius: 3px; } 22 | .owl-theme .owl-nav [class*='owl-']:hover { 23 | background: #869791; 24 | color: #FFF; 25 | text-decoration: none; } 26 | .owl-theme .owl-nav .disabled { 27 | opacity: 0.5; 28 | cursor: default; } 29 | 30 | .owl-theme .owl-nav.disabled + .owl-dots { 31 | margin-top: 10px; } 32 | 33 | .owl-theme .owl-dots { 34 | text-align: center; 35 | -webkit-tap-highlight-color: transparent; } 36 | .owl-theme .owl-dots .owl-dot { 37 | display: inline-block; 38 | zoom: 1; 39 | *display: inline; } 40 | .owl-theme .owl-dots .owl-dot span { 41 | width: 10px; 42 | height: 10px; 43 | margin: 5px 7px; 44 | background: #D6D6D6; 45 | display: block; 46 | -webkit-backface-visibility: visible; 47 | transition: opacity 200ms ease; 48 | border-radius: 30px; } 49 | .owl-theme .owl-dots .owl-dot.active span, .owl-theme .owl-dots .owl-dot:hover span { 50 | background: #869791; } 51 | -------------------------------------------------------------------------------- /ecommerce/static/assets/vendor/owl.carousel/assets/owl.theme.green.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Owl Carousel v2.3.4 3 | * Copyright 2013-2018 David Deutsch 4 | * Licensed under: SEE LICENSE IN https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE 5 | */ 6 | /* 7 | * Green theme - Owl Carousel CSS File 8 | */ 9 | .owl-theme .owl-nav { 10 | margin-top: 10px; 11 | text-align: center; 12 | -webkit-tap-highlight-color: transparent; } 13 | .owl-theme .owl-nav [class*='owl-'] { 14 | color: #FFF; 15 | font-size: 14px; 16 | margin: 5px; 17 | padding: 4px 7px; 18 | background: #D6D6D6; 19 | display: inline-block; 20 | cursor: pointer; 21 | border-radius: 3px; } 22 | .owl-theme .owl-nav [class*='owl-']:hover { 23 | background: #4DC7A0; 24 | color: #FFF; 25 | text-decoration: none; } 26 | .owl-theme .owl-nav .disabled { 27 | opacity: 0.5; 28 | cursor: default; } 29 | 30 | .owl-theme .owl-nav.disabled + .owl-dots { 31 | margin-top: 10px; } 32 | 33 | .owl-theme .owl-dots { 34 | text-align: center; 35 | -webkit-tap-highlight-color: transparent; } 36 | .owl-theme .owl-dots .owl-dot { 37 | display: inline-block; 38 | zoom: 1; 39 | *display: inline; } 40 | .owl-theme .owl-dots .owl-dot span { 41 | width: 10px; 42 | height: 10px; 43 | margin: 5px 7px; 44 | background: #D6D6D6; 45 | display: block; 46 | -webkit-backface-visibility: visible; 47 | transition: opacity 200ms ease; 48 | border-radius: 30px; } 49 | .owl-theme .owl-dots .owl-dot.active span, .owl-theme .owl-dots .owl-dot:hover span { 50 | background: #4DC7A0; } 51 | -------------------------------------------------------------------------------- /ecommerce/templates/login.html: -------------------------------------------------------------------------------- 1 | {% extends 'auth.html' %} 2 | {% block title %} 3 | login 4 | {% endblock title %} 5 | {% block content %} 6 |

Login

7 | {% for message in messages %} 8 | 9 | 15 | 16 | {% endfor %} 17 |
{% csrf_token %} 18 |
19 | 20 | 21 | 22 |
23 |
24 | 25 | 26 |
27 |
28 | 29 |

New User?

30 | 31 | Signup 32 |
33 | {% block script %} 34 | 35 | 36 | 37 | {% endblock script %} 38 | {% endblock content %} 39 | -------------------------------------------------------------------------------- /ecommerce/templates/contactus.html: -------------------------------------------------------------------------------- 1 | {% extends 'auth.html' %} 2 | {% block title %} 3 | Contact Us 4 | {% endblock title %} 5 | {% block content %} 6 |

Contact Us

7 | {% for message in messages %} 8 | 9 | 15 | 16 | {% endfor %} 17 |
{% csrf_token %} 18 |
19 | 20 | 21 |
22 |
23 |
24 | 25 | 26 |
27 |
28 |
29 | 30 | 31 |
32 |
33 | 34 |
35 | 36 | 37 |
38 |
39 | 40 |
41 | 42 | 43 | 44 | 45 | {% block script %} 46 | 47 | 48 | 49 | {% endblock script %} 50 | {% endblock content %} 51 | -------------------------------------------------------------------------------- /ecommerce/ecomapp/models.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | class Product(models.Model): 4 | product_id = models.AutoField 5 | product_name = models.CharField(max_length=50) 6 | category = models.CharField(max_length=50, default="") 7 | subcategory = models.CharField(max_length=50, default="") 8 | price = models.IntegerField(default=0) 9 | desc = models.CharField(max_length=300) 10 | pub_date = models.DateField() 11 | 12 | image = models.ImageField(upload_to='shop/images', default="") 13 | 14 | def __str__(self): 15 | return self.product_name 16 | 17 | 18 | class Contact(models.Model): 19 | msg_id = models.AutoField(primary_key=True) 20 | name = models.CharField(max_length=50) 21 | email = models.CharField(max_length=70, default="") 22 | phone = models.CharField(max_length=70, default="") 23 | desc = models.CharField(max_length=500, default="") 24 | 25 | 26 | def __str__(self): 27 | return self.name 28 | 29 | 30 | class Orders(models.Model): 31 | order_id = models.AutoField(primary_key=True) 32 | items_json = models.CharField(max_length=5000) 33 | amount = models.IntegerField(default=0) 34 | name = models.CharField(max_length=90) 35 | email = models.CharField(max_length=90) 36 | address1 = models.CharField(max_length=200) 37 | address2 = models.CharField(max_length=200) 38 | city = models.CharField(max_length=100) 39 | state = models.CharField(max_length=100) 40 | zip_code = models.CharField(max_length=100) 41 | oid=models.CharField(max_length=50,blank=True) 42 | amountpaid=models.CharField(max_length=500,blank=True,null=True) 43 | paymentstatus=models.CharField(max_length=20,blank=True) 44 | phone = models.CharField(max_length=100,default="") 45 | def __str__(self): 46 | return self.name 47 | 48 | 49 | 50 | class OrderUpdate(models.Model): 51 | update_id = models.AutoField(primary_key=True) 52 | order_id = models.IntegerField(default="") 53 | update_desc = models.CharField(max_length=5000) 54 | timestamp = models.DateField(auto_now_add=True) 55 | 56 | def __str__(self): 57 | return self.update_desc[0:7] + "..." -------------------------------------------------------------------------------- /ecommerce/static/css/virtualregister.css: -------------------------------------------------------------------------------- 1 | .section-title { 2 | text-align: center; 3 | /* padding-bottom: 30px; */ 4 | } 5 | 6 | .pricing .row { 7 | padding-top: 0px; 8 | } 9 | 10 | h6 { 11 | font-family: 'Cormorant Garamond', serif; 12 | color: black; 13 | text-align: center; 14 | margin-top: 10px; 15 | border-radius: 15px; 16 | font-size: 22px; 17 | position: relative; 18 | animation-name: sign; 19 | animation-duration: 3s; 20 | animation-iteration-count: infinite; 21 | } 22 | 23 | @keyframes sign { 24 | 0% { 25 | top: 0px; 26 | background-color: #ff4e00; 27 | background-image: linear-gradient(315deg, #ff4e00 0%, #ec9f05 74%); 28 | } 29 | 50% { 30 | top: 10px; 31 | background-color: #ff4e00; 32 | background-image: linear-gradient(315deg, #ff4e00 0%, #ec9f05 74%); 33 | } 34 | 100% { 35 | top: 10px; 36 | } 37 | } 38 | 39 | .card { 40 | margin-top: 57px; 41 | border-radius: 8px 40px 40px 8px; 42 | transition: all 0.5s ease-in-out; 43 | box-shadow: 1px 0px 8px 2px orangered; 44 | } 45 | 46 | label { 47 | color: black; 48 | margin-top: 15px; 49 | font-family: 'Itim', cursive; 50 | } 51 | 52 | .form-group input { 53 | width: 400px; 54 | border: none; 55 | /* border-bottom: 1px solid purple; */ 56 | border-bottom: 2px solid red; 57 | outline: none; 58 | font-size: 22px; 59 | margin-bottom: 5px; 60 | font-family: 'Itim', cursive; 61 | } 62 | 63 | textarea { 64 | resize: vertical; 65 | width: 400px; 66 | border-bottom: 2px solid red; 67 | } 68 | 69 | .drop { 70 | width: 400px; 71 | border: none; 72 | border-bottom: 2px solid red; 73 | outline: none; 74 | font-size: 22px; 75 | margin-bottom: 5px; 76 | } 77 | 78 | .form-group input:hover { 79 | background-color: ghostwhite; 80 | } 81 | 82 | #btn { 83 | background-color: #7f5a83; 84 | background-image: linear-gradient(315deg, #7f5a83 0%, #0d324d 74%); 85 | border-radius: 15px; 86 | border: none; 87 | position: relative; 88 | } 89 | 90 | #btn:hover { 91 | background-color: #0cbaba; 92 | background-image: linear-gradient(315deg, #0cbaba 0%, #380036 74%); 93 | } -------------------------------------------------------------------------------- /ecommerce/static/assets/vendor/jquery.easing/jquery.easing.min.js: -------------------------------------------------------------------------------- 1 | (function(factory){if(typeof define==="function"&&define.amd){define(["jquery"],function($){return factory($)})}else if(typeof module==="object"&&typeof module.exports==="object"){exports=factory(require("jquery"))}else{factory(jQuery)}})(function($){$.easing.jswing=$.easing.swing;var pow=Math.pow,sqrt=Math.sqrt,sin=Math.sin,cos=Math.cos,PI=Math.PI,c1=1.70158,c2=c1*1.525,c3=c1+1,c4=2*PI/3,c5=2*PI/4.5;function bounceOut(x){var n1=7.5625,d1=2.75;if(x<1/d1){return n1*x*x}else if(x<2/d1){return n1*(x-=1.5/d1)*x+.75}else if(x<2.5/d1){return n1*(x-=2.25/d1)*x+.9375}else{return n1*(x-=2.625/d1)*x+.984375}}$.extend($.easing,{def:"easeOutQuad",swing:function(x){return $.easing[$.easing.def](x)},easeInQuad:function(x){return x*x},easeOutQuad:function(x){return 1-(1-x)*(1-x)},easeInOutQuad:function(x){return x<.5?2*x*x:1-pow(-2*x+2,2)/2},easeInCubic:function(x){return x*x*x},easeOutCubic:function(x){return 1-pow(1-x,3)},easeInOutCubic:function(x){return x<.5?4*x*x*x:1-pow(-2*x+2,3)/2},easeInQuart:function(x){return x*x*x*x},easeOutQuart:function(x){return 1-pow(1-x,4)},easeInOutQuart:function(x){return x<.5?8*x*x*x*x:1-pow(-2*x+2,4)/2},easeInQuint:function(x){return x*x*x*x*x},easeOutQuint:function(x){return 1-pow(1-x,5)},easeInOutQuint:function(x){return x<.5?16*x*x*x*x*x:1-pow(-2*x+2,5)/2},easeInSine:function(x){return 1-cos(x*PI/2)},easeOutSine:function(x){return sin(x*PI/2)},easeInOutSine:function(x){return-(cos(PI*x)-1)/2},easeInExpo:function(x){return x===0?0:pow(2,10*x-10)},easeOutExpo:function(x){return x===1?1:1-pow(2,-10*x)},easeInOutExpo:function(x){return x===0?0:x===1?1:x<.5?pow(2,20*x-10)/2:(2-pow(2,-20*x+10))/2},easeInCirc:function(x){return 1-sqrt(1-pow(x,2))},easeOutCirc:function(x){return sqrt(1-pow(x-1,2))},easeInOutCirc:function(x){return x<.5?(1-sqrt(1-pow(2*x,2)))/2:(sqrt(1-pow(-2*x+2,2))+1)/2},easeInElastic:function(x){return x===0?0:x===1?1:-pow(2,10*x-10)*sin((x*10-10.75)*c4)},easeOutElastic:function(x){return x===0?0:x===1?1:pow(2,-10*x)*sin((x*10-.75)*c4)+1},easeInOutElastic:function(x){return x===0?0:x===1?1:x<.5?-(pow(2,20*x-10)*sin((20*x-11.125)*c5))/2:pow(2,-20*x+10)*sin((20*x-11.125)*c5)/2+1},easeInBack:function(x){return c3*x*x*x-c1*x*x},easeOutBack:function(x){return 1+c3*pow(x-1,3)+c1*pow(x-1,2)},easeInOutBack:function(x){return x<.5?pow(2*x,2)*((c2+1)*2*x-c2)/2:(pow(2*x-2,2)*((c2+1)*(x*2-2)+c2)+2)/2},easeInBounce:function(x){return 1-bounceOut(1-x)},easeOutBounce:bounceOut,easeInOutBounce:function(x){return x<.5?(1-bounceOut(1-2*x))/2:(1+bounceOut(2*x-1))/2}})}); -------------------------------------------------------------------------------- /ecommerce/ecomapp/migrations/0001_initial.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.6 on 2021-01-22 02:26 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | initial = True 9 | 10 | dependencies = [ 11 | ] 12 | 13 | operations = [ 14 | migrations.CreateModel( 15 | name='Contact', 16 | fields=[ 17 | ('msg_id', models.AutoField(primary_key=True, serialize=False)), 18 | ('name', models.CharField(max_length=50)), 19 | ('email', models.CharField(default='', max_length=70)), 20 | ('phone', models.CharField(default='', max_length=70)), 21 | ('desc', models.CharField(default='', max_length=500)), 22 | ], 23 | ), 24 | migrations.CreateModel( 25 | name='Orders', 26 | fields=[ 27 | ('order_id', models.AutoField(primary_key=True, serialize=False)), 28 | ('items_json', models.CharField(max_length=5000)), 29 | ('amount', models.IntegerField(default=0)), 30 | ('name', models.CharField(max_length=90)), 31 | ('email', models.CharField(max_length=90)), 32 | ('address1', models.CharField(max_length=200)), 33 | ('address2', models.CharField(max_length=200)), 34 | ('city', models.CharField(max_length=100)), 35 | ('state', models.CharField(max_length=100)), 36 | ('zip_code', models.CharField(max_length=100)), 37 | ('phone', models.CharField(default='', max_length=100)), 38 | ], 39 | ), 40 | migrations.CreateModel( 41 | name='OrderUpdate', 42 | fields=[ 43 | ('update_id', models.AutoField(primary_key=True, serialize=False)), 44 | ('order_id', models.IntegerField(default='')), 45 | ('update_desc', models.CharField(max_length=5000)), 46 | ('timestamp', models.DateField(auto_now_add=True)), 47 | ], 48 | ), 49 | migrations.CreateModel( 50 | name='Product', 51 | fields=[ 52 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 53 | ('product_name', models.CharField(max_length=50)), 54 | ('category', models.CharField(default='', max_length=50)), 55 | ('subcategory', models.CharField(default='', max_length=50)), 56 | ('price', models.IntegerField(default=0)), 57 | ('desc', models.CharField(max_length=300)), 58 | ('pub_date', models.DateField()), 59 | ('image', models.ImageField(default='', upload_to='shop/images')), 60 | ], 61 | ), 62 | ] 63 | -------------------------------------------------------------------------------- /ecommerce/templates/signup.html: -------------------------------------------------------------------------------- 1 | {% extends 'auth.html' %} 2 | {% block title %} 3 | Signup 4 | 5 | {% endblock title %} 6 | {% block style %} 7 | 26 | 27 | {% endblock style %} 28 | {% block content %} 29 |

Sign Up

30 | {% for message in messages %} 31 | 32 | 38 | {% endfor %} 39 |
{% csrf_token %} 40 |
41 | 42 | 43 | We'll never share your email with anyone else. 44 |
45 |
46 | 47 | 48 |
49 |
50 | 51 | 52 |
53 |
54 | 55 |

Already User?

56 | 57 | Login 58 |
59 | 60 | 61 | {% block script %} 62 | 63 | 64 | 65 | {% endblock script %} 66 | {% endblock content %} 67 | -------------------------------------------------------------------------------- /ecommerce/templates/auth.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | {% block title %} 9 | {% endblock title %} 10 | 11 | 12 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 45 | 46 | 47 |
48 |
49 | {% block content %} 50 | 51 | {% endblock content %} 52 |
53 |
54 | 55 |
56 | 57 | 58 |
59 |
72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | {% block script %}{% endblock script %} 91 | 92 | 93 | 94 | -------------------------------------------------------------------------------- /ecommerce/static/assets/vendor/owl.carousel/assets/owl.carousel.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Owl Carousel v2.3.4 3 | * Copyright 2013-2018 David Deutsch 4 | * Licensed under: SEE LICENSE IN https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE 5 | */ 6 | .owl-carousel,.owl-carousel .owl-item{-webkit-tap-highlight-color:transparent;position:relative}.owl-carousel{display:none;width:100%;z-index:1}.owl-carousel .owl-stage{position:relative;-ms-touch-action:pan-Y;touch-action:manipulation;-moz-backface-visibility:hidden}.owl-carousel .owl-stage:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}.owl-carousel .owl-stage-outer{position:relative;overflow:hidden;-webkit-transform:translate3d(0,0,0)}.owl-carousel .owl-item,.owl-carousel .owl-wrapper{-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0)}.owl-carousel .owl-item{min-height:1px;float:left;-webkit-backface-visibility:hidden;-webkit-touch-callout:none}.owl-carousel .owl-item img{display:block;width:100%}.owl-carousel .owl-dots.disabled,.owl-carousel .owl-nav.disabled{display:none}.no-js .owl-carousel,.owl-carousel.owl-loaded{display:block}.owl-carousel .owl-dot,.owl-carousel .owl-nav .owl-next,.owl-carousel .owl-nav .owl-prev{cursor:pointer;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel .owl-nav button.owl-next,.owl-carousel .owl-nav button.owl-prev,.owl-carousel button.owl-dot{background:0 0;color:inherit;border:none;padding:0!important;font:inherit}.owl-carousel.owl-loading{opacity:0;display:block}.owl-carousel.owl-hidden{opacity:0}.owl-carousel.owl-refresh .owl-item{visibility:hidden}.owl-carousel.owl-drag .owl-item{-ms-touch-action:pan-y;touch-action:pan-y;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel.owl-grab{cursor:move;cursor:grab}.owl-carousel.owl-rtl{direction:rtl}.owl-carousel.owl-rtl .owl-item{float:right}.owl-carousel .animated{animation-duration:1s;animation-fill-mode:both}.owl-carousel .owl-animated-in{z-index:0}.owl-carousel .owl-animated-out{z-index:1}.owl-carousel .fadeOut{animation-name:fadeOut}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}.owl-height{transition:height .5s ease-in-out}.owl-carousel .owl-item .owl-lazy{opacity:0;transition:opacity .4s ease}.owl-carousel .owl-item .owl-lazy:not([src]),.owl-carousel .owl-item .owl-lazy[src^=""]{max-height:0}.owl-carousel .owl-item img.owl-lazy{transform-style:preserve-3d}.owl-carousel .owl-video-wrapper{position:relative;height:100%;background:#000}.owl-carousel .owl-video-play-icon{position:absolute;height:80px;width:80px;left:50%;top:50%;margin-left:-40px;margin-top:-40px;background:url(owl.video.play.png) no-repeat;cursor:pointer;z-index:1;-webkit-backface-visibility:hidden;transition:transform .1s ease}.owl-carousel .owl-video-play-icon:hover{-ms-transform:scale(1.3,1.3);transform:scale(1.3,1.3)}.owl-carousel .owl-video-playing .owl-video-play-icon,.owl-carousel .owl-video-playing .owl-video-tn{display:none}.owl-carousel .owl-video-tn{opacity:0;height:100%;background-position:center center;background-repeat:no-repeat;background-size:contain;transition:opacity .4s ease}.owl-carousel .owl-video-frame{position:relative;z-index:1;height:100%;width:100%} -------------------------------------------------------------------------------- /ecommerce/templates/tracker.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | {% block title %} 3 | Tracking page 4 | {% endblock title %} 5 | {% block body %} 6 | 7 |
8 |
9 |

Enter your Order Id and Email address to track your order

10 |
{% csrf_token %} 11 |
12 |
13 | 14 | 15 |
16 | 17 |
18 | 19 | 20 |
21 |
22 | 23 |
24 |
25 |
26 |

Your Order Status

27 |
28 |
    29 | Enter your order Id and Email and click Track Order to find details about your order! 30 |
31 |
32 | 33 |

Your Order Details

34 |
35 |
    36 | 37 |
38 |
39 |
40 |
41 | 42 | {% block script %} 43 | 44 | 97 | {% endblock script %} 98 | {% endblock body %} -------------------------------------------------------------------------------- /ecommerce/templates/paymentstatus.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Payment Status Page 9 | 10 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 120 |
121 | 122 | {{response}} 123 |
124 | 125 |

Payment status regarding your order Id {{response.ORDERID}}

126 | {% if response.RESPCODE == '01' %} 127 | ORDER SUCCESS 128 |
129 | 130 | Track Your Status 131 | {% else %} 132 | ORDER FAILURE 133 | {% endif%} 134 | 135 |
136 | 137 |
138 | -------------------------------------------------------------------------------- /ecommerce/ecommerce/settings.py: -------------------------------------------------------------------------------- 1 | """ 2 | Django settings for ecommerce project. 3 | 4 | Generated by 'django-admin startproject' using Django 3.0.6. 5 | 6 | For more information on this file, see 7 | https://docs.djangoproject.com/en/3.0/topics/settings/ 8 | 9 | For the full list of settings and their values, see 10 | https://docs.djangoproject.com/en/3.0/ref/settings/ 11 | """ 12 | 13 | import os 14 | from django.contrib.messages import constants as messages 15 | # Build paths inside the project like this: os.path.join(BASE_DIR, ...) 16 | BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 17 | 18 | 19 | # Quick-start development settings - unsuitable for production 20 | # See https://docs.djangoproject.com/en/3.0/howto/deployment/checklist/ 21 | 22 | # SECURITY WARNING: keep the secret key used in production secret! 23 | SECRET_KEY = '3gg^6dr*3*ta+qt3ql42dj&y#ehv^n_2g6-ty%0pm_s-ij#p1@' 24 | 25 | # SECURITY WARNING: don't run with debug turned on in production! 26 | DEBUG = True 27 | 28 | ALLOWED_HOSTS = [] 29 | 30 | 31 | # Application definition 32 | 33 | INSTALLED_APPS = [ 34 | 'django.contrib.admin', 35 | 'django.contrib.auth', 36 | 'django.contrib.contenttypes', 37 | 'django.contrib.sessions', 38 | 'django.contrib.messages', 39 | 'django.contrib.staticfiles', 40 | 'ecomapp', 41 | ] 42 | 43 | MIDDLEWARE = [ 44 | 'django.middleware.security.SecurityMiddleware', 45 | 'django.contrib.sessions.middleware.SessionMiddleware', 46 | 'django.middleware.common.CommonMiddleware', 47 | 'django.middleware.csrf.CsrfViewMiddleware', 48 | 'django.contrib.auth.middleware.AuthenticationMiddleware', 49 | 'django.contrib.messages.middleware.MessageMiddleware', 50 | 'django.middleware.clickjacking.XFrameOptionsMiddleware', 51 | ] 52 | 53 | ROOT_URLCONF = 'ecommerce.urls' 54 | 55 | TEMPLATES = [ 56 | { 57 | 'BACKEND': 'django.template.backends.django.DjangoTemplates', 58 | 'DIRS': ['templates'], 59 | 'APP_DIRS': True, 60 | 'OPTIONS': { 61 | 'context_processors': [ 62 | 'django.template.context_processors.debug', 63 | 'django.template.context_processors.request', 64 | 'django.contrib.auth.context_processors.auth', 65 | 'django.contrib.messages.context_processors.messages', 66 | ], 67 | }, 68 | }, 69 | ] 70 | 71 | WSGI_APPLICATION = 'ecommerce.wsgi.application' 72 | 73 | 74 | # Database 75 | # https://docs.djangoproject.com/en/3.0/ref/settings/#databases 76 | 77 | DATABASES = { 78 | 'default': { 79 | 'ENGINE': 'django.db.backends.sqlite3', 80 | 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), 81 | } 82 | } 83 | 84 | 85 | # Password validation 86 | # https://docs.djangoproject.com/en/3.0/ref/settings/#auth-password-validators 87 | 88 | AUTH_PASSWORD_VALIDATORS = [ 89 | { 90 | 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', 91 | }, 92 | { 93 | 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', 94 | }, 95 | { 96 | 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', 97 | }, 98 | { 99 | 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', 100 | }, 101 | ] 102 | 103 | 104 | # Internationalization 105 | # https://docs.djangoproject.com/en/3.0/topics/i18n/ 106 | 107 | LANGUAGE_CODE = 'en-us' 108 | 109 | TIME_ZONE = 'UTC' 110 | 111 | USE_I18N = True 112 | 113 | USE_L10N = True 114 | 115 | USE_TZ = True 116 | 117 | MESSAGE_TAGS = { 118 | messages.ERROR:'danger' 119 | } 120 | 121 | MEDIA_URL = '/media/' 122 | MEDIA_ROOT = os.path.join(BASE_DIR, "media") 123 | # Static files (CSS, JavaScript, Images) 124 | # https://docs.djangoproject.com/en/3.0/howto/static-files/ 125 | 126 | STATIC_URL = '/static/' 127 | STATICFILES_DIRS = [ 128 | os.path.join(BASE_DIR, 'static') 129 | ] 130 | -------------------------------------------------------------------------------- /ecommerce/templates/base.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | {% block title %} 9 | {% endblock title %} 10 | 11 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 73 | 74 | 75 |
76 |
77 |

ECOMMERCE ONLINE STORE

78 |

10% Cash Back for All Products

79 | 80 | View PRODUCTS 81 |
82 |
83 |
84 | 85 | 86 | {% block body %} 87 | 88 | 89 | 90 | 91 | {% endblock body %} 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | {% block script %}{% endblock script %} 111 | 112 | 113 | 114 | -------------------------------------------------------------------------------- /ecommerce/static/assets/vendor/superfish/superfish.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | * jQuery Superfish Menu Plugin - v1.7.10 3 | * Copyright (c) 2018 Joel Birch 4 | * 5 | * Dual licensed under the MIT and GPL licenses: 6 | * http://www.opensource.org/licenses/mit-license.php 7 | * http://www.gnu.org/licenses/gpl.html 8 | */ 9 | 10 | ;!function(a,b){"use strict";var c=function(){var c={bcClass:"sf-breadcrumb",menuClass:"sf-js-enabled",anchorClass:"sf-with-ul",menuArrowClass:"sf-arrows"},d=function(){var b=/^(?![\w\W]*Windows Phone)[\w\W]*(iPhone|iPad|iPod)/i.test(navigator.userAgent);return b&&a("html").css("cursor","pointer").on("click",a.noop),b}(),e=function(){var a=document.documentElement.style;return"behavior"in a&&"fill"in a&&/iemobile/i.test(navigator.userAgent)}(),f=function(){return!!b.PointerEvent}(),g=function(a,b,d){var e,f=c.menuClass;b.cssArrows&&(f+=" "+c.menuArrowClass),e=d?"addClass":"removeClass",a[e](f)},h=function(b,d){return b.find("li."+d.pathClass).slice(0,d.pathLevels).addClass(d.hoverClass+" "+c.bcClass).filter(function(){return a(this).children(d.popUpSelector).hide().show().length}).removeClass(d.pathClass)},i=function(a,b){var d=b?"addClass":"removeClass";a.children("a")[d](c.anchorClass)},j=function(a){var b=a.css("ms-touch-action"),c=a.css("touch-action");c=c||b,c="pan-y"===c?"auto":"pan-y",a.css({"ms-touch-action":c,"touch-action":c})},k=function(a){return a.closest("."+c.menuClass)},l=function(a){return k(a).data("sfOptions")},m=function(){var b=a(this),c=l(b);clearTimeout(c.sfTimer),b.siblings().superfish("hide").end().superfish("show")},n=function(b){b.retainPath=a.inArray(this[0],b.$path)>-1,this.superfish("hide"),this.parents("."+b.hoverClass).length||(b.onIdle.call(k(this)),b.$path.length&&a.proxy(m,b.$path)())},o=function(){var b=a(this),c=l(b);d?a.proxy(n,b,c)():(clearTimeout(c.sfTimer),c.sfTimer=setTimeout(a.proxy(n,b,c),c.delay))},p=function(b){var c=a(this),d=l(c),e=c.siblings(b.data.popUpSelector);return d.onHandleTouch.call(e)===!1?this:void(e.length>0&&e.is(":hidden")&&(c.one("click.superfish",!1),"MSPointerDown"===b.type||"pointerdown"===b.type?c.trigger("focus"):a.proxy(m,c.parent("li"))()))},q=function(b,c){var g="li:has("+c.popUpSelector+")";a.fn.hoverIntent&&!c.disableHI?b.hoverIntent(m,o,g):b.on("mouseenter.superfish",g,m).on("mouseleave.superfish",g,o);var h="MSPointerDown.superfish";f&&(h="pointerdown.superfish"),d||(h+=" touchend.superfish"),e&&(h+=" mousedown.superfish"),b.on("focusin.superfish","li",m).on("focusout.superfish","li",o).on(h,"a",c,p)};return{hide:function(b){if(this.length){var c=this,d=l(c);if(!d)return this;var e=d.retainPath===!0?d.$path:"",f=c.find("li."+d.hoverClass).add(this).not(e).removeClass(d.hoverClass).children(d.popUpSelector),g=d.speedOut;if(b&&(f.show(),g=0),d.retainPath=!1,d.onBeforeHide.call(f)===!1)return this;f.stop(!0,!0).animate(d.animationOut,g,function(){var b=a(this);d.onHide.call(b)})}return this},show:function(){var a=l(this);if(!a)return this;var b=this.addClass(a.hoverClass),c=b.children(a.popUpSelector);return a.onBeforeShow.call(c)===!1?this:(c.stop(!0,!0).animate(a.animation,a.speed,function(){a.onShow.call(c)}),this)},destroy:function(){return this.each(function(){var b,d=a(this),e=d.data("sfOptions");return!!e&&(b=d.find(e.popUpSelector).parent("li"),clearTimeout(e.sfTimer),g(d,e),i(b),j(d),d.off(".superfish").off(".hoverIntent"),b.children(e.popUpSelector).attr("style",function(a,b){if("undefined"!=typeof b)return b.replace(/display[^;]+;?/g,"")}),e.$path.removeClass(e.hoverClass+" "+c.bcClass).addClass(e.pathClass),d.find("."+e.hoverClass).removeClass(e.hoverClass),e.onDestroy.call(d),void d.removeData("sfOptions"))})},init:function(b){return this.each(function(){var d=a(this);if(d.data("sfOptions"))return!1;var e=a.extend({},a.fn.superfish.defaults,b),f=d.find(e.popUpSelector).parent("li");e.$path=h(d,e),d.data("sfOptions",e),g(d,e,!0),i(f,!0),j(d),q(d,e),f.not("."+c.bcClass).superfish("hide",!0),e.onInit.call(this)})}}}();a.fn.superfish=function(b,d){return c[b]?c[b].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof b&&b?a.error("Method "+b+" does not exist on jQuery.fn.superfish"):c.init.apply(this,arguments)},a.fn.superfish.defaults={popUpSelector:"ul,.sf-mega",hoverClass:"sfHover",pathClass:"overrideThisToUse",pathLevels:1,delay:800,animation:{opacity:"show"},animationOut:{opacity:"hide"},speed:"normal",speedOut:"fast",cssArrows:!0,disableHI:!1,onInit:a.noop,onBeforeShow:a.noop,onShow:a.noop,onBeforeHide:a.noop,onHide:a.noop,onIdle:a.noop,onDestroy:a.noop,onHandleTouch:a.noop}}(jQuery,window); -------------------------------------------------------------------------------- /ecommerce/static/assets/vendor/owl.carousel/README.md: -------------------------------------------------------------------------------- 1 | # Owl Carousel 2 2 | 3 | Touch enabled [jQuery](https://jquery.com/) plugin that lets you create a beautiful, responsive carousel slider. **To get started, check out https://owlcarousel2.github.io/OwlCarousel2/.** 4 | 5 | **Notice:** The old Owl Carousel site (owlgraphic [dot] com) is no longer in use. Please delete all references to this in bookmarks and your own products' documentation as it's being used for malicious purposes. 6 | 7 | ## Quick start 8 | 9 | ### Install 10 | 11 | This package can be installed with: 12 | 13 | - [npm](https://www.npmjs.com/package/owl.carousel): `npm install --save owl.carousel` or `yarn add owl.carousel jquery` 14 | - [bower](http://bower.io/search/?q=owl.carousel): `bower install --save owl.carousel` 15 | 16 | Or download the [latest release](https://github.com/OwlCarousel2/OwlCarousel2/releases). 17 | 18 | ### Load 19 | 20 | #### Webpack 21 | 22 | Add jQuery via the "webpack.ProvidePlugin" to your webpack configuration: 23 | 24 | const webpack = require('webpack'); 25 | 26 | //... 27 | plugins: [ 28 | new webpack.ProvidePlugin({ 29 | $: 'jquery', 30 | jQuery: 'jquery', 31 | 'window.jQuery': 'jquery' 32 | }), 33 | ], 34 | //... 35 | 36 | Load the required stylesheet and JS: 37 | 38 | ```js 39 | import 'owl.carousel/dist/assets/owl.carousel.css'; 40 | import 'owl.carousel'; 41 | ``` 42 | 43 | #### Static HTML 44 | 45 | Put the required stylesheet at the [top](https://developer.yahoo.com/performance/rules.html#css_top) of your markup: 46 | 47 | ```html 48 | 49 | ``` 50 | 51 | ```html 52 | 53 | ``` 54 | 55 | **NOTE:** If you want to use the default navigation styles, you will also need to include `owl.theme.default.css`. 56 | 57 | 58 | Put the script at the [bottom](https://developer.yahoo.com/performance/rules.html#js_bottom) of your markup right after jQuery: 59 | 60 | ```html 61 | 62 | 63 | ``` 64 | 65 | ```html 66 | 67 | 68 | ``` 69 | 70 | ### Usage 71 | 72 | Wrap your items (`div`, `a`, `img`, `span`, `li` etc.) with a container element (`div`, `ul` etc.). Only the class `owl-carousel` is mandatory to apply proper styles: 73 | 74 | ```html 75 | 84 | ``` 85 | **NOTE:** The `owl-theme` class is optional, but without it, you will need to style navigation features on your own. 86 | 87 | 88 | Call the [plugin](https://learn.jquery.com/plugins/) function and your carousel is ready. 89 | 90 | ```javascript 91 | $(document).ready(function(){ 92 | $('.owl-carousel').owlCarousel(); 93 | }); 94 | ``` 95 | 96 | ## Documentation 97 | 98 | The documentation, included in this repo in the root directory, is built with [Assemble](http://assemble.io/) and publicly available at https://owlcarousel2.github.io/OwlCarousel2/. The documentation may also be run locally. 99 | 100 | ## Building 101 | 102 | This package comes with [Grunt](http://gruntjs.com/) and [Bower](http://bower.io/). The following tasks are available: 103 | 104 | * `default` compiles the CSS and JS into `/dist` and builds the doc. 105 | * `dist` compiles the CSS and JS into `/dist` only. 106 | * `watch` watches source files and builds them automatically whenever you save. 107 | * `test` runs [JSHint](http://www.jshint.com/) and [QUnit](http://qunitjs.com/) tests headlessly in [PhantomJS](http://phantomjs.org/). 108 | 109 | To define which plugins are build into the distribution just edit `/_config.json` to fit your needs. 110 | 111 | ## Contributing 112 | 113 | Please read [CONTRIBUTING.md](CONTRIBUTING.md). 114 | 115 | ## Roadmap 116 | 117 | Please make sure to check out our [Roadmap Discussion](https://github.com/OwlCarousel2/OwlCarousel2/issues/1756). 118 | 119 | 120 | ## License 121 | 122 | The code and the documentation are released under the [MIT License](LICENSE). 123 | -------------------------------------------------------------------------------- /ecommerce/PayTm/Checksum.py: -------------------------------------------------------------------------------- 1 | # pip install pycryptodome 2 | import base64 3 | import string 4 | import random 5 | import hashlib 6 | 7 | from Crypto.Cipher import AES 8 | 9 | 10 | IV = "@@@@&&&&####$$$$" 11 | BLOCK_SIZE = 16 12 | 13 | 14 | def generate_checksum(param_dict, merchant_key, salt=None): 15 | params_string = __get_param_string__(param_dict) 16 | salt = salt if salt else __id_generator__(4) 17 | final_string = '%s|%s' % (params_string, salt) 18 | 19 | hasher = hashlib.sha256(final_string.encode()) 20 | hash_string = hasher.hexdigest() 21 | 22 | hash_string += salt 23 | 24 | return __encode__(hash_string, IV, merchant_key) 25 | 26 | def generate_refund_checksum(param_dict, merchant_key, salt=None): 27 | for i in param_dict: 28 | if("|" in param_dict[i]): 29 | param_dict = {} 30 | exit() 31 | params_string = __get_param_string__(param_dict) 32 | salt = salt if salt else __id_generator__(4) 33 | final_string = '%s|%s' % (params_string, salt) 34 | 35 | hasher = hashlib.sha256(final_string.encode()) 36 | hash_string = hasher.hexdigest() 37 | 38 | hash_string += salt 39 | 40 | return __encode__(hash_string, IV, merchant_key) 41 | 42 | 43 | def generate_checksum_by_str(param_str, merchant_key, salt=None): 44 | params_string = param_str 45 | salt = salt if salt else __id_generator__(4) 46 | final_string = '%s|%s' % (params_string, salt) 47 | 48 | hasher = hashlib.sha256(final_string.encode()) 49 | hash_string = hasher.hexdigest() 50 | 51 | hash_string += salt 52 | 53 | return __encode__(hash_string, IV, merchant_key) 54 | 55 | 56 | def verify_checksum(param_dict, merchant_key, checksum): 57 | # Remove checksum 58 | if 'CHECKSUMHASH' in param_dict: 59 | param_dict.pop('CHECKSUMHASH') 60 | 61 | # Get salt 62 | paytm_hash = __decode__(checksum, IV, merchant_key) 63 | salt = paytm_hash[-4:] 64 | calculated_checksum = generate_checksum(param_dict, merchant_key, salt=salt) 65 | return calculated_checksum == checksum 66 | 67 | def verify_checksum_by_str(param_str, merchant_key, checksum): 68 | # Remove checksum 69 | #if 'CHECKSUMHASH' in param_dict: 70 | #param_dict.pop('CHECKSUMHASH') 71 | 72 | # Get salt 73 | paytm_hash = __decode__(checksum, IV, merchant_key) 74 | salt = paytm_hash[-4:] 75 | calculated_checksum = generate_checksum_by_str(param_str, merchant_key, salt=salt) 76 | return calculated_checksum == checksum 77 | 78 | 79 | 80 | def __id_generator__(size=6, chars=string.ascii_uppercase + string.digits + string.ascii_lowercase): 81 | return ''.join(random.choice(chars) for _ in range(size)) 82 | 83 | 84 | def __get_param_string__(params): 85 | params_string = [] 86 | for key in sorted(params.keys()): 87 | if("REFUND" in params[key] or "|" in params[key]): 88 | respons_dict = {} 89 | exit() 90 | value = params[key] 91 | params_string.append('' if value == 'null' else str(value)) 92 | return '|'.join(params_string) 93 | 94 | 95 | __pad__ = lambda s: s + (BLOCK_SIZE - len(s) % BLOCK_SIZE) * chr(BLOCK_SIZE - len(s) % BLOCK_SIZE) 96 | __unpad__ = lambda s: s[0:-ord(s[-1])] 97 | 98 | 99 | def __encode__(to_encode, iv, key): 100 | # Pad 101 | to_encode = __pad__(to_encode) 102 | # Encrypt 103 | c = AES.new(key.encode('utf-8'), AES.MODE_CBC, iv.encode('utf-8')) 104 | to_encode = c.encrypt(to_encode.encode('utf-8')) 105 | # Encode 106 | to_encode = base64.b64encode(to_encode) 107 | return to_encode.decode("UTF-8") 108 | 109 | 110 | def __decode__(to_decode, iv, key): 111 | # Decode 112 | to_decode = base64.b64decode(to_decode) 113 | # Decrypt 114 | c = AES.new(key.encode('utf-8'), AES.MODE_CBC, iv.encode('utf-8')) 115 | to_decode = c.decrypt(to_decode) 116 | if type(to_decode) == bytes: 117 | # convert bytes array to str. 118 | to_decode = to_decode.decode() 119 | # remove pad 120 | return __unpad__(to_decode) 121 | 122 | 123 | if __name__ == "__main__": 124 | params = { 125 | "MID": "mid", 126 | "ORDER_ID": "order_id", 127 | "CUST_ID": "cust_id", 128 | "TXN_AMOUNT": "1", 129 | "CHANNEL_ID": "WEB", 130 | "INDUSTRY_TYPE_ID": "Retail", 131 | "WEBSITE": "xxxxxxxxxxx" 132 | } 133 | 134 | print(verify_checksum( 135 | params, 'xxxxxxxxxxxxxxxx', 136 | "CD5ndX8VVjlzjWbbYoAtKQIlvtXPypQYOg0Fi2AUYKXZA5XSHiRF0FDj7vQu66S8MHx9NaDZ/uYm3WBOWHf+sDQAmTyxqUipA7i1nILlxrk=")) 137 | 138 | # print(generate_checksum(params, "xxxxxxxxxxxxxxxx")) -------------------------------------------------------------------------------- /ecommerce/static/assets/vendor/bootstrap/css/bootstrap-reboot.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Reboot v5.0.0-beta1 (https://getbootstrap.com/) 3 | * Copyright 2011-2020 The Bootstrap Authors 4 | * Copyright 2011-2020 Twitter, Inc. 5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 6 | * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md) 7 | */*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){h1{font-size:2.5rem}}h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){h2{font-size:2rem}}h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){h3{font-size:1.75rem}}h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){h4{font-size:1.5rem}}h5{font-size:1.25rem}h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[data-bs-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:.875em}mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0d6efd;text-decoration:underline}a:hover{color:#0a58ca}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em;direction:ltr;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:#d63384;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus{outline:dotted 1px;outline:-webkit-focus-ring-color auto 5px}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}[list]::-webkit-calendar-picker-indicator{display:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important} 8 | /*# sourceMappingURL=bootstrap-reboot.min.css.map */ -------------------------------------------------------------------------------- /ecommerce/static/assets/vendor/bootstrap/css/bootstrap-reboot.rtl.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Reboot v5.0.0-beta1 (https://getbootstrap.com/) 3 | * Copyright 2011-2020 The Bootstrap Authors 4 | * Copyright 2011-2020 Twitter, Inc. 5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 6 | * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md) 7 | */*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){h1{font-size:2.5rem}}h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){h2{font-size:2rem}}h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){h3{font-size:1.75rem}}h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){h4{font-size:1.5rem}}h5{font-size:1.25rem}h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[data-bs-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-right:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-right:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:.875em}mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0d6efd;text-decoration:underline}a:hover{color:#0a58ca}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em;direction:ltr;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:#d63384;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:right}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus{outline:dotted 1px;outline:-webkit-focus-ring-color auto 5px}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}[list]::-webkit-calendar-picker-indicator{display:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:right;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:right}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}[type=email],[type=number],[type=tel],[type=url]{direction:ltr}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important} 8 | /*# sourceMappingURL=bootstrap-reboot.rtl.min.css.map */ -------------------------------------------------------------------------------- /ecommerce/static/assets/vendor/hoverIntent/hoverIntent.js: -------------------------------------------------------------------------------- 1 | /** 2 | * hoverIntent is similar to jQuery's built-in "hover" method except that 3 | * instead of firing the handlerIn function immediately, hoverIntent checks 4 | * to see if the user's mouse has slowed down (beneath the sensitivity 5 | * threshold) before firing the event. The handlerOut function is only 6 | * called after a matching handlerIn. 7 | * 8 | * hoverIntent r7 // 2013.03.11 // jQuery 1.9.1+ 9 | * http://cherne.net/brian/resources/jquery.hoverIntent.html 10 | * 11 | * You may use hoverIntent under the terms of the MIT license. Basically that 12 | * means you are free to use hoverIntent as long as this header is left intact. 13 | * Copyright 2007, 2013 Brian Cherne 14 | * 15 | * // basic usage ... just like .hover() 16 | * .hoverIntent( handlerIn, handlerOut ) 17 | * .hoverIntent( handlerInOut ) 18 | * 19 | * // basic usage ... with event delegation! 20 | * .hoverIntent( handlerIn, handlerOut, selector ) 21 | * .hoverIntent( handlerInOut, selector ) 22 | * 23 | * // using a basic configuration object 24 | * .hoverIntent( config ) 25 | * 26 | * @param handlerIn function OR configuration object 27 | * @param handlerOut function OR selector for delegation OR undefined 28 | * @param selector selector OR undefined 29 | * @author Brian Cherne 30 | **/ 31 | (function($) { 32 | $.fn.hoverIntent = function(handlerIn,handlerOut,selector) { 33 | 34 | // default configuration values 35 | var cfg = { 36 | interval: 100, 37 | sensitivity: 7, 38 | timeout: 0 39 | }; 40 | 41 | if ( typeof handlerIn === "object" ) { 42 | cfg = $.extend(cfg, handlerIn ); 43 | } else if ($.isFunction(handlerOut)) { 44 | cfg = $.extend(cfg, { over: handlerIn, out: handlerOut, selector: selector } ); 45 | } else { 46 | cfg = $.extend(cfg, { over: handlerIn, out: handlerIn, selector: handlerOut } ); 47 | } 48 | 49 | // instantiate variables 50 | // cX, cY = current X and Y position of mouse, updated by mousemove event 51 | // pX, pY = previous X and Y position of mouse, set by mouseover and polling interval 52 | var cX, cY, pX, pY; 53 | 54 | // A private function for getting mouse position 55 | var track = function(ev) { 56 | cX = ev.pageX; 57 | cY = ev.pageY; 58 | }; 59 | 60 | // A private function for comparing current and previous mouse position 61 | var compare = function(ev,ob) { 62 | ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t); 63 | // compare mouse positions to see if they've crossed the threshold 64 | if ( ( Math.abs(pX-cX) + Math.abs(pY-cY) ) < cfg.sensitivity ) { 65 | $(ob).off("mousemove.hoverIntent",track); 66 | // set hoverIntent state to true (so mouseOut can be called) 67 | ob.hoverIntent_s = 1; 68 | return cfg.over.apply(ob,[ev]); 69 | } else { 70 | // set previous coordinates for next time 71 | pX = cX; pY = cY; 72 | // use self-calling timeout, guarantees intervals are spaced out properly (avoids JavaScript timer bugs) 73 | ob.hoverIntent_t = setTimeout( function(){compare(ev, ob);} , cfg.interval ); 74 | } 75 | }; 76 | 77 | // A private function for delaying the mouseOut function 78 | var delay = function(ev,ob) { 79 | ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t); 80 | ob.hoverIntent_s = 0; 81 | return cfg.out.apply(ob,[ev]); 82 | }; 83 | 84 | // A private function for handling mouse 'hovering' 85 | var handleHover = function(e) { 86 | // copy objects to be passed into t (required for event object to be passed in IE) 87 | var ev = jQuery.extend({},e); 88 | var ob = this; 89 | 90 | // cancel hoverIntent timer if it exists 91 | if (ob.hoverIntent_t) { ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t); } 92 | 93 | // if e.type == "mouseenter" 94 | if (e.type == "mouseenter") { 95 | // set "previous" X and Y position based on initial entry point 96 | pX = ev.pageX; pY = ev.pageY; 97 | // update "current" X and Y position based on mousemove 98 | $(ob).on("mousemove.hoverIntent",track); 99 | // start polling interval (self-calling timeout) to compare mouse coordinates over time 100 | if (ob.hoverIntent_s != 1) { ob.hoverIntent_t = setTimeout( function(){compare(ev,ob);} , cfg.interval );} 101 | 102 | // else e.type == "mouseleave" 103 | } else { 104 | // unbind expensive mousemove event 105 | $(ob).off("mousemove.hoverIntent",track); 106 | // if hoverIntent state is true, then call the mouseOut function after the specified delay 107 | if (ob.hoverIntent_s == 1) { ob.hoverIntent_t = setTimeout( function(){delay(ev,ob);} , cfg.timeout );} 108 | } 109 | }; 110 | 111 | // listen for mouseenter and mouseleave 112 | return this.on({'mouseenter.hoverIntent':handleHover,'mouseleave.hoverIntent':handleHover}, cfg.selector); 113 | }; 114 | })(jQuery); -------------------------------------------------------------------------------- /ecommerce/static/assets/vendor/php-email-form/validate.js: -------------------------------------------------------------------------------- 1 | /** 2 | * PHP Email Form Validation - v2.3 3 | * URL: https://bootstrapmade.com/php-email-form/ 4 | * Author: BootstrapMade.com 5 | */ 6 | !(function($) { 7 | "use strict"; 8 | 9 | $('form.php-email-form').submit(function(e) { 10 | e.preventDefault(); 11 | 12 | var f = $(this).find('.form-group'), 13 | ferror = false, 14 | emailExp = /^[^\s()<>@,;:\/]+@\w[\w\.-]+\.[a-z]{2,}$/i; 15 | 16 | f.children('input').each(function() { // run all inputs 17 | 18 | var i = $(this); // current input 19 | var rule = i.attr('data-rule'); 20 | 21 | if (rule !== undefined) { 22 | var ierror = false; // error flag for current input 23 | var pos = rule.indexOf(':', 0); 24 | if (pos >= 0) { 25 | var exp = rule.substr(pos + 1, rule.length); 26 | rule = rule.substr(0, pos); 27 | } else { 28 | rule = rule.substr(pos + 1, rule.length); 29 | } 30 | 31 | switch (rule) { 32 | case 'required': 33 | if (i.val() === '') { 34 | ferror = ierror = true; 35 | } 36 | break; 37 | 38 | case 'minlen': 39 | if (i.val().length < parseInt(exp)) { 40 | ferror = ierror = true; 41 | } 42 | break; 43 | 44 | case 'email': 45 | if (!emailExp.test(i.val())) { 46 | ferror = ierror = true; 47 | } 48 | break; 49 | 50 | case 'checked': 51 | if (! i.is(':checked')) { 52 | ferror = ierror = true; 53 | } 54 | break; 55 | 56 | case 'regexp': 57 | exp = new RegExp(exp); 58 | if (!exp.test(i.val())) { 59 | ferror = ierror = true; 60 | } 61 | break; 62 | } 63 | i.next('.validate').html((ierror ? (i.attr('data-msg') !== undefined ? i.attr('data-msg') : 'wrong Input') : '')).show('blind'); 64 | } 65 | }); 66 | f.children('textarea').each(function() { // run all inputs 67 | 68 | var i = $(this); // current input 69 | var rule = i.attr('data-rule'); 70 | 71 | if (rule !== undefined) { 72 | var ierror = false; // error flag for current input 73 | var pos = rule.indexOf(':', 0); 74 | if (pos >= 0) { 75 | var exp = rule.substr(pos + 1, rule.length); 76 | rule = rule.substr(0, pos); 77 | } else { 78 | rule = rule.substr(pos + 1, rule.length); 79 | } 80 | 81 | switch (rule) { 82 | case 'required': 83 | if (i.val() === '') { 84 | ferror = ierror = true; 85 | } 86 | break; 87 | 88 | case 'minlen': 89 | if (i.val().length < parseInt(exp)) { 90 | ferror = ierror = true; 91 | } 92 | break; 93 | } 94 | i.next('.validate').html((ierror ? (i.attr('data-msg') != undefined ? i.attr('data-msg') : 'wrong Input') : '')).show('blind'); 95 | } 96 | }); 97 | if (ferror) return false; 98 | 99 | var this_form = $(this); 100 | var action = $(this).attr('action'); 101 | 102 | if( ! action ) { 103 | this_form.find('.loading').slideUp(); 104 | this_form.find('.error-message').slideDown().html('The form action property is not set!'); 105 | return false; 106 | } 107 | 108 | this_form.find('.sent-message').slideUp(); 109 | this_form.find('.error-message').slideUp(); 110 | this_form.find('.loading').slideDown(); 111 | 112 | if ( $(this).data('recaptcha-site-key') ) { 113 | var recaptcha_site_key = $(this).data('recaptcha-site-key'); 114 | grecaptcha.ready(function() { 115 | grecaptcha.execute(recaptcha_site_key, {action: 'php_email_form_submit'}).then(function(token) { 116 | php_email_form_submit(this_form,action,this_form.serialize() + '&recaptcha-response=' + token); 117 | }); 118 | }); 119 | } else { 120 | php_email_form_submit(this_form,action,this_form.serialize()); 121 | } 122 | 123 | return true; 124 | }); 125 | 126 | function php_email_form_submit(this_form, action, data) { 127 | $.ajax({ 128 | type: "POST", 129 | url: action, 130 | data: data, 131 | timeout: 40000 132 | }).done( function(msg){ 133 | if (msg.trim() == 'OK') { 134 | this_form.find('.loading').slideUp(); 135 | this_form.find('.sent-message').slideDown(); 136 | this_form.find("input:not(input[type=submit]), textarea").val(''); 137 | } else { 138 | this_form.find('.loading').slideUp(); 139 | if(!msg) { 140 | msg = 'Form submission failed and no error message returned from: ' + action + '
'; 141 | } 142 | this_form.find('.error-message').slideDown().html(msg); 143 | } 144 | }).fail( function(data){ 145 | console.log(data); 146 | var error_msg = "Form submission failed!
"; 147 | if(data.statusText || data.status) { 148 | error_msg += 'Status:'; 149 | if(data.statusText) { 150 | error_msg += ' ' + data.statusText; 151 | } 152 | if(data.status) { 153 | error_msg += ' ' + data.status; 154 | } 155 | error_msg += '
'; 156 | } 157 | if(data.responseText) { 158 | error_msg += data.responseText; 159 | } 160 | this_form.find('.loading').slideUp(); 161 | this_form.find('.error-message').slideDown().html(error_msg); 162 | }); 163 | } 164 | 165 | })(jQuery); 166 | -------------------------------------------------------------------------------- /ecommerce/static/assets/vendor/owl.carousel/assets/owl.carousel.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Owl Carousel v2.3.4 3 | * Copyright 2013-2018 David Deutsch 4 | * Licensed under: SEE LICENSE IN https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE 5 | */ 6 | /* 7 | * Owl Carousel - Core 8 | */ 9 | .owl-carousel { 10 | display: none; 11 | width: 100%; 12 | -webkit-tap-highlight-color: transparent; 13 | /* position relative and z-index fix webkit rendering fonts issue */ 14 | position: relative; 15 | z-index: 1; } 16 | .owl-carousel .owl-stage { 17 | position: relative; 18 | -ms-touch-action: pan-Y; 19 | touch-action: manipulation; 20 | -moz-backface-visibility: hidden; 21 | /* fix firefox animation glitch */ } 22 | .owl-carousel .owl-stage:after { 23 | content: "."; 24 | display: block; 25 | clear: both; 26 | visibility: hidden; 27 | line-height: 0; 28 | height: 0; } 29 | .owl-carousel .owl-stage-outer { 30 | position: relative; 31 | overflow: hidden; 32 | /* fix for flashing background */ 33 | -webkit-transform: translate3d(0px, 0px, 0px); } 34 | .owl-carousel .owl-wrapper, 35 | .owl-carousel .owl-item { 36 | -webkit-backface-visibility: hidden; 37 | -moz-backface-visibility: hidden; 38 | -ms-backface-visibility: hidden; 39 | -webkit-transform: translate3d(0, 0, 0); 40 | -moz-transform: translate3d(0, 0, 0); 41 | -ms-transform: translate3d(0, 0, 0); } 42 | .owl-carousel .owl-item { 43 | position: relative; 44 | min-height: 1px; 45 | float: left; 46 | -webkit-backface-visibility: hidden; 47 | -webkit-tap-highlight-color: transparent; 48 | -webkit-touch-callout: none; } 49 | .owl-carousel .owl-item img { 50 | display: block; 51 | width: 100%; } 52 | .owl-carousel .owl-nav.disabled, 53 | .owl-carousel .owl-dots.disabled { 54 | display: none; } 55 | .owl-carousel .owl-nav .owl-prev, 56 | .owl-carousel .owl-nav .owl-next, 57 | .owl-carousel .owl-dot { 58 | cursor: pointer; 59 | -webkit-user-select: none; 60 | -khtml-user-select: none; 61 | -moz-user-select: none; 62 | -ms-user-select: none; 63 | user-select: none; } 64 | .owl-carousel .owl-nav button.owl-prev, 65 | .owl-carousel .owl-nav button.owl-next, 66 | .owl-carousel button.owl-dot { 67 | background: none; 68 | color: inherit; 69 | border: none; 70 | padding: 0 !important; 71 | font: inherit; } 72 | .owl-carousel.owl-loaded { 73 | display: block; } 74 | .owl-carousel.owl-loading { 75 | opacity: 0; 76 | display: block; } 77 | .owl-carousel.owl-hidden { 78 | opacity: 0; } 79 | .owl-carousel.owl-refresh .owl-item { 80 | visibility: hidden; } 81 | .owl-carousel.owl-drag .owl-item { 82 | -ms-touch-action: pan-y; 83 | touch-action: pan-y; 84 | -webkit-user-select: none; 85 | -moz-user-select: none; 86 | -ms-user-select: none; 87 | user-select: none; } 88 | .owl-carousel.owl-grab { 89 | cursor: move; 90 | cursor: grab; } 91 | .owl-carousel.owl-rtl { 92 | direction: rtl; } 93 | .owl-carousel.owl-rtl .owl-item { 94 | float: right; } 95 | 96 | /* No Js */ 97 | .no-js .owl-carousel { 98 | display: block; } 99 | 100 | /* 101 | * Owl Carousel - Animate Plugin 102 | */ 103 | .owl-carousel .animated { 104 | animation-duration: 1000ms; 105 | animation-fill-mode: both; } 106 | 107 | .owl-carousel .owl-animated-in { 108 | z-index: 0; } 109 | 110 | .owl-carousel .owl-animated-out { 111 | z-index: 1; } 112 | 113 | .owl-carousel .fadeOut { 114 | animation-name: fadeOut; } 115 | 116 | @keyframes fadeOut { 117 | 0% { 118 | opacity: 1; } 119 | 100% { 120 | opacity: 0; } } 121 | 122 | /* 123 | * Owl Carousel - Auto Height Plugin 124 | */ 125 | .owl-height { 126 | transition: height 500ms ease-in-out; } 127 | 128 | /* 129 | * Owl Carousel - Lazy Load Plugin 130 | */ 131 | .owl-carousel .owl-item { 132 | /** 133 | This is introduced due to a bug in IE11 where lazy loading combined with autoheight plugin causes a wrong 134 | calculation of the height of the owl-item that breaks page layouts 135 | */ } 136 | .owl-carousel .owl-item .owl-lazy { 137 | opacity: 0; 138 | transition: opacity 400ms ease; } 139 | .owl-carousel .owl-item .owl-lazy[src^=""], .owl-carousel .owl-item .owl-lazy:not([src]) { 140 | max-height: 0; } 141 | .owl-carousel .owl-item img.owl-lazy { 142 | transform-style: preserve-3d; } 143 | 144 | /* 145 | * Owl Carousel - Video Plugin 146 | */ 147 | .owl-carousel .owl-video-wrapper { 148 | position: relative; 149 | height: 100%; 150 | background: #000; } 151 | 152 | .owl-carousel .owl-video-play-icon { 153 | position: absolute; 154 | height: 80px; 155 | width: 80px; 156 | left: 50%; 157 | top: 50%; 158 | margin-left: -40px; 159 | margin-top: -40px; 160 | background: url("owl.video.play.png") no-repeat; 161 | cursor: pointer; 162 | z-index: 1; 163 | -webkit-backface-visibility: hidden; 164 | transition: transform 100ms ease; } 165 | 166 | .owl-carousel .owl-video-play-icon:hover { 167 | -ms-transform: scale(1.3, 1.3); 168 | transform: scale(1.3, 1.3); } 169 | 170 | .owl-carousel .owl-video-playing .owl-video-tn, 171 | .owl-carousel .owl-video-playing .owl-video-play-icon { 172 | display: none; } 173 | 174 | .owl-carousel .owl-video-tn { 175 | opacity: 0; 176 | height: 100%; 177 | background-position: center center; 178 | background-repeat: no-repeat; 179 | background-size: contain; 180 | transition: opacity 400ms ease; } 181 | 182 | .owl-carousel .owl-video-frame { 183 | position: relative; 184 | z-index: 1; 185 | height: 100%; 186 | width: 100%; } 187 | -------------------------------------------------------------------------------- /ecommerce/static/assets/js/main.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Template Name: TheEvent - v3.0.0 3 | * Template URL: https://bootstrapmade.com/theevent-conference-event-bootstrap-template/ 4 | * Author: BootstrapMade.com 5 | * License: https://bootstrapmade.com/license/ 6 | */ 7 | !(function($) { 8 | "use strict"; 9 | 10 | // Back to top button 11 | $(window).scroll(function() { 12 | if ($(this).scrollTop() > 100) { 13 | $('.back-to-top').fadeIn('slow'); 14 | } else { 15 | $('.back-to-top').fadeOut('slow'); 16 | } 17 | }); 18 | $('.back-to-top').click(function() { 19 | $('html, body').animate({ 20 | scrollTop: 0 21 | }, 1500, 'easeInOutExpo'); 22 | return false; 23 | }); 24 | 25 | // Header fixed on scroll 26 | $(window).scroll(function() { 27 | if ($(this).scrollTop() > 100) { 28 | $('#header').addClass('header-scrolled'); 29 | } else { 30 | $('#header').removeClass('header-scrolled'); 31 | } 32 | }); 33 | 34 | if ($(window).scrollTop() > 100) { 35 | $('#header').addClass('header-scrolled'); 36 | } 37 | 38 | // Initialize Venobox 39 | $(window).on('load', function() { 40 | $('.venobox').venobox({ 41 | bgcolor: '', 42 | overlayColor: 'rgba(6, 12, 34, 0.85)', 43 | closeBackground: '', 44 | closeColor: '#fff', 45 | share: false 46 | }); 47 | }); 48 | 49 | // Initiate superfish on nav menu 50 | $('.nav-menu').superfish({ 51 | animation: { 52 | opacity: 'show' 53 | }, 54 | speed: 400 55 | }); 56 | 57 | // Mobile Navigation 58 | if ($('#nav-menu-container').length) { 59 | var $mobile_nav = $('#nav-menu-container').clone().prop({ 60 | id: 'mobile-nav' 61 | }); 62 | $mobile_nav.find('> ul').attr({ 63 | 'class': '', 64 | 'id': '' 65 | }); 66 | $('body').append($mobile_nav); 67 | $('body').prepend(''); 68 | $('body').append('
'); 69 | $('#mobile-nav').find('.menu-has-children').prepend(''); 70 | 71 | $(document).on('click', '.menu-has-children i', function(e) { 72 | $(this).next().toggleClass('menu-item-active'); 73 | $(this).nextAll('ul').eq(0).slideToggle(); 74 | $(this).toggleClass("fa-chevron-up fa-chevron-down"); 75 | }); 76 | 77 | $(document).on('click', '#mobile-nav-toggle', function(e) { 78 | $('body').toggleClass('mobile-nav-active'); 79 | $('#mobile-nav-toggle i').toggleClass('fa-times fa-bars'); 80 | $('#mobile-body-overly').toggle(); 81 | }); 82 | 83 | $(document).click(function(e) { 84 | var container = $("#mobile-nav, #mobile-nav-toggle"); 85 | if (!container.is(e.target) && container.has(e.target).length === 0) { 86 | if ($('body').hasClass('mobile-nav-active')) { 87 | $('body').removeClass('mobile-nav-active'); 88 | $('#mobile-nav-toggle i').toggleClass('fa-times fa-bars'); 89 | $('#mobile-body-overly').fadeOut(); 90 | } 91 | } 92 | }); 93 | } else if ($("#mobile-nav, #mobile-nav-toggle").length) { 94 | $("#mobile-nav, #mobile-nav-toggle").hide(); 95 | } 96 | 97 | // Smooth scroll for the navigation menu and links with .scrollto classes 98 | var scrolltoOffset = $('#header').outerHeight() - 21; 99 | if (window.matchMedia("(max-width: 991px)").matches) { 100 | scrolltoOffset += 20; 101 | } 102 | $(document).on('click', '.nav-menu a, #mobile-nav a, .scrollto', function(e) { 103 | if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) { 104 | var target = $(this.hash); 105 | if (target.length) { 106 | e.preventDefault(); 107 | 108 | var scrollto = target.offset().top - scrolltoOffset; 109 | 110 | if ($(this).attr("href") == '#header') { 111 | scrollto = 0; 112 | } 113 | 114 | $('html, body').animate({ 115 | scrollTop: scrollto 116 | }, 1500, 'easeInOutExpo'); 117 | 118 | if ($(this).parents('.nav-menu').length) { 119 | $('.nav-menu .menu-active').removeClass('menu-active'); 120 | $(this).closest('li').addClass('menu-active'); 121 | } 122 | 123 | if ($('body').hasClass('mobile-nav-active')) { 124 | $('body').removeClass('mobile-nav-active'); 125 | $('#mobile-nav-toggle i').toggleClass('fa-times fa-bars'); 126 | $('#mobile-body-overly').fadeOut(); 127 | } 128 | return false; 129 | } 130 | } 131 | }); 132 | 133 | // Activate smooth scroll on page load with hash links in the url 134 | $(document).ready(function() { 135 | if (window.location.hash) { 136 | var initial_nav = window.location.hash; 137 | if ($(initial_nav).length) { 138 | var scrollto = $(initial_nav).offset().top - scrolltoOffset; 139 | $('html, body').animate({ 140 | scrollTop: scrollto 141 | }, 1500, 'easeInOutExpo'); 142 | } 143 | } 144 | }); 145 | 146 | // Navigation active state on scroll 147 | var nav_sections = $('section'); 148 | var main_nav = $('.nav-menu, #mobile-nav'); 149 | 150 | $(window).on('scroll', function() { 151 | var cur_pos = $(this).scrollTop() + 200; 152 | 153 | nav_sections.each(function() { 154 | var top = $(this).offset().top, 155 | bottom = top + $(this).outerHeight(); 156 | 157 | if (cur_pos >= top && cur_pos <= bottom) { 158 | if (cur_pos <= bottom) { 159 | main_nav.find('li').removeClass('menu-active'); 160 | } 161 | main_nav.find('a[href="#' + $(this).attr('id') + '"]').parent('li').addClass('menu-active'); 162 | } 163 | if (cur_pos < 300) { 164 | $(".nav-menu li:first").addClass('menu-active'); 165 | } 166 | }); 167 | }); 168 | 169 | // Gallery carousel (uses the Owl Carousel library) 170 | $(".gallery-carousel").owlCarousel({ 171 | autoplay: true, 172 | dots: true, 173 | loop: true, 174 | center: true, 175 | responsive: { 176 | 0: { 177 | items: 1 178 | }, 179 | 768: { 180 | items: 3 181 | }, 182 | 992: { 183 | items: 4 184 | }, 185 | 1200: { 186 | items: 5 187 | } 188 | } 189 | }); 190 | 191 | // Buy tickets select the ticket type on click 192 | $('#buy-ticket-modal').on('show.bs.modal', function(event) { 193 | var button = $(event.relatedTarget); 194 | var ticketType = button.data('ticket-type'); 195 | var modal = $(this); 196 | modal.find('#ticket-type').val(ticketType); 197 | }); 198 | 199 | // Init AOS 200 | function aos_init() { 201 | AOS.init({ 202 | duration: 1000, 203 | once: true 204 | }); 205 | } 206 | $(window).on('load', function() { 207 | aos_init(); 208 | }); 209 | 210 | })(jQuery); -------------------------------------------------------------------------------- /ecommerce/templates/index.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | {% block title %} 3 | INFYKART 4 | {% endblock title %} 5 | {% block home %} 6 | menu-active 7 | {% endblock home %} 8 | {% block style %} 9 | 10 | {% endblock style %} 11 | 12 | {% block body %} 13 | {% load static %} 14 | 15 | 16 | 17 | {% for product, range, nSlides in allProds %} 18 | 19 |
20 | 21 |

{{product.0.category}} Flashsale

22 |
23 |
24 |
25 | 26 | 27 | {% for i in product %} 28 |
29 | 30 | ... 31 |
32 |
{{i.product_name}}
33 |

{{i.desc|slice:"0:53"}}...

34 |
Price:{{i.price}}
35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 |
45 |
46 | 47 | 48 | 49 | {% endfor %} 50 |
51 |
52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | {% endfor %} 62 | 63 | 64 | 65 | 66 | 67 |
68 | 71 | 72 |
73 | 74 |
75 |
76 | Developed by ANEES & KANAK 77 |
78 |
79 |
80 | {% block script %} 81 | 82 | 83 | 84 | 85 | 181 | 182 | {% endblock script %} 183 | {% endblock body %} 184 | -------------------------------------------------------------------------------- /ecommerce/static/assets/vendor/bootstrap/css/bootstrap-reboot.rtl.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Reboot v5.0.0-beta1 (https://getbootstrap.com/) 3 | * Copyright 2011-2020 The Bootstrap Authors 4 | * Copyright 2011-2020 Twitter, Inc. 5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 6 | * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md) 7 | */ 8 | *, 9 | *::before, 10 | *::after { 11 | box-sizing: border-box; 12 | } 13 | 14 | @media (prefers-reduced-motion: no-preference) { 15 | :root { 16 | scroll-behavior: smooth; 17 | } 18 | } 19 | 20 | body { 21 | margin: 0; 22 | font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; 23 | font-size: 1rem; 24 | font-weight: 400; 25 | line-height: 1.5; 26 | color: #212529; 27 | background-color: #fff; 28 | -webkit-text-size-adjust: 100%; 29 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0); 30 | } 31 | 32 | [tabindex="-1"]:focus:not(:focus-visible) { 33 | outline: 0 !important; 34 | } 35 | 36 | hr { 37 | margin: 1rem 0; 38 | color: inherit; 39 | background-color: currentColor; 40 | border: 0; 41 | opacity: 0.25; 42 | } 43 | 44 | hr:not([size]) { 45 | height: 1px; 46 | } 47 | 48 | h6, h5, h4, h3, h2, h1 { 49 | margin-top: 0; 50 | margin-bottom: 0.5rem; 51 | font-weight: 500; 52 | line-height: 1.2; 53 | } 54 | 55 | h1 { 56 | font-size: calc(1.375rem + 1.5vw); 57 | } 58 | @media (min-width: 1200px) { 59 | h1 { 60 | font-size: 2.5rem; 61 | } 62 | } 63 | 64 | h2 { 65 | font-size: calc(1.325rem + 0.9vw); 66 | } 67 | @media (min-width: 1200px) { 68 | h2 { 69 | font-size: 2rem; 70 | } 71 | } 72 | 73 | h3 { 74 | font-size: calc(1.3rem + 0.6vw); 75 | } 76 | @media (min-width: 1200px) { 77 | h3 { 78 | font-size: 1.75rem; 79 | } 80 | } 81 | 82 | h4 { 83 | font-size: calc(1.275rem + 0.3vw); 84 | } 85 | @media (min-width: 1200px) { 86 | h4 { 87 | font-size: 1.5rem; 88 | } 89 | } 90 | 91 | h5 { 92 | font-size: 1.25rem; 93 | } 94 | 95 | h6 { 96 | font-size: 1rem; 97 | } 98 | 99 | p { 100 | margin-top: 0; 101 | margin-bottom: 1rem; 102 | } 103 | 104 | abbr[title], 105 | abbr[data-bs-original-title] { 106 | text-decoration: underline; 107 | -webkit-text-decoration: underline dotted; 108 | text-decoration: underline dotted; 109 | cursor: help; 110 | -webkit-text-decoration-skip-ink: none; 111 | text-decoration-skip-ink: none; 112 | } 113 | 114 | address { 115 | margin-bottom: 1rem; 116 | font-style: normal; 117 | line-height: inherit; 118 | } 119 | 120 | ol, 121 | ul { 122 | padding-right: 2rem; 123 | } 124 | 125 | ol, 126 | ul, 127 | dl { 128 | margin-top: 0; 129 | margin-bottom: 1rem; 130 | } 131 | 132 | ol ol, 133 | ul ul, 134 | ol ul, 135 | ul ol { 136 | margin-bottom: 0; 137 | } 138 | 139 | dt { 140 | font-weight: 700; 141 | } 142 | 143 | dd { 144 | margin-bottom: 0.5rem; 145 | margin-right: 0; 146 | } 147 | 148 | blockquote { 149 | margin: 0 0 1rem; 150 | } 151 | 152 | b, 153 | strong { 154 | font-weight: bolder; 155 | } 156 | 157 | small { 158 | font-size: 0.875em; 159 | } 160 | 161 | mark { 162 | padding: 0.2em; 163 | background-color: #fcf8e3; 164 | } 165 | 166 | sub, 167 | sup { 168 | position: relative; 169 | font-size: 0.75em; 170 | line-height: 0; 171 | vertical-align: baseline; 172 | } 173 | 174 | sub { 175 | bottom: -0.25em; 176 | } 177 | 178 | sup { 179 | top: -0.5em; 180 | } 181 | 182 | a { 183 | color: #0d6efd; 184 | text-decoration: underline; 185 | } 186 | a:hover { 187 | color: #0a58ca; 188 | } 189 | 190 | a:not([href]):not([class]), a:not([href]):not([class]):hover { 191 | color: inherit; 192 | text-decoration: none; 193 | } 194 | 195 | pre, 196 | code, 197 | kbd, 198 | samp { 199 | font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; 200 | font-size: 1em; 201 | direction: ltr ; 202 | unicode-bidi: bidi-override; 203 | } 204 | 205 | pre { 206 | display: block; 207 | margin-top: 0; 208 | margin-bottom: 1rem; 209 | overflow: auto; 210 | font-size: 0.875em; 211 | } 212 | pre code { 213 | font-size: inherit; 214 | color: inherit; 215 | word-break: normal; 216 | } 217 | 218 | code { 219 | font-size: 0.875em; 220 | color: #d63384; 221 | word-wrap: break-word; 222 | } 223 | a > code { 224 | color: inherit; 225 | } 226 | 227 | kbd { 228 | padding: 0.2rem 0.4rem; 229 | font-size: 0.875em; 230 | color: #fff; 231 | background-color: #212529; 232 | border-radius: 0.2rem; 233 | } 234 | kbd kbd { 235 | padding: 0; 236 | font-size: 1em; 237 | font-weight: 700; 238 | } 239 | 240 | figure { 241 | margin: 0 0 1rem; 242 | } 243 | 244 | img, 245 | svg { 246 | vertical-align: middle; 247 | } 248 | 249 | table { 250 | caption-side: bottom; 251 | border-collapse: collapse; 252 | } 253 | 254 | caption { 255 | padding-top: 0.5rem; 256 | padding-bottom: 0.5rem; 257 | color: #6c757d; 258 | text-align: right; 259 | } 260 | 261 | th { 262 | text-align: inherit; 263 | text-align: -webkit-match-parent; 264 | } 265 | 266 | thead, 267 | tbody, 268 | tfoot, 269 | tr, 270 | td, 271 | th { 272 | border-color: inherit; 273 | border-style: solid; 274 | border-width: 0; 275 | } 276 | 277 | label { 278 | display: inline-block; 279 | } 280 | 281 | button { 282 | border-radius: 0; 283 | } 284 | 285 | button:focus { 286 | outline: dotted 1px; 287 | outline: -webkit-focus-ring-color auto 5px; 288 | } 289 | 290 | input, 291 | button, 292 | select, 293 | optgroup, 294 | textarea { 295 | margin: 0; 296 | font-family: inherit; 297 | font-size: inherit; 298 | line-height: inherit; 299 | } 300 | 301 | button, 302 | select { 303 | text-transform: none; 304 | } 305 | 306 | [role=button] { 307 | cursor: pointer; 308 | } 309 | 310 | select { 311 | word-wrap: normal; 312 | } 313 | 314 | [list]::-webkit-calendar-picker-indicator { 315 | display: none; 316 | } 317 | 318 | button, 319 | [type=button], 320 | [type=reset], 321 | [type=submit] { 322 | -webkit-appearance: button; 323 | } 324 | button:not(:disabled), 325 | [type=button]:not(:disabled), 326 | [type=reset]:not(:disabled), 327 | [type=submit]:not(:disabled) { 328 | cursor: pointer; 329 | } 330 | 331 | ::-moz-focus-inner { 332 | padding: 0; 333 | border-style: none; 334 | } 335 | 336 | textarea { 337 | resize: vertical; 338 | } 339 | 340 | fieldset { 341 | min-width: 0; 342 | padding: 0; 343 | margin: 0; 344 | border: 0; 345 | } 346 | 347 | legend { 348 | float: right; 349 | width: 100%; 350 | padding: 0; 351 | margin-bottom: 0.5rem; 352 | font-size: calc(1.275rem + 0.3vw); 353 | line-height: inherit; 354 | } 355 | @media (min-width: 1200px) { 356 | legend { 357 | font-size: 1.5rem; 358 | } 359 | } 360 | legend + * { 361 | clear: right; 362 | } 363 | 364 | ::-webkit-datetime-edit-fields-wrapper, 365 | ::-webkit-datetime-edit-text, 366 | ::-webkit-datetime-edit-minute, 367 | ::-webkit-datetime-edit-hour-field, 368 | ::-webkit-datetime-edit-day-field, 369 | ::-webkit-datetime-edit-month-field, 370 | ::-webkit-datetime-edit-year-field { 371 | padding: 0; 372 | } 373 | 374 | ::-webkit-inner-spin-button { 375 | height: auto; 376 | } 377 | 378 | [type=search] { 379 | outline-offset: -2px; 380 | -webkit-appearance: textfield; 381 | } 382 | 383 | [type="tel"], 384 | [type="url"], 385 | [type="email"], 386 | [type="number"] { 387 | direction: ltr; 388 | } 389 | ::-webkit-search-decoration { 390 | -webkit-appearance: none; 391 | } 392 | 393 | ::-webkit-color-swatch-wrapper { 394 | padding: 0; 395 | } 396 | 397 | ::file-selector-button { 398 | font: inherit; 399 | } 400 | 401 | ::-webkit-file-upload-button { 402 | font: inherit; 403 | -webkit-appearance: button; 404 | } 405 | 406 | output { 407 | display: inline-block; 408 | } 409 | 410 | iframe { 411 | border: 0; 412 | } 413 | 414 | summary { 415 | display: list-item; 416 | cursor: pointer; 417 | } 418 | 419 | progress { 420 | vertical-align: baseline; 421 | } 422 | 423 | [hidden] { 424 | display: none !important; 425 | } 426 | /*# sourceMappingURL=bootstrap-reboot.rtl.css.map */ -------------------------------------------------------------------------------- /ecommerce/static/assets/vendor/bootstrap/css/bootstrap-reboot.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Reboot v5.0.0-beta1 (https://getbootstrap.com/) 3 | * Copyright 2011-2020 The Bootstrap Authors 4 | * Copyright 2011-2020 Twitter, Inc. 5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 6 | * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md) 7 | */ 8 | *, 9 | *::before, 10 | *::after { 11 | box-sizing: border-box; 12 | } 13 | 14 | @media (prefers-reduced-motion: no-preference) { 15 | :root { 16 | scroll-behavior: smooth; 17 | } 18 | } 19 | 20 | body { 21 | margin: 0; 22 | font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; 23 | font-size: 1rem; 24 | font-weight: 400; 25 | line-height: 1.5; 26 | color: #212529; 27 | background-color: #fff; 28 | -webkit-text-size-adjust: 100%; 29 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0); 30 | } 31 | 32 | [tabindex="-1"]:focus:not(:focus-visible) { 33 | outline: 0 !important; 34 | } 35 | 36 | hr { 37 | margin: 1rem 0; 38 | color: inherit; 39 | background-color: currentColor; 40 | border: 0; 41 | opacity: 0.25; 42 | } 43 | 44 | hr:not([size]) { 45 | height: 1px; 46 | } 47 | 48 | h6, h5, h4, h3, h2, h1 { 49 | margin-top: 0; 50 | margin-bottom: 0.5rem; 51 | font-weight: 500; 52 | line-height: 1.2; 53 | } 54 | 55 | h1 { 56 | font-size: calc(1.375rem + 1.5vw); 57 | } 58 | @media (min-width: 1200px) { 59 | h1 { 60 | font-size: 2.5rem; 61 | } 62 | } 63 | 64 | h2 { 65 | font-size: calc(1.325rem + 0.9vw); 66 | } 67 | @media (min-width: 1200px) { 68 | h2 { 69 | font-size: 2rem; 70 | } 71 | } 72 | 73 | h3 { 74 | font-size: calc(1.3rem + 0.6vw); 75 | } 76 | @media (min-width: 1200px) { 77 | h3 { 78 | font-size: 1.75rem; 79 | } 80 | } 81 | 82 | h4 { 83 | font-size: calc(1.275rem + 0.3vw); 84 | } 85 | @media (min-width: 1200px) { 86 | h4 { 87 | font-size: 1.5rem; 88 | } 89 | } 90 | 91 | h5 { 92 | font-size: 1.25rem; 93 | } 94 | 95 | h6 { 96 | font-size: 1rem; 97 | } 98 | 99 | p { 100 | margin-top: 0; 101 | margin-bottom: 1rem; 102 | } 103 | 104 | abbr[title], 105 | abbr[data-bs-original-title] { 106 | text-decoration: underline; 107 | -webkit-text-decoration: underline dotted; 108 | text-decoration: underline dotted; 109 | cursor: help; 110 | -webkit-text-decoration-skip-ink: none; 111 | text-decoration-skip-ink: none; 112 | } 113 | 114 | address { 115 | margin-bottom: 1rem; 116 | font-style: normal; 117 | line-height: inherit; 118 | } 119 | 120 | ol, 121 | ul { 122 | padding-left: 2rem; 123 | } 124 | 125 | ol, 126 | ul, 127 | dl { 128 | margin-top: 0; 129 | margin-bottom: 1rem; 130 | } 131 | 132 | ol ol, 133 | ul ul, 134 | ol ul, 135 | ul ol { 136 | margin-bottom: 0; 137 | } 138 | 139 | dt { 140 | font-weight: 700; 141 | } 142 | 143 | dd { 144 | margin-bottom: 0.5rem; 145 | margin-left: 0; 146 | } 147 | 148 | blockquote { 149 | margin: 0 0 1rem; 150 | } 151 | 152 | b, 153 | strong { 154 | font-weight: bolder; 155 | } 156 | 157 | small { 158 | font-size: 0.875em; 159 | } 160 | 161 | mark { 162 | padding: 0.2em; 163 | background-color: #fcf8e3; 164 | } 165 | 166 | sub, 167 | sup { 168 | position: relative; 169 | font-size: 0.75em; 170 | line-height: 0; 171 | vertical-align: baseline; 172 | } 173 | 174 | sub { 175 | bottom: -0.25em; 176 | } 177 | 178 | sup { 179 | top: -0.5em; 180 | } 181 | 182 | a { 183 | color: #0d6efd; 184 | text-decoration: underline; 185 | } 186 | a:hover { 187 | color: #0a58ca; 188 | } 189 | 190 | a:not([href]):not([class]), a:not([href]):not([class]):hover { 191 | color: inherit; 192 | text-decoration: none; 193 | } 194 | 195 | pre, 196 | code, 197 | kbd, 198 | samp { 199 | font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; 200 | font-size: 1em; 201 | direction: ltr /* rtl:ignore */; 202 | unicode-bidi: bidi-override; 203 | } 204 | 205 | pre { 206 | display: block; 207 | margin-top: 0; 208 | margin-bottom: 1rem; 209 | overflow: auto; 210 | font-size: 0.875em; 211 | } 212 | pre code { 213 | font-size: inherit; 214 | color: inherit; 215 | word-break: normal; 216 | } 217 | 218 | code { 219 | font-size: 0.875em; 220 | color: #d63384; 221 | word-wrap: break-word; 222 | } 223 | a > code { 224 | color: inherit; 225 | } 226 | 227 | kbd { 228 | padding: 0.2rem 0.4rem; 229 | font-size: 0.875em; 230 | color: #fff; 231 | background-color: #212529; 232 | border-radius: 0.2rem; 233 | } 234 | kbd kbd { 235 | padding: 0; 236 | font-size: 1em; 237 | font-weight: 700; 238 | } 239 | 240 | figure { 241 | margin: 0 0 1rem; 242 | } 243 | 244 | img, 245 | svg { 246 | vertical-align: middle; 247 | } 248 | 249 | table { 250 | caption-side: bottom; 251 | border-collapse: collapse; 252 | } 253 | 254 | caption { 255 | padding-top: 0.5rem; 256 | padding-bottom: 0.5rem; 257 | color: #6c757d; 258 | text-align: left; 259 | } 260 | 261 | th { 262 | text-align: inherit; 263 | text-align: -webkit-match-parent; 264 | } 265 | 266 | thead, 267 | tbody, 268 | tfoot, 269 | tr, 270 | td, 271 | th { 272 | border-color: inherit; 273 | border-style: solid; 274 | border-width: 0; 275 | } 276 | 277 | label { 278 | display: inline-block; 279 | } 280 | 281 | button { 282 | border-radius: 0; 283 | } 284 | 285 | button:focus { 286 | outline: dotted 1px; 287 | outline: -webkit-focus-ring-color auto 5px; 288 | } 289 | 290 | input, 291 | button, 292 | select, 293 | optgroup, 294 | textarea { 295 | margin: 0; 296 | font-family: inherit; 297 | font-size: inherit; 298 | line-height: inherit; 299 | } 300 | 301 | button, 302 | select { 303 | text-transform: none; 304 | } 305 | 306 | [role=button] { 307 | cursor: pointer; 308 | } 309 | 310 | select { 311 | word-wrap: normal; 312 | } 313 | 314 | [list]::-webkit-calendar-picker-indicator { 315 | display: none; 316 | } 317 | 318 | button, 319 | [type=button], 320 | [type=reset], 321 | [type=submit] { 322 | -webkit-appearance: button; 323 | } 324 | button:not(:disabled), 325 | [type=button]:not(:disabled), 326 | [type=reset]:not(:disabled), 327 | [type=submit]:not(:disabled) { 328 | cursor: pointer; 329 | } 330 | 331 | ::-moz-focus-inner { 332 | padding: 0; 333 | border-style: none; 334 | } 335 | 336 | textarea { 337 | resize: vertical; 338 | } 339 | 340 | fieldset { 341 | min-width: 0; 342 | padding: 0; 343 | margin: 0; 344 | border: 0; 345 | } 346 | 347 | legend { 348 | float: left; 349 | width: 100%; 350 | padding: 0; 351 | margin-bottom: 0.5rem; 352 | font-size: calc(1.275rem + 0.3vw); 353 | line-height: inherit; 354 | } 355 | @media (min-width: 1200px) { 356 | legend { 357 | font-size: 1.5rem; 358 | } 359 | } 360 | legend + * { 361 | clear: left; 362 | } 363 | 364 | ::-webkit-datetime-edit-fields-wrapper, 365 | ::-webkit-datetime-edit-text, 366 | ::-webkit-datetime-edit-minute, 367 | ::-webkit-datetime-edit-hour-field, 368 | ::-webkit-datetime-edit-day-field, 369 | ::-webkit-datetime-edit-month-field, 370 | ::-webkit-datetime-edit-year-field { 371 | padding: 0; 372 | } 373 | 374 | ::-webkit-inner-spin-button { 375 | height: auto; 376 | } 377 | 378 | [type=search] { 379 | outline-offset: -2px; 380 | -webkit-appearance: textfield; 381 | } 382 | 383 | /* rtl:raw: 384 | [type="tel"], 385 | [type="url"], 386 | [type="email"], 387 | [type="number"] { 388 | direction: ltr; 389 | } 390 | */ 391 | ::-webkit-search-decoration { 392 | -webkit-appearance: none; 393 | } 394 | 395 | ::-webkit-color-swatch-wrapper { 396 | padding: 0; 397 | } 398 | 399 | ::file-selector-button { 400 | font: inherit; 401 | } 402 | 403 | ::-webkit-file-upload-button { 404 | font: inherit; 405 | -webkit-appearance: button; 406 | } 407 | 408 | output { 409 | display: inline-block; 410 | } 411 | 412 | iframe { 413 | border: 0; 414 | } 415 | 416 | summary { 417 | display: list-item; 418 | cursor: pointer; 419 | } 420 | 421 | progress { 422 | vertical-align: baseline; 423 | } 424 | 425 | [hidden] { 426 | display: none !important; 427 | } 428 | 429 | /*# sourceMappingURL=bootstrap-reboot.css.map */ -------------------------------------------------------------------------------- /ecommerce/ecomapp/views.py: -------------------------------------------------------------------------------- 1 | from django.shortcuts import render,HttpResponse,redirect 2 | from django.contrib import messages 3 | from django.contrib.auth import authenticate,login,logout 4 | from django.contrib.auth.models import User 5 | from django.contrib.auth.decorators import login_required 6 | from django.conf import settings 7 | from .models import Product,Contact,Orders,OrderUpdate 8 | from math import ceil 9 | import json 10 | from django.views.decorators.csrf import csrf_exempt 11 | from PayTm import Checksum 12 | MERCHANT_KEY = 'addyour key' 13 | 14 | # Create your views here. 15 | def home(request): 16 | current_user = request.user 17 | print(current_user) 18 | allProds = [] 19 | catprods = Product.objects.values('category','id') 20 | cats = {item['category'] for item in catprods} 21 | for cat in cats: 22 | prod= Product.objects.filter(category=cat) 23 | n=len(prod) 24 | nSlides = n // 4 + ceil((n / 4) - (n // 4)) 25 | allProds.append([prod, range(1, nSlides), nSlides]) 26 | 27 | params= {'allProds':allProds} 28 | return render(request,'index.html',params) 29 | 30 | 31 | 32 | 33 | def about(request): 34 | return render(request, 'about.html') 35 | 36 | 37 | 38 | def contactus(request): 39 | if not request.user.is_authenticated: 40 | messages.warning(request,"Login & Try Again") 41 | return redirect('/login') 42 | if request.method=="POST": 43 | name = request.POST.get('name', '') 44 | email = request.POST.get('email', '') 45 | phone = request.POST.get('phone', '') 46 | desc = request.POST.get('desc', '') 47 | contact = Contact(name=name, email=email, phone=phone, desc=desc) 48 | contact.save() 49 | messages.success(request,"Contact Form is Submitted") 50 | 51 | return render(request, 'contactus.html') 52 | 53 | 54 | 55 | def tracker(request): 56 | if not request.user.is_authenticated: 57 | messages.warning(request,"Login & Try Again") 58 | return redirect('/login') 59 | if request.method=="POST": 60 | orderId = request.POST.get('orderId', '') 61 | email = request.POST.get('email', '') 62 | try: 63 | order = Orders.objects.filter(order_id=orderId, email=email) 64 | if len(order)>0: 65 | update = OrderUpdate.objects.filter(order_id=orderId) 66 | updates = [] 67 | for item in update: 68 | updates.append({'text': item.update_desc, 'time': item.timestamp}) 69 | response = json.dumps([updates, order[0].items_json], default=str) 70 | return HttpResponse(response) 71 | else: 72 | return HttpResponse('{}') 73 | except Exception as e: 74 | return HttpResponse('{}') 75 | 76 | return render(request, 'tracker.html') 77 | 78 | 79 | 80 | 81 | def productView(request, myid): 82 | # Fetch the product using the id 83 | product = Product.objects.filter(id=myid) 84 | 85 | 86 | return render(request, 'prodView.html', {'product':product[0]}) 87 | 88 | 89 | 90 | 91 | 92 | def checkout(request): 93 | if not request.user.is_authenticated: 94 | messages.warning(request,"Login & Try Again") 95 | return redirect('/login') 96 | if request.method=="POST": 97 | 98 | items_json = request.POST.get('itemsJson', '') 99 | name = request.POST.get('name', '') 100 | amount = request.POST.get('amt') 101 | email = request.POST.get('email', '') 102 | address1 = request.POST.get('address1', '') 103 | address2 = request.POST.get('address2','') 104 | city = request.POST.get('city', '') 105 | state = request.POST.get('state', '') 106 | zip_code = request.POST.get('zip_code', '') 107 | phone = request.POST.get('phone', '') 108 | 109 | 110 | Order = Orders(items_json=items_json,name=name,amount=amount, email=email, address1=address1,address2=address2,city=city,state=state,zip_code=zip_code,phone=phone) 111 | print(amount) 112 | Order.save() 113 | update = OrderUpdate(order_id=Order.order_id,update_desc="the order has been placed") 114 | update.save() 115 | thank = True 116 | id = Order.order_id 117 | oid=str(id) 118 | oid=str(id) 119 | param_dict = { 120 | 121 | 'MID': 'add ur merchant id', 122 | 'ORDER_ID': oid, 123 | 'TXN_AMOUNT': str(amount), 124 | 'CUST_ID': email, 125 | 'INDUSTRY_TYPE_ID': 'Retail', 126 | 'WEBSITE': 'WEBSTAGING', 127 | 'CHANNEL_ID': 'WEB', 128 | 'CALLBACK_URL': 'http://127.0.0.1:8000/handlerequest/', 129 | 130 | } 131 | param_dict['CHECKSUMHASH'] = Checksum.generate_checksum(param_dict, MERCHANT_KEY) 132 | return render(request, 'paytm.html', {'param_dict': param_dict}) 133 | 134 | return render(request, 'checkout.html') 135 | 136 | 137 | @csrf_exempt 138 | def handlerequest(request): 139 | 140 | # paytm will send you post request here 141 | form = request.POST 142 | response_dict = {} 143 | for i in form.keys(): 144 | response_dict[i] = form[i] 145 | if i == 'CHECKSUMHASH': 146 | checksum = form[i] 147 | 148 | verify = Checksum.verify_checksum(response_dict, MERCHANT_KEY, checksum) 149 | if verify: 150 | if response_dict['RESPCODE'] == '01': 151 | print('order successful') 152 | a=response_dict['ORDERID'] 153 | b=response_dict['TXNAMOUNT'] 154 | # rid=a.replace("infykart","") 155 | 156 | # print(rid) 157 | # filter2= Orders.objects.filter(order_id=rid) 158 | filter2= Orders.objects.filter(order_id=a) 159 | print(filter2) 160 | print(a,b) 161 | for post1 in filter2: 162 | 163 | post1.oid=a 164 | post1.amountpaid=b 165 | post1.paymentstatus="PAID" 166 | post1.save() 167 | print("run agede function") 168 | else: 169 | print('order was not successful because' + response_dict['RESPMSG']) 170 | return render(request, 'paymentstatus.html', {'response': response_dict}) 171 | 172 | 173 | 174 | 175 | 176 | def handlelogin(request): 177 | if request.method == 'POST': 178 | # get parameters 179 | loginusername=request.POST['email'] 180 | loginpassword=request.POST['pass1'] 181 | user=authenticate(username=loginusername,password=loginpassword) 182 | 183 | if user is not None: 184 | login(request,user) 185 | messages.info(request,"Successfully Logged In") 186 | return redirect('/') 187 | 188 | else: 189 | messages.error(request,"Invalid Credentials") 190 | return redirect('/login') 191 | 192 | 193 | 194 | return render(request,'login.html') 195 | 196 | def signup(request): 197 | if request.method == 'POST': 198 | email=request.POST.get('email') 199 | pass1=request.POST.get('pass1') 200 | pass2=request.POST.get('pass2') 201 | if pass1 != pass2: 202 | 203 | messages.error(request,"Password do not Match,Please Try Again!") 204 | return redirect('/signup') 205 | try: 206 | if User.objects.get(username=email): 207 | messages.warning(request,"Email Already Exists") 208 | return redirect('/signup') 209 | except Exception as identifier: 210 | pass 211 | try: 212 | if User.objects.get(email=email): 213 | messages.warning(request,"Email Already Exists") 214 | return redirect('/signup') 215 | except Exception as identifier: 216 | pass 217 | # checks for error inputs 218 | user=User.objects.create_user(email,email,pass1) 219 | user.save() 220 | messages.info(request,'Thanks For Signing Up') 221 | # messages.info(request,"Signup Successful Please Login") 222 | return redirect('/login') 223 | return render(request,"signup.html") 224 | 225 | def logouts(request): 226 | logout(request) 227 | messages.warning(request,"Logout Success") 228 | return render(request,'login.html') -------------------------------------------------------------------------------- /ecommerce/templates/checkout.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Checkout Page 9 | 10 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 121 | 122 | 123 |
124 |
125 |

Step 1 - My Awesome Cart Express Checkout - Review Your Cart Items

126 |
127 |
    128 |
129 | 130 | 136 | 137 | 138 | 139 | 140 |
141 |
142 |
143 |

Step 2 - Enter Address & Other Details:

144 | {% csrf_token %} 145 | 146 | 147 | 148 |
149 |
150 | 151 | 152 |
153 |
154 | 155 | 156 |
157 | 158 |
159 |
160 |
161 | 162 | 163 |
164 |
165 | 166 | 167 |
168 |
169 | 170 | 171 | 172 |
173 |
174 | 175 | 176 |
177 |
178 | 179 | 180 |
181 |
182 | 183 |
184 |
185 | 186 | 187 |
188 |
189 | 190 | 191 |
192 | 193 | 194 | 195 | 196 |
197 |
198 | 199 | 202 | 203 | 204 | 205 | 206 | 252 | 253 | 254 | 255 | -------------------------------------------------------------------------------- /ecommerce/static/assets/vendor/aos/aos.js: -------------------------------------------------------------------------------- 1 | !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.AOS=t():e.AOS=t()}(this,function(){return function(e){function t(o){if(n[o])return n[o].exports;var i=n[o]={exports:{},id:o,loaded:!1};return e[o].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p="dist/",t(0)}([function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}var i=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]&&arguments[0];if(e&&(k=!0),k)return w=(0,y.default)(w,x),(0,b.default)(w,x.once),w},O=function(){w=(0,h.default)(),j()},M=function(){w.forEach(function(e,t){e.node.removeAttribute("data-aos"),e.node.removeAttribute("data-aos-easing"),e.node.removeAttribute("data-aos-duration"),e.node.removeAttribute("data-aos-delay")})},S=function(e){return e===!0||"mobile"===e&&p.default.mobile()||"phone"===e&&p.default.phone()||"tablet"===e&&p.default.tablet()||"function"==typeof e&&e()===!0},_=function(e){x=i(x,e),w=(0,h.default)();var t=document.all&&!window.atob;return S(x.disable)||t?M():(x.disableMutationObserver||d.default.isSupported()||(console.info('\n aos: MutationObserver is not supported on this browser,\n code mutations observing has been disabled.\n You may have to call "refreshHard()" by yourself.\n '),x.disableMutationObserver=!0),document.querySelector("body").setAttribute("data-aos-easing",x.easing),document.querySelector("body").setAttribute("data-aos-duration",x.duration),document.querySelector("body").setAttribute("data-aos-delay",x.delay),"DOMContentLoaded"===x.startEvent&&["complete","interactive"].indexOf(document.readyState)>-1?j(!0):"load"===x.startEvent?window.addEventListener(x.startEvent,function(){j(!0)}):document.addEventListener(x.startEvent,function(){j(!0)}),window.addEventListener("resize",(0,s.default)(j,x.debounceDelay,!0)),window.addEventListener("orientationchange",(0,s.default)(j,x.debounceDelay,!0)),window.addEventListener("scroll",(0,u.default)(function(){(0,b.default)(w,x.once)},x.throttleDelay)),x.disableMutationObserver||d.default.ready("[data-aos]",O),w)};e.exports={init:_,refresh:j,refreshHard:O}},function(e,t){},,,,,function(e,t){(function(t){"use strict";function n(e,t,n){function o(t){var n=b,o=v;return b=v=void 0,k=t,g=e.apply(o,n)}function r(e){return k=e,h=setTimeout(f,t),M?o(e):g}function a(e){var n=e-w,o=e-k,i=t-n;return S?j(i,y-o):i}function c(e){var n=e-w,o=e-k;return void 0===w||n>=t||n<0||S&&o>=y}function f(){var e=O();return c(e)?d(e):void(h=setTimeout(f,a(e)))}function d(e){return h=void 0,_&&b?o(e):(b=v=void 0,g)}function l(){void 0!==h&&clearTimeout(h),k=0,b=w=v=h=void 0}function p(){return void 0===h?g:d(O())}function m(){var e=O(),n=c(e);if(b=arguments,v=this,w=e,n){if(void 0===h)return r(w);if(S)return h=setTimeout(f,t),o(w)}return void 0===h&&(h=setTimeout(f,t)),g}var b,v,y,g,h,w,k=0,M=!1,S=!1,_=!0;if("function"!=typeof e)throw new TypeError(s);return t=u(t)||0,i(n)&&(M=!!n.leading,S="maxWait"in n,y=S?x(u(n.maxWait)||0,t):y,_="trailing"in n?!!n.trailing:_),m.cancel=l,m.flush=p,m}function o(e,t,o){var r=!0,a=!0;if("function"!=typeof e)throw new TypeError(s);return i(o)&&(r="leading"in o?!!o.leading:r,a="trailing"in o?!!o.trailing:a),n(e,t,{leading:r,maxWait:t,trailing:a})}function i(e){var t="undefined"==typeof e?"undefined":c(e);return!!e&&("object"==t||"function"==t)}function r(e){return!!e&&"object"==("undefined"==typeof e?"undefined":c(e))}function a(e){return"symbol"==("undefined"==typeof e?"undefined":c(e))||r(e)&&k.call(e)==d}function u(e){if("number"==typeof e)return e;if(a(e))return f;if(i(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=i(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(l,"");var n=m.test(e);return n||b.test(e)?v(e.slice(2),n?2:8):p.test(e)?f:+e}var c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},s="Expected a function",f=NaN,d="[object Symbol]",l=/^\s+|\s+$/g,p=/^[-+]0x[0-9a-f]+$/i,m=/^0b[01]+$/i,b=/^0o[0-7]+$/i,v=parseInt,y="object"==("undefined"==typeof t?"undefined":c(t))&&t&&t.Object===Object&&t,g="object"==("undefined"==typeof self?"undefined":c(self))&&self&&self.Object===Object&&self,h=y||g||Function("return this")(),w=Object.prototype,k=w.toString,x=Math.max,j=Math.min,O=function(){return h.Date.now()};e.exports=o}).call(t,function(){return this}())},function(e,t){(function(t){"use strict";function n(e,t,n){function i(t){var n=b,o=v;return b=v=void 0,O=t,g=e.apply(o,n)}function r(e){return O=e,h=setTimeout(f,t),M?i(e):g}function u(e){var n=e-w,o=e-O,i=t-n;return S?x(i,y-o):i}function s(e){var n=e-w,o=e-O;return void 0===w||n>=t||n<0||S&&o>=y}function f(){var e=j();return s(e)?d(e):void(h=setTimeout(f,u(e)))}function d(e){return h=void 0,_&&b?i(e):(b=v=void 0,g)}function l(){void 0!==h&&clearTimeout(h),O=0,b=w=v=h=void 0}function p(){return void 0===h?g:d(j())}function m(){var e=j(),n=s(e);if(b=arguments,v=this,w=e,n){if(void 0===h)return r(w);if(S)return h=setTimeout(f,t),i(w)}return void 0===h&&(h=setTimeout(f,t)),g}var b,v,y,g,h,w,O=0,M=!1,S=!1,_=!0;if("function"!=typeof e)throw new TypeError(c);return t=a(t)||0,o(n)&&(M=!!n.leading,S="maxWait"in n,y=S?k(a(n.maxWait)||0,t):y,_="trailing"in n?!!n.trailing:_),m.cancel=l,m.flush=p,m}function o(e){var t="undefined"==typeof e?"undefined":u(e);return!!e&&("object"==t||"function"==t)}function i(e){return!!e&&"object"==("undefined"==typeof e?"undefined":u(e))}function r(e){return"symbol"==("undefined"==typeof e?"undefined":u(e))||i(e)&&w.call(e)==f}function a(e){if("number"==typeof e)return e;if(r(e))return s;if(o(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=o(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(d,"");var n=p.test(e);return n||m.test(e)?b(e.slice(2),n?2:8):l.test(e)?s:+e}var u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},c="Expected a function",s=NaN,f="[object Symbol]",d=/^\s+|\s+$/g,l=/^[-+]0x[0-9a-f]+$/i,p=/^0b[01]+$/i,m=/^0o[0-7]+$/i,b=parseInt,v="object"==("undefined"==typeof t?"undefined":u(t))&&t&&t.Object===Object&&t,y="object"==("undefined"==typeof self?"undefined":u(self))&&self&&self.Object===Object&&self,g=v||y||Function("return this")(),h=Object.prototype,w=h.toString,k=Math.max,x=Math.min,j=function(){return g.Date.now()};e.exports=n}).call(t,function(){return this}())},function(e,t){"use strict";function n(e){var t=void 0,o=void 0,i=void 0;for(t=0;te.position?e.node.classList.add("aos-animate"):"undefined"!=typeof o&&("false"===o||!n&&"true"!==o)&&e.node.classList.remove("aos-animate")},o=function(e,t){var o=window.pageYOffset,i=window.innerHeight;e.forEach(function(e,r){n(e,i+o,t)})};t.default=o},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var i=n(12),r=o(i),a=function(e,t){return e.forEach(function(e,n){e.node.classList.add("aos-init"),e.position=(0,r.default)(e.node,t.offset)}),e};t.default=a},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var i=n(13),r=o(i),a=function(e,t){var n=0,o=0,i=window.innerHeight,a={offset:e.getAttribute("data-aos-offset"),anchor:e.getAttribute("data-aos-anchor"),anchorPlacement:e.getAttribute("data-aos-anchor-placement")};switch(a.offset&&!isNaN(a.offset)&&(o=parseInt(a.offset)),a.anchor&&document.querySelectorAll(a.anchor)&&(e=document.querySelectorAll(a.anchor)[0]),n=(0,r.default)(e).top,a.anchorPlacement){case"top-bottom":break;case"center-bottom":n+=e.offsetHeight/2;break;case"bottom-bottom":n+=e.offsetHeight;break;case"top-center":n+=i/2;break;case"bottom-center":n+=i/2+e.offsetHeight;break;case"center-center":n+=i/2+e.offsetHeight/2;break;case"top-top":n+=i;break;case"bottom-top":n+=e.offsetHeight+i;break;case"center-top":n+=e.offsetHeight/2+i}return a.anchorPlacement||a.offset||isNaN(t)||(o=t),n+o};t.default=a},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=function(e){for(var t=0,n=0;e&&!isNaN(e.offsetLeft)&&!isNaN(e.offsetTop);)t+=e.offsetLeft-("BODY"!=e.tagName?e.scrollLeft:0),n+=e.offsetTop-("BODY"!=e.tagName?e.scrollTop:0),e=e.offsetParent;return{top:n,left:t}};t.default=n},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=function(e){return e=e||document.querySelectorAll("[data-aos]"),Array.prototype.map.call(e,function(e){return{node:e}})};t.default=n}])}); -------------------------------------------------------------------------------- /ecommerce/static/assets/vendor/venobox/venobox.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | * VenoBox - jQuery Plugin 3 | * version: 1.9.1 4 | * @requires jQuery >= 1.7.0 5 | * 6 | * Examples at http://veno.es/venobox/ 7 | * License: MIT License 8 | * License URI: https://github.com/nicolafranchini/VenoBox/blob/master/LICENSE 9 | * Copyright 2013-2020 Nicola Franchini - @nicolafranchini 10 | * 11 | */ 12 | !function(e){"use strict";var s,i,a,t,o,c,r,l,d,n,v,u,b,h,k,p,g,m,f,x,w,y,_,C,z,B,P,M,E,O,D,N,U,V,I,j,R,X,Y,W,q,$,T,A,H,Q,S,Z='',F='',G='',J='',K='';e.fn.extend({venobox:function(L){var ee=this,se=e.extend({arrowsColor:"#B6B6B6",autoplay:!1,bgcolor:"#fff",border:"0",closeBackground:"transparent",closeColor:"#d2d2d2",framewidth:"",frameheight:"",gallItems:!1,infinigall:!1,htmlClose:"×",htmlNext:"Next",htmlPrev:"Prev",numeratio:!1,numerationBackground:"#161617",numerationColor:"#d2d2d2",numerationPosition:"top",overlayClose:!0,overlayColor:"rgba(23,23,23,0.85)",spinner:"double-bounce",spinColor:"#d2d2d2",titleattr:"title",titleBackground:"#161617",titleColor:"#d2d2d2",titlePosition:"top",share:[],cb_pre_open:function(){return!0},cb_post_open:function(){},cb_pre_close:function(){return!0},cb_post_close:function(){},cb_post_resize:function(){},cb_after_nav:function(){},cb_content_loaded:function(){},cb_init:function(){}},L);return se.cb_init(ee),this.each(function(){if((N=e(this)).data("venobox"))return!0;function L(){C=N.data("gall"),x=N.data("numeratio"),k=N.data("gallItems"),p=N.data("infinigall"),H=N.data("share"),o.html(""),"iframe"!==N.data("vbtype")&&"inline"!==N.data("vbtype")&&"ajax"!==N.data("vbtype")&&(Q={pinterest:''+Z+"",facebook:''+F+"",twitter:''+G+"",linkedin:''+J+"",download:''+K+""},e.each(H,function(e,s){o.append(Q[s])})),(g=k||e('.vbox-item[data-gall="'+C+'"]')).length<2&&(p=!1,x=!1),z=g.eq(g.index(N)+1),B=g.eq(g.index(N)-1),z.length||!0!==p||(z=g.eq(0)),g.length>=1?(U=g.index(N)+1,t.html(U+" / "+g.length)):U=1,!0===x?t.show():t.hide(),""!==_?c.show():c.hide(),z.length||!0===p?(e(".vbox-next").css("display","block"),P=!0):(e(".vbox-next").css("display","none"),P=!1),g.index(N)>0||!0===p?(e(".vbox-prev").css("display","block"),M=!0):(e(".vbox-prev").css("display","none"),M=!1),!0!==M&&!0!==P||(n.on(de.DOWN,ce),n.on(de.MOVE,re),n.on(de.UP,le))}function ie(e){return!(e.length<1)&&(!m&&(m=!0,w=e.data("overlay")||e.data("overlaycolor"),b=e.data("framewidth"),h=e.data("frameheight"),r=e.data("border"),i=e.data("bgcolor"),v=e.data("href")||e.attr("href"),s=e.data("autoplay"),_=e.data("titleattr")&&e.attr(e.data("titleattr"))||"",e===B&&n.addClass("vbox-animated").addClass("swipe-right"),e===z&&n.addClass("vbox-animated").addClass("swipe-left"),O.show(),void n.animate({opacity:0},500,function(){y.css("background",w),n.removeClass("vbox-animated").removeClass("swipe-left").removeClass("swipe-right").css({"margin-left":0,"margin-right":0}),"iframe"==e.data("vbtype")?he():"inline"==e.data("vbtype")?pe():"ajax"==e.data("vbtype")?be():"video"==e.data("vbtype")?ke(s):(n.html(''),ge()),N=e,L(),m=!1,se.cb_after_nav(N,U,z,B)})))}function ae(e){27===e.keyCode&&te(),37==e.keyCode&&!0===M&&ie(B),39==e.keyCode&&!0===P&&ie(z)}function te(){if(!1===se.cb_pre_close(N,U,z,B))return!1;e("body").off("keydown",ae).removeClass("vbox-open"),N.focus(),y.animate({opacity:0},500,function(){y.remove(),m=!1,se.cb_post_close()})}ee.VBclose=function(){te()},N.addClass("vbox-item"),N.data("framewidth",se.framewidth),N.data("frameheight",se.frameheight),N.data("border",se.border),N.data("bgcolor",se.bgcolor),N.data("numeratio",se.numeratio),N.data("gallItems",se.gallItems),N.data("infinigall",se.infinigall),N.data("overlaycolor",se.overlayColor),N.data("titleattr",se.titleattr),N.data("share",se.share),N.data("venobox",!0),N.on("click",function(k){if(k.preventDefault(),N=e(this),!1===se.cb_pre_open(N))return!1;switch(ee.VBnext=function(){ie(z)},ee.VBprev=function(){ie(B)},w=N.data("overlay")||N.data("overlaycolor"),b=N.data("framewidth"),h=N.data("frameheight"),s=N.data("autoplay")||se.autoplay,r=N.data("border"),i=N.data("bgcolor"),P=!1,M=!1,m=!1,v=N.data("href")||N.attr("href"),u=N.data("css")||"",_=N.attr(N.data("titleattr"))||"",H=N.data("share"),E='
',se.spinner){case"rotating-plane":E+='
';break;case"double-bounce":E+='
';break;case"wave":E+='
';break;case"wandering-cubes":E+='
';break;case"spinner-pulse":E+='
';break;case"chasing-dots":E+='
';break;case"three-bounce":E+='
';break;case"circle":E+='
';break;case"cube-grid":E+='
';break;case"fading-circle":E+='
';break;case"folding-cube":E+='
'}return E+="
",D=''+se.htmlNext+''+se.htmlPrev+"",I='
0/0
'+se.htmlClose+"
",'
',l='
'+E+'
'+I+D+'
',e("body").append(l).addClass("vbox-open"),e(".vbox-preloader div:not(.sk-circle) .sk-child, .vbox-preloader .sk-rotating-plane, .vbox-preloader .sk-rect, .vbox-preloader div:not(.sk-folding-cube) .sk-cube, .vbox-preloader .sk-spinner-pulse").css("background-color",se.spinColor),y=e(".vbox-overlay"),d=e(".vbox-container"),n=e(".vbox-content"),a=e(".vbox-left"),t=e(".vbox-num"),o=e(".vbox-share"),c=e(".vbox-title"),(O=e(".vbox-preloader")).show(),S="top"==se.titlePosition?"bottom":"top",o.css(S,"-1px"),o.css({color:se.titleColor,fill:se.titleColor,"background-color":se.titleBackground}),c.css(se.titlePosition,"-1px"),c.css({color:se.titleColor,"background-color":se.titleBackground}),e(".vbox-close").css({color:se.closeColor,"background-color":se.closeBackground}),a.css(se.numerationPosition,"-1px"),a.css({color:se.numerationColor,"background-color":se.numerationBackground}),e(".vbox-next span, .vbox-prev span").css({"border-top-color":se.arrowsColor,"border-right-color":se.arrowsColor}),n.html(""),n.css("opacity","0"),y.css("opacity","0"),L(),y.animate({opacity:1},250,function(){"iframe"==N.data("vbtype")?he():"inline"==N.data("vbtype")?pe():"ajax"==N.data("vbtype")?be():"video"==N.data("vbtype")?ke(s):(n.html(''),ge()),se.cb_post_open(N,U,z,B)}),e("body").keydown(ae),e(".vbox-prev").on("click",function(){ie(B)}),e(".vbox-next").on("click",function(){ie(z)}),!1});var oe=".vbox-overlay";function ce(e){n.addClass("vbox-animated"),R=Y=e.pageY,X=W=e.pageX,V=!0}function re(e){if(!0===V){W=e.pageX,Y=e.pageY,$=W-X,T=Y-R;var s=Math.abs($);s>Math.abs(T)&&s<=100&&(e.preventDefault(),n.css("margin-left",$))}}function le(e){if(!0===V){V=!1;var s=N,i=!1;(q=W-X)<0&&!0===P&&(s=z,i=!0),q>0&&!0===M&&(s=B,i=!0),Math.abs(q)>=A&&!0===i?ie(s):n.css({"margin-left":0,"margin-right":0})}}se.overlayClose||(oe=".vbox-close"),e("body").on("click touchstart",oe,function(s){(e(s.target).is(".vbox-overlay")||e(s.target).is(".vbox-content")||e(s.target).is(".vbox-close")||e(s.target).is(".vbox-preloader")||e(s.target).is(".vbox-container"))&&te()}),X=0,W=0,q=0,A=50,V=!1;var de={DOWN:"touchmousedown",UP:"touchmouseup",MOVE:"touchmousemove"},ne=function(s){var i;switch(s.type){case"mousedown":i=de.DOWN;break;case"mouseup":case"mouseout":i=de.UP;break;case"mousemove":i=de.MOVE;break;default:return}var a=ue(i,s,s.pageX,s.pageY);e(s.target).trigger(a)},ve=function(s){var i;switch(s.type){case"touchstart":i=de.DOWN;break;case"touchend":i=de.UP;break;case"touchmove":i=de.MOVE;break;default:return}var a,t=s.originalEvent.touches[0];a=i==de.UP?ue(i,s,null,null):ue(i,s,t.pageX,t.pageY),e(s.target).trigger(a)},ue=function(s,i,a,t){return e.Event(s,{pageX:a,pageY:t,originalEvent:i})};function be(){e.ajax({url:v,cache:!1}).done(function(e){n.html('
'+e+"
"),ge()}).fail(function(){n.html('

Error retrieving contents, please retry

'),me()})}function he(){n.html(''),me()}function ke(e){var s,i=function(e){var s;e.match(/(http:|https:|)\/\/(player.|www.)?(vimeo\.com|youtu(be\.com|\.be|be\.googleapis\.com))\/(video\/|embed\/|watch\?v=|v\/)?([A-Za-z0-9._%-]*)(\&\S+)?/),RegExp.$3.indexOf("youtu")>-1?s="youtube":RegExp.$3.indexOf("vimeo")>-1&&(s="vimeo");return{type:s,id:RegExp.$6}}(v),a=(e?"?rel=0&autoplay=1":"?rel=0")+function(e){var s="",i=decodeURIComponent(e).split("?");if(void 0!==i[1]){var a,t,o=i[1].split("&");for(t=0;t'),me()}function pe(){n.html('
'+e(v).html()+"
"),me()}function ge(){(j=n.find("img")).length?j.each(function(){e(this).one("load",function(){me()})}):me()}function me(){c.html(_),n.find(">:first-child").addClass("vbox-figlio").css({width:b,height:h,padding:r,background:i}),e("img.vbox-figlio").on("dragstart",function(e){e.preventDefault()}),d.scrollTop(0),fe(),n.animate({opacity:"1"},"slow",function(){O.hide()}),se.cb_content_loaded(N,U,z,B)}function fe(){var s=n.outerHeight(),i=e(window).height();f=s+60