├── .gitignore ├── LICENCE ├── README.md ├── demo ├── home.png └── product.png ├── requirements.txt └── src ├── cart ├── __init__.py ├── __pycache__ │ ├── __init__.cpython-37.pyc │ ├── __init__.cpython-38.pyc │ ├── admin.cpython-37.pyc │ ├── apps.cpython-37.pyc │ ├── apps.cpython-38.pyc │ ├── cart.cpython-37.pyc │ ├── cart.cpython-38.pyc │ ├── context_processors.cpython-37.pyc │ ├── context_processors.cpython-38.pyc │ ├── forms.cpython-37.pyc │ ├── forms.cpython-38.pyc │ ├── models.cpython-37.pyc │ ├── urls.cpython-37.pyc │ ├── urls.cpython-38.pyc │ ├── views.cpython-37.pyc │ └── views.cpython-38.pyc ├── apps.py ├── cart.py ├── context_processors.py ├── forms.py ├── migrations │ ├── __init__.py │ └── __pycache__ │ │ ├── __init__.cpython-37.pyc │ │ └── __init__.cpython-38.pyc ├── urls.py └── views.py ├── contact ├── __init__.py ├── __pycache__ │ ├── __init__.cpython-37.pyc │ ├── __init__.cpython-38.pyc │ ├── admin.cpython-37.pyc │ ├── apps.cpython-37.pyc │ ├── apps.cpython-38.pyc │ ├── forms.cpython-37.pyc │ ├── forms.cpython-38.pyc │ ├── models.cpython-37.pyc │ ├── urls.cpython-37.pyc │ ├── urls.cpython-38.pyc │ ├── views.cpython-37.pyc │ └── views.cpython-38.pyc ├── apps.py ├── forms.py ├── migrations │ ├── __init__.py │ └── __pycache__ │ │ ├── __init__.cpython-37.pyc │ │ └── __init__.cpython-38.pyc ├── urls.py └── views.py ├── db.sqlite3 ├── manage.py ├── media └── products │ ├── 2019 │ ├── 08 │ │ ├── 18 │ │ │ ├── basketsquare.jpg │ │ │ └── product1.jpg │ │ └── 02 │ │ │ ├── resize-15647612721389532976rpi31.jpg │ │ │ ├── resize-15647613711262142889rpi31.jpg │ │ │ ├── resize-15647615221374097575rpi31.jpg │ │ │ ├── resize-15647617211216983589rpi31.jpg │ │ │ ├── resize-15647619921983485301download.jpg │ │ │ ├── resize-15647625261844090654WiFiPineapple.jpg │ │ │ ├── resize-15647631592049712158internetmemetshirtnewtrollfacerage.jpg │ │ │ ├── rpi3_1.jpg │ │ │ └── wp1828925-programmer-wallpapers.png │ └── 09 │ │ ├── 02 │ │ ├── b2.jpg │ │ ├── b2_DtNCTBu.jpg │ │ ├── b2_LfZcWjD.jpg │ │ ├── b2_QjAkOfI.jpg │ │ ├── b2_R48sHSQ.jpg │ │ └── b2_xV96p2Q.jpg │ │ └── 05 │ │ ├── b1.jpg │ │ ├── b1_VbNLh9w.jpg │ │ ├── b1_g8lBi9o.jpg │ │ ├── b2.jpg │ │ └── b3.jpg │ └── 2020 │ └── 10 │ └── 02 │ └── 120px-Musical_Fountain_Sector_17_Chandigarh.jpg ├── myapp ├── __pycache__ │ ├── __init__.cpython-37.pyc │ ├── admin.cpython-37.pyc │ ├── admin.cpython-38.pyc │ ├── apps.cpython-37.pyc │ ├── apps.cpython-38.pyc │ ├── models.cpython-37.pyc │ ├── models.cpython-38.pyc │ ├── urls.cpython-37.pyc │ ├── urls.cpython-38.pyc │ ├── views.cpython-37.pyc │ └── views.cpython-38.pyc ├── admin.py ├── apps.py ├── migrations │ ├── 0001_initial.py │ ├── __init__.py │ └── __pycache__ │ │ ├── 0001_initial.cpython-37.pyc │ │ ├── 0001_initial.cpython-38.pyc │ │ ├── __init__.cpython-37.pyc │ │ └── __init__.cpython-38.pyc ├── models.py ├── urls.py └── views.py ├── myproject ├── __init__.py ├── __pycache__ │ ├── __init__.cpython-37.pyc │ ├── __init__.cpython-38.pyc │ ├── celery.cpython-37.pyc │ ├── celery.cpython-38.pyc │ ├── settings.cpython-37.pyc │ ├── settings.cpython-38.pyc │ ├── urls.cpython-37.pyc │ ├── urls.cpython-38.pyc │ ├── wsgi.cpython-37.pyc │ └── wsgi.cpython-38.pyc ├── celery.py ├── settings │ ├── __init__.py │ ├── base.py │ ├── development.py │ └── production.py ├── urls.py └── wsgi.py ├── orders ├── __init__.py ├── __pycache__ │ ├── __init__.cpython-37.pyc │ ├── __init__.cpython-38.pyc │ ├── admin.cpython-37.pyc │ ├── admin.cpython-38.pyc │ ├── apps.cpython-37.pyc │ ├── apps.cpython-38.pyc │ ├── forms.cpython-37.pyc │ ├── forms.cpython-38.pyc │ ├── models.cpython-37.pyc │ ├── models.cpython-38.pyc │ ├── tasks.cpython-37.pyc │ ├── tasks.cpython-38.pyc │ ├── urls.cpython-37.pyc │ ├── urls.cpython-38.pyc │ ├── views.cpython-37.pyc │ └── views.cpython-38.pyc ├── admin.py ├── apps.py ├── forms.py ├── migrations │ ├── 0001_initial.py │ ├── __init__.py │ └── __pycache__ │ │ ├── 0001_initial.cpython-37.pyc │ │ ├── 0001_initial.cpython-38.pyc │ │ ├── __init__.cpython-37.pyc │ │ └── __init__.cpython-38.pyc ├── models.py ├── tasks.py ├── urls.py └── views.py ├── static ├── admin │ ├── css │ │ ├── autocomplete.css │ │ ├── base.css │ │ ├── changelists.css │ │ ├── dashboard.css │ │ ├── fonts.css │ │ ├── forms.css │ │ ├── login.css │ │ ├── responsive.css │ │ ├── responsive_rtl.css │ │ ├── rtl.css │ │ ├── vendor │ │ │ └── select2 │ │ │ │ ├── LICENSE-SELECT2.md │ │ │ │ ├── select2.css │ │ │ │ └── select2.min.css │ │ └── widgets.css │ ├── fonts │ │ ├── LICENSE.txt │ │ ├── README.txt │ │ ├── Roboto-Bold-webfont.woff │ │ ├── Roboto-Light-webfont.woff │ │ └── Roboto-Regular-webfont.woff │ ├── img │ │ ├── LICENSE │ │ ├── README.txt │ │ ├── calendar-icons.svg │ │ ├── gis │ │ │ ├── move_vertex_off.svg │ │ │ └── move_vertex_on.svg │ │ ├── icon-addlink.svg │ │ ├── icon-alert.svg │ │ ├── icon-calendar.svg │ │ ├── icon-changelink.svg │ │ ├── icon-clock.svg │ │ ├── icon-deletelink.svg │ │ ├── icon-no.svg │ │ ├── icon-unknown-alt.svg │ │ ├── icon-unknown.svg │ │ ├── icon-viewlink.svg │ │ ├── icon-yes.svg │ │ ├── inline-delete.svg │ │ ├── search.svg │ │ ├── selector-icons.svg │ │ ├── sorting-icons.svg │ │ ├── tooltag-add.svg │ │ └── tooltag-arrowright.svg │ └── js │ │ ├── SelectBox.js │ │ ├── SelectFilter2.js │ │ ├── actions.js │ │ ├── actions.min.js │ │ ├── admin │ │ ├── DateTimeShortcuts.js │ │ └── RelatedObjectLookups.js │ │ ├── autocomplete.js │ │ ├── calendar.js │ │ ├── cancel.js │ │ ├── change_form.js │ │ ├── collapse.js │ │ ├── collapse.min.js │ │ ├── core.js │ │ ├── inlines.js │ │ ├── inlines.min.js │ │ ├── jquery.init.js │ │ ├── popup_response.js │ │ ├── prepopulate.js │ │ ├── prepopulate.min.js │ │ ├── prepopulate_init.js │ │ ├── urlify.js │ │ └── vendor │ │ ├── jquery │ │ ├── LICENSE.txt │ │ ├── jquery.js │ │ └── jquery.min.js │ │ ├── select2 │ │ ├── LICENSE.md │ │ ├── i18n │ │ │ ├── af.js │ │ │ ├── ar.js │ │ │ ├── az.js │ │ │ ├── bg.js │ │ │ ├── bn.js │ │ │ ├── bs.js │ │ │ ├── ca.js │ │ │ ├── cs.js │ │ │ ├── da.js │ │ │ ├── de.js │ │ │ ├── dsb.js │ │ │ ├── el.js │ │ │ ├── en.js │ │ │ ├── es.js │ │ │ ├── et.js │ │ │ ├── eu.js │ │ │ ├── fa.js │ │ │ ├── fi.js │ │ │ ├── fr.js │ │ │ ├── gl.js │ │ │ ├── he.js │ │ │ ├── hi.js │ │ │ ├── hr.js │ │ │ ├── hsb.js │ │ │ ├── hu.js │ │ │ ├── hy.js │ │ │ ├── id.js │ │ │ ├── is.js │ │ │ ├── it.js │ │ │ ├── ja.js │ │ │ ├── ka.js │ │ │ ├── km.js │ │ │ ├── ko.js │ │ │ ├── lt.js │ │ │ ├── lv.js │ │ │ ├── mk.js │ │ │ ├── ms.js │ │ │ ├── nb.js │ │ │ ├── ne.js │ │ │ ├── nl.js │ │ │ ├── pl.js │ │ │ ├── ps.js │ │ │ ├── pt-BR.js │ │ │ ├── pt.js │ │ │ ├── ro.js │ │ │ ├── ru.js │ │ │ ├── sk.js │ │ │ ├── sl.js │ │ │ ├── sq.js │ │ │ ├── sr-Cyrl.js │ │ │ ├── sr.js │ │ │ ├── sv.js │ │ │ ├── th.js │ │ │ ├── tk.js │ │ │ ├── tr.js │ │ │ ├── uk.js │ │ │ ├── vi.js │ │ │ ├── zh-CN.js │ │ │ └── zh-TW.js │ │ ├── select2.full.js │ │ └── select2.full.min.js │ │ └── xregexp │ │ ├── LICENSE.txt │ │ ├── xregexp.js │ │ └── xregexp.min.js ├── css │ ├── bootstrap.css │ ├── flaticon.css │ ├── font-awesome.min.css │ ├── pdf.css │ ├── responsive.css │ ├── style.css │ ├── style.css.map │ ├── style.map │ └── themify-icons.css ├── fonts │ ├── Flaticon.eot │ ├── Flaticon.svg │ ├── Flaticon.ttf │ ├── Flaticon.woff │ ├── Flaticon.woff2 │ ├── FontAwesome.otf │ ├── fontawesome-webfont.eot │ ├── fontawesome-webfont.svg │ ├── fontawesome-webfont.ttf │ ├── fontawesome-webfont.woff │ ├── fontawesome-webfont.woff2 │ ├── themify.eot │ ├── themify.svg │ ├── themify.ttf │ └── themify.woff ├── img │ └── logo.png ├── js │ ├── bootstrap.min.js │ ├── contact.js │ ├── custom.js │ ├── gmaps.min.js │ ├── jquery-3.2.1.min.js │ ├── jquery.ajaxchimp.min.js │ ├── jquery.form.js │ ├── jquery.validate.min.js │ ├── mail-script.js │ ├── popper.js │ ├── stellar.js │ └── theme.js └── vendors │ ├── animate-css │ ├── animate.css │ └── wow.min.js │ ├── bootstrap-datepicker │ ├── bootstrap-datetimepicker.min.css │ ├── bootstrap-datetimepicker.min.js │ ├── bootstrap-select.css │ └── bootstrap-select.js │ ├── counter-up │ ├── jquery.counterup.js │ └── jquery.waypoints.min.js │ ├── flipclock │ └── timer.js │ ├── isotope │ ├── imagesloaded.pkgd.min.js │ └── isotope-min.js │ ├── jquery-ui │ ├── jquery-ui.css │ └── jquery-ui.js │ ├── lightbox │ ├── simpleLightbox.css │ └── simpleLightbox.min.js │ ├── linericon │ ├── fonts │ │ ├── Linearicons-Free.eot │ │ ├── Linearicons-Free.svg │ │ ├── Linearicons-Free.ttf │ │ ├── Linearicons-Free.woff │ │ └── Linearicons-Free.woff2 │ └── style.css │ ├── nice-select │ ├── css │ │ ├── nice-select.css │ │ └── style.css │ └── js │ │ ├── jquery.nice-select.js │ │ └── jquery.nice-select.min.js │ └── owl-carousel │ ├── assets │ ├── ajax-loader.gif │ ├── animated.css │ └── owl.carousel.css │ ├── owl.carousel.min.css │ └── owl.carousel.min.js └── templates ├── base.html ├── cart └── detail.html ├── contact └── email.html ├── detail.html ├── list.html └── order ├── order.html ├── ordered.html └── pdf.html /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | 7 | # Distribution / packaging 8 | .Python 9 | build/ 10 | develop-eggs/ 11 | dist/ 12 | downloads/ 13 | eggs/ 14 | .eggs/ 15 | lib/ 16 | lib64/ 17 | parts/ 18 | sdist/ 19 | var/ 20 | wheels/ 21 | share/python-wheels/ 22 | *.egg-info/ 23 | .installed.cfg 24 | *.egg 25 | 26 | # Installer logs 27 | pip-log.txt 28 | pip-delete-this-directory.txt 29 | 30 | # Unit test / coverage reports 31 | htmlcov/ 32 | .tox/ 33 | .nox/ 34 | .coverage 35 | .coverage.* 36 | .cache 37 | nosetests.xml 38 | coverage.xml 39 | *.cover 40 | *.py,cover 41 | .hypothesis/ 42 | .pytest_cache/ 43 | cover/ 44 | 45 | 46 | # Django stuff: 47 | *.log 48 | local_settings.py 49 | db.sqlite3 50 | db.sqlite3-journal 51 | 52 | 53 | profile_default/ 54 | ipython_config.py 55 | 56 | 57 | # Celery stuff 58 | celerybeat-schedule 59 | celerybeat.pid 60 | 61 | # Environments 62 | .env 63 | .venv 64 | env/ 65 | venv/ 66 | ENV/ 67 | env.bak/ 68 | venv.bak/ 69 | 70 | static_root 71 | media_root 72 | -------------------------------------------------------------------------------- /LICENCE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 shyam999 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Hot-Food 2 | > Food Delivery Website built with Django and Bootstrap 3 | # Demo: 4 | ## Homepage 5 | ![](demo/home.png) 6 | ## Product page 7 | ![](demo/product.png) 8 | ## Installation: 9 | **1.Clone the Repo** 10 | ```sh 11 | git clone https://github.com/shyam999/Hot-Food.git 12 | ``` 13 | **2.Setup pipenv & Install Requirements** 14 | ```sh 15 | pip install pipenv 16 | pipenv install -r requirements.txt 17 | pipenv shell 18 | ``` 19 | **3.Set Up RabbitMQ Server** 20 | ```sh 21 | sudo apt-get install rabbitmq-server 22 | service rabbitmq-server start 23 | ``` 24 | **4.Migrate Database** 25 | ```sh 26 | python manage.py makemigrations 27 | python manage.py migrate 28 | ``` 29 | **5.Start Server** 30 | ```sh 31 | python manage.py runserver 32 | ``` 33 | # Contributors 34 | Contributions are welcome, and they are greatly appreciated! Every little bit helps, and credit will always be given.
35 | 36 | Please star the repo and feel free to make pull requests. 37 | -------------------------------------------------------------------------------- /demo/home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/demo/home.png -------------------------------------------------------------------------------- /demo/product.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/demo/product.png -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | asgiref==3.2.10 2 | attrs==20.2.0 3 | bleach==3.3.0 4 | certifi==2023.7.22 5 | chardet==3.0.4 6 | defusedxml==0.6.0 7 | dj-database-url==0.3.0 8 | dj-static==0.0.6 9 | Django==3.1.14 10 | django-allauth==0.42.0 11 | django-countries==6.1.3 12 | django-crispy-forms==1.9.0 13 | django-debug-toolbar==3.2.1 14 | gunicorn==20.0.4 15 | idna==2.10 16 | importlib-metadata==2.0.0 17 | Markdown==2.6.6 18 | more-itertools==8.5.0 19 | oauthlib==3.1.0 20 | packaging==20.4 21 | Pillow==10.0.1 22 | pluggy==0.13.1 23 | py==1.10.0 24 | pyparsing==2.4.7 25 | pytest==5.4.1 26 | pytest-django==3.9.0 27 | python-decouple==3.0 28 | python-dotenv==0.12.0 29 | python3-openid==3.2.0 30 | pytz==2020.1 31 | requests==2.31.0 32 | requests-oauthlib==1.3.0 33 | six==1.14.0 34 | sqlparse==0.4.4 35 | static3==0.7.0 36 | Unipath==1.0 37 | urllib3==1.26.18 38 | wcwidth==0.2.5 39 | webencodings==0.5.1 40 | whitenoise==5.0.1 41 | zipp==3.3.0 42 | celery==5.2.2 43 | -------------------------------------------------------------------------------- /src/cart/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/cart/__init__.py -------------------------------------------------------------------------------- /src/cart/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/cart/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /src/cart/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/cart/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /src/cart/__pycache__/admin.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/cart/__pycache__/admin.cpython-37.pyc -------------------------------------------------------------------------------- /src/cart/__pycache__/apps.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/cart/__pycache__/apps.cpython-37.pyc -------------------------------------------------------------------------------- /src/cart/__pycache__/apps.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/cart/__pycache__/apps.cpython-38.pyc -------------------------------------------------------------------------------- /src/cart/__pycache__/cart.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/cart/__pycache__/cart.cpython-37.pyc -------------------------------------------------------------------------------- /src/cart/__pycache__/cart.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/cart/__pycache__/cart.cpython-38.pyc -------------------------------------------------------------------------------- /src/cart/__pycache__/context_processors.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/cart/__pycache__/context_processors.cpython-37.pyc -------------------------------------------------------------------------------- /src/cart/__pycache__/context_processors.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/cart/__pycache__/context_processors.cpython-38.pyc -------------------------------------------------------------------------------- /src/cart/__pycache__/forms.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/cart/__pycache__/forms.cpython-37.pyc -------------------------------------------------------------------------------- /src/cart/__pycache__/forms.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/cart/__pycache__/forms.cpython-38.pyc -------------------------------------------------------------------------------- /src/cart/__pycache__/models.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/cart/__pycache__/models.cpython-37.pyc -------------------------------------------------------------------------------- /src/cart/__pycache__/urls.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/cart/__pycache__/urls.cpython-37.pyc -------------------------------------------------------------------------------- /src/cart/__pycache__/urls.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/cart/__pycache__/urls.cpython-38.pyc -------------------------------------------------------------------------------- /src/cart/__pycache__/views.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/cart/__pycache__/views.cpython-37.pyc -------------------------------------------------------------------------------- /src/cart/__pycache__/views.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/cart/__pycache__/views.cpython-38.pyc -------------------------------------------------------------------------------- /src/cart/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class CartConfig(AppConfig): 5 | name = 'cart' 6 | -------------------------------------------------------------------------------- /src/cart/cart.py: -------------------------------------------------------------------------------- 1 | from decimal import Decimal 2 | from django.conf import settings 3 | from myapp.models import Product 4 | 5 | class Cart(object): 6 | 7 | def __init__(self, request): 8 | self.session = request.session 9 | cart = self.session.get(settings.CART_SESSION_ID) 10 | if not cart: 11 | cart = self.session[settings.CART_SESSION_ID] = {} 12 | self.cart = cart 13 | 14 | def add(self, product, quantity=1, update_quantity=False): 15 | product_id = str(product.id) 16 | if product_id not in self.cart: 17 | self.cart[product_id] = {'quantity': 0, 'price': str(product.price)} 18 | if update_quantity: 19 | self.cart[product_id]['quantity'] = quantity 20 | else: 21 | self.cart[product_id]['quantity'] += quantity 22 | self.save() 23 | 24 | def save(self): 25 | self.session.modified = True 26 | 27 | def remove(self, product): 28 | product_id = str(product.id) 29 | if product_id in self.cart: 30 | del self.cart[product_id] 31 | self.save() 32 | 33 | def __iter__(self): 34 | product_ids = self.cart.keys() 35 | products = Product.objects.filter(id__in=product_ids) 36 | cart = self.cart.copy() 37 | for product in products: 38 | cart[str(product.id)]['product'] = product 39 | for item in cart.values(): 40 | item['price'] = Decimal(item['price']) 41 | item['total_price'] = item['price'] * item['quantity'] 42 | yield item 43 | 44 | def __len__(self): 45 | return sum(item['quantity'] for item in self.cart.values()) 46 | 47 | def get_total_price(self): 48 | return sum(Decimal(item['price']) * item['quantity'] for item in self.cart.values()) 49 | 50 | def clear(self): 51 | del self.session[settings.CART_SESSION_ID] 52 | self.save() -------------------------------------------------------------------------------- /src/cart/context_processors.py: -------------------------------------------------------------------------------- 1 | from .cart import Cart 2 | 3 | def cart(request): 4 | return {'cart': Cart(request)} -------------------------------------------------------------------------------- /src/cart/forms.py: -------------------------------------------------------------------------------- 1 | from django import forms 2 | 3 | PRODUCT_QUANTITY_CHOICES = [(i, str(i)) for i in range(1, 21)] 4 | 5 | class CartAddProductForm(forms.Form): 6 | quantity = forms.TypedChoiceField(choices=PRODUCT_QUANTITY_CHOICES,coerce=int) 7 | update = forms.BooleanField(required=False,initial=False,widget=forms.HiddenInput) -------------------------------------------------------------------------------- /src/cart/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/cart/migrations/__init__.py -------------------------------------------------------------------------------- /src/cart/migrations/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/cart/migrations/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /src/cart/migrations/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/cart/migrations/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /src/cart/urls.py: -------------------------------------------------------------------------------- 1 | from django.urls import path 2 | from . import views 3 | 4 | app_name = 'cart' 5 | 6 | urlpatterns = [ 7 | path('', views.cart_detail, name='cart_detail'), 8 | path('add//', views.cart_add, name='cart_add'), 9 | path('remove//', views.cart_remove, name='cart_remove'), 10 | ] -------------------------------------------------------------------------------- /src/cart/views.py: -------------------------------------------------------------------------------- 1 | from django.shortcuts import render, redirect, get_object_or_404 2 | from django.views.decorators.http import require_POST 3 | from myapp.models import Product 4 | from .cart import Cart 5 | from .forms import CartAddProductForm 6 | 7 | @require_POST 8 | def cart_add(request, product_id): 9 | cart = Cart(request) 10 | product = get_object_or_404(Product, id=product_id) 11 | form = CartAddProductForm(request.POST) 12 | if form.is_valid(): 13 | cd = form.cleaned_data 14 | cart.add(product=product,quantity=cd['quantity'],update_quantity=cd['update']) 15 | return redirect('cart:cart_detail') 16 | 17 | def cart_remove(request, product_id): 18 | cart = Cart(request) 19 | product = get_object_or_404(Product, id=product_id) 20 | cart.remove(product) 21 | return redirect('cart:cart_detail') 22 | 23 | def cart_detail(request): 24 | cart = Cart(request) 25 | for item in cart: 26 | item['update_quantity_form'] = CartAddProductForm(initial={'quantity': item['quantity'], 'update': True}) 27 | return render(request, 'cart/detail.html', {'cart': cart}) -------------------------------------------------------------------------------- /src/contact/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/contact/__init__.py -------------------------------------------------------------------------------- /src/contact/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/contact/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /src/contact/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/contact/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /src/contact/__pycache__/admin.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/contact/__pycache__/admin.cpython-37.pyc -------------------------------------------------------------------------------- /src/contact/__pycache__/apps.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/contact/__pycache__/apps.cpython-37.pyc -------------------------------------------------------------------------------- /src/contact/__pycache__/apps.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/contact/__pycache__/apps.cpython-38.pyc -------------------------------------------------------------------------------- /src/contact/__pycache__/forms.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/contact/__pycache__/forms.cpython-37.pyc -------------------------------------------------------------------------------- /src/contact/__pycache__/forms.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/contact/__pycache__/forms.cpython-38.pyc -------------------------------------------------------------------------------- /src/contact/__pycache__/models.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/contact/__pycache__/models.cpython-37.pyc -------------------------------------------------------------------------------- /src/contact/__pycache__/urls.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/contact/__pycache__/urls.cpython-37.pyc -------------------------------------------------------------------------------- /src/contact/__pycache__/urls.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/contact/__pycache__/urls.cpython-38.pyc -------------------------------------------------------------------------------- /src/contact/__pycache__/views.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/contact/__pycache__/views.cpython-37.pyc -------------------------------------------------------------------------------- /src/contact/__pycache__/views.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/contact/__pycache__/views.cpython-38.pyc -------------------------------------------------------------------------------- /src/contact/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | class ContactConfig(AppConfig): 4 | name = 'contact' 5 | -------------------------------------------------------------------------------- /src/contact/forms.py: -------------------------------------------------------------------------------- 1 | from django import forms 2 | 3 | class ContactForm(forms.Form): 4 | name = forms.CharField(max_length=100, required=True) 5 | from_email = forms.EmailField(required=True) 6 | subject = forms.CharField(required=True) 7 | message = forms.CharField(widget=forms.Textarea, required=True) 8 | -------------------------------------------------------------------------------- /src/contact/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/contact/migrations/__init__.py -------------------------------------------------------------------------------- /src/contact/migrations/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/contact/migrations/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /src/contact/migrations/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/contact/migrations/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /src/contact/urls.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | from django.urls import path 3 | from . import views 4 | 5 | app_name = 'contact' 6 | 7 | urlpatterns = [ 8 | path('email/', views.emailView, name='email'), 9 | path('success/', views.successView, name='success'), 10 | ] 11 | -------------------------------------------------------------------------------- /src/contact/views.py: -------------------------------------------------------------------------------- 1 | from django.core.mail import send_mail, BadHeaderError 2 | from django.http import HttpResponse, HttpResponseRedirect 3 | from django.shortcuts import render, redirect 4 | from .forms import ContactForm 5 | 6 | def emailView(request): 7 | if request.method == 'GET': 8 | form = ContactForm() 9 | else: 10 | form = ContactForm(request.POST) 11 | if form.is_valid(): 12 | name = form.cleaned_data['name'] 13 | subject = form.cleaned_data['subject'] 14 | from_email = form.cleaned_data['from_email'] 15 | message = form.cleaned_data['message'] 16 | try: 17 | send_mail(subject, message, from_email, ['admin@example.com']) 18 | except BadHeaderError: 19 | return HttpResponse('Invalid header found.') 20 | return redirect('success') 21 | return render(request, "contact/email.html", {'form': form}) 22 | 23 | def successView(request): 24 | return HttpResponse('Success! Thank you for your message.') 25 | -------------------------------------------------------------------------------- /src/db.sqlite3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/db.sqlite3 -------------------------------------------------------------------------------- /src/manage.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | import os 3 | import sys 4 | 5 | def main(): 6 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings.development') 7 | try: 8 | from django.core.management import execute_from_command_line 9 | except ImportError as exc: 10 | raise ImportError( 11 | "Couldn't import Django. Are you sure it's installed ?" 12 | ) from exc 13 | execute_from_command_line(sys.argv) 14 | 15 | if __name__ == '__main__': 16 | main() 17 | -------------------------------------------------------------------------------- /src/media/products/2019/08/02/resize-15647612721389532976rpi31.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/media/products/2019/08/02/resize-15647612721389532976rpi31.jpg -------------------------------------------------------------------------------- /src/media/products/2019/08/02/resize-15647613711262142889rpi31.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/media/products/2019/08/02/resize-15647613711262142889rpi31.jpg -------------------------------------------------------------------------------- /src/media/products/2019/08/02/resize-15647615221374097575rpi31.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/media/products/2019/08/02/resize-15647615221374097575rpi31.jpg -------------------------------------------------------------------------------- /src/media/products/2019/08/02/resize-15647617211216983589rpi31.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/media/products/2019/08/02/resize-15647617211216983589rpi31.jpg -------------------------------------------------------------------------------- /src/media/products/2019/08/02/resize-15647619921983485301download.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/media/products/2019/08/02/resize-15647619921983485301download.jpg -------------------------------------------------------------------------------- /src/media/products/2019/08/02/resize-15647625261844090654WiFiPineapple.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/media/products/2019/08/02/resize-15647625261844090654WiFiPineapple.jpg -------------------------------------------------------------------------------- /src/media/products/2019/08/02/resize-15647631592049712158internetmemetshirtnewtrollfacerage.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/media/products/2019/08/02/resize-15647631592049712158internetmemetshirtnewtrollfacerage.jpg -------------------------------------------------------------------------------- /src/media/products/2019/08/02/rpi3_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/media/products/2019/08/02/rpi3_1.jpg -------------------------------------------------------------------------------- /src/media/products/2019/08/02/wp1828925-programmer-wallpapers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/media/products/2019/08/02/wp1828925-programmer-wallpapers.png -------------------------------------------------------------------------------- /src/media/products/2019/08/18/basketsquare.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/media/products/2019/08/18/basketsquare.jpg -------------------------------------------------------------------------------- /src/media/products/2019/08/18/product1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/media/products/2019/08/18/product1.jpg -------------------------------------------------------------------------------- /src/media/products/2019/09/02/b2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/media/products/2019/09/02/b2.jpg -------------------------------------------------------------------------------- /src/media/products/2019/09/02/b2_DtNCTBu.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/media/products/2019/09/02/b2_DtNCTBu.jpg -------------------------------------------------------------------------------- /src/media/products/2019/09/02/b2_LfZcWjD.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/media/products/2019/09/02/b2_LfZcWjD.jpg -------------------------------------------------------------------------------- /src/media/products/2019/09/02/b2_QjAkOfI.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/media/products/2019/09/02/b2_QjAkOfI.jpg -------------------------------------------------------------------------------- /src/media/products/2019/09/02/b2_R48sHSQ.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/media/products/2019/09/02/b2_R48sHSQ.jpg -------------------------------------------------------------------------------- /src/media/products/2019/09/02/b2_xV96p2Q.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/media/products/2019/09/02/b2_xV96p2Q.jpg -------------------------------------------------------------------------------- /src/media/products/2019/09/05/b1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/media/products/2019/09/05/b1.jpg -------------------------------------------------------------------------------- /src/media/products/2019/09/05/b1_VbNLh9w.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/media/products/2019/09/05/b1_VbNLh9w.jpg -------------------------------------------------------------------------------- /src/media/products/2019/09/05/b1_g8lBi9o.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/media/products/2019/09/05/b1_g8lBi9o.jpg -------------------------------------------------------------------------------- /src/media/products/2019/09/05/b2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/media/products/2019/09/05/b2.jpg -------------------------------------------------------------------------------- /src/media/products/2019/09/05/b3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/media/products/2019/09/05/b3.jpg -------------------------------------------------------------------------------- /src/media/products/2020/10/02/120px-Musical_Fountain_Sector_17_Chandigarh.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/media/products/2020/10/02/120px-Musical_Fountain_Sector_17_Chandigarh.jpg -------------------------------------------------------------------------------- /src/myapp/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/myapp/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /src/myapp/__pycache__/admin.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/myapp/__pycache__/admin.cpython-37.pyc -------------------------------------------------------------------------------- /src/myapp/__pycache__/admin.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/myapp/__pycache__/admin.cpython-38.pyc -------------------------------------------------------------------------------- /src/myapp/__pycache__/apps.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/myapp/__pycache__/apps.cpython-37.pyc -------------------------------------------------------------------------------- /src/myapp/__pycache__/apps.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/myapp/__pycache__/apps.cpython-38.pyc -------------------------------------------------------------------------------- /src/myapp/__pycache__/models.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/myapp/__pycache__/models.cpython-37.pyc -------------------------------------------------------------------------------- /src/myapp/__pycache__/models.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/myapp/__pycache__/models.cpython-38.pyc -------------------------------------------------------------------------------- /src/myapp/__pycache__/urls.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/myapp/__pycache__/urls.cpython-37.pyc -------------------------------------------------------------------------------- /src/myapp/__pycache__/urls.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/myapp/__pycache__/urls.cpython-38.pyc -------------------------------------------------------------------------------- /src/myapp/__pycache__/views.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/myapp/__pycache__/views.cpython-37.pyc -------------------------------------------------------------------------------- /src/myapp/__pycache__/views.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/myapp/__pycache__/views.cpython-38.pyc -------------------------------------------------------------------------------- /src/myapp/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | from .models import Category, Product 3 | 4 | @admin.register(Category) 5 | class CategoryAdmin(admin.ModelAdmin): 6 | '''catagory management config''' 7 | list_display = ['name', 'slug'] 8 | prepopulated_fields = {'slug': ('name',)} 9 | 10 | @admin.register(Product) 11 | class ProductAdmin(admin.ModelAdmin): 12 | '''product management config''' 13 | list_display = ['name', 'slug', 'price', 'available', 'created', 'updated'] 14 | list_filter = ['available', 'created', 'updated'] 15 | list_editable = ['price', 'available'] 16 | prepopulated_fields = {'slug': ('name',)} -------------------------------------------------------------------------------- /src/myapp/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | class MyappConfig(AppConfig): 4 | name = 'myapp' 5 | -------------------------------------------------------------------------------- /src/myapp/migrations/0001_initial.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.2.4 on 2019-09-08 14:26 2 | 3 | from django.db import migrations, models 4 | import django.db.models.deletion 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | initial = True 10 | 11 | dependencies = [ 12 | ] 13 | 14 | operations = [ 15 | migrations.CreateModel( 16 | name='Category', 17 | fields=[ 18 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 19 | ('name', models.CharField(db_index=True, max_length=200)), 20 | ('slug', models.SlugField(max_length=200, unique=True)), 21 | ], 22 | options={ 23 | 'verbose_name': 'category', 24 | 'verbose_name_plural': 'categories', 25 | 'ordering': ('name',), 26 | }, 27 | ), 28 | migrations.CreateModel( 29 | name='Product', 30 | fields=[ 31 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 32 | ('name', models.CharField(db_index=True, max_length=200)), 33 | ('slug', models.SlugField(max_length=200)), 34 | ('image', models.ImageField(blank=True, null=True, upload_to='products/%Y/%m/%d')), 35 | ('description', models.TextField(blank=True)), 36 | ('price', models.DecimalField(decimal_places=2, max_digits=10)), 37 | ('available', models.BooleanField(default=True)), 38 | ('created', models.DateTimeField(auto_now_add=True)), 39 | ('updated', models.DateTimeField(auto_now=True)), 40 | ('category', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='products', to='myapp.Category')), 41 | ], 42 | options={ 43 | 'ordering': ('name',), 44 | 'index_together': {('id', 'slug')}, 45 | }, 46 | ), 47 | ] 48 | -------------------------------------------------------------------------------- /src/myapp/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/myapp/migrations/__init__.py -------------------------------------------------------------------------------- /src/myapp/migrations/__pycache__/0001_initial.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/myapp/migrations/__pycache__/0001_initial.cpython-37.pyc -------------------------------------------------------------------------------- /src/myapp/migrations/__pycache__/0001_initial.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/myapp/migrations/__pycache__/0001_initial.cpython-38.pyc -------------------------------------------------------------------------------- /src/myapp/migrations/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/myapp/migrations/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /src/myapp/migrations/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/myapp/migrations/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /src/myapp/models.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | from django.urls import reverse 3 | 4 | class Category(models.Model): 5 | name = models.CharField(max_length=200, db_index=True) 6 | slug = models.SlugField(max_length=200, unique=True) 7 | 8 | class Meta: 9 | ordering = ('name',) 10 | verbose_name = 'category' 11 | verbose_name_plural = 'categories' 12 | 13 | def __str__(self): 14 | return self.name 15 | 16 | def get_absolute_url(self): 17 | return reverse('myapp:product_list_by_category', args=[self.slug]) 18 | 19 | class Product(models.Model): 20 | category = models.ForeignKey(Category, related_name='products', on_delete=models.CASCADE) 21 | name = models.CharField(max_length=200, db_index=True) 22 | slug = models.SlugField(max_length=200, db_index=True) 23 | image = models.ImageField(upload_to='products/%Y/%m/%d', blank=True, null = True) 24 | description = models.TextField(blank=True) 25 | price = models.DecimalField(max_digits=10, decimal_places=2) 26 | available = models.BooleanField(default=True) 27 | created = models.DateTimeField(auto_now_add=True) 28 | updated = models.DateTimeField(auto_now=True) 29 | 30 | class Meta: 31 | ordering = ('name',) 32 | index_together = (('id', 'slug'),) 33 | 34 | def __str__(self): 35 | return self.name 36 | 37 | def get_absolute_url(self): 38 | return reverse('myapp:product_detail', args=[self.id, self.slug]) -------------------------------------------------------------------------------- /src/myapp/urls.py: -------------------------------------------------------------------------------- 1 | from django.urls import path 2 | from . import views 3 | 4 | app_name = 'myapp' 5 | 6 | urlpatterns = [ 7 | path('', views.product_list, name='product_list'), 8 | path('/', views.product_list, name='product_list_by_category'), 9 | path('//', views.product_detail, name='product_detail'), 10 | ] 11 | -------------------------------------------------------------------------------- /src/myapp/views.py: -------------------------------------------------------------------------------- 1 | from django.shortcuts import render, get_object_or_404 2 | from .models import Category, Product 3 | from cart.forms import CartAddProductForm 4 | 5 | def product_list(request, category_slug=None): 6 | category = None 7 | categories = Category.objects.all() 8 | products = Product.objects.filter(available=True) 9 | if category_slug: 10 | category = get_object_or_404(Category, slug=category_slug) 11 | products = products.filter(category=category) 12 | return render(request, 'list.html', {'category': category, 'categories': categories, 'products': products}) 13 | 14 | 15 | def product_detail(request, id, slug): 16 | product = get_object_or_404(Product, id=id, slug=slug, available=True) 17 | cart_product_form = CartAddProductForm() 18 | return render(request, 'detail.html', {'product': product, 'cart_product_form': cart_product_form}) -------------------------------------------------------------------------------- /src/myproject/__init__.py: -------------------------------------------------------------------------------- 1 | # import CELERY 2 | from .celery import app as celery_app 3 | -------------------------------------------------------------------------------- /src/myproject/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/myproject/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /src/myproject/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/myproject/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /src/myproject/__pycache__/celery.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/myproject/__pycache__/celery.cpython-37.pyc -------------------------------------------------------------------------------- /src/myproject/__pycache__/celery.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/myproject/__pycache__/celery.cpython-38.pyc -------------------------------------------------------------------------------- /src/myproject/__pycache__/settings.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/myproject/__pycache__/settings.cpython-37.pyc -------------------------------------------------------------------------------- /src/myproject/__pycache__/settings.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/myproject/__pycache__/settings.cpython-38.pyc -------------------------------------------------------------------------------- /src/myproject/__pycache__/urls.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/myproject/__pycache__/urls.cpython-37.pyc -------------------------------------------------------------------------------- /src/myproject/__pycache__/urls.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/myproject/__pycache__/urls.cpython-38.pyc -------------------------------------------------------------------------------- /src/myproject/__pycache__/wsgi.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/myproject/__pycache__/wsgi.cpython-37.pyc -------------------------------------------------------------------------------- /src/myproject/__pycache__/wsgi.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/myproject/__pycache__/wsgi.cpython-38.pyc -------------------------------------------------------------------------------- /src/myproject/celery.py: -------------------------------------------------------------------------------- 1 | import os 2 | from celery import Celery 3 | 4 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings') 5 | 6 | app = Celery('myproject') 7 | 8 | app.config_from_object('django.conf:settings', namespace='CELERY') 9 | app.autodiscover_tasks() 10 | -------------------------------------------------------------------------------- /src/myproject/settings/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/myproject/settings/__init__.py -------------------------------------------------------------------------------- /src/myproject/settings/base.py: -------------------------------------------------------------------------------- 1 | import os 2 | from decouple import config 3 | 4 | BASE_DIR = os.path.dirname(os.path.dirname( 5 | os.path.dirname(os.path.abspath(__file__)))) 6 | 7 | SECRET_KEY = config('SECRET_KEY') 8 | 9 | INSTALLED_APPS = [ 10 | 'django.contrib.admin', 11 | 'django.contrib.auth', 12 | 'django.contrib.contenttypes', 13 | 'django.contrib.sessions', 14 | 'django.contrib.messages', 15 | 'django.contrib.staticfiles', 16 | 17 | #3rd party apps 18 | 'django.contrib.sites', 19 | 'crispy_forms', 20 | 'django_countries', 21 | 22 | #local apps are 23 | 'myapp.apps.MyappConfig', 24 | 'cart.apps.CartConfig', 25 | 'orders.apps.OrdersConfig', 26 | 'contact.apps.ContactConfig', 27 | ] 28 | 29 | MIDDLEWARE = [ 30 | 'django.middleware.security.SecurityMiddleware', 31 | 'django.contrib.sessions.middleware.SessionMiddleware', 32 | 'django.middleware.common.CommonMiddleware', 33 | 'django.middleware.csrf.CsrfViewMiddleware', 34 | 'django.contrib.auth.middleware.AuthenticationMiddleware', 35 | 'django.contrib.messages.middleware.MessageMiddleware', 36 | 'django.middleware.clickjacking.XFrameOptionsMiddleware', 37 | ] 38 | 39 | ROOT_URLCONF = 'myproject.urls' 40 | 41 | TEMPLATES = [ 42 | { 43 | 'BACKEND': 'django.template.backends.django.DjangoTemplates', 44 | 'DIRS': [os.path.join(BASE_DIR, 'templates')], 45 | 'APP_DIRS': True, 46 | 'OPTIONS': { 47 | 'context_processors': [ 48 | 'django.template.context_processors.debug', 49 | 'django.template.context_processors.request', 50 | 'django.contrib.auth.context_processors.auth', 51 | 'django.contrib.messages.context_processors.messages', 52 | 'cart.context_processors.cart', 53 | ], 54 | }, 55 | }, 56 | ] 57 | 58 | WSGI_APPLICATION = 'myproject.wsgi.application' 59 | 60 | LANGUAGE_CODE = 'en-us' 61 | TIME_ZONE = 'UTC' 62 | USE_I18N = True 63 | USE_L10N = True 64 | USE_TZ = True 65 | 66 | 67 | # Static files (CSS, JavaScript, Images) 68 | 69 | STATIC_URL = '/static/' 70 | MEDIA_URL = '/media/' 71 | STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')] 72 | STATIC_ROOT = os.path.join(BASE_DIR, 'static_root') 73 | MEDIA_ROOT = os.path.join(BASE_DIR, 'media_root') 74 | 75 | CART_SESSION_ID = 'cart' 76 | 77 | CRISPY_TEMPLATE_PACK = 'bootstrap4' 78 | -------------------------------------------------------------------------------- /src/myproject/settings/development.py: -------------------------------------------------------------------------------- 1 | from .base import * 2 | 3 | DEBUG = True 4 | ALLOWED_HOSTS = ['127.0.0.1'] 5 | 6 | INSTALLED_APPS += [ 7 | 'debug_toolbar' 8 | ] 9 | 10 | MIDDLEWARE += ['debug_toolbar.middleware.DebugToolbarMiddleware', ] 11 | 12 | # DEBUG TOOLBAR SETTINGS 13 | 14 | DEBUG_TOOLBAR_PANELS = [ 15 | 'debug_toolbar.panels.versions.VersionsPanel', 16 | 'debug_toolbar.panels.timer.TimerPanel', 17 | 'debug_toolbar.panels.settings.SettingsPanel', 18 | 'debug_toolbar.panels.headers.HeadersPanel', 19 | 'debug_toolbar.panels.request.RequestPanel', 20 | 'debug_toolbar.panels.sql.SQLPanel', 21 | 'debug_toolbar.panels.staticfiles.StaticFilesPanel', 22 | 'debug_toolbar.panels.templates.TemplatesPanel', 23 | 'debug_toolbar.panels.cache.CachePanel', 24 | 'debug_toolbar.panels.signals.SignalsPanel', 25 | 'debug_toolbar.panels.logging.LoggingPanel', 26 | 'debug_toolbar.panels.redirects.RedirectsPanel', 27 | ] 28 | 29 | 30 | def show_toolbar(request): 31 | return True 32 | 33 | 34 | DEBUG_TOOLBAR_CONFIG = { 35 | 'INTERCEPT_REDIRECTS': False, 36 | 'SHOW_TOOLBAR_CALLBACK': show_toolbar 37 | } 38 | 39 | DATABASES = { 40 | 'default': { 41 | 'ENGINE': 'django.db.backends.sqlite3', 42 | 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), 43 | } 44 | } 45 | 46 | EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' 47 | -------------------------------------------------------------------------------- /src/myproject/settings/production.py: -------------------------------------------------------------------------------- 1 | from .base import * 2 | 3 | DEBUG = config('DEBUG', cast=bool) 4 | ALLOWED_HOSTS = ['ip-address', 'www.your-website.com'] 5 | 6 | AUTH_PASSWORD_VALIDATORS = [ 7 | {'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator'}, 8 | {'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator'}, 9 | {'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator'}, 10 | {'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator'} 11 | ] 12 | 13 | DATABASES = { 14 | 'default': { 15 | 'ENGINE': 'django.db.backends.postgresql_psycopg2', 16 | 'NAME': config('DB_NAME'), 17 | 'USER': config('DB_USER'), 18 | 'PASSWORD': config('DB_PASSWORD'), 19 | 'HOST': config('DB_HOST'), 20 | 'PORT': '' 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/myproject/urls.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | from django.urls import path, include 3 | from django.conf import settings 4 | from django.conf.urls.static import static 5 | 6 | urlpatterns = [ 7 | path('admin/', admin.site.urls), 8 | path('cart/', include('cart.urls', namespace='cart')), 9 | path('orders/', include('orders.urls', namespace='orders')), 10 | path('contact/', include('contact.urls', namespace='contact')), 11 | path('', include('myapp.urls', namespace='myapp')), 12 | ] 13 | if settings.DEBUG: 14 | import debug_toolbar 15 | urlpatterns += [path('__debug__/', include(debug_toolbar.urls))] 16 | urlpatterns += static(settings.MEDIA_URL, 17 | document_root=settings.MEDIA_ROOT) 18 | urlpatterns += static(settings.STATIC_URL, 19 | document_root=settings.STATIC_ROOT) 20 | -------------------------------------------------------------------------------- /src/myproject/wsgi.py: -------------------------------------------------------------------------------- 1 | """ 2 | WSGI config for myproject project. 3 | 4 | """ 5 | 6 | import os 7 | from django.core.wsgi import get_wsgi_application 8 | 9 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings') 10 | 11 | application = get_wsgi_application() 12 | -------------------------------------------------------------------------------- /src/orders/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/orders/__init__.py -------------------------------------------------------------------------------- /src/orders/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/orders/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /src/orders/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/orders/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /src/orders/__pycache__/admin.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/orders/__pycache__/admin.cpython-37.pyc -------------------------------------------------------------------------------- /src/orders/__pycache__/admin.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/orders/__pycache__/admin.cpython-38.pyc -------------------------------------------------------------------------------- /src/orders/__pycache__/apps.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/orders/__pycache__/apps.cpython-37.pyc -------------------------------------------------------------------------------- /src/orders/__pycache__/apps.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/orders/__pycache__/apps.cpython-38.pyc -------------------------------------------------------------------------------- /src/orders/__pycache__/forms.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/orders/__pycache__/forms.cpython-37.pyc -------------------------------------------------------------------------------- /src/orders/__pycache__/forms.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/orders/__pycache__/forms.cpython-38.pyc -------------------------------------------------------------------------------- /src/orders/__pycache__/models.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/orders/__pycache__/models.cpython-37.pyc -------------------------------------------------------------------------------- /src/orders/__pycache__/models.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/orders/__pycache__/models.cpython-38.pyc -------------------------------------------------------------------------------- /src/orders/__pycache__/tasks.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/orders/__pycache__/tasks.cpython-37.pyc -------------------------------------------------------------------------------- /src/orders/__pycache__/tasks.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/orders/__pycache__/tasks.cpython-38.pyc -------------------------------------------------------------------------------- /src/orders/__pycache__/urls.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/orders/__pycache__/urls.cpython-37.pyc -------------------------------------------------------------------------------- /src/orders/__pycache__/urls.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/orders/__pycache__/urls.cpython-38.pyc -------------------------------------------------------------------------------- /src/orders/__pycache__/views.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/orders/__pycache__/views.cpython-37.pyc -------------------------------------------------------------------------------- /src/orders/__pycache__/views.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/orders/__pycache__/views.cpython-38.pyc -------------------------------------------------------------------------------- /src/orders/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | from .models import Order, OrderItem 3 | from django.http import HttpResponse 4 | from django.urls import reverse 5 | from django.utils.safestring import mark_safe 6 | 7 | class OrderItemInline(admin.TabularInline): 8 | model = OrderItem 9 | raw_id_fields = ['product'] 10 | 11 | def order_pdf(obj): 12 | url=reverse('orders:admin_order_pdf',args=[obj.id]) 13 | return mark_safe(f'PDF') 14 | order_pdf.short_description='Invoice' 15 | 16 | @admin.register(Order) 17 | class OrderAdmin(admin.ModelAdmin): 18 | list_display = ['id', 'first_name', 'last_name', 'email', 'address', 'postal_code', 'city', 'paid', 'created', 'updated',order_pdf,] 19 | list_filter = ['paid', 'created', 'updated'] 20 | inlines = [OrderItemInline] 21 | -------------------------------------------------------------------------------- /src/orders/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class OrdersConfig(AppConfig): 5 | name = 'orders' 6 | -------------------------------------------------------------------------------- /src/orders/forms.py: -------------------------------------------------------------------------------- 1 | from django import forms 2 | from .models import Order 3 | 4 | class OrderCreateForm(forms.ModelForm): 5 | class Meta: 6 | model = Order 7 | fields = ['first_name', 'last_name', 'email', 'address', 'postal_code', 'city'] 8 | -------------------------------------------------------------------------------- /src/orders/migrations/0001_initial.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.2.4 on 2019-08-17 08:56 2 | 3 | from django.db import migrations, models 4 | import django.db.models.deletion 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | initial = True 10 | 11 | dependencies = [ 12 | ('myapp', '__first__'), 13 | ] 14 | 15 | operations = [ 16 | migrations.CreateModel( 17 | name='Order', 18 | fields=[ 19 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 20 | ('first_name', models.CharField(max_length=50)), 21 | ('last_name', models.CharField(max_length=50)), 22 | ('email', models.EmailField(max_length=254)), 23 | ('address', models.CharField(max_length=250)), 24 | ('postal_code', models.CharField(max_length=20)), 25 | ('city', models.CharField(max_length=100)), 26 | ('created', models.DateTimeField(auto_now_add=True)), 27 | ('updated', models.DateTimeField(auto_now=True)), 28 | ('paid', models.BooleanField(default=False)), 29 | ], 30 | options={ 31 | 'ordering': ('-created',), 32 | }, 33 | ), 34 | migrations.CreateModel( 35 | name='OrderItem', 36 | fields=[ 37 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 38 | ('price', models.DecimalField(decimal_places=2, max_digits=10)), 39 | ('quantity', models.PositiveIntegerField(default=1)), 40 | ('order', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='items', to='orders.Order')), 41 | ('product', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='order_items', to='myapp.Product')), 42 | ], 43 | ), 44 | ] 45 | -------------------------------------------------------------------------------- /src/orders/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/orders/migrations/__init__.py -------------------------------------------------------------------------------- /src/orders/migrations/__pycache__/0001_initial.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/orders/migrations/__pycache__/0001_initial.cpython-37.pyc -------------------------------------------------------------------------------- /src/orders/migrations/__pycache__/0001_initial.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/orders/migrations/__pycache__/0001_initial.cpython-38.pyc -------------------------------------------------------------------------------- /src/orders/migrations/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/orders/migrations/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /src/orders/migrations/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/orders/migrations/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /src/orders/models.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | from myapp.models import Product 3 | 4 | class Order(models.Model): 5 | first_name = models.CharField(max_length=50) 6 | last_name = models.CharField(max_length=50) 7 | email = models.EmailField() 8 | address = models.CharField(max_length=250) 9 | postal_code = models.CharField(max_length=20) 10 | city = models.CharField(max_length=100) 11 | created = models.DateTimeField(auto_now_add=True) 12 | updated = models.DateTimeField(auto_now=True) 13 | paid = models.BooleanField(default=False) 14 | 15 | class Meta: 16 | ordering = ('-created',) 17 | 18 | def __str__(self): 19 | return 'Order {}'.format(self.id) 20 | 21 | def get_total_cost(self): 22 | return sum(item.get_cost() for item in self.items.all()) 23 | 24 | class OrderItem(models.Model): 25 | order = models.ForeignKey(Order, related_name='items', on_delete=models.CASCADE) 26 | product = models.ForeignKey(Product, related_name='order_items', on_delete=models.CASCADE) 27 | price = models.DecimalField(max_digits=10, decimal_places=2) 28 | quantity = models.PositiveIntegerField(default=1) 29 | 30 | def __str__(self): 31 | return '{}'.format(self.id) 32 | 33 | def get_cost(self): 34 | return self.price * self.quantity -------------------------------------------------------------------------------- /src/orders/tasks.py: -------------------------------------------------------------------------------- 1 | from celery import task 2 | from django.core.mail import send_mail 3 | from .models import Order 4 | 5 | @task 6 | def order_created(order_id): 7 | """ 8 | send an e-mail notification when an order is 9 | """ 10 | order = Order.objects.get(id=order_id) 11 | subject = 'Order nr. {}'.format(order.id) 12 | message = 'Dear {},\n\nYou have successfully placed an order.\ Your order id is {}.'.format(order.first_name,order.id) 13 | mail_sent = send_mail(subject, message, 'admin@hotfood.com',[order.email]) 14 | return mail_sent 15 | -------------------------------------------------------------------------------- /src/orders/urls.py: -------------------------------------------------------------------------------- 1 | from django.urls import path 2 | from . import views 3 | 4 | app_name = 'orders' 5 | 6 | urlpatterns = [ 7 | path('admin/order//pdf/',views.admin_order_pdf,name='admin_order_pdf'), 8 | path('create/', views.order_create, name='order_create'), 9 | ] 10 | -------------------------------------------------------------------------------- /src/orders/views.py: -------------------------------------------------------------------------------- 1 | from django.shortcuts import render,get_object_or_404 2 | from cart.cart import Cart 3 | from .models import OrderItem,Order 4 | from .forms import OrderCreateForm 5 | from .tasks import order_created 6 | from django.contrib.admin.views.decorators import staff_member_required 7 | import weasyprint 8 | from django.conf import settings 9 | from django.http import HttpResponse 10 | from django.template.loader import render_to_string 11 | 12 | import os 13 | BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 14 | 15 | def order_create(request): 16 | cart = Cart(request) 17 | if request.method == 'POST': 18 | form = OrderCreateForm(request.POST) 19 | if form.is_valid(): 20 | order = form.save() 21 | for item in cart: 22 | OrderItem.objects.create(order=order, product=item['product'], price=item['price'], quantity=item['quantity']) 23 | 24 | cart.clear() 25 | order_created.delay(order.id) 26 | return render(request, 'order/ordered.html', {'order': order}) 27 | else: 28 | form = OrderCreateForm() 29 | return render(request, 'order/order.html', {'cart': cart, 'form': form}) 30 | 31 | @staff_member_required 32 | def admin_order_pdf(request,order_id): 33 | order=get_object_or_404(Order,id=order_id) 34 | html=render_to_string('order/pdf.html',{'order':order}) 35 | response=HttpResponse(content_type='application/pdf') 36 | response['Content-Disposition']=f'filename=order_{order.id}.pdf' 37 | weasyprint.HTML(string=html).write_pdf(response,stylesheets=[weasyprint.CSS(BASE_DIR + '/static/css/pdf.css')]) 38 | return response 39 | -------------------------------------------------------------------------------- /src/static/admin/css/dashboard.css: -------------------------------------------------------------------------------- 1 | /* DASHBOARD */ 2 | 3 | .dashboard .module table th { 4 | width: 100%; 5 | } 6 | 7 | .dashboard .module table td { 8 | white-space: nowrap; 9 | } 10 | 11 | .dashboard .module table td a { 12 | display: block; 13 | padding-right: .6em; 14 | } 15 | 16 | /* RECENT ACTIONS MODULE */ 17 | 18 | .module ul.actionlist { 19 | margin-left: 0; 20 | } 21 | 22 | ul.actionlist li { 23 | list-style-type: none; 24 | overflow: hidden; 25 | text-overflow: ellipsis; 26 | -o-text-overflow: ellipsis; 27 | } 28 | -------------------------------------------------------------------------------- /src/static/admin/css/fonts.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'Roboto'; 3 | src: url('../fonts/Roboto-Bold-webfont.woff'); 4 | font-weight: 700; 5 | font-style: normal; 6 | } 7 | 8 | @font-face { 9 | font-family: 'Roboto'; 10 | src: url('../fonts/Roboto-Regular-webfont.woff'); 11 | font-weight: 400; 12 | font-style: normal; 13 | } 14 | 15 | @font-face { 16 | font-family: 'Roboto'; 17 | src: url('../fonts/Roboto-Light-webfont.woff'); 18 | font-weight: 300; 19 | font-style: normal; 20 | } 21 | -------------------------------------------------------------------------------- /src/static/admin/css/login.css: -------------------------------------------------------------------------------- 1 | /* LOGIN FORM */ 2 | 3 | body.login { 4 | background: #f8f8f8; 5 | } 6 | 7 | .login #header { 8 | height: auto; 9 | padding: 15px 16px; 10 | justify-content: center; 11 | } 12 | 13 | .login #header h1 { 14 | font-size: 18px; 15 | } 16 | 17 | .login #header h1 a { 18 | color: #fff; 19 | } 20 | 21 | .login #content { 22 | padding: 20px 20px 0; 23 | } 24 | 25 | .login #container { 26 | background: #fff; 27 | border: 1px solid #eaeaea; 28 | border-radius: 4px; 29 | overflow: hidden; 30 | width: 28em; 31 | min-width: 300px; 32 | margin: 100px auto; 33 | } 34 | 35 | .login #content-main { 36 | width: 100%; 37 | } 38 | 39 | .login .form-row { 40 | padding: 4px 0; 41 | float: left; 42 | width: 100%; 43 | border-bottom: none; 44 | } 45 | 46 | .login .form-row label { 47 | padding-right: 0.5em; 48 | line-height: 2em; 49 | font-size: 1em; 50 | clear: both; 51 | color: #333; 52 | } 53 | 54 | .login .form-row #id_username, .login .form-row #id_password { 55 | clear: both; 56 | padding: 8px; 57 | width: 100%; 58 | -webkit-box-sizing: border-box; 59 | -moz-box-sizing: border-box; 60 | box-sizing: border-box; 61 | } 62 | 63 | .login span.help { 64 | font-size: 10px; 65 | display: block; 66 | } 67 | 68 | .login .submit-row { 69 | clear: both; 70 | padding: 1em 0 0 9.4em; 71 | margin: 0; 72 | border: none; 73 | background: none; 74 | text-align: left; 75 | } 76 | 77 | .login .password-reset-link { 78 | text-align: center; 79 | } 80 | -------------------------------------------------------------------------------- /src/static/admin/css/responsive_rtl.css: -------------------------------------------------------------------------------- 1 | /* TABLETS */ 2 | 3 | @media (max-width: 1024px) { 4 | [dir="rtl"] .colMS { 5 | margin-right: 0; 6 | } 7 | 8 | [dir="rtl"] #user-tools { 9 | text-align: right; 10 | } 11 | 12 | [dir="rtl"] #changelist .actions label { 13 | padding-left: 10px; 14 | padding-right: 0; 15 | } 16 | 17 | [dir="rtl"] #changelist .actions select { 18 | margin-left: 0; 19 | margin-right: 15px; 20 | } 21 | 22 | [dir="rtl"] .change-list .filtered .results, 23 | [dir="rtl"] .change-list .filtered .paginator, 24 | [dir="rtl"] .filtered #toolbar, 25 | [dir="rtl"] .filtered div.xfull, 26 | [dir="rtl"] .filtered .actions { 27 | margin-right: 0; 28 | margin-left: 230px; 29 | } 30 | 31 | [dir="rtl"] .inline-group ul.tools a.add, 32 | [dir="rtl"] .inline-group div.add-row a, 33 | [dir="rtl"] .inline-group .tabular tr.add-row td a { 34 | padding: 8px 26px 8px 10px; 35 | background-position: calc(100% - 8px) 9px; 36 | } 37 | 38 | [dir="rtl"] .related-widget-wrapper-link + .selector { 39 | margin-right: 0; 40 | margin-left: 15px; 41 | } 42 | 43 | [dir="rtl"] .selector .selector-filter label { 44 | margin-right: 0; 45 | margin-left: 8px; 46 | } 47 | 48 | [dir="rtl"] .object-tools li { 49 | float: right; 50 | } 51 | 52 | [dir="rtl"] .object-tools li + li { 53 | margin-left: 0; 54 | margin-right: 15px; 55 | } 56 | 57 | [dir="rtl"] .dashboard .module table td a { 58 | padding-left: 0; 59 | padding-right: 16px; 60 | } 61 | } 62 | 63 | /* MOBILE */ 64 | 65 | @media (max-width: 767px) { 66 | [dir="rtl"] .change-list .filtered .results, 67 | [dir="rtl"] .change-list .filtered .paginator, 68 | [dir="rtl"] .filtered #toolbar, 69 | [dir="rtl"] .filtered div.xfull, 70 | [dir="rtl"] .filtered .actions { 71 | margin-left: 0; 72 | } 73 | 74 | [dir="rtl"] .aligned .add-another, 75 | [dir="rtl"] .aligned .related-lookup, 76 | [dir="rtl"] .aligned .datetimeshortcuts { 77 | margin-left: 0; 78 | margin-right: 15px; 79 | } 80 | 81 | [dir="rtl"] .aligned ul { 82 | margin-right: 0; 83 | } 84 | } 85 | -------------------------------------------------------------------------------- /src/static/admin/css/vendor/select2/LICENSE-SELECT2.md: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2012-2017 Kevin Brown, Igor Vaynberg, and Select2 contributors 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /src/static/admin/fonts/README.txt: -------------------------------------------------------------------------------- 1 | Roboto webfont source: https://www.google.com/fonts/specimen/Roboto 2 | WOFF files extracted using https://github.com/majodev/google-webfonts-helper 3 | Weights used in this project: Light (300), Regular (400), Bold (700) 4 | -------------------------------------------------------------------------------- /src/static/admin/fonts/Roboto-Bold-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/static/admin/fonts/Roboto-Bold-webfont.woff -------------------------------------------------------------------------------- /src/static/admin/fonts/Roboto-Light-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/static/admin/fonts/Roboto-Light-webfont.woff -------------------------------------------------------------------------------- /src/static/admin/fonts/Roboto-Regular-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/static/admin/fonts/Roboto-Regular-webfont.woff -------------------------------------------------------------------------------- /src/static/admin/img/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 Code Charm Ltd 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /src/static/admin/img/README.txt: -------------------------------------------------------------------------------- 1 | All icons are taken from Font Awesome (http://fontawesome.io/) project. 2 | The Font Awesome font is licensed under the SIL OFL 1.1: 3 | - https://scripts.sil.org/OFL 4 | 5 | SVG icons source: https://github.com/encharm/Font-Awesome-SVG-PNG 6 | Font-Awesome-SVG-PNG is licensed under the MIT license (see file license 7 | in current folder). 8 | -------------------------------------------------------------------------------- /src/static/admin/img/calendar-icons.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/static/admin/img/gis/move_vertex_off.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/static/admin/img/gis/move_vertex_on.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/static/admin/img/icon-addlink.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/static/admin/img/icon-alert.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/static/admin/img/icon-calendar.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/static/admin/img/icon-changelink.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/static/admin/img/icon-clock.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/static/admin/img/icon-deletelink.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/static/admin/img/icon-no.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/static/admin/img/icon-unknown-alt.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/static/admin/img/icon-unknown.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/static/admin/img/icon-viewlink.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/static/admin/img/icon-yes.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/static/admin/img/inline-delete.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/static/admin/img/search.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/static/admin/img/selector-icons.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/static/admin/img/sorting-icons.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/static/admin/img/tooltag-add.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/static/admin/img/tooltag-arrowright.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/static/admin/js/actions.min.js: -------------------------------------------------------------------------------- 1 | (function(a){var f;a.fn.actions=function(e){var b=a.extend({},a.fn.actions.defaults,e),g=a(this),k=!1,l=function(){a(b.acrossClears).hide();a(b.acrossQuestions).show();a(b.allContainer).hide()},m=function(){a(b.acrossClears).show();a(b.acrossQuestions).hide();a(b.actionContainer).toggleClass(b.selectedClass);a(b.allContainer).show();a(b.counterContainer).hide()},n=function(){a(b.acrossClears).hide();a(b.acrossQuestions).hide();a(b.allContainer).hide();a(b.counterContainer).show()},p=function(){n(); 2 | a(b.acrossInput).val(0);a(b.actionContainer).removeClass(b.selectedClass)},q=function(c){c?l():n();a(g).prop("checked",c).parent().parent().toggleClass(b.selectedClass,c)},h=function(){var c=a(g).filter(":checked").length,d=a(".action-counter").data("actionsIcnt");a(b.counterContainer).html(interpolate(ngettext("%(sel)s of %(cnt)s selected","%(sel)s of %(cnt)s selected",c),{sel:c,cnt:d},!0));a(b.allToggle).prop("checked",function(){if(c===g.length){var a=!0;l()}else a=!1,p();return a})};a(b.counterContainer).show(); 3 | a(this).filter(":checked").each(function(c){a(this).parent().parent().toggleClass(b.selectedClass);h();1===a(b.acrossInput).val()&&m()});a(b.allToggle).show().on("click",function(){q(a(this).prop("checked"));h()});a("a",b.acrossQuestions).on("click",function(c){c.preventDefault();a(b.acrossInput).val(1);m()});a("a",b.acrossClears).on("click",function(c){c.preventDefault();a(b.allToggle).prop("checked",!1);p();q(0);h()});f=null;a(g).on("click",function(c){c||(c=window.event);var d=c.target?c.target: 4 | c.srcElement;if(f&&a.data(f)!==a.data(d)&&!0===c.shiftKey){var e=!1;a(f).prop("checked",d.checked).parent().parent().toggleClass(b.selectedClass,d.checked);a(g).each(function(){if(a.data(this)===a.data(f)||a.data(this)===a.data(d))e=e?!1:!0;e&&a(this).prop("checked",d.checked).parent().parent().toggleClass(b.selectedClass,d.checked)})}a(d).parent().parent().toggleClass(b.selectedClass,d.checked);f=d;h()});a("form#changelist-form table#result_list tr").on("change","td:gt(0) :input",function(){k=!0}); 5 | a('form#changelist-form button[name="index"]').on("click",function(a){if(k)return confirm(gettext("You have unsaved changes on individual editable fields. If you run an action, your unsaved changes will be lost."))});a('form#changelist-form input[name="_save"]').on("click",function(c){var d=!1;a("select option:selected",b.actionContainer).each(function(){a(this).val()&&(d=!0)});if(d)return k?confirm(gettext("You have selected an action, but you haven't saved your changes to individual fields yet. Please click OK to save. You'll need to re-run the action.")): 6 | confirm(gettext("You have selected an action, and you haven't made any changes on individual fields. You're probably looking for the Go button rather than the Save button."))})};a.fn.actions.defaults={actionContainer:"div.actions",counterContainer:"span.action-counter",allContainer:"div.actions span.all",acrossInput:"div.actions input.select-across",acrossQuestions:"div.actions span.question",acrossClears:"div.actions span.clear",allToggle:"#action-toggle",selectedClass:"selected"};a(document).ready(function(){var e= 7 | a("tr input.action-select");0'+a.addText+""),m=c.find("tr:last a")):(d.filter(":last").after('"),m=d.filter(":last").next().find("a")));m.on("click",function(f){f.preventDefault();f=b("#"+a.prefix+"-empty"); 3 | var c=f.clone(!0);c.removeClass(a.emptyCssClass).addClass(a.formCssClass).attr("id",a.prefix+"-"+k);c.is("tr")?c.children(":last").append('"):c.is("ul")||c.is("ol")?c.append('
  • '+a.deleteText+"
  • "):c.children(":first").append(''+a.deleteText+"");c.find("*").each(function(){h(this,a.prefix,g.val())});c.insertBefore(b(f)); 4 | b(g).val(parseInt(g.val(),10)+1);k+=1;""!==e.val()&&0>=e.val()-g.val()&&m.parent().hide();c.find("a."+a.deleteCssClass).on("click",function(f){f.preventDefault();c.remove();--k;a.removed&&a.removed(c);b(document).trigger("formset:removed",[c,a.prefix]);f=b("."+a.formCssClass);b("#id_"+a.prefix+"-TOTAL_FORMS").val(f.length);(""===e.val()||0 tr",b(c).tabularFormset(c,a.options)}})})})(django.jQuery); 11 | -------------------------------------------------------------------------------- /src/static/admin/js/jquery.init.js: -------------------------------------------------------------------------------- 1 | /*global django:true, jQuery:false*/ 2 | /* Puts the included jQuery into our own namespace using noConflict and passing 3 | * it 'true'. This ensures that the included jQuery doesn't pollute the global 4 | * namespace (i.e. this preserves pre-existing values for both window.$ and 5 | * window.jQuery). 6 | */ 7 | var django = django || {}; 8 | django.jQuery = jQuery.noConflict(true); 9 | -------------------------------------------------------------------------------- /src/static/admin/js/popup_response.js: -------------------------------------------------------------------------------- 1 | /*global opener */ 2 | (function() { 3 | 'use strict'; 4 | var initData = JSON.parse(document.getElementById('django-admin-popup-response-constants').dataset.popupResponse); 5 | switch(initData.action) { 6 | case 'change': 7 | opener.dismissChangeRelatedObjectPopup(window, initData.value, initData.obj, initData.new_value); 8 | break; 9 | case 'delete': 10 | opener.dismissDeleteRelatedObjectPopup(window, initData.value); 11 | break; 12 | default: 13 | opener.dismissAddRelatedObjectPopup(window, initData.value, initData.obj); 14 | break; 15 | } 16 | })(); 17 | -------------------------------------------------------------------------------- /src/static/admin/js/prepopulate.js: -------------------------------------------------------------------------------- 1 | /*global URLify*/ 2 | (function($) { 3 | 'use strict'; 4 | $.fn.prepopulate = function(dependencies, maxLength, allowUnicode) { 5 | /* 6 | Depends on urlify.js 7 | Populates a selected field with the values of the dependent fields, 8 | URLifies and shortens the string. 9 | dependencies - array of dependent fields ids 10 | maxLength - maximum length of the URLify'd string 11 | allowUnicode - Unicode support of the URLify'd string 12 | */ 13 | return this.each(function() { 14 | var prepopulatedField = $(this); 15 | 16 | var populate = function() { 17 | // Bail if the field's value has been changed by the user 18 | if (prepopulatedField.data('_changed')) { 19 | return; 20 | } 21 | 22 | var values = []; 23 | $.each(dependencies, function(i, field) { 24 | field = $(field); 25 | if (field.val().length > 0) { 26 | values.push(field.val()); 27 | } 28 | }); 29 | prepopulatedField.val(URLify(values.join(' '), maxLength, allowUnicode)); 30 | }; 31 | 32 | prepopulatedField.data('_changed', false); 33 | prepopulatedField.on('change', function() { 34 | prepopulatedField.data('_changed', true); 35 | }); 36 | 37 | if (!prepopulatedField.val()) { 38 | $(dependencies.join(',')).on('keyup change focus', populate); 39 | } 40 | }); 41 | }; 42 | })(django.jQuery); 43 | -------------------------------------------------------------------------------- /src/static/admin/js/prepopulate.min.js: -------------------------------------------------------------------------------- 1 | (function(b){b.fn.prepopulate=function(d,f,g){return this.each(function(){var a=b(this),h=function(){if(!a.data("_changed")){var e=[];b.each(d,function(a,c){c=b(c);01&&(n+="a"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Моля въведете още "+t+" символ";return t>1&&(n+="a"),n},loadingMore:function(){return"Зареждат се още…"},maximumSelected:function(e){var t="Можете да направите до "+e.maximum+" ";return e.maximum>1?t+="избора":t+="избор",t},noResults:function(){return"Няма намерени съвпадения"},searching:function(){return"Търсене…"},removeAllItems:function(){return"Премахнете всички елементи"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/bn.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/bn",[],function(){return{errorLoading:function(){return"ফলাফলগুলি লোড করা যায়নি।"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="অনুগ্রহ করে "+t+" টি অক্ষর মুছে দিন।";return t!=1&&(n="অনুগ্রহ করে "+t+" টি অক্ষর মুছে দিন।"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=t+" টি অক্ষর অথবা অধিক অক্ষর লিখুন।";return n},loadingMore:function(){return"আরো ফলাফল লোড হচ্ছে ..."},maximumSelected:function(e){var t=e.maximum+" টি আইটেম নির্বাচন করতে পারবেন।";return e.maximum!=1&&(t=e.maximum+" টি আইটেম নির্বাচন করতে পারবেন।"),t},noResults:function(){return"কোন ফলাফল পাওয়া যায়নি।"},searching:function(){return"অনুসন্ধান করা হচ্ছে ..."}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/bs.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/bs",[],function(){function e(e,t,n,r){return e%10==1&&e%100!=11?t:e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?n:r}return{errorLoading:function(){return"Preuzimanje nije uspijelo."},inputTooLong:function(t){var n=t.input.length-t.maximum,r="Obrišite "+n+" simbol";return r+=e(n,"","a","a"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Ukucajte bar još "+n+" simbol";return r+=e(n,"","a","a"),r},loadingMore:function(){return"Preuzimanje još rezultata…"},maximumSelected:function(t){var n="Možete izabrati samo "+t.maximum+" stavk";return n+=e(t.maximum,"u","e","i"),n},noResults:function(){return"Ništa nije pronađeno"},searching:function(){return"Pretraga…"},removeAllItems:function(){return"Uklonite sve stavke"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/ca.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ca",[],function(){return{errorLoading:function(){return"La càrrega ha fallat"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Si us plau, elimina "+t+" car";return t==1?n+="àcter":n+="àcters",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Si us plau, introdueix "+t+" car";return t==1?n+="àcter":n+="àcters",n},loadingMore:function(){return"Carregant més resultats…"},maximumSelected:function(e){var t="Només es pot seleccionar "+e.maximum+" element";return e.maximum!=1&&(t+="s"),t},noResults:function(){return"No s'han trobat resultats"},searching:function(){return"Cercant…"},removeAllItems:function(){return"Treu tots els elements"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/cs.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/cs",[],function(){function e(e,t){switch(e){case 2:return t?"dva":"dvě";case 3:return"tři";case 4:return"čtyři"}return""}return{errorLoading:function(){return"Výsledky nemohly být načteny."},inputTooLong:function(t){var n=t.input.length-t.maximum;return n==1?"Prosím, zadejte o jeden znak méně.":n<=4?"Prosím, zadejte o "+e(n,!0)+" znaky méně.":"Prosím, zadejte o "+n+" znaků méně."},inputTooShort:function(t){var n=t.minimum-t.input.length;return n==1?"Prosím, zadejte ještě jeden znak.":n<=4?"Prosím, zadejte ještě další "+e(n,!0)+" znaky.":"Prosím, zadejte ještě dalších "+n+" znaků."},loadingMore:function(){return"Načítají se další výsledky…"},maximumSelected:function(t){var n=t.maximum;return n==1?"Můžete zvolit jen jednu položku.":n<=4?"Můžete zvolit maximálně "+e(n,!1)+" položky.":"Můžete zvolit maximálně "+n+" položek."},noResults:function(){return"Nenalezeny žádné položky."},searching:function(){return"Vyhledávání…"},removeAllItems:function(){return"Odstraňte všechny položky"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/da.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/da",[],function(){return{errorLoading:function(){return"Resultaterne kunne ikke indlæses."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Angiv venligst "+t+" tegn mindre"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Angiv venligst "+t+" tegn mere"},loadingMore:function(){return"Indlæser flere resultater…"},maximumSelected:function(e){var t="Du kan kun vælge "+e.maximum+" emne";return e.maximum!=1&&(t+="r"),t},noResults:function(){return"Ingen resultater fundet"},searching:function(){return"Søger…"},removeAllItems:function(){return"Fjern alle elementer"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/de.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/de",[],function(){return{errorLoading:function(){return"Die Ergebnisse konnten nicht geladen werden."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Bitte "+t+" Zeichen weniger eingeben"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Bitte "+t+" Zeichen mehr eingeben"},loadingMore:function(){return"Lade mehr Ergebnisse…"},maximumSelected:function(e){var t="Sie können nur "+e.maximum+" Eintr";return e.maximum===1?t+="ag":t+="äge",t+=" auswählen",t},noResults:function(){return"Keine Übereinstimmungen gefunden"},searching:function(){return"Suche…"},removeAllItems:function(){return"Entferne alle Gegenstände"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/dsb.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/dsb",[],function(){var e=["znamuško","znamušce","znamuška","znamuškow"],t=["zapisk","zapiska","zapiski","zapiskow"],n=function(t,n){if(t===1)return n[0];if(t===2)return n[1];if(t>2&&t<=4)return n[2];if(t>=5)return n[3]};return{errorLoading:function(){return"Wuslědki njejsu se dali zacytaś."},inputTooLong:function(t){var r=t.input.length-t.maximum;return"Pšosym lašuj "+r+" "+n(r,e)},inputTooShort:function(t){var r=t.minimum-t.input.length;return"Pšosym zapódaj nanejmjenjej "+r+" "+n(r,e)},loadingMore:function(){return"Dalšne wuslědki se zacytaju…"},maximumSelected:function(e){return"Móžoš jano "+e.maximum+" "+n(e.maximum,t)+"wubraś."},noResults:function(){return"Žedne wuslědki namakane"},searching:function(){return"Pyta se…"},removeAllItems:function(){return"Remove all items"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/el.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/el",[],function(){return{errorLoading:function(){return"Τα αποτελέσματα δεν μπόρεσαν να φορτώσουν."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Παρακαλώ διαγράψτε "+t+" χαρακτήρ";return t==1&&(n+="α"),t!=1&&(n+="ες"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Παρακαλώ συμπληρώστε "+t+" ή περισσότερους χαρακτήρες";return n},loadingMore:function(){return"Φόρτωση περισσότερων αποτελεσμάτων…"},maximumSelected:function(e){var t="Μπορείτε να επιλέξετε μόνο "+e.maximum+" επιλογ";return e.maximum==1&&(t+="ή"),e.maximum!=1&&(t+="ές"),t},noResults:function(){return"Δεν βρέθηκαν αποτελέσματα"},searching:function(){return"Αναζήτηση…"},removeAllItems:function(){return"Καταργήστε όλα τα στοιχεία"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/en.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/en",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Please delete "+t+" character";return t!=1&&(n+="s"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Please enter "+t+" or more characters";return n},loadingMore:function(){return"Loading more results…"},maximumSelected:function(e){var t="You can only select "+e.maximum+" item";return e.maximum!=1&&(t+="s"),t},noResults:function(){return"No results found"},searching:function(){return"Searching…"},removeAllItems:function(){return"Remove all items"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/es.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/es",[],function(){return{errorLoading:function(){return"No se pudieron cargar los resultados"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Por favor, elimine "+t+" car";return t==1?n+="ácter":n+="acteres",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Por favor, introduzca "+t+" car";return t==1?n+="ácter":n+="acteres",n},loadingMore:function(){return"Cargando más resultados…"},maximumSelected:function(e){var t="Sólo puede seleccionar "+e.maximum+" elemento";return e.maximum!=1&&(t+="s"),t},noResults:function(){return"No se encontraron resultados"},searching:function(){return"Buscando…"},removeAllItems:function(){return"Eliminar todos los elementos"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/et.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/et",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Sisesta "+t+" täht";return t!=1&&(n+="e"),n+=" vähem",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Sisesta "+t+" täht";return t!=1&&(n+="e"),n+=" rohkem",n},loadingMore:function(){return"Laen tulemusi…"},maximumSelected:function(e){var t="Saad vaid "+e.maximum+" tulemus";return e.maximum==1?t+="e":t+="t",t+=" valida",t},noResults:function(){return"Tulemused puuduvad"},searching:function(){return"Otsin…"},removeAllItems:function(){return"Eemalda kõik esemed"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/eu.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/eu",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Idatzi ";return t==1?n+="karaktere bat":n+=t+" karaktere",n+=" gutxiago",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Idatzi ";return t==1?n+="karaktere bat":n+=t+" karaktere",n+=" gehiago",n},loadingMore:function(){return"Emaitza gehiago kargatzen…"},maximumSelected:function(e){return e.maximum===1?"Elementu bakarra hauta dezakezu":e.maximum+" elementu hauta ditzakezu soilik"},noResults:function(){return"Ez da bat datorrenik aurkitu"},searching:function(){return"Bilatzen…"},removeAllItems:function(){return"Kendu elementu guztiak"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/fa.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/fa",[],function(){return{errorLoading:function(){return"امکان بارگذاری نتایج وجود ندارد."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="لطفاً "+t+" کاراکتر را حذف نمایید";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="لطفاً تعداد "+t+" کاراکتر یا بیشتر وارد نمایید";return n},loadingMore:function(){return"در حال بارگذاری نتایج بیشتر..."},maximumSelected:function(e){var t="شما تنها می‌توانید "+e.maximum+" آیتم را انتخاب نمایید";return t},noResults:function(){return"هیچ نتیجه‌ای یافت نشد"},searching:function(){return"در حال جستجو..."},removeAllItems:function(){return"همه موارد را حذف کنید"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/fi.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/fi",[],function(){return{errorLoading:function(){return"Tuloksia ei saatu ladattua."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Ole hyvä ja anna "+t+" merkkiä vähemmän"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Ole hyvä ja anna "+t+" merkkiä lisää"},loadingMore:function(){return"Ladataan lisää tuloksia…"},maximumSelected:function(e){return"Voit valita ainoastaan "+e.maximum+" kpl"},noResults:function(){return"Ei tuloksia"},searching:function(){return"Haetaan…"},removeAllItems:function(){return"Poista kaikki kohteet"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/fr.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/fr",[],function(){return{errorLoading:function(){return"Les résultats ne peuvent pas être chargés."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Supprimez "+t+" caractère"+(t>1?"s":"")},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Saisissez au moins "+t+" caractère"+(t>1?"s":"")},loadingMore:function(){return"Chargement de résultats supplémentaires…"},maximumSelected:function(e){return"Vous pouvez seulement sélectionner "+e.maximum+" élément"+(e.maximum>1?"s":"")},noResults:function(){return"Aucun résultat trouvé"},searching:function(){return"Recherche en cours…"},removeAllItems:function(){return"Supprimer tous les articles"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/gl.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/gl",[],function(){return{errorLoading:function(){return"Non foi posíbel cargar os resultados."},inputTooLong:function(e){var t=e.input.length-e.maximum;return t===1?"Elimine un carácter":"Elimine "+t+" caracteres"},inputTooShort:function(e){var t=e.minimum-e.input.length;return t===1?"Engada un carácter":"Engada "+t+" caracteres"},loadingMore:function(){return"Cargando máis resultados…"},maximumSelected:function(e){return e.maximum===1?"Só pode seleccionar un elemento":"Só pode seleccionar "+e.maximum+" elementos"},noResults:function(){return"Non se atoparon resultados"},searching:function(){return"Buscando…"},removeAllItems:function(){return"Elimina todos os elementos"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/he.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/he",[],function(){return{errorLoading:function(){return"שגיאה בטעינת התוצאות"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="נא למחוק ";return t===1?n+="תו אחד":n+=t+" תווים",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="נא להכניס ";return t===1?n+="תו אחד":n+=t+" תווים",n+=" או יותר",n},loadingMore:function(){return"טוען תוצאות נוספות…"},maximumSelected:function(e){var t="באפשרותך לבחור עד ";return e.maximum===1?t+="פריט אחד":t+=e.maximum+" פריטים",t},noResults:function(){return"לא נמצאו תוצאות"},searching:function(){return"מחפש…"},removeAllItems:function(){return"הסר את כל הפריטים"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/hi.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hi",[],function(){return{errorLoading:function(){return"परिणामों को लोड नहीं किया जा सका।"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+" अक्षर को हटा दें";return t>1&&(n=t+" अक्षरों को हटा दें "),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="कृपया "+t+" या अधिक अक्षर दर्ज करें";return n},loadingMore:function(){return"अधिक परिणाम लोड हो रहे है..."},maximumSelected:function(e){var t="आप केवल "+e.maximum+" आइटम का चयन कर सकते हैं";return t},noResults:function(){return"कोई परिणाम नहीं मिला"},searching:function(){return"खोज रहा है..."},removeAllItems:function(){return"सभी वस्तुओं को हटा दें"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/hr.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hr",[],function(){function e(e){var t=" "+e+" znak";return e%10<5&&e%10>0&&(e%100<5||e%100>19)?e%10>1&&(t+="a"):t+="ova",t}return{errorLoading:function(){return"Preuzimanje nije uspjelo."},inputTooLong:function(t){var n=t.input.length-t.maximum;return"Unesite "+e(n)},inputTooShort:function(t){var n=t.minimum-t.input.length;return"Unesite još "+e(n)},loadingMore:function(){return"Učitavanje rezultata…"},maximumSelected:function(e){return"Maksimalan broj odabranih stavki je "+e.maximum},noResults:function(){return"Nema rezultata"},searching:function(){return"Pretraga…"},removeAllItems:function(){return"Ukloni sve stavke"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/hsb.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hsb",[],function(){var e=["znamješko","znamješce","znamješka","znamješkow"],t=["zapisk","zapiskaj","zapiski","zapiskow"],n=function(t,n){if(t===1)return n[0];if(t===2)return n[1];if(t>2&&t<=4)return n[2];if(t>=5)return n[3]};return{errorLoading:function(){return"Wuslědki njedachu so začitać."},inputTooLong:function(t){var r=t.input.length-t.maximum;return"Prošu zhašej "+r+" "+n(r,e)},inputTooShort:function(t){var r=t.minimum-t.input.length;return"Prošu zapodaj znajmjeńša "+r+" "+n(r,e)},loadingMore:function(){return"Dalše wuslědki so začitaja…"},maximumSelected:function(e){return"Móžeš jenož "+e.maximum+" "+n(e.maximum,t)+"wubrać"},noResults:function(){return"Žane wuslědki namakane"},searching:function(){return"Pyta so…"},removeAllItems:function(){return"Remove all items"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/hu.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hu",[],function(){return{errorLoading:function(){return"Az eredmények betöltése nem sikerült."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Túl hosszú. "+t+" karakterrel több, mint kellene."},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Túl rövid. Még "+t+" karakter hiányzik."},loadingMore:function(){return"Töltés…"},maximumSelected:function(e){return"Csak "+e.maximum+" elemet lehet kiválasztani."},noResults:function(){return"Nincs találat."},searching:function(){return"Keresés…"},removeAllItems:function(){return"Távolítson el minden elemet"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/hy.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hy",[],function(){return{errorLoading:function(){return"Արդյունքները հնարավոր չէ բեռնել։"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Խնդրում ենք հեռացնել "+t+" նշան";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Խնդրում ենք մուտքագրել "+t+" կամ ավել նշաններ";return n},loadingMore:function(){return"Բեռնվում են նոր արդյունքներ․․․"},maximumSelected:function(e){var t="Դուք կարող եք ընտրել առավելագույնը "+e.maximum+" կետ";return t},noResults:function(){return"Արդյունքներ չեն գտնվել"},searching:function(){return"Որոնում․․․"},removeAllItems:function(){return"Հեռացնել բոլոր տարրերը"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/id.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/id",[],function(){return{errorLoading:function(){return"Data tidak boleh diambil."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Hapuskan "+t+" huruf"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Masukkan "+t+" huruf lagi"},loadingMore:function(){return"Mengambil data…"},maximumSelected:function(e){return"Anda hanya dapat memilih "+e.maximum+" pilihan"},noResults:function(){return"Tidak ada data yang sesuai"},searching:function(){return"Mencari…"},removeAllItems:function(){return"Hapus semua item"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/is.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/is",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vinsamlegast styttið texta um "+t+" staf";return t<=1?n:n+"i"},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vinsamlegast skrifið "+t+" staf";return t>1&&(n+="i"),n+=" í viðbót",n},loadingMore:function(){return"Sæki fleiri niðurstöður…"},maximumSelected:function(e){return"Þú getur aðeins valið "+e.maximum+" atriði"},noResults:function(){return"Ekkert fannst"},searching:function(){return"Leita…"},removeAllItems:function(){return"Fjarlægðu öll atriði"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/it.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/it",[],function(){return{errorLoading:function(){return"I risultati non possono essere caricati."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Per favore cancella "+t+" caratter";return t!==1?n+="i":n+="e",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Per favore inserisci "+t+" o più caratteri";return n},loadingMore:function(){return"Caricando più risultati…"},maximumSelected:function(e){var t="Puoi selezionare solo "+e.maximum+" element";return e.maximum!==1?t+="i":t+="o",t},noResults:function(){return"Nessun risultato trovato"},searching:function(){return"Sto cercando…"},removeAllItems:function(){return"Rimuovi tutti gli oggetti"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/ja.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ja",[],function(){return{errorLoading:function(){return"結果が読み込まれませんでした"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+" 文字を削除してください";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="少なくとも "+t+" 文字を入力してください";return n},loadingMore:function(){return"読み込み中…"},maximumSelected:function(e){var t=e.maximum+" 件しか選択できません";return t},noResults:function(){return"対象が見つかりません"},searching:function(){return"検索しています…"},removeAllItems:function(){return"すべてのアイテムを削除"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/ka.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ka",[],function(){return{errorLoading:function(){return"მონაცემების ჩატვირთვა შეუძლებელია."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="გთხოვთ აკრიფეთ "+t+" სიმბოლოთი ნაკლები";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="გთხოვთ აკრიფეთ "+t+" სიმბოლო ან მეტი";return n},loadingMore:function(){return"მონაცემების ჩატვირთვა…"},maximumSelected:function(e){var t="თქვენ შეგიძლიათ აირჩიოთ არაუმეტეს "+e.maximum+" ელემენტი";return t},noResults:function(){return"რეზულტატი არ მოიძებნა"},searching:function(){return"ძიება…"},removeAllItems:function(){return"ამოიღე ყველა ელემენტი"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/km.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/km",[],function(){return{errorLoading:function(){return"មិនអាចទាញយកទិន្នន័យ"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="សូមលុបចេញ "+t+" អក្សរ";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="សូមបញ្ចូល"+t+" អក្សរ រឺ ច្រើនជាងនេះ";return n},loadingMore:function(){return"កំពុងទាញយកទិន្នន័យបន្ថែម..."},maximumSelected:function(e){var t="អ្នកអាចជ្រើសរើសបានតែ "+e.maximum+" ជម្រើសប៉ុណ្ណោះ";return t},noResults:function(){return"មិនមានលទ្ធផល"},searching:function(){return"កំពុងស្វែងរក..."},removeAllItems:function(){return"លុបធាតុទាំងអស់"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/ko.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ko",[],function(){return{errorLoading:function(){return"결과를 불러올 수 없습니다."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="너무 깁니다. "+t+" 글자 지워주세요.";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="너무 짧습니다. "+t+" 글자 더 입력해주세요.";return n},loadingMore:function(){return"불러오는 중…"},maximumSelected:function(e){var t="최대 "+e.maximum+"개까지만 선택 가능합니다.";return t},noResults:function(){return"결과가 없습니다."},searching:function(){return"검색 중…"},removeAllItems:function(){return"모든 항목 삭제"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/lt.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/lt",[],function(){function e(e,t,n,r){return e%10===1&&(e%100<11||e%100>19)?t:e%10>=2&&e%10<=9&&(e%100<11||e%100>19)?n:r}return{inputTooLong:function(t){var n=t.input.length-t.maximum,r="Pašalinkite "+n+" simbol";return r+=e(n,"į","ius","ių"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Įrašykite dar "+n+" simbol";return r+=e(n,"į","ius","ių"),r},loadingMore:function(){return"Kraunama daugiau rezultatų…"},maximumSelected:function(t){var n="Jūs galite pasirinkti tik "+t.maximum+" element";return n+=e(t.maximum,"ą","us","ų"),n},noResults:function(){return"Atitikmenų nerasta"},searching:function(){return"Ieškoma…"},removeAllItems:function(){return"Pašalinti visus elementus"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/lv.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/lv",[],function(){function e(e,t,n,r){return e===11?t:e%10===1?n:r}return{inputTooLong:function(t){var n=t.input.length-t.maximum,r="Lūdzu ievadiet par "+n;return r+=" simbol"+e(n,"iem","u","iem"),r+" mazāk"},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Lūdzu ievadiet vēl "+n;return r+=" simbol"+e(n,"us","u","us"),r},loadingMore:function(){return"Datu ielāde…"},maximumSelected:function(t){var n="Jūs varat izvēlēties ne vairāk kā "+t.maximum;return n+=" element"+e(t.maximum,"us","u","us"),n},noResults:function(){return"Sakritību nav"},searching:function(){return"Meklēšana…"},removeAllItems:function(){return"Noņemt visus vienumus"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/mk.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/mk",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Ве молиме внесете "+e.maximum+" помалку карактер";return e.maximum!==1&&(n+="и"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Ве молиме внесете уште "+e.maximum+" карактер";return e.maximum!==1&&(n+="и"),n},loadingMore:function(){return"Вчитување резултати…"},maximumSelected:function(e){var t="Можете да изберете само "+e.maximum+" ставк";return e.maximum===1?t+="а":t+="и",t},noResults:function(){return"Нема пронајдено совпаѓања"},searching:function(){return"Пребарување…"},removeAllItems:function(){return"Отстрани ги сите предмети"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/ms.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ms",[],function(){return{errorLoading:function(){return"Keputusan tidak berjaya dimuatkan."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Sila hapuskan "+t+" aksara"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Sila masukkan "+t+" atau lebih aksara"},loadingMore:function(){return"Sedang memuatkan keputusan…"},maximumSelected:function(e){return"Anda hanya boleh memilih "+e.maximum+" pilihan"},noResults:function(){return"Tiada padanan yang ditemui"},searching:function(){return"Mencari…"},removeAllItems:function(){return"Keluarkan semua item"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/nb.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/nb",[],function(){return{errorLoading:function(){return"Kunne ikke hente resultater."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Vennligst fjern "+t+" tegn"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Vennligst skriv inn "+t+" tegn til"},loadingMore:function(){return"Laster flere resultater…"},maximumSelected:function(e){return"Du kan velge maks "+e.maximum+" elementer"},noResults:function(){return"Ingen treff"},searching:function(){return"Søker…"},removeAllItems:function(){return"Fjern alle elementer"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/ne.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ne",[],function(){return{errorLoading:function(){return"नतिजाहरु देखाउन सकिएन।"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="कृपया "+t+" अक्षर मेटाउनुहोस्।";return t!=1&&(n+="कृपया "+t+" अक्षरहरु मेटाउनुहोस्।"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="कृपया बाँकी रहेका "+t+" वा अरु धेरै अक्षरहरु भर्नुहोस्।";return n},loadingMore:function(){return"अरु नतिजाहरु भरिँदैछन् …"},maximumSelected:function(e){var t="तँपाई "+e.maximum+" वस्तु मात्र छान्न पाउँनुहुन्छ।";return e.maximum!=1&&(t="तँपाई "+e.maximum+" वस्तुहरु मात्र छान्न पाउँनुहुन्छ।"),t},noResults:function(){return"कुनै पनि नतिजा भेटिएन।"},searching:function(){return"खोजि हुँदैछ…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/nl.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/nl",[],function(){return{errorLoading:function(){return"De resultaten konden niet worden geladen."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Gelieve "+t+" karakters te verwijderen";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Gelieve "+t+" of meer karakters in te voeren";return n},loadingMore:function(){return"Meer resultaten laden…"},maximumSelected:function(e){var t=e.maximum==1?"kan":"kunnen",n="Er "+t+" maar "+e.maximum+" item";return e.maximum!=1&&(n+="s"),n+=" worden geselecteerd",n},noResults:function(){return"Geen resultaten gevonden…"},searching:function(){return"Zoeken…"},removeAllItems:function(){return"Verwijder alle items"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/pl.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/pl",[],function(){var e=["znak","znaki","znaków"],t=["element","elementy","elementów"],n=function(t,n){if(t===1)return n[0];if(t>1&&t<=4)return n[1];if(t>=5)return n[2]};return{errorLoading:function(){return"Nie można załadować wyników."},inputTooLong:function(t){var r=t.input.length-t.maximum;return"Usuń "+r+" "+n(r,e)},inputTooShort:function(t){var r=t.minimum-t.input.length;return"Podaj przynajmniej "+r+" "+n(r,e)},loadingMore:function(){return"Trwa ładowanie…"},maximumSelected:function(e){return"Możesz zaznaczyć tylko "+e.maximum+" "+n(e.maximum,t)},noResults:function(){return"Brak wyników"},searching:function(){return"Trwa wyszukiwanie…"},removeAllItems:function(){return"Usuń wszystkie przedmioty"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/ps.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ps",[],function(){return{errorLoading:function(){return"پايلي نه سي ترلاسه کېدای"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="د مهربانۍ لمخي "+t+" توری ړنګ کړئ";return t!=1&&(n=n.replace("توری","توري")),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="لږ تر لږه "+t+" يا ډېر توري وليکئ";return n},loadingMore:function(){return"نوري پايلي ترلاسه کيږي..."},maximumSelected:function(e){var t="تاسو يوازي "+e.maximum+" قلم په نښه کولای سی";return e.maximum!=1&&(t=t.replace("قلم","قلمونه")),t},noResults:function(){return"پايلي و نه موندل سوې"},searching:function(){return"لټول کيږي..."},removeAllItems:function(){return"ټول توکي لرې کړئ"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/pt-BR.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/pt-BR",[],function(){return{errorLoading:function(){return"Os resultados não puderam ser carregados."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Apague "+t+" caracter";return t!=1&&(n+="es"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Digite "+t+" ou mais caracteres";return n},loadingMore:function(){return"Carregando mais resultados…"},maximumSelected:function(e){var t="Você só pode selecionar "+e.maximum+" ite";return e.maximum==1?t+="m":t+="ns",t},noResults:function(){return"Nenhum resultado encontrado"},searching:function(){return"Buscando…"},removeAllItems:function(){return"Remover todos os itens"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/pt.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/pt",[],function(){return{errorLoading:function(){return"Os resultados não puderam ser carregados."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Por favor apague "+t+" ";return n+=t!=1?"caracteres":"caractere",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Introduza "+t+" ou mais caracteres";return n},loadingMore:function(){return"A carregar mais resultados…"},maximumSelected:function(e){var t="Apenas pode seleccionar "+e.maximum+" ";return t+=e.maximum!=1?"itens":"item",t},noResults:function(){return"Sem resultados"},searching:function(){return"A procurar…"},removeAllItems:function(){return"Remover todos os itens"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/ro.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ro",[],function(){return{errorLoading:function(){return"Rezultatele nu au putut fi incărcate."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vă rugăm să ștergeți"+t+" caracter";return t!==1&&(n+="e"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vă rugăm să introduceți "+t+" sau mai multe caractere";return n},loadingMore:function(){return"Se încarcă mai multe rezultate…"},maximumSelected:function(e){var t="Aveți voie să selectați cel mult "+e.maximum;return t+=" element",e.maximum!==1&&(t+="e"),t},noResults:function(){return"Nu au fost găsite rezultate"},searching:function(){return"Căutare…"},removeAllItems:function(){return"Eliminați toate elementele"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/ru.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ru",[],function(){function e(e,t,n,r){return e%10<5&&e%10>0&&e%100<5||e%100>20?e%10>1?n:t:r}return{errorLoading:function(){return"Невозможно загрузить результаты"},inputTooLong:function(t){var n=t.input.length-t.maximum,r="Пожалуйста, введите на "+n+" символ";return r+=e(n,"","a","ов"),r+=" меньше",r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Пожалуйста, введите ещё хотя бы "+n+" символ";return r+=e(n,"","a","ов"),r},loadingMore:function(){return"Загрузка данных…"},maximumSelected:function(t){var n="Вы можете выбрать не более "+t.maximum+" элемент";return n+=e(t.maximum,"","a","ов"),n},noResults:function(){return"Совпадений не найдено"},searching:function(){return"Поиск…"},removeAllItems:function(){return"Удалить все элементы"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/sk.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sk",[],function(){var e={2:function(e){return e?"dva":"dve"},3:function(){return"tri"},4:function(){return"štyri"}};return{errorLoading:function(){return"Výsledky sa nepodarilo načítať."},inputTooLong:function(t){var n=t.input.length-t.maximum;return n==1?"Prosím, zadajte o jeden znak menej":n>=2&&n<=4?"Prosím, zadajte o "+e[n](!0)+" znaky menej":"Prosím, zadajte o "+n+" znakov menej"},inputTooShort:function(t){var n=t.minimum-t.input.length;return n==1?"Prosím, zadajte ešte jeden znak":n<=4?"Prosím, zadajte ešte ďalšie "+e[n](!0)+" znaky":"Prosím, zadajte ešte ďalších "+n+" znakov"},loadingMore:function(){return"Načítanie ďalších výsledkov…"},maximumSelected:function(t){return t.maximum==1?"Môžete zvoliť len jednu položku":t.maximum>=2&&t.maximum<=4?"Môžete zvoliť najviac "+e[t.maximum](!1)+" položky":"Môžete zvoliť najviac "+t.maximum+" položiek"},noResults:function(){return"Nenašli sa žiadne položky"},searching:function(){return"Vyhľadávanie…"},removeAllItems:function(){return"Odstráňte všetky položky"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/sl.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sl",[],function(){return{errorLoading:function(){return"Zadetkov iskanja ni bilo mogoče naložiti."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Prosim zbrišite "+t+" znak";return t==2?n+="a":t!=1&&(n+="e"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Prosim vpišite še "+t+" znak";return t==2?n+="a":t!=1&&(n+="e"),n},loadingMore:function(){return"Nalagam več zadetkov…"},maximumSelected:function(e){var t="Označite lahko največ "+e.maximum+" predmet";return e.maximum==2?t+="a":e.maximum!=1&&(t+="e"),t},noResults:function(){return"Ni zadetkov."},searching:function(){return"Iščem…"},removeAllItems:function(){return"Odstranite vse elemente"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/sq.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sq",[],function(){return{errorLoading:function(){return"Rezultatet nuk mund të ngarkoheshin."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Të lutem fshi "+t+" karakter";return t!=1&&(n+="e"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Të lutem shkruaj "+t+" ose më shumë karaktere";return n},loadingMore:function(){return"Duke ngarkuar më shumë rezultate…"},maximumSelected:function(e){var t="Mund të zgjedhësh vetëm "+e.maximum+" element";return e.maximum!=1&&(t+="e"),t},noResults:function(){return"Nuk u gjet asnjë rezultat"},searching:function(){return"Duke kërkuar…"},removeAllItems:function(){return"Hiq të gjitha sendet"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/sr-Cyrl.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sr-Cyrl",[],function(){function e(e,t,n,r){return e%10==1&&e%100!=11?t:e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?n:r}return{errorLoading:function(){return"Преузимање није успело."},inputTooLong:function(t){var n=t.input.length-t.maximum,r="Обришите "+n+" симбол";return r+=e(n,"","а","а"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Укуцајте бар још "+n+" симбол";return r+=e(n,"","а","а"),r},loadingMore:function(){return"Преузимање још резултата…"},maximumSelected:function(t){var n="Можете изабрати само "+t.maximum+" ставк";return n+=e(t.maximum,"у","е","и"),n},noResults:function(){return"Ништа није пронађено"},searching:function(){return"Претрага…"},removeAllItems:function(){return"Уклоните све ставке"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/sr.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sr",[],function(){function e(e,t,n,r){return e%10==1&&e%100!=11?t:e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?n:r}return{errorLoading:function(){return"Preuzimanje nije uspelo."},inputTooLong:function(t){var n=t.input.length-t.maximum,r="Obrišite "+n+" simbol";return r+=e(n,"","a","a"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Ukucajte bar još "+n+" simbol";return r+=e(n,"","a","a"),r},loadingMore:function(){return"Preuzimanje još rezultata…"},maximumSelected:function(t){var n="Možete izabrati samo "+t.maximum+" stavk";return n+=e(t.maximum,"u","e","i"),n},noResults:function(){return"Ništa nije pronađeno"},searching:function(){return"Pretraga…"},removeAllItems:function(){return"Уклоните све ставке"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/sv.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sv",[],function(){return{errorLoading:function(){return"Resultat kunde inte laddas."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vänligen sudda ut "+t+" tecken";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vänligen skriv in "+t+" eller fler tecken";return n},loadingMore:function(){return"Laddar fler resultat…"},maximumSelected:function(e){var t="Du kan max välja "+e.maximum+" element";return t},noResults:function(){return"Inga träffar"},searching:function(){return"Söker…"},removeAllItems:function(){return"Ta bort alla objekt"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/th.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/th",[],function(){return{errorLoading:function(){return"ไม่สามารถค้นข้อมูลได้"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="โปรดลบออก "+t+" ตัวอักษร";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="โปรดพิมพ์เพิ่มอีก "+t+" ตัวอักษร";return n},loadingMore:function(){return"กำลังค้นข้อมูลเพิ่ม…"},maximumSelected:function(e){var t="คุณสามารถเลือกได้ไม่เกิน "+e.maximum+" รายการ";return t},noResults:function(){return"ไม่พบข้อมูล"},searching:function(){return"กำลังค้นข้อมูล…"},removeAllItems:function(){return"ลบรายการทั้งหมด"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/tk.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/tk",[],function(){return{errorLoading:function(){return"Netije ýüklenmedi."},inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+" harp bozuň.";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Ýene-de iň az "+t+" harp ýazyň.";return n},loadingMore:function(){return"Köpräk netije görkezilýär…"},maximumSelected:function(e){var t="Diňe "+e.maximum+" sanysyny saýlaň.";return t},noResults:function(){return"Netije tapylmady."},searching:function(){return"Gözlenýär…"},removeAllItems:function(){return"Remove all items"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/tr.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/tr",[],function(){return{errorLoading:function(){return"Sonuç yüklenemedi"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+" karakter daha girmelisiniz";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="En az "+t+" karakter daha girmelisiniz";return n},loadingMore:function(){return"Daha fazla…"},maximumSelected:function(e){var t="Sadece "+e.maximum+" seçim yapabilirsiniz";return t},noResults:function(){return"Sonuç bulunamadı"},searching:function(){return"Aranıyor…"},removeAllItems:function(){return"Tüm öğeleri kaldır"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/uk.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/uk",[],function(){function e(e,t,n,r){return e%100>10&&e%100<15?r:e%10===1?t:e%10>1&&e%10<5?n:r}return{errorLoading:function(){return"Неможливо завантажити результати"},inputTooLong:function(t){var n=t.input.length-t.maximum;return"Будь ласка, видаліть "+n+" "+e(t.maximum,"літеру","літери","літер")},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Будь ласка, введіть "+t+" або більше літер"},loadingMore:function(){return"Завантаження інших результатів…"},maximumSelected:function(t){return"Ви можете вибрати лише "+t.maximum+" "+e(t.maximum,"пункт","пункти","пунктів")},noResults:function(){return"Нічого не знайдено"},searching:function(){return"Пошук…"},removeAllItems:function(){return"Видалити всі елементи"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/vi.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/vi",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vui lòng xóa bớt "+t+" ký tự";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vui lòng nhập thêm từ "+t+" ký tự trở lên";return n},loadingMore:function(){return"Đang lấy thêm kết quả…"},maximumSelected:function(e){var t="Chỉ có thể chọn được "+e.maximum+" lựa chọn";return t},noResults:function(){return"Không tìm thấy kết quả"},searching:function(){return"Đang tìm…"},removeAllItems:function(){return"Xóa tất cả các mục"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/zh-CN.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/zh-CN",[],function(){return{errorLoading:function(){return"无法载入结果。"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="请删除"+t+"个字符";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="请再输入至少"+t+"个字符";return n},loadingMore:function(){return"载入更多结果…"},maximumSelected:function(e){var t="最多只能选择"+e.maximum+"个项目";return t},noResults:function(){return"未找到结果"},searching:function(){return"搜索中…"},removeAllItems:function(){return"删除所有项目"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/select2/i18n/zh-TW.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/zh-TW",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="請刪掉"+t+"個字元";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="請再輸入"+t+"個字元";return n},loadingMore:function(){return"載入中…"},maximumSelected:function(e){var t="你只能選擇最多"+e.maximum+"項";return t},noResults:function(){return"沒有找到相符的項目"},searching:function(){return"搜尋中…"},removeAllItems:function(){return"刪除所有項目"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/static/admin/js/vendor/xregexp/LICENSE.txt: -------------------------------------------------------------------------------- 1 | The MIT License 2 | 3 | Copyright (c) 2007-2012 Steven Levithan 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /src/static/css/flaticon.css: -------------------------------------------------------------------------------- 1 | /* 2 | Flaticon icon font: Flaticon 3 | Creation date: 03/03/2019 05:22 4 | */ 5 | 6 | @font-face { 7 | font-family: "Flaticon"; 8 | src: url("../fonts/Flaticon.eot"); 9 | src: url("../fonts/Flaticon.eot?#iefix") format("embedded-opentype"), url("../fonts/Flaticon.woff2") format("woff2"), url("../fonts/Flaticon.woff") format("woff"), url("../fonts/Flaticon.ttf") format("truetype"), url("../fonts/Flaticon.svg#Flaticon") format("svg"); 10 | font-weight: normal; 11 | font-style: normal; 12 | } 13 | 14 | @media screen and (-webkit-min-device-pixel-ratio:0) { 15 | @font-face { 16 | font-family: "Flaticon"; 17 | src: url("./Flaticon.svg#Flaticon") format("svg"); 18 | } 19 | } 20 | 21 | [class^="flaticon-"]:before, 22 | [class*=" flaticon-"]:before, 23 | [class^="flaticon-"]:after, 24 | [class*=" flaticon-"]:after { 25 | font-family: Flaticon; 26 | font-size: 32px; 27 | color: #2a2a2a; 28 | font-style: normal; 29 | margin-left: 0px; 30 | } 31 | 32 | .flaticon-money:before { 33 | content: "\f100"; 34 | } 35 | 36 | .flaticon-truck:before { 37 | content: "\f101"; 38 | } 39 | 40 | .flaticon-support:before { 41 | content: "\f102"; 42 | } 43 | 44 | .flaticon-blockchain:before { 45 | content: "\f103"; 46 | } -------------------------------------------------------------------------------- /src/static/css/pdf.css: -------------------------------------------------------------------------------- 1 | body { 2 | font-family:Helvetica, sans-serif; 3 | color:#222; 4 | line-height:1.5; 5 | } 6 | 7 | table { 8 | width:100%; 9 | border-spacing:0; 10 | border-collapse: collapse; 11 | margin:20px 0; 12 | } 13 | 14 | table th, table td { 15 | text-align:left; 16 | font-size:14px; 17 | padding:10px; 18 | margin:0; 19 | } 20 | 21 | tbody tr:nth-child(odd) { 22 | background:#efefef; 23 | } 24 | 25 | thead th, tbody tr.total { 26 | background:#5993bb; 27 | color:#fff; 28 | font-weight:bold; 29 | } 30 | 31 | h1 { 32 | margin:0; 33 | } 34 | 35 | 36 | .secondary { 37 | color:#bbb; 38 | margin-bottom:20px; 39 | } 40 | 41 | .num { 42 | text-align:right; 43 | } 44 | 45 | .paid, .pending { 46 | color:#1bae37; 47 | border:4px solid #1bae37; 48 | text-transform:uppercase; 49 | font-weight:bold; 50 | font-size:22px; 51 | padding:4px 12px 0px; 52 | float:right; 53 | transform: rotate(-15deg); 54 | margin-right:40px; 55 | } 56 | 57 | .pending { 58 | color:#a82d2d; 59 | border:4px solid #a82d2d; 60 | } 61 | -------------------------------------------------------------------------------- /src/static/fonts/Flaticon.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/static/fonts/Flaticon.eot -------------------------------------------------------------------------------- /src/static/fonts/Flaticon.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/static/fonts/Flaticon.ttf -------------------------------------------------------------------------------- /src/static/fonts/Flaticon.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/static/fonts/Flaticon.woff -------------------------------------------------------------------------------- /src/static/fonts/Flaticon.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/static/fonts/Flaticon.woff2 -------------------------------------------------------------------------------- /src/static/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/static/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /src/static/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/static/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /src/static/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/static/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /src/static/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/static/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /src/static/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/static/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /src/static/fonts/themify.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/static/fonts/themify.eot -------------------------------------------------------------------------------- /src/static/fonts/themify.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/static/fonts/themify.ttf -------------------------------------------------------------------------------- /src/static/fonts/themify.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/static/fonts/themify.woff -------------------------------------------------------------------------------- /src/static/img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/static/img/logo.png -------------------------------------------------------------------------------- /src/static/js/contact.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function(){ 2 | 3 | (function($) { 4 | "use strict"; 5 | 6 | 7 | jQuery.validator.addMethod('answercheck', function (value, element) { 8 | return this.optional(element) || /^\bcat\b$/.test(value) 9 | }, "type the correct answer -_-"); 10 | 11 | // validate contactForm form 12 | $(function() { 13 | $('#contactForm').validate({ 14 | rules: { 15 | name: { 16 | required: true, 17 | minlength: 2 18 | }, 19 | subject: { 20 | required: true, 21 | minlength: 4 22 | }, 23 | number: { 24 | required: true, 25 | minlength: 5 26 | }, 27 | email: { 28 | required: true, 29 | email: true 30 | }, 31 | message: { 32 | required: true, 33 | minlength: 20 34 | } 35 | }, 36 | messages: { 37 | name: { 38 | required: "come on, you have a name, don't you?", 39 | minlength: "your name must consist of at least 2 characters" 40 | }, 41 | subject: { 42 | required: "come on, you have a subject, don't you?", 43 | minlength: "your subject must consist of at least 4 characters" 44 | }, 45 | number: { 46 | required: "come on, you have a number, don't you?", 47 | minlength: "your Number must consist of at least 5 characters" 48 | }, 49 | email: { 50 | required: "no email, no message" 51 | }, 52 | message: { 53 | required: "um...yea, you have to write something to send this form.", 54 | minlength: "thats all? really?" 55 | } 56 | }, 57 | submitHandler: function(form) { 58 | $(form).ajaxSubmit({ 59 | type:"POST", 60 | data: $(form).serialize(), 61 | url:"contact_process.php", 62 | success: function() { 63 | $('#contactForm :input').attr('disabled', 'disabled'); 64 | $('#contactForm').fadeTo( "slow", 1, function() { 65 | $(this).find(':input').attr('disabled', 'disabled'); 66 | $(this).find('label').css('cursor','default'); 67 | $('#success').fadeIn() 68 | $('.modal').modal('hide'); 69 | $('#success').modal('show'); 70 | }) 71 | }, 72 | error: function() { 73 | $('#contactForm').fadeTo( "slow", 1, function() { 74 | $('#error').fadeIn() 75 | $('.modal').modal('hide'); 76 | $('#error').modal('show'); 77 | }) 78 | } 79 | }) 80 | } 81 | }) 82 | }) 83 | 84 | })(jQuery) 85 | }) -------------------------------------------------------------------------------- /src/static/js/mail-script.js: -------------------------------------------------------------------------------- 1 | // ------- Mail Send ajax 2 | 3 | $(document).ready(function() { 4 | var form = $('#myForm'); // contact form 5 | var submit = $('.submit-btn'); // submit button 6 | var alert = $('.alert-msg'); // alert div for show alert message 7 | 8 | // form submit event 9 | form.on('submit', function(e) { 10 | e.preventDefault(); // prevent default form submit 11 | 12 | $.ajax({ 13 | url: 'mail.php', // form action url 14 | type: 'POST', // form submit method get/post 15 | dataType: 'html', // request type html/json/xml 16 | data: form.serialize(), // serialize form data 17 | beforeSend: function() { 18 | alert.fadeOut(); 19 | submit.html('Sending....'); // change submit button text 20 | }, 21 | success: function(data) { 22 | alert.html(data).fadeIn(); // fade in response data 23 | form.trigger('reset'); // reset form 24 | submit.attr("style", "display: none !important"); // reset submit button text 25 | }, 26 | error: function(e) { 27 | console.log(e) 28 | } 29 | }); 30 | }); 31 | }); -------------------------------------------------------------------------------- /src/static/vendors/bootstrap-datepicker/bootstrap-select.css: -------------------------------------------------------------------------------- 1 | select { 2 | display: none; } 3 | 4 | .nice-select { 5 | -webkit-tap-highlight-color: transparent; 6 | background-color: #fff; 7 | border-radius: 5px; 8 | border: solid 1px #e8e8e8; 9 | box-sizing: border-box; 10 | clear: both; 11 | cursor: pointer; 12 | display: block; 13 | float: left; 14 | font-family: inherit; 15 | font-size: 14px; 16 | font-weight: normal; 17 | height: 42px; 18 | line-height: 40px; 19 | outline: none; 20 | padding-left: 18px; 21 | padding-right: 30px; 22 | position: relative; 23 | text-align: left !important; 24 | transition: all 0.2s ease-in-out; 25 | -webkit-user-select: none; 26 | -moz-user-select: none; 27 | -ms-user-select: none; 28 | user-select: none; 29 | white-space: nowrap; 30 | width: auto; } 31 | .nice-select:hover { 32 | border-color: #dbdbdb; } 33 | .nice-select:active, .nice-select.open, .nice-select:focus { 34 | border-color: #999; } 35 | .nice-select:after { 36 | border-bottom: 2px solid #999; 37 | border-right: 2px solid #999; 38 | content: ''; 39 | display: block; 40 | height: 5px; 41 | margin-top: -4px; 42 | pointer-events: none; 43 | position: absolute; 44 | right: 12px; 45 | top: 50%; 46 | -webkit-transform-origin: 66% 66%; 47 | transform-origin: 66% 66%; 48 | -webkit-transform: rotate(45deg); 49 | transform: rotate(45deg); 50 | transition: all 0.15s ease-in-out; 51 | width: 5px; } 52 | .nice-select.open:after { 53 | -webkit-transform: rotate(-135deg); 54 | transform: rotate(-135deg); } 55 | .nice-select.open .list { 56 | opacity: 1; 57 | pointer-events: auto; 58 | -webkit-transform: scale(1) translateY(0); 59 | transform: scale(1) translateY(0); } 60 | .nice-select.disabled { 61 | border-color: #ededed; 62 | color: #999; 63 | pointer-events: none; } 64 | .nice-select.disabled:after { 65 | border-color: #cccccc; } 66 | .nice-select.wide { 67 | width: 100%; } 68 | .nice-select.wide .list { 69 | left: 0 !important; 70 | right: 0 !important; } 71 | .nice-select.right { 72 | float: right; } 73 | .nice-select.right .list { 74 | left: auto; 75 | right: 0; } 76 | .nice-select.small { 77 | font-size: 12px; 78 | height: 36px; 79 | line-height: 34px; } 80 | .nice-select.small:after { 81 | height: 4px; 82 | width: 4px; } 83 | .nice-select.small .option { 84 | line-height: 34px; 85 | min-height: 34px; } 86 | .nice-select .list { 87 | background-color: #fff; 88 | border-radius: 5px; 89 | box-shadow: 0 0 0 1px rgba(68, 68, 68, 0.11); 90 | box-sizing: border-box; 91 | margin-top: 4px; 92 | opacity: 0; 93 | overflow: hidden; 94 | padding: 0; 95 | pointer-events: none; 96 | position: absolute; 97 | top: 100%; 98 | left: 0; 99 | -webkit-transform-origin: 50% 0; 100 | transform-origin: 50% 0; 101 | -webkit-transform: scale(0.75) translateY(-21px); 102 | transform: scale(0.75) translateY(-21px); 103 | transition: all 0.2s cubic-bezier(0.5, 0, 0, 1.25), opacity 0.15s ease-out; 104 | z-index: 9; } 105 | .nice-select .list:hover .option:not(:hover) { 106 | background-color: transparent !important; } 107 | .nice-select .option { 108 | cursor: pointer; 109 | font-weight: 400; 110 | line-height: 40px; 111 | list-style: none; 112 | min-height: 40px; 113 | outline: none; 114 | padding-left: 18px; 115 | padding-right: 29px; 116 | text-align: left; 117 | transition: all 0.2s; } 118 | .nice-select .option:hover, .nice-select .option.focus, .nice-select .option.selected.focus { 119 | background-color: #f6f6f6; } 120 | .nice-select .option.selected { 121 | font-weight: bold; } -------------------------------------------------------------------------------- /src/static/vendors/counter-up/jquery.counterup.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * jquery.counterup.js 1.0 3 | * 4 | * Copyright 2013, Benjamin Intal http://gambit.ph @bfintal 5 | * Released under the GPL v2 License 6 | * 7 | * Date: Nov 26, 2013 8 | */ 9 | (function( $ ){ 10 | "use strict"; 11 | 12 | $.fn.counterUp = function( options ) { 13 | 14 | // Defaults 15 | var settings = $.extend({ 16 | 'time': 400, 17 | 'delay': 10 18 | }, options); 19 | 20 | return this.each(function(){ 21 | 22 | // Store the object 23 | var $this = $(this); 24 | var $settings = settings; 25 | 26 | var counterUpper = function() { 27 | var nums = []; 28 | var divisions = $settings.time / $settings.delay; 29 | var num = $this.text(); 30 | var isComma = /[0-9]+,[0-9]+/.test(num); 31 | num = num.replace(/,/g, ''); 32 | var isInt = /^[0-9]+$/.test(num); 33 | var isFloat = /^[0-9]+\.[0-9]+$/.test(num); 34 | var decimalPlaces = isFloat ? (num.split('.')[1] || []).length : 0; 35 | 36 | // Generate list of incremental numbers to display 37 | for (var i = divisions; i >= 1; i--) { 38 | 39 | // Preserve as int if input was int 40 | var newNum = parseInt(num / divisions * i); 41 | 42 | // Preserve float if input was float 43 | if (isFloat) { 44 | newNum = parseFloat(num / divisions * i).toFixed(decimalPlaces); 45 | } 46 | 47 | // Preserve commas if input had commas 48 | if (isComma) { 49 | while (/(\d+)(\d{3})/.test(newNum.toString())) { 50 | newNum = newNum.toString().replace(/(\d+)(\d{3})/, '$1'+','+'$2'); 51 | } 52 | } 53 | 54 | nums.unshift(newNum); 55 | } 56 | 57 | $this.data('counterup-nums', nums); 58 | $this.text('0'); 59 | 60 | // Updates the number until we're done 61 | var f = function() { 62 | $this.text($this.data('counterup-nums').shift()); 63 | if ($this.data('counterup-nums').length) { 64 | setTimeout($this.data('counterup-func'), $settings.delay); 65 | } else { 66 | delete $this.data('counterup-nums'); 67 | $this.data('counterup-nums', null); 68 | $this.data('counterup-func', null); 69 | } 70 | }; 71 | $this.data('counterup-func', f); 72 | 73 | // Start the count up 74 | setTimeout($this.data('counterup-func'), $settings.delay); 75 | }; 76 | 77 | // Perform counts when the element gets into view 78 | $this.waypoint(counterUpper, { offset: '100%', triggerOnce: true }); 79 | }); 80 | 81 | }; 82 | 83 | })( jQuery ); -------------------------------------------------------------------------------- /src/static/vendors/flipclock/timer.js: -------------------------------------------------------------------------------- 1 | var today = new Date(); 2 | 3 | var timer = function() {}; 4 | timer.countdownDate = new Date(); 5 | 6 | // set date to 10 days in the future for testing purposes 7 | timer.countdownDate.setDate( timer.countdownDate.getDate() + 10 ); 8 | 9 | /* 10 | * Get thing started 11 | */ 12 | timer.init = function() { 13 | timer.getReferences(); 14 | 15 | 16 | timer.getTimes(); 17 | setInterval(function() { timer.update() }, 1000); 18 | } 19 | 20 | /* 21 | * Save references of timer section 22 | */ 23 | timer.getReferences = function() { 24 | timer.timer = document.getElementById("timer"); 25 | timer.days = timer.timer.querySelectorAll(".days .timer__number")[0]; 26 | timer.hours = timer.timer.querySelectorAll(".hours .timer__number")[0]; 27 | timer.minutes = timer.timer.querySelectorAll(".minutes .timer__number")[0]; 28 | timer.seconds = timer.timer.querySelectorAll(".seconds .timer__number")[0]; 29 | } 30 | 31 | /* 32 | * remember time units for later use 33 | */ 34 | timer.getTimes = function() { 35 | timer.times = {}; 36 | timer.times.second = 1000; 37 | timer.times.minute = timer.times.second * 60; 38 | timer.times.hour = timer.times.minute * 60; 39 | timer.times.day = timer.times.hour * 24; 40 | } 41 | 42 | /* 43 | * Update the countdown 44 | */ 45 | timer.update = function() { 46 | if ( timer.timer.style.opacity !== 1 ) { 47 | timer.timer.style.opacity = 1; 48 | } 49 | 50 | timer.currentDate = new Date(); 51 | timer.difference = timer.countdownDate - timer.currentDate; 52 | 53 | timer.days.innerHTML = timer.getTimeRemaining(timer.times.day, 1); 54 | timer.hours.innerHTML = timer.getTimeRemaining(timer.times.hour, 24); 55 | timer.minutes.innerHTML = timer.getTimeRemaining(timer.times.minute, 60); 56 | timer.seconds.innerHTML = timer.getTimeRemaining(timer.times.second, 60); 57 | } 58 | 59 | /* 60 | * calculate remaining time based on a unit of time 61 | */ 62 | timer.getTimeRemaining = function( timeUnit, divisor ) { 63 | var n; 64 | if ( divisor == 1 ) { 65 | n = Math.floor(timer.difference / timeUnit ); 66 | } 67 | else { 68 | n = Math.floor((timer.difference / timeUnit) % divisor ); 69 | } 70 | 71 | if ( String(n).length < 2 ) { 72 | n = "0" + n; 73 | } 74 | 75 | return n; 76 | } 77 | 78 | window.addEventListener("load", function() { 79 | timer.init(); 80 | }); 81 | -------------------------------------------------------------------------------- /src/static/vendors/linericon/fonts/Linearicons-Free.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/static/vendors/linericon/fonts/Linearicons-Free.eot -------------------------------------------------------------------------------- /src/static/vendors/linericon/fonts/Linearicons-Free.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/static/vendors/linericon/fonts/Linearicons-Free.ttf -------------------------------------------------------------------------------- /src/static/vendors/linericon/fonts/Linearicons-Free.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/static/vendors/linericon/fonts/Linearicons-Free.woff -------------------------------------------------------------------------------- /src/static/vendors/linericon/fonts/Linearicons-Free.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/static/vendors/linericon/fonts/Linearicons-Free.woff2 -------------------------------------------------------------------------------- /src/static/vendors/nice-select/css/nice-select.css: -------------------------------------------------------------------------------- 1 | .nice-select { 2 | -webkit-tap-highlight-color: transparent; 3 | background-color: #fff; 4 | border-radius: 5px; 5 | border: solid 1px #e8e8e8; 6 | box-sizing: border-box; 7 | clear: both; 8 | cursor: pointer; 9 | display: block; 10 | float: left; 11 | font-family: inherit; 12 | font-size: 14px; 13 | font-weight: normal; 14 | height: 42px; 15 | line-height: 40px; 16 | outline: none; 17 | padding-left: 18px; 18 | padding-right: 30px; 19 | position: relative; 20 | text-align: left !important; 21 | -webkit-transition: all 0.2s ease-in-out; 22 | transition: all 0.2s ease-in-out; 23 | -webkit-user-select: none; 24 | -moz-user-select: none; 25 | -ms-user-select: none; 26 | user-select: none; 27 | white-space: nowrap; 28 | width: auto; } 29 | .nice-select:hover { 30 | border-color: #dbdbdb; } 31 | .nice-select:active, .nice-select.open, .nice-select:focus { 32 | border-color: #999; } 33 | .nice-select:after { 34 | border-bottom: 2px solid #999; 35 | border-right: 2px solid #999; 36 | content: ''; 37 | display: block; 38 | height: 5px; 39 | margin-top: -4px; 40 | pointer-events: none; 41 | position: absolute; 42 | right: 12px; 43 | top: 50%; 44 | -webkit-transform-origin: 66% 66%; 45 | -ms-transform-origin: 66% 66%; 46 | transform-origin: 66% 66%; 47 | -webkit-transform: rotate(45deg); 48 | -ms-transform: rotate(45deg); 49 | transform: rotate(45deg); 50 | -webkit-transition: all 0.15s ease-in-out; 51 | transition: all 0.15s ease-in-out; 52 | width: 5px; } 53 | .nice-select.open:after { 54 | -webkit-transform: rotate(-135deg); 55 | -ms-transform: rotate(-135deg); 56 | transform: rotate(-135deg); } 57 | .nice-select.open .list { 58 | opacity: 1; 59 | pointer-events: auto; 60 | -webkit-transform: scale(1) translateY(0); 61 | -ms-transform: scale(1) translateY(0); 62 | transform: scale(1) translateY(0); } 63 | .nice-select.disabled { 64 | border-color: #ededed; 65 | color: #999; 66 | pointer-events: none; } 67 | .nice-select.disabled:after { 68 | border-color: #cccccc; } 69 | .nice-select.wide { 70 | width: 100%; } 71 | .nice-select.wide .list { 72 | left: 0 !important; 73 | right: 0 !important; } 74 | .nice-select.right { 75 | float: right; } 76 | .nice-select.right .list { 77 | left: auto; 78 | right: 0; } 79 | .nice-select.small { 80 | font-size: 12px; 81 | height: 36px; 82 | line-height: 34px; } 83 | .nice-select.small:after { 84 | height: 4px; 85 | width: 4px; } 86 | .nice-select.small .option { 87 | line-height: 34px; 88 | min-height: 34px; } 89 | .nice-select .list { 90 | background-color: #fff; 91 | border-radius: 5px; 92 | box-shadow: 0 0 0 1px rgba(68, 68, 68, 0.11); 93 | box-sizing: border-box; 94 | margin-top: 4px; 95 | opacity: 0; 96 | overflow: hidden; 97 | padding: 0; 98 | pointer-events: none; 99 | position: absolute; 100 | top: 100%; 101 | left: 0; 102 | -webkit-transform-origin: 50% 0; 103 | -ms-transform-origin: 50% 0; 104 | transform-origin: 50% 0; 105 | -webkit-transform: scale(0.75) translateY(-21px); 106 | -ms-transform: scale(0.75) translateY(-21px); 107 | transform: scale(0.75) translateY(-21px); 108 | -webkit-transition: all 0.2s cubic-bezier(0.5, 0, 0, 1.25), opacity 0.15s ease-out; 109 | transition: all 0.2s cubic-bezier(0.5, 0, 0, 1.25), opacity 0.15s ease-out; 110 | z-index: 9; } 111 | .nice-select .list:hover .option:not(:hover) { 112 | background-color: transparent !important; } 113 | .nice-select .option { 114 | cursor: pointer; 115 | font-weight: 400; 116 | line-height: 40px; 117 | list-style: none; 118 | min-height: 40px; 119 | outline: none; 120 | padding-left: 18px; 121 | padding-right: 29px; 122 | text-align: left; 123 | -webkit-transition: all 0.2s; 124 | transition: all 0.2s; } 125 | .nice-select .option:hover, .nice-select .option.focus, .nice-select .option.selected.focus { 126 | background-color: #f6f6f6; } 127 | .nice-select .option.selected { 128 | font-weight: bold; } 129 | .nice-select .option.disabled { 130 | background-color: transparent; 131 | color: #999; 132 | cursor: default; } 133 | 134 | .no-csspointerevents .nice-select .list { 135 | display: none; } 136 | 137 | .no-csspointerevents .nice-select.open .list { 138 | display: block; } 139 | -------------------------------------------------------------------------------- /src/static/vendors/nice-select/js/jquery.nice-select.min.js: -------------------------------------------------------------------------------- 1 | /* jQuery Nice Select - v1.0 2 | https://github.com/hernansartorio/jquery-nice-select 3 | Made by Hernán Sartorio */ 4 | !function(e){e.fn.niceSelect=function(t){function s(t){t.after(e("
    ").addClass("nice-select").addClass(t.attr("class")||"").addClass(t.attr("disabled")?"disabled":"").attr("tabindex",t.attr("disabled")?null:"0").html('
      '));var s=t.next(),n=t.find("option"),i=t.find("option:selected");s.find(".current").html(i.data("display")||i.text()),n.each(function(t){var n=e(this),i=n.data("display");s.find("ul").append(e("
    • ").attr("data-value",n.val()).attr("data-display",i||null).addClass("option"+(n.is(":selected")?" selected":"")+(n.is(":disabled")?" disabled":"")).html(n.text()))})}if("string"==typeof t)return"update"==t?this.each(function(){var t=e(this),n=e(this).next(".nice-select"),i=n.hasClass("open");n.length&&(n.remove(),s(t),i&&t.next().trigger("click"))}):"destroy"==t?(this.each(function(){var t=e(this),s=e(this).next(".nice-select");s.length&&(s.remove(),t.css("display",""))}),0==e(".nice-select").length&&e(document).off(".nice_select")):console.log('Method "'+t+'" does not exist.'),this;this.hide(),this.each(function(){var t=e(this);t.next().hasClass("nice-select")||s(t)}),e(document).off(".nice_select"),e(document).on("click.nice_select",".nice-select",function(t){var s=e(this);e(".nice-select").not(s).removeClass("open"),s.toggleClass("open"),s.hasClass("open")?(s.find(".option"),s.find(".focus").removeClass("focus"),s.find(".selected").addClass("focus")):s.focus()}),e(document).on("click.nice_select",function(t){0===e(t.target).closest(".nice-select").length&&e(".nice-select").removeClass("open").find(".option")}),e(document).on("click.nice_select",".nice-select .option:not(.disabled)",function(t){var s=e(this),n=s.closest(".nice-select");n.find(".selected").removeClass("selected"),s.addClass("selected");var i=s.data("display")||s.text();n.find(".current").text(i),n.prev("select").val(s.data("value")).trigger("change")}),e(document).on("keydown.nice_select",".nice-select",function(t){var s=e(this),n=e(s.find(".focus")||s.find(".list .option.selected"));if(32==t.keyCode||13==t.keyCode)return s.hasClass("open")?n.trigger("click"):s.trigger("click"),!1;if(40==t.keyCode){if(s.hasClass("open")){var i=n.nextAll(".option:not(.disabled)").first();i.length>0&&(s.find(".focus").removeClass("focus"),i.addClass("focus"))}else s.trigger("click");return!1}if(38==t.keyCode){if(s.hasClass("open")){var l=n.prevAll(".option:not(.disabled)").first();l.length>0&&(s.find(".focus").removeClass("focus"),l.addClass("focus"))}else s.trigger("click");return!1}if(27==t.keyCode)s.hasClass("open")&&s.trigger("click");else if(9==t.keyCode&&s.hasClass("open"))return!1});var n=document.createElement("a").style;return n.cssText="pointer-events:auto","auto"!==n.pointerEvents&&e("html").addClass("no-csspointerevents"),this}}(jQuery); -------------------------------------------------------------------------------- /src/static/vendors/owl-carousel/assets/ajax-loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyam999/Hot-Food/f17f0313f81bf4624062bd3c97fa8633d3cde355/src/static/vendors/owl-carousel/assets/ajax-loader.gif -------------------------------------------------------------------------------- /src/static/vendors/owl-carousel/owl.carousel.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Owl Carousel v2.2.1 3 | * Copyright 2013-2017 David Deutsch 4 | * Licensed under () 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;-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;cursor:hand;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.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{-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 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%} -------------------------------------------------------------------------------- /src/templates/contact/email.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | {% block content %} 3 | {% load crispy_forms_tags %} 4 | 5 |
      6 |
      7 |
      8 |
      9 |

      Get in Touch :

      10 |
      11 |
      12 |
      13 | {% csrf_token %} 14 |
      15 |
      16 |
      17 | {{ form.message|as_crispy_field }} 18 |
      19 |
      20 |
      21 |
      22 | {{ form.name|as_crispy_field }} 23 |
      24 |
      25 |
      26 |
      27 | {{ form.from_email|as_crispy_field }} 28 |
      29 |
      30 |
      31 |
      32 | {{ form.subject|as_crispy_field }} 33 |
      34 |
      35 |
      36 |
      37 | 38 |
      39 |
      40 |
      41 | 42 |
      43 |
      44 | 45 |
      46 |

      Kolkata, India.

      47 |

      Rosemead, CA 91770

      48 |
      49 |
      50 |
      51 |
      52 |

      00 (440) 9865 562

      53 |

      Mon to Fri 9am to 6pm

      54 |
      55 |
      56 |
      57 |
      58 |

      contact@shyam999.site

      59 |

      Send us your query anytime!

      60 |
      61 |
      62 |
      63 |
      64 |
      65 |
      66 | 67 | {% endblock %} 68 | -------------------------------------------------------------------------------- /src/templates/detail.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | {% block content %} 3 | {% load crispy_forms_tags %} 4 |
      5 |
      6 |
      7 |
      8 |
      9 | 16 |
      17 |
      18 |
      19 |
      20 |
      21 |

      {{ product.name }}

      22 |

      $ {{ product.price }}

      23 | 33 |
      34 | {{ cart_product_form|crispy }} 35 | {% csrf_token %} 36 | 37 |
      38 | 39 |
      40 |
      41 |
      42 |
      43 | {% endblock %} 44 | -------------------------------------------------------------------------------- /src/templates/list.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | {% block content %} 3 |
      4 |
      5 |
      6 |
      7 |
      8 |

      all non-veg food

      9 |

      50% off

      10 | Discover Now 11 |
      12 |
      13 |
      14 |
      15 |
      16 |
      17 |
      18 |
      19 |
      20 |

      Featured Hot Food

      21 |
      22 |
      23 |
      24 |
      25 |
      26 |
      27 |
      28 | {% for product in products %} 29 |
      30 |
      31 |
      32 | 33 |
      34 |
      35 | 36 |

      {{ product.name }}

      37 |
      38 |
      39 | $ {{ product.price }} 40 |
      41 |
      42 |
      43 |
      44 | {% endfor %} 45 |
      46 |
      47 |
      48 |
      49 | 94 |
      95 |
      96 |
      97 | {% endblock %} 98 | -------------------------------------------------------------------------------- /src/templates/order/order.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% block content %} 3 | {% load crispy_forms_tags %} 4 | 5 | 6 |
      7 |
      8 |
      9 |
      10 |
      11 |
      12 |
      13 | 14 |
      15 |
      16 |
      17 |
      18 |

      Provide Your Information:

      19 | {{ form|crispy }} 20 |
      21 |
      22 |
      23 |
      24 | 31 |
      32 | 33 |
      34 |
      35 |
      36 |
      37 |
      38 |

      Order summary

      39 |
      40 |

      Shipping and additional costs are calculated based on the values you have entered.

      41 |
      42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 |
      Total${{ cart.get_total_price }}
      51 |
      52 |
      53 |
      54 |
      55 |
      56 |
      57 |
      58 | 59 | {% endblock %} 60 | -------------------------------------------------------------------------------- /src/templates/order/ordered.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% block title %} 3 | Thank you 4 | {% endblock %} 5 | {% block content %} 6 | 7 | 8 | 9 |
      10 |
      11 |
      12 |
      13 |








      Thank You


      14 |

      Your order has been successfully completed. Your order number is{{ order.id }}.







      15 |
      16 |
      17 |
      18 |
      19 | 20 | {% endblock %} 21 | -------------------------------------------------------------------------------- /src/templates/order/pdf.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |

      Hot Food

      4 |

      5 | Invoice No. {{order.id}}
      6 | 7 | {{order.created|date:"M d, Y"}} 8 | 9 |

      10 |

      Bill to

      11 |

      12 | {{order.first_name}} {{order.last_name}}
      13 | {{order.email}}
      14 | {{order.address}}
      15 | {{order.postal_code}}, {{order.city}} 16 |

      17 |

      Items bought

      18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | {% for item in order.items.all %} 29 | 30 | 31 | 32 | 33 | 34 | 35 | {% endfor %} 36 | 37 | 38 | 39 | 40 | 41 |
      ProductPriceQuantityCost
      {{item.product.name}}${{item.price}} {{item.quantity}}${{item.get_cost}}
      Total${{order.get_total_cost}}
      42 | 49 | 50 | 51 | --------------------------------------------------------------------------------