Commit af3f3360 authored by Azhar Hassan's avatar Azhar Hassan

new git

parents
# You can get/create one here :
# https://www.twilio.com/console/authy/applications
ACCOUNT_SECURITY_API_KEY='Gss1Mdw9g2tVLmS1LLGR7zp85WYT5LWI'
# Twilio API credentials
# (find here https://www.twilio.com/console)
TWILIO_ACCOUNT_SID=AC6e8a29a46632c2a0e283815630c6091c
TWILIO_AUTH_TOKEN=67662e13ab86e14920b3e3f10e7383f7
# Verification Service SID
# (create one here https://www.twilio.com/console/verify/services)
TWILIO_VERIFICATION_SID=VA86db5f628bdad00b95ae95105ee73a6f
services:
- docker:19-dind
docker_build:
tags:
- docker
stage: build
image: docker:latest
script:
- docker build -t ahassan613/testing:latest .
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="FacetManager">
<facet type="django" name="Django">
<configuration>
<option name="rootFolder" value="$MODULE_DIR$" />
<option name="settingsModule" value="CarShipping/settings.py" />
<option name="manageScript" value="$MODULE_DIR$/manage.py" />
<option name="environment" value="&lt;map/&gt;" />
<option name="doNotUseTestRunner" value="false" />
<option name="trackFilePattern" value="migrations" />
</configuration>
</facet>
</component>
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/venv" />
</content>
<orderEntry type="jdk" jdkName="Python 3.6 (QuantumBackend)" jdkType="Python SDK" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
<component name="PyDocumentationSettings">
<option name="format" value="PLAIN" />
<option name="myDocStringFormat" value="Plain" />
</component>
<component name="TemplatesService">
<option name="TEMPLATE_CONFIGURATION" value="Django" />
<option name="TEMPLATE_FOLDERS">
<list>
<option value="$MODULE_DIR$/chat/templates" />
</list>
</option>
</component>
<component name="TestRunnerService">
<option name="PROJECT_TEST_RUNNER" value="py.test" />
</component>
</module>
\ No newline at end of file
<component name="InspectionProjectProfileManager">
<settings>
<option name="USE_PROJECT_PROFILE" value="false" />
<version value="1.0" />
</settings>
</component>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.6 (QuantumBackend)" project-jdk-type="Python SDK" />
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/QuantumBackend.iml" filepath="$PROJECT_DIR$/.idea/QuantumBackend.iml" />
</modules>
</component>
</project>
\ No newline at end of file
"""
ASGI config for CarShipping project.
It exposes the ASGI callable as a module-level variable named ``application``.
For more information on this file, see
https://docs.djangoproject.com/en/3.2/howto/deployment/asgi/
"""
# import os
#
# from channels.auth import AuthMiddlewareStack
# from channels.routing import ProtocolTypeRouter, URLRouter
# from django.core.asgi import get_asgi_application
# import django
# import chat.routing
#
# os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'CarShipping.settings')
# django.setup()
#
# # application = get_asgi_application()
#
# application = ProtocolTypeRouter({
# "http": get_asgi_application(),
# "websocket": AuthMiddlewareStack(
# URLRouter(
# chat.routing.websocket_urlpatterns
# )
# ),
# })
#
# import os
#
# from channels.auth import AuthMiddlewareStack
# from channels.routing import ProtocolTypeRouter, URLRouter
# from django.core.asgi import get_asgi_application
# import chat.routing
#
# os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")
#
# application = ProtocolTypeRouter({
# "http": get_asgi_application(),
# "websocket": AuthMiddlewareStack(
# URLRouter(
# chat.routing.websocket_urlpatterns
# )
# ),
# }
#
# )
# import sys
# # sys.path.append('/home/brainplow123/PycharmProjects/ShopnroarAmazon')
# sys.path.append('/usr/src/app/CarShipping')
# sys.path.append('/amazon/shopnroar_amazon/')
# import os, django
# os.environ.setdefault("DJANGO_SETTINGS_MODULE", "SNR.settings")
# django.setup()
# import os,django
# from channels.auth import AuthMiddlewareStack
# from channels.routing import ProtocolTypeRouter, URLRouter
# from django.core.asgi import get_asgi_application
# import chat.routing
#
# os.environ.setdefault("DJANGO_SETTINGS_MODULE", "CarShipping.settings")
# # django.setup()
#
# application = ProtocolTypeRouter({
# "http": get_asgi_application(),
# "websocket": AuthMiddlewareStack(
# URLRouter(
# chat.routing.websocket_urlpatterns
# )
# ),
# })
#
import os
import django
from channels.routing import get_default_application
from channels.layers import get_channel_layer
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'CarShipping.settings')
django.setup()
application = get_default_application()
# import os
# import django
# from channels.routing import get_default_application
# from channels.layers import get_channel_layer
# os.environ.setdefault("DJANGO_SETTINGS_MODULE", "dhaar2.settings")
# django.setup()
# application = get_default_application()
from channels.auth import AuthMiddlewareStack
from channels.routing import ProtocolTypeRouter, URLRouter
import chat.routing
application = ProtocolTypeRouter({
'websocket': AuthMiddlewareStack(
URLRouter(
chat.routing.websocket_urlpatterns
)
),
})
\ No newline at end of file
"""
Django settings for CarShipping project.
Generated by 'django-admin startproject' using Django 3.2.8.
For more information on this file, see
https://docs.djangoproject.com/en/3.2/topics/settings/
For the full list of settings and their values, see
https://docs.djangoproject.com/en/3.2/ref/settings/
"""
import os
from pathlib import Path
import datetime
from django.conf import settings
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent
from dotenv import load_dotenv
# BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
load_dotenv(os.path.join(BASE_DIR, '.env'))
# BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# import os
# os.environ.setdefault("DJANGO_SETTINGS_MODULE", __file__)
# import django
# django.setup()
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/3.2/howto/deployment/checklist/
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'django-insecure-zw#3!jqdcr(ipl0soj5l^m=2wr)62j05shmz2#rsr47*+12p10'
# SECURITY WARNING: don't run with debug turned on in production!
# DEBUG = True
DEBUG = True
ALLOWED_HOSTS = ['*']
CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_CREDENTIALS = True
CORS_ALLOW_METHODS = (
'DELETE',
'GET',
'OPTIONS',
'PATCH',
'POST',
'PUT',
)
CORS_ALLOW_HEADERS = (
'accept',
'accept-encoding',
'authorization',
'content-type',
'Content-Type',
'dnt',
'origin',
'user-agent',
'x-csrftoken',
'x-requested-with',
'access-control-allow-origin'
)
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'booking',
'corsheaders',
'rest_framework',
'chat',
'channels',
'after_response',
'rest_framework_simplejwt',
'rest_framework_simplejwt.token_blacklist'
]
from datetime import timedelta
SIMPLE_JWT = {
'ACCESS_TOKEN_LIFETIME': timedelta(days=365),
'REFRESH_TOKEN_LIFETIME': timedelta(days=1),
'ROTATE_REFRESH_TOKENS': False,
'BLACKLIST_AFTER_ROTATION': False,
'UPDATE_LAST_LOGIN': False,
'ALGORITHM': 'HS256',
'SIGNING_KEY': SECRET_KEY,
'VERIFYING_KEY': None,
'AUDIENCE': None,
'ISSUER': None,
'JWK_URL': None,
'LEEWAY': 0,
'AUTH_HEADER_TYPES': ('Bearer',),
'AUTH_HEADER_NAME': 'HTTP_AUTHORIZATION',
'USER_ID_FIELD': 'id',
'USER_ID_CLAIM': 'user_id',
'USER_AUTHENTICATION_RULE': 'rest_framework_simplejwt.authentication.default_user_authentication_rule',
'AUTH_TOKEN_CLASSES': ('rest_framework_simplejwt.tokens.AccessToken',),
'TOKEN_TYPE_CLAIM': 'token_type',
'TOKEN_USER_CLASS': 'rest_framework_simplejwt.models.TokenUser',
'JTI_CLAIM': 'jti',
'SLIDING_TOKEN_REFRESH_EXP_CLAIM': 'refresh_exp',
# 'SLIDING_TOKEN_LIFETIME': timedelta(minutes=5),
# 'SLIDING_TOKEN_REFRESH_LIFETIME': timedelta(days=1),
}
MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware',
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'booking.middleware.PasswordUpdateCheck'
]
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_TLS = True
EMAIL_HOST = 'mail.rfpgurus.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'no-reply@quantumtransportsolutions.com'
EMAIL_HOST_PASSWORD = 'umer786'
DEFAULT_FROM_EMAIL = 'QuantumTransport <no-reply@quantumtransportsolutions.com>'
ROOT_URLCONF = 'CarShipping.urls'
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [BASE_DIR / 'templates']
,
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
WSGI_APPLICATION = 'CarShipping.wsgi.application'
ASGI_APPLICATION = 'CarShipping.routing.application'
# ASGI_APPLICATION = 'CarShipping.asgi.application'
# Database
# https://docs.djangoproject.com/en/3.2/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'quantum123',
# 'NAME': 'dev_shippingdb',
'USER': 'transport',
# 'USER': 'tester',
'PASSWORD': 'omar786BPL',
# 'PASSWORD': 'testerdb786',
'HOST': '207.244.224.215',
# 'HOST': '47.186.55.61',
# 'HOST': '154.38.164.65',
'PORT': '5432',
},
# 'default': {
# 'ENGINE': 'django.db.backends.postgresql_psycopg2',
# 'NAME': 'quantumcrm',
# # 'NAME': 'dev_shippingdb',
# 'USER': 'quantumcrm',
# 'PASSWORD': 'omar786',
# 'HOST': '207.244.224.215',
# 'PORT': '5432',
# },
# 'default': {
# 'ENGINE': 'django.db.backends.postgresql_psycopg2',
#
# 'NAME': '"sinaherbalDB"',
# 'USER': 'sinaherbalUser',
# 'PASSWORD': 'sinaherbal_password741',
# 'HOST': '91.194.90.170',
# 'PORT': '5432',
# },
}
# Password validation
# https://docs.djangoproject.com/en/3.2/ref/settings/#auth-password-validators
AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
},
]
# Internationalization
# https://docs.djangoproject.com/en/3.2/topics/i18n/
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticated',
),
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework_simplejwt.authentication.JWTAuthentication',
'rest_framework.authentication.SessionAuthentication',
'rest_framework.authentication.BasicAuthentication',
)
}
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/3.2/howto/static-files/
STATIC_URL = '/static/'
# Default primary key field type
# https://docs.djangoproject.com/en/3.2/ref/settings/#default-auto-field
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
CHANNEL_LAYERS = {
'default': {
'BACKEND': 'channels_redis.core.RedisChannelLayer',
'CONFIG': {
# "hosts": [('127.0.0.1', 6379)],
"hosts": [("redis://:quantumBPL@5.189.129.36:6379")],
# "hosts": [("redis://173.212.216.233:4797")],
},
},
}
# AUTH_USER_MODEL = 'twofa.TwoFAUser'
# Authy Application Key
ACCOUNT_SECURITY_API_KEY = os.environ.get('ACCOUNT_SECURITY_API_KEY')
TWILIO_ACCOUNT_SID = os.environ.get('TWILIO_ACCOUNT_SID')
TWILIO_AUTH_TOKEN = os.environ.get('TWILIO_AUTH_TOKEN')
TWILIO_VERIFICATION_SID = os.environ.get('TWILIO_VERIFICATION_SID')
# ACCOUNT_SECURITY_API_KEY='Gss1Mdw9g2tVLmS1LLGR7zp85WYT5LWI'
# TWILIO_ACCOUNT_SID='AC6e8a29a46632c2a0e283815630c6091c'
# TWILIO_AUTH_TOKEN='67662e13ab86e14920b3e3f10e7383f7'
# TWILIO_VERIFICATION_SID='VA86db5f628bdad00b95ae95105ee73a6f'
\ No newline at end of file
"""CarShipping URL Configuration
The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/3.2/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: path('', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
Including another URLconf
1. Import the include() function: from django.urls import include, path
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path,include
from rest_framework_simplejwt.views import (
TokenObtainPairView,
TokenRefreshView,
)
urlpatterns = [
path('admin/', admin.site.urls),
path('',include('booking.urls')),
path('login/',TokenObtainPairView.as_view()),
path('chat/', include('chat.urls')),
]
"""
WSGI config for CarShipping project.
It exposes the WSGI callable as a module-level variable named ``application``.
For more information on this file, see
https://docs.djangoproject.com/en/3.2/howto/deployment/wsgi/
"""
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'CarShipping.settings')
application = get_wsgi_application()
## FROM directive instructing base image to build upon
#FROM python:3-onbuild
#
#
#
## COPY startup script into known file location in container
#COPY start.sh /start.sh
#
## EXPOSE port 8000 to allow communication to/from server
#EXPOSE 8000
#
## CMD specifcies the command to execute to start the server running.
#CMD ["/start.sh"]
## done!
###Above is Umer###
FROM python:3-onbuild
#RUN apt-get update
ENV PYTHONUNBUFFERED 1
ENV REDIS_HOST "redis"
# COPY startup script into known file location in container
COPY start.sh /start.sh
# EXPOSE port 8000 to allow communication to/from server
EXPOSE 5010
# CMD specifcies the command to execute to start the server running.
CMD ["/start.sh"]
# done!
# scenario1 = "First Name: john \
# Email: johnctas1@gmail.com \
# Phone: (770) 873-6338 \
# From Zip: 28203 \
# From City: Charlotte \
# From State: NC \
# To Zip: 30121 \
# To City: Cartersville \
# To State: GA \
# Make: Hyundai \
# Model: Elantra \
# Model Year: 2010 \
# Vehicle 1 Type: Car \
# Ship Date: 11/24/2021 \
# Transport Type: Open \
# Vehicle Condition: Not Running"
def leadsFunc(stringtxt):
if 'first_name' in stringtxt:
secnario2 = stringtxt
full_name = secnario2.split('phone:')[0].replace("first_name:", "").replace("last_name:", "").strip()
print(full_name)
phone = secnario2.split('email:')[0].split(':')[-1].strip()
print(phone)
email = secnario2.split('pickup_city:')[0].split(':')[-1].strip()
print(email)
fromCity = secnario2.split('pickup_state_code:')[0].split(':')[-1].strip()
print(fromCity)
fromState = secnario2.split('pickup_zip:')[0].split(':')[-1].strip()
print(fromState)
fromZip = secnario2.split('dropoff_city:')[0].split(':')[-1].strip()
print(fromZip)
toCity = secnario2.split('dropoff_state_code:')[0].split(':')[-1].strip()
print(toCity)
toState = secnario2.split('dropoff_zip:')[0].split(':')[-1].strip()
print(toState)
toZip = secnario2.split('estimated_ship_date:')[0].split(':')[-1].strip()
print(toZip)
shipDate = secnario2.split('vehicle_runs:')[0].split(':')[-1].strip()
print(shipDate)
vehicleRuns = secnario2.split('ship_via_id:')[0].split(':')[-1].strip()
print(vehicleRuns)
transportType = secnario2.split('year1:')[0].split(':')[-1].strip()
print(transportType)
modelYear = secnario2.split('make1:')[0].split(':')[-1].strip()
print(modelYear)
maker = secnario2.split('model1:')[0].split(':')[-1].strip()
print(maker)
model = secnario2.split('vehicle_type_id1:')[0].split(':')[-1].strip()
print(model)
vehicleType = secnario2.split('vehicle_type_id1:')[1].strip()
print(vehicleType)
else:
print("in else")
scenario1 = stringtxt
first_name = scenario1.split('Email:')[0].split(':')[1]
print(first_name)
Email = scenario1.split('Phone:')[0].split(':')[-1]
print(Email)
phone = scenario1.split('From Zip:')[0].split(':')[-1]
print(phone)
fromzip = scenario1.split('From City:')[0].split(':')[-1]
print(fromzip)
fromCity = scenario1.split('From State:')[0].split(':')[-1]
print(fromCity)
fromState= scenario1.split('To Zip:')[0].split(':')[-1]
print(fromState)
toZip= scenario1.split('To City:')[0].split(':')[-1]
print(toZip)
toCity= scenario1.split('To State:')[0].split(':')[-1]
print(toCity)
toState = scenario1.split('Make:')[0].split(':')[-1]
print(toState)
carmaker = scenario1.split('Model:')[0].split(':')[-1]
print(carmaker)
carModel = scenario1.split('Model Year:')[0].split(':')[-1]
print(carModel)
modelYear = scenario1.split('Vehicle 1 Type:')[0].split(':')[-1]
print(modelYear)
vechleType = scenario1.split('Ship Date:')[0].split(':')[-1]
print(vechleType)
ShipDate = scenario1.split('Transport Type:')[0].split(':')[-1]
print(ShipDate)
tansportType = scenario1.split('Vehicle Condition:')[0].split(':')[-1]
print(tansportType)
vechileCondition = scenario1.split('Vehicle Condition:')[1]
print(vechileCondition)
secnario2 = "\
last_name: Laster \
phone: (216) 647-4223 \
email: monicalaster777@gmail.com \
pickup_city: Albuquerque \
pickup_state_code: NM \
pickup_zip: 87109 \
dropoff_city: Cleveland \
dropoff_state_code: OH \
dropoff_zip: 44113 \
estimated_ship_date: 11/23/2021 \
vehicle_runs: Yes \
ship_via_id: Open \
year1: 2010 \
model1: Patriot \
vehicle_type_id1: SUV"
scenario1 = "First Name: Kendrick \
\
Phone: (816) 255-7372 \
From Zip: 85381 \
From City: Peoria \
From State: AZ \
To Zip: 64133 \
To City: Raytown \
To State: MO \
Make: Pontiac \
Model: Grand Prix \
Model Year: 2004 \
Vehicle 1 Type: Car \
Ship Date: 12/28/2021 \
\
Vehicle Condition: Running"
leadsFunc(secnario2)
from django.contrib import admin
from .models import *
# Register your models here.
admin.site.register(AgentDetail)
admin.site.register(Booking)
admin.site.register(ConfirmBook)
admin.site.register(Agreement)
admin.site.register(JTrackerConfirmBook)
admin.site.register(UserRole)
admin.site.register(Leads)
# admin.site.register(CustomerDetail)
from django.apps import AppConfig
class BookingConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'booking'
from rest_framework_simplejwt.token_blacklist.models import OutstandingToken
from django.core.management.base import BaseCommand
# python manage.py update_product 1 123
class Command(BaseCommand):
help = 'Remove User token'
def add_arguments(self, parser):
parser.add_argument('username', type=str, help='Username for removing token')
def handle(self, *args, **kwargs):
username = kwargs['username']
try:
deleted_obj = OutstandingToken.objects.filter(user__username=username).delete()
self.stdout.write('Tokens deleted for "%s"' % username)
except:
self.stdout.write('Unable to delete to token')
\ No newline at end of file
import re
from django.utils.deprecation import MiddlewareMixin
import os,django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "CarShipping.settings")
django.setup()
from rest_framework_simplejwt import authentication
from rest_framework.exceptions import PermissionDenied
from rest_framework_simplejwt.token_blacklist.models import OutstandingToken
class PasswordUpdateCheck(MiddlewareMixin):
def process_request(self, request):
if '/login/' in str(request) or 'insertLeads/' in str(request):
return
try:
username = authentication.JWTAuthentication().authenticate(request)[0]
except:
username = None
if username!=None:
if OutstandingToken.objects.filter(user__username=username).count() > 0:
pass
else:
raise PermissionDenied
This diff is collapsed.
# Generated by Django 3.2.8 on 2022-09-14 07:37
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('booking', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='leads',
name='accept_agreemnt',
field=models.BooleanField(default=False),
),
migrations.AddField(
model_name='leads',
name='first_payment',
field=models.CharField(blank=True, default=None, max_length=100, null=True),
),
migrations.AddField(
model_name='leads',
name='first_payment_due',
field=models.CharField(blank=True, default=None, max_length=300, null=True),
),
migrations.AddField(
model_name='leads',
name='next_payment',
field=models.CharField(blank=True, default=None, max_length=100, null=True),
),
migrations.AddField(
model_name='leads',
name='next_payment_due',
field=models.CharField(blank=True, default=None, max_length=300, null=True),
),
]
# Generated by Django 3.2.8 on 2022-09-14 17:46
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('booking', '0002_auto_20220914_0737'),
]
operations = [
migrations.AddField(
model_name='leads',
name='testing_appp',
field=models.CharField(blank=True, default=None, max_length=300, null=True),
),
]
# Generated by Django 3.2.8 on 2022-09-14 18:00
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('booking', '0003_leads_testing_appp'),
]
operations = [
migrations.RemoveField(
model_name='leads',
name='accept_agreemnt',
),
]
# Generated by Django 3.2.8 on 2022-09-14 18:05
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('booking', '0004_remove_leads_accept_agreemnt'),
]
operations = [
migrations.RemoveField(
model_name='leads',
name='first_payment',
),
migrations.RemoveField(
model_name='leads',
name='first_payment_due',
),
migrations.RemoveField(
model_name='leads',
name='next_payment',
),
migrations.RemoveField(
model_name='leads',
name='next_payment_due',
),
migrations.RemoveField(
model_name='leads',
name='testing_appp',
),
]
# Generated by Django 3.2.8 on 2022-09-21 14:03
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('booking', '0005_auto_20220914_1805'),
]
operations = [
migrations.CreateModel(
name='RefundAgreement',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('full_name', models.CharField(max_length=100)),
('created_time', models.DateTimeField(auto_now_add=True)),
('image', models.CharField(max_length=100000)),
('amount', models.FloatField(blank=True, default=None, null=True)),
('order_id', models.CharField(blank=True, max_length=100, null=True)),
],
),
]
# Generated by Django 3.2.8 on 2022-09-21 14:48
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('booking', '0006_refundagreement'),
]
operations = [
migrations.AddField(
model_name='refundagreement',
name='date_of_customer',
field=models.DateTimeField(blank=True, null=True),
),
]
# Generated by Django 3.2.8 on 2022-11-05 15:22
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('booking', '0007_refundagreement_date_of_customer'),
]
operations = [
migrations.AddField(
model_name='leads',
name='actual_received_by',
field=models.CharField(blank=True, default=None, max_length=100, null=True),
),
]
from django.db import models
from django.contrib.auth.models import User
# Create your models here.
class UserRole(models.Model):
user_id = models.OneToOneField(User,on_delete=models.CASCADE,related_name='samrock')
User_choices = (
('S', 'Super_Admin'),
('A', 'Agent'),
)
role = models.CharField(max_length=1, choices=User_choices, blank=True)
class AgentDetail(models.Model):
agent_name = models.CharField(max_length=30)
agent_id = models.CharField(max_length=30)
agent_password = models.CharField(max_length=50,default='bpl321')
# location=models.CharField(max_length=30)
{
"full_name" : "Sam Rock",
"email" :"sam@outlook.com",
"phone" : "3242324",
"origin_city" : "Plano",
"origin_state" : "Texas" ,
"origin_zip" : "75023",
"destination_city" : "New York",
"destination_state" : "New York",
"destination_zip" : "32422",
"car_maker" : "Toyota",
"car_model" : "Yaris",
"model_year1" :"2020",
"body_type" : "SUV",
"ship_date1" :"12/23/2021",
"vehilce_run1" : "Yes",
"transport_type1" : "Open",
"price" : 0,
"received_by" : "CarTransportLead"
}
class Booking(models.Model):
name = models.CharField(max_length=30)
email = models.CharField(max_length=50)
phone = models.CharField(max_length=50)
pick_up = models.CharField(max_length=500)
drop_off = models.CharField(max_length=500)
pick_up_date = models.DateField()
book_time = models.DateTimeField(auto_now_add=True)
# locked = models.BooleanField(default=False)
assigned_to = models.ForeignKey(User,null=True,on_delete=models.CASCADE)
vehicle_run = models.BooleanField(default=None)
type_of_service = models.CharField(max_length=100,default='')
make = models.CharField(default=None,null=True,max_length=100)
model = models.CharField(default=None,null=True,max_length=100)
year = models.CharField(default=None,null=True,max_length=100)
class ConfirmBook(models.Model):
order_id = models.CharField(max_length=100,null=True)
booking_id = models.OneToOneField(Booking,on_delete=models.CASCADE,related_name="book_detail")
booking_fee = models.FloatField()
fee_status = models.BooleanField(default=False)
booking_date = models.DateTimeField(auto_now_add=True)
payment_response = models.CharField(max_length=3000,null=True,default="")
truck_name = models.CharField(max_length=100,default=None)
truck_no = models.CharField(max_length=100,default=None)
trucker_license = models.CharField(max_length=100,default=None,null=True,blank=True)
partial_payment_allowed = models.BooleanField(default=False)
partial_allowed_by = models.ForeignKey(AgentDetail,on_delete=models.CASCADE,null=True,default=None)
remaning_fee = models.CharField(max_length=100,default=None,null=True,blank=True)
class PartialPayment(models.Model):
booking_id = models.ForeignKey(ConfirmBook,on_delete=models.CASCADE)
partial_fee = models.CharField(max_length=100)
payment_date = models.DateField(auto_now_add=True)
payment_response = models.CharField(max_length=200,default=None,null=True)
# actual_payment = models.CharField(max_length=100)
class ContactUs(models.Model):
name = models.CharField(max_length=100)
email = models.CharField(max_length=100)
phone_no = models.CharField(max_length=100)
message = models.CharField(max_length=100)
locked = models.BooleanField(default=False)
locked_by = models.ForeignKey(AgentDetail, null=True, on_delete=models.CASCADE)
class Leads(models.Model):
full_name = models.CharField(max_length=100)
email = models.EmailField()
phone = models.CharField(max_length=200)
origin_address = models.CharField(max_length=200,null=True,blank=True)
origin_city = models.CharField(max_length=200)
origin_state = models.CharField(max_length=200)
origin_zip = models.CharField(max_length=100)
destination_address = models.CharField(max_length=200,null=True,blank=True)
destination_city = models.CharField(max_length=200)
destination_state = models.CharField(max_length=200)
destination_zip = models.CharField(max_length=100)
car_maker = models.CharField(max_length=100)
car_model = models.CharField(max_length=100)
model_year1 = models.CharField(max_length=100,default=None,null=True,blank=True)
body_type = models.CharField(max_length=100,null=True,blank=True)
ship_date1 = models.CharField(null=True,blank=True,default=None,max_length=100)
vehilce_run1 = models.CharField(null=True,blank=True,default=None,max_length=20)
transport_type1 = models.CharField(null=True,blank=True,default=None,max_length=30)
price = models.FloatField(default=None,null=True,blank=True)
is_paid = models.BooleanField(default=False)
called_agent_name = models.CharField(max_length=100,null=True,blank=True,default=None)
is_operable = models.CharField(max_length=100,null=True,blank=True,default=None)
received_date = models.DateTimeField(auto_now_add=True,null=True)
received_by = models.CharField(max_length=100,null=True,blank=True,default=None)
actual_received_by = models.CharField(max_length=100,null=True,blank=True,default=None)
internal_notes = models.CharField(max_length=1000,null=True,blank=True,default=None)
is_ok = models.BooleanField(default=False)
payment_id = models.CharField(default=None,null=True,blank=True,max_length=200)
payment_date = models.CharField(default=None,null=True,blank=True,max_length=300)
payment_response = models.CharField(max_length=10000,null=True,blank=True,default=None)
agent_price = models.FloatField(default=None,null=True,blank=True)
assigned_to = models.ForeignKey(User,on_delete=models.CASCADE,null=True,blank=True,default=None)
lead_status = models.CharField(max_length=25,null=True,blank=True,default=None)
third_party = models.BooleanField(default=False)
payment_channel = models.CharField(null=True,blank=True,default=None,max_length=200)
dispatched_by = models.ForeignKey(User,on_delete=models.CASCADE,null=True,blank=True,default=None,related_name='distpatch')
trucker_name = models.CharField(max_length=200,null=True,blank=True,default=None)
trucker_no = models.CharField(max_length=200,null=True,blank=True,default=None)
trucker_license = models.CharField(max_length=200,null=True,blank=True,default=None)
email_count = models.IntegerField(default=0,null=True,blank=True)
# message_count = models.IntegerField(default=0,null=True,blank=True)
# accept_agreemnt = models.BooleanField(default=False)
# first_payment = models.CharField(max_length=100,null=True,blank=True,default=None)
# first_payment_due = models.CharField(max_length=300,null=True,blank=True,default=None)
# next_payment = models.CharField(max_length=100,null=True,blank=True,default=None)
# next_payment_due = models.CharField(max_length=300,null=True,blank=True,default=None)
# testing_appp = models.CharField(max_length=300,null=True,blank=True,default=None)
class Meta:
unique_together = ('origin_zip','destination_zip','car_maker','car_model')
class JTrackerConfirmBook(models.Model):
jTracker_id = models.CharField(max_length=150)
follow_up_by = models.ForeignKey(User,on_delete=models.CASCADE,null=True,blank=True,related_name='follower')
dispatch_by = models.ForeignKey(User,on_delete=models.CASCADE,null=True,blank=True,related_name='dispatcher')
dispatch_fee = models.FloatField()
trucker_no = models.CharField(max_length=200,null=True,blank=True)
trucker_name =models.CharField(max_length=200,null=True,blank=True)
trucker_license = models.CharField(max_length=100,null=True,blank=True)
payment_method = models.CharField(max_length=200,null=True,blank=True)
payment_status = models.BooleanField(default=False)
booking_status = models.CharField(max_length=100,default='Booked')
class Agreement(models.Model):
full_name = models.CharField(max_length=100)
created_time = models.DateTimeField(auto_now_add=True)
image = models.CharField(max_length=100000)
class RefundAgreement(models.Model):
full_name = models.CharField(max_length=100)
created_time = models.DateTimeField(auto_now_add=True)
image = models.CharField(max_length=100000)
amount=models.FloatField(default=None,null=True,blank=True)
order_id = models.CharField(max_length=100,null=True,blank=True)
date_of_customer = models.DateTimeField(null=True,blank=True)
class CarrierAgreement(models.Model):
month = models.CharField(max_length=50)
day = models.CharField(max_length=50)
carrier_name = models.CharField(max_length=100)
mc_number = models.CharField(max_length=100)
created_time = models.DateTimeField(auto_now_add=True)
image = models.CharField(max_length=100000)
#
# class CustomerDetail(models.Model):
# customer_name = models.CharField(max_length=50)
# customer_phone = models.CharField(max_length=50)
# customer_email = models.CharField(max_length=100)
# CreatedAt = models.DateTimeField(auto_now_add=True)
from rest_framework import serializers
from .models import *
class AgentSerializer(serializers.ModelSerializer):
class Meta:
model = AgentDetail
fields = '__all__'
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('id','username','last_login','is_superuser','first_name','last_name','email','is_staff','is_active','date_joined',)
# read_only_fields = fields
class ConfirmBookingSerail(serializers.ModelSerializer):
class Meta:
model = ConfirmBook
fields = '__all__'
class BookingSerializer1(serializers.ModelSerializer):
# book_detail = ConfirmBookingSerail()
# locked_by = AgentSerializer()
class Meta:
model = Booking
fields = '__all__'
class BookingSerializer(serializers.ModelSerializer):
book_detail = ConfirmBookingSerail()
assigned_to = UserSerializer()
class Meta:
model = Booking
fields = '__all__'
class ConatctusSerializer(serializers.ModelSerializer):
class Meta:
model = ContactUs
fields = '__all__'
class LeadsSerializer(serializers.ModelSerializer):
username = serializers.SerializerMethodField()
def get_username(self,instance):
print(instance.assigned_to)
username= 'umer'
return username
# assigned_to = UserSerializer()
class Meta:
model = Leads
fields = '__all__'
class LeadsSerializer1(serializers.ModelSerializer):
# assigned_to = UserSerializer()
class Meta:
model = Leads
fields = '__all__'
class JTrackSerializer1(serializers.ModelSerializer):
follow_up_by=UserSerializer()
dispatch_by=UserSerializer()
class Meta:
model = JTrackerConfirmBook
fields = '__all__'
class JTrackSerializer(serializers.ModelSerializer):
class Meta:
model = JTrackerConfirmBook
fields = '__all__'
class AgreementSerailizer(serializers.ModelSerializer):
class Meta:
model = Agreement
fields = '__all__'
class RefundAgreementSerailizer(serializers.ModelSerializer):
class Meta:
model = RefundAgreement
fields = '__all__'
class CarrierAgreementSerailizer(serializers.ModelSerializer):
class Meta:
model = CarrierAgreement
fields = '__all__'
class roleSerializer(serializers.ModelSerializer):
user_id = UserSerializer()
class Meta:
model = UserRole
fields = ('role','id','user_id',)
# read_only_fields = fields
# read only fields
# def get_exercises(self, obj):
# qs = obj.exercises.all().order_by('index')
# return UserSerializer(qs, many=True, read_only=True).data
# class ModelMakeYearSerializer(serializers.ModelSerializer):
# years = serializers.SerializerMethodField()
# make = serializers.SerializerMethodField()
# model = serializers.SerializerMethodField()
#
#
# def get_years(self,request):
# # from django.test import TestCase
# # import traceback
# # import requests
# # import re
# # import math
# # import sys
# #
# #
# # sys.path.append('/home/brainplow/azhar/quantum/QuantumBackend_1stSep/QuantumBackend/booking')
# #
# #
# # # sys.path.append('/amazon/shopnroar_amazon/')
# # import os, django
# # # from selenium.webdriver.common.keys import Keys
# # os.environ.setdefault("DJANGO_SETTINGS_MODULE", "CarShipping.settings")
# # django.setup()
# # from booking.models import *
# #
# # # all_objs = Leads.objects.filter(SNR_Active=True, SNR_Available='hollar')
# # all_objs = Leads.objects.get(id=595556)
# # print(all_objs.received_by)
# # print(all_objs.count())
# # # for obj in all_objs:
# #
# #
# # # Create your tests here.
# # lis =[15,6,8,1,3]
# #
# import traceback
# import requests
# import re
# import math
# import sys
#
#
# sys.path.append('/home/brainplow/azhar/quantum/QuantumBackend_1stSep/QuantumBackend')
#
#
# # sys.path.append('/amazon/shopnroar_amazon/')
# import os, django
# os.environ.setdefault("DJANGO_SETTINGS_MODULE", "CarShipping.settings")
# django.setup()
# from booking.models import Leads,UserRole
# from django.contrib.auth.models import User
#
#
#
#
#
# # # all_objs = Leads.objects.filter(SNR_Active=True, SNR_Available='hollar')
# # all_objs = Leads.objects.get(id='59556')
# # print(all_objs.received_by)
# # user = User.objects.create_user(username='john',
# # email='qts@testing.com',
# # password='goquantum')
# user_obj = User.objects.get(username='john')
# # roleobj = UserRole.objects.get(user_id_id=request.user.id)
# print('Done')
# UserRole.objects.create(
# user_id=user_obj,
# role='S'
# )
# print('Done')
lis=[0,1,2,3]
print(lis[-len(lis)])
\ No newline at end of file
from django.urls import path, re_path
from .views import *
urlpatterns = [
path('requestbooking/',AddBooking.as_view()),
path('insertLeads/', InsertLeads.as_view()),
# path('getbookings/<int:page_no>/',GetBookings.as_view()),
path('assingbooking/',AssignBooking.as_view()),
path('confirmbooking/',ConfirmBooking.as_view()),
path('addagent/',AddAgent.as_view()),
path('updateagent/',UpdateAgent.as_view()),
path('contactus/',Contact.as_view()),
path('getcontact/<int:page_no>/',ContactMessages.as_view()),
path('getpaymentdetail/',GetPayment.as_view()),
path('postpayment/',Payment.as_view()),
path('partialpayment/',PartialPayment.as_view()),
path('addleads/',AddLeads.as_view()),
path('getleads/<int:page_no>/',LeadsDetail.as_view()),
path('testbooking/<int:page_no>/',TestBooking.as_view()),
path('lockcontact/',LockContact.as_view()),
path('allowpartiis_okalpayment/',PartialAllowPayment.as_view()),
path('jtrackerbookin/',JSaveBooking.as_view()),
path('getJtrackerbookings/<int:page_no>/',GetJtrackerBookings.as_view()),
path('saveagreemnt/',SaveAgreement.as_view()),
path('getagreement/<int:page_no>/',GetAgreements.as_view()),
path('savecarieeragreemnt/',SaveCarrierAgreeent.as_view()),
path('getcarieeragreement/<int:page_no>/',GetCarrierAgreements.as_view()),
path('saverefundagreemnt/',SaveRefundAgreement.as_view()),
path('getrefundagreement/<int:page_no>/',GetRefundAgreements.as_view()),
path('saveLeadwithText/',SaveTextLeads.as_view()),
path('updatelead/<int:lead_id>/',UpdateLeads.as_view()),
# path('generateinvoice/<int:lead_id>/', GenerateInvoice.as_view()),
# path('detaillead/<str:lead_id>/', DetailLead.as_view()),
path('deleteLead/<int:lead_id>/',DeleteLead.as_view()),
path('getuserrole/',GetUserRole.as_view()),
######################Important Apis To Test and working################
path('bulkassing/', BulkAssingtoAgent.as_view()),
path('assignLead/',AssignedtoAgent.as_view()),
path("getagentdetail/<int:id>/", GetAgentDetail.as_view()),
path('getagent/', GetAgents.as_view()),
path('getagentfast/', GetAgentsFast.as_view()),
path("test_Search/<int:page_no>/", testSearch.as_view()),
path("test_Search_New/<int:page_no>/", testSearch_new.as_view()),
path('SearchFastNew/', SearchNewLeads.as_view()),
######################Important Apis To Test and working################
path('getspecificagent321/<status_new>/',GetSpecificAgentLeads.as_view()),
path('updateLeadStatus/',UpdateLeadStatus.as_view()),
path('confirmLead/',ConfirmLeads.as_view()),
path('sendEmails/',EmailsSend.as_view()),
path('getConfirmBooking/<int:page_no>/',getConfirmLeads.as_view()),
path('getYearMakeModel/',YearMakeModel.as_view()),
path('sendcode/',PhoneVerification.as_view()),
path('entercode/', EnterCode.as_view()),
path('searchagents/<str:key>', SortAgents.as_view()),
]
This diff is collapsed.
This diff is collapsed.
from django.contrib import admin
# Register your models here.
from .models import *
# Register your models here.
admin.site.register(Message)
admin.site.register(Rooms)
admin.site.register(CustomerDetail)
admin.site.register(Dataforchat)
# class CustomerDetails(admin.ModelAdmin):
# # readonly_fields = ('CreatedAt',)
# list_display = ('customer_name', 'customer_phone', 'customer_email','Created')
#
#
# admin.site.register(ChatCustomerDetail,CustomerDetails)
# admin.site.register()
# class BookAdmin(admin.ModelAdmin):
# list_display = ('title', 'author', 'display_genre')
# customer_name = models.CharField(max_length=50)
# customer_phone = models.CharField(max_length=50)
# customer_email = models.CharField(max_length=100)
# CreatedAt = models.DateTimeField(auto_now_add=True)
\ No newline at end of file
from django.apps import AppConfig
class ChatConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'chat'
# chat/consumers.py
import json
from channels.generic.websocket import AsyncWebsocketConsumer
from .models import Message
from chat.models import Rooms,Message
from django.contrib.auth.models import User
from asgiref.sync import async_to_sync
from channels.generic.websocket import WebsocketConsumer
class ChatConsumer(WebsocketConsumer):
def connect(self):
self.room_name = self.scope['url_route']['kwargs']['room_name']
self.room_group_name = 'chat_%s' % self.room_name
async_to_sync(self.channel_layer.group_add)(
self.room_group_name,
self.channel_name
)
self.accept()
def disconnect(self, close_code):
async_to_sync(self.channel_layer.group_discard)(
self.room_group_name,
self.channel_name
)
# Receive message from WebSocket
def receive(self, text_data):
try:
text_data_json = json.loads(text_data)
message = text_data_json['message']
try:
sender=text_data_json['SenderIsCustomer']
except:
print('sender exception')
name = self.room_name
print('room id is', name)
try:
room = Rooms.objects.filter(id=name)
print('run')
except:
print('exception')
if room.exists():
print('in if')
for r in room:
pass
Message.objects.create(Room=r,MessageText=message,SenderIsCustomer=sender)
except Exception as e:
print(e)
# Send message to room group
async_to_sync(self.channel_layer.group_send)(
self.room_group_name,
{
'type': 'chat_message',
'message': message,
'SenderIsCustomer':sender
}
)
# Receive message from room group
def chat_message(self, event):
message = event['message']
SenderIsCustomer = event['SenderIsCustomer']
# Send message to WebSocket
self.send(text_data=json.dumps({
'message': message,
'SenderIsCustomer':SenderIsCustomer
}))
#
# import json
# from asgiref.sync import async_to_sync
# from channels.generic.websocket import WebsocketConsumer
#
# class ChatConsumer(WebsocketConsumer):
# def connect(self):
# self.room_name = self.scope['url_route']['kwargs']['room_name']
# self.room_group_name = 'chat_%s' % self.room_name
#
# # Join room group
# async_to_sync(self.channel_layer.group_add)(
# self.room_group_name,
# self.channel_name
# )
#
# self.accept()
#
# def disconnect(self, close_code):
# # Leave room group
# async_to_sync(self.channel_layer.group_discard)(
# self.room_group_name,
# self.channel_name
# )
#
# # Receive message from WebSocket
# def receive(self, text_data):
# text_data_json = json.loads(text_data)
# message = text_data_json['message']
#
# # Send message to room group
# async_to_sync(self.channel_layer.group_send)(
# self.room_group_name,
# {
# 'type': 'chat_message',
# 'message': message
# }
# )
#
# # Receive message from room group
# def chat_message(self, event):
# message = event['message']
#
# # Send message to WebSocket
# self.send(text_data=json.dumps({
# 'message': message
# }))
#
# Generated by Django 3.2.8 on 2022-03-05 22:57
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
initial = True
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
migrations.CreateModel(
name='CustomerDetail',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('customer_name', models.CharField(max_length=50)),
('customer_phone', models.CharField(max_length=50)),
('customer_email', models.CharField(max_length=100)),
('CreatedAt', models.DateTimeField(auto_now_add=True)),
],
),
migrations.CreateModel(
name='Dataforchat',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('customer_name', models.CharField(max_length=50)),
('customer_phone', models.CharField(max_length=50)),
('customer_email', models.CharField(max_length=100)),
],
),
migrations.CreateModel(
name='Rooms',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('Deleted', models.BooleanField(default=False)),
('CreatedAt', models.DateTimeField(auto_now_add=True)),
('user1', models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, related_name='user1', to='chat.customerdetail')),
('user2', models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, related_name='user2', to=settings.AUTH_USER_MODEL)),
],
options={
'unique_together': {('user1', 'user2')},
},
),
migrations.CreateModel(
name='Message',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('MessageText', models.CharField(max_length=10000)),
('Seen', models.BooleanField(default=False)),
('Deleted', models.BooleanField(default=False)),
('CreatedAt', models.DateTimeField(auto_now_add=True)),
('Room', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='chat.rooms')),
('Sender', models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, related_name='Sender', to=settings.AUTH_USER_MODEL)),
],
),
]
# Generated by Django 3.2.8 on 2022-03-07 22:30
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('chat', '0001_initial'),
]
operations = [
migrations.RemoveField(
model_name='message',
name='Sender',
),
migrations.AddField(
model_name='message',
name='SenderIsCustomer',
field=models.BooleanField(default=None),
),
]
# Generated by Django 3.2.8 on 2022-03-07 22:36
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('chat', '0002_auto_20220307_2230'),
]
operations = [
migrations.AlterField(
model_name='message',
name='SenderIsCustomer',
field=models.BooleanField(default=False),
),
]
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment