├── delivery ├── __init__.py ├── apps │ ├── __init__.py │ ├── apiv1 │ │ ├── __init__.py │ │ ├── migrations │ │ │ └── __init__.py │ │ ├── models.py │ │ ├── tests.py │ │ ├── admin.py │ │ ├── apps.py │ │ ├── urls.py │ │ └── views.py │ └── orders │ │ ├── __init__.py │ │ ├── management │ │ ├── __init__.py │ │ └── commands │ │ │ ├── __init__.py │ │ │ └── rabbitmq_consumer.py │ │ ├── migrations │ │ ├── __init__.py │ │ ├── 0002_auto_20181203_1457.py │ │ ├── 0005_auto_20181204_2208.py │ │ ├── 0006_auto_20181204_2256.py │ │ ├── 0004_taskstate_delivery_person.py │ │ ├── 0003_taskstate.py │ │ └── 0001_initial.py │ │ ├── templatetags │ │ ├── __init__.py │ │ └── utils.py │ │ ├── tests.py │ │ ├── apps.py │ │ ├── urls.py │ │ ├── admin.py │ │ ├── rabbitmq_publisher.py │ │ ├── managers.py │ │ ├── consumers.py │ │ ├── views.py │ │ └── models.py ├── routing.py ├── wsgi.py ├── urls.py └── settings.py ├── README.md ├── templates ├── partials │ ├── messages.html │ └── form-field-material.html ├── index │ ├── task_create_view.html │ ├── task_detail_view.html │ ├── base.html │ ├── delivery-person-dashboard.html │ ├── store-owner-dashboard.html │ └── dashboard.html └── registration │ └── login.html ├── manage.py ├── requirements.txt └── .gitignore /delivery/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /delivery/apps/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /delivery/apps/apiv1/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /delivery/apps/orders/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /delivery/apps/apiv1/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /delivery/apps/orders/management/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /delivery/apps/orders/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /delivery/apps/orders/templatetags/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /delivery/apps/orders/management/commands/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /delivery/apps/apiv1/models.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from __future__ import unicode_literals 3 | 4 | from django.db import models 5 | 6 | # Create your models here. 7 | -------------------------------------------------------------------------------- /delivery/apps/apiv1/tests.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from __future__ import unicode_literals 3 | 4 | from django.test import TestCase 5 | 6 | # Create your tests here. 7 | -------------------------------------------------------------------------------- /delivery/apps/orders/tests.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from __future__ import unicode_literals 3 | 4 | from django.test import TestCase 5 | 6 | # Create your tests here. 7 | -------------------------------------------------------------------------------- /delivery/apps/apiv1/admin.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from __future__ import unicode_literals 3 | 4 | from django.contrib import admin 5 | 6 | # Register your models here. 7 | -------------------------------------------------------------------------------- /delivery/apps/apiv1/apps.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from __future__ import unicode_literals 3 | 4 | from django.apps import AppConfig 5 | 6 | 7 | class Apiv1Config(AppConfig): 8 | name = 'apiv1' 9 | -------------------------------------------------------------------------------- /delivery/apps/orders/apps.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from __future__ import unicode_literals 3 | 4 | from django.apps import AppConfig 5 | 6 | 7 | class OrdersConfig(AppConfig): 8 | name = 'orders' 9 | -------------------------------------------------------------------------------- /delivery/apps/apiv1/urls.py: -------------------------------------------------------------------------------- 1 | from django.conf.urls import url 2 | 3 | from .views import TaskStateUpdateView 4 | 5 | app_name = 'apiv1' 6 | 7 | urlpatterns = [ 8 | url(r'^tasks/update/$', TaskStateUpdateView.as_view(), name='api-update-task'), 9 | ] 10 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # deliveryapp 2 | A restaurant delivery management system, with real time updated, implemented using websockets and rabbitmq 3 | For more details please refer to wiki. 4 | 5 | ### Wiki and Screenshots: 6 | [Deliveryapp Wiki](https://github.com/amangarg078/deliveryapp/wiki) 7 | -------------------------------------------------------------------------------- /delivery/routing.py: -------------------------------------------------------------------------------- 1 | from channels import route 2 | from delivery.apps.orders.consumers import ws_connect, ws_disconnect 3 | 4 | channel_routing = [ 5 | # route("http.request", "delivery.apps.orders.consumers.http_consumer"), 6 | route("websocket.connect", ws_connect), 7 | route("websocket.disconnect", ws_disconnect), 8 | ] -------------------------------------------------------------------------------- /templates/partials/messages.html: -------------------------------------------------------------------------------- 1 | {% for message in messages %} 2 |
3 | 7 | 8 | {% endfor %} 9 | -------------------------------------------------------------------------------- /delivery/wsgi.py: -------------------------------------------------------------------------------- 1 | """ 2 | WSGI config for delivery project. 3 | 4 | It exposes the WSGI callable as a module-level variable named ``application``. 5 | 6 | For more information on this file, see 7 | https://docs.djangoproject.com/en/1.11/howto/deployment/wsgi/ 8 | """ 9 | 10 | import os 11 | 12 | from django.core.wsgi import get_wsgi_application 13 | 14 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "delivery.settings") 15 | 16 | application = get_wsgi_application() 17 | -------------------------------------------------------------------------------- /delivery/apps/orders/urls.py: -------------------------------------------------------------------------------- 1 | from django.conf.urls import url 2 | from django.contrib.auth.decorators import login_required 3 | 4 | from .views import Dashboard, TaskCreateView, TaskDetailView 5 | 6 | app_name = 'orders' 7 | 8 | urlpatterns = [ 9 | url(r'^$', login_required(Dashboard.as_view()), name='dashboard'), 10 | url(r'^tasks/create/$', login_required(TaskCreateView.as_view()), name='task-create-view'), 11 | url(r'^tasks/(?PTitle: {{ object.title }}
18 |Created on: {{ object.created_on }}
19 |Last State: {{ object.state }}
20 |{{state.created_on}} State: {{state.state}} Assigned to: {{state.delivery_person|default_if_none:"-"}}
27 | {% endfor %} 28 |