login and auth bug fixed
This commit is contained in:
1 parent
89a5d70512
commit
7cd8ff0511
36 files changed
+632
-67
No files matched your search
Generated
+23
-2
@@ -1,7 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="87c5db51-3e89-4a98-9bbb-121c9c52ab3c" name="Changes" comment="" />
|
||||
<list default="true" id="87c5db51-3e89-4a98-9bbb-121c9c52ab3c" name="Changes" comment="">
|
||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/apps/cuser/models.py" beforeDir="false" afterPath="$PROJECT_DIR$/apps/cuser/models.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/apps/jwt_auth/models.py" beforeDir="false" afterPath="$PROJECT_DIR$/apps/jwt_auth/models.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/apps/jwt_auth/services.py" beforeDir="false" afterPath="$PROJECT_DIR$/apps/jwt_auth/services.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/apps/jwt_auth/views.py" beforeDir="false" afterPath="$PROJECT_DIR$/apps/jwt_auth/views.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/apps/workspace/models.py" beforeDir="false" afterPath="$PROJECT_DIR$/apps/workspace/models.py" afterDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
||||
@@ -17,6 +24,9 @@
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="Git.Settings">
|
||||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
||||
</component>
|
||||
<component name="MarkdownSettingsMigration">
|
||||
<option name="stateVersion" value="1" />
|
||||
</component>
|
||||
@@ -85,11 +95,22 @@
|
||||
<workItem from="1697269439761" duration="66295000" />
|
||||
<workItem from="1702900258020" duration="63755000" />
|
||||
<workItem from="1704088148329" duration="105568000" />
|
||||
<workItem from="1704951046597" duration="69392000" />
|
||||
<workItem from="1704951046597" duration="80074000" />
|
||||
</task>
|
||||
<servers />
|
||||
</component>
|
||||
<component name="TypeScriptGeneratedFilesManager">
|
||||
<option name="version" value="3" />
|
||||
</component>
|
||||
<component name="Vcs.Log.Tabs.Properties">
|
||||
<option name="TAB_STATES">
|
||||
<map>
|
||||
<entry key="MAIN">
|
||||
<value>
|
||||
<State />
|
||||
</value>
|
||||
</entry>
|
||||
</map>
|
||||
</option>
|
||||
</component>
|
||||
</project>
|
||||
@@ -0,0 +1,46 @@
|
||||
from django.db import models
|
||||
from django.contrib.auth.models import AbstractBaseUser, BaseUserManager, PermissionsMixin
|
||||
from utils.base_model import BaseModel
|
||||
import uuid
|
||||
|
||||
|
||||
class CUserManager(BaseUserManager):
|
||||
def create_user(self, username, password, **extra_fields):
|
||||
if not username:
|
||||
raise ValueError("Please Enter username")
|
||||
user = self.model(username=username, **extra_fields)
|
||||
user.set_password(password)
|
||||
user.save()
|
||||
return user
|
||||
|
||||
def create_superuser(self, username, password, **extra_fields):
|
||||
extra_fields.setdefault('is_staff', True)
|
||||
extra_fields.setdefault('is_superuser', True)
|
||||
extra_fields.setdefault('is_active', True)
|
||||
|
||||
return self.create_user(username, password, **extra_fields)
|
||||
|
||||
|
||||
class CUser(BaseModel, AbstractBaseUser, PermissionsMixin):
|
||||
username = models.CharField(max_length=50, null=False, blank=False, unique=True)
|
||||
mobile = models.PositiveBigIntegerField(null=False, blank=False, unique=True)
|
||||
name_family = models.CharField(max_length=50, null=True, blank=True)
|
||||
is_active = models.BooleanField(default=False)
|
||||
is_staff = models.BooleanField(default=False)
|
||||
is_superuser = models.BooleanField(default=False)
|
||||
uuid = models.UUIDField(default=uuid.uuid4, editable=False, unique=True)
|
||||
|
||||
USERNAME_FIELD = 'username'
|
||||
|
||||
objects = CUserManager()
|
||||
|
||||
class Meta:
|
||||
permissions = [
|
||||
('user_is_workspace_owner', 'user is workspace owner'),
|
||||
('user_is_workspace_admin', 'user is workspace admin'),
|
||||
('user_is_workspace_operator', 'user is workspace operator'),
|
||||
('user_is_workspace_customer', 'user is workspace customer'),
|
||||
]
|
||||
|
||||
def __str__(self):
|
||||
return str(self.username)
|
||||
@@ -0,0 +1,24 @@
|
||||
# Generated by Django 4.2.1 on 2024-01-22 12:15
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('workspace', '0011_remove_workspace_cuser_owner'),
|
||||
('cuser', '0007_alter_cuser_mobile'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='cuserrole',
|
||||
name='cuser',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='cuserrole',
|
||||
name='sys_ws',
|
||||
field=models.ForeignKey(blank=True, default=None, null=True, on_delete=django.db.models.deletion.CASCADE, to='workspace.workspace'),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,20 @@
|
||||
# Generated by Django 4.2.1 on 2024-01-22 12:18
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('cuser', '0008_remove_cuserrole_cuser_cuserrole_sys_ws'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='cuserrole',
|
||||
name='cuser',
|
||||
field=models.ForeignKey(blank=True, default=None, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='cuser_role', to=settings.AUTH_USER_MODEL),
|
||||
),
|
||||
]
|
||||
+6
-45
@@ -1,53 +1,14 @@
|
||||
from django.db import models
|
||||
from django.contrib.auth.models import AbstractBaseUser, BaseUserManager, PermissionsMixin
|
||||
from utils.base_model import BaseModel
|
||||
#from apps.workspace.models import Workspace as WorkspaceModel
|
||||
from apps.workspace.models import Workspace as WorkspaceModel
|
||||
#from apps.cuser.cuser_model import CUser
|
||||
import uuid
|
||||
|
||||
from django.contrib.auth import get_user_model
|
||||
CUser = get_user_model()
|
||||
# Create your models here.
|
||||
import random
|
||||
|
||||
class CUserManager(BaseUserManager):
|
||||
def create_user(self, username, password, **extra_fields):
|
||||
if not username:
|
||||
raise ValueError("Please Enter username")
|
||||
user = self.model(username=username, **extra_fields)
|
||||
user.set_password(password)
|
||||
user.save()
|
||||
return user
|
||||
|
||||
def create_superuser(self, username, password, **extra_fields):
|
||||
extra_fields.setdefault('is_staff', True)
|
||||
extra_fields.setdefault('is_superuser', True)
|
||||
extra_fields.setdefault('is_active', True)
|
||||
|
||||
return self.create_user(username, password, **extra_fields)
|
||||
|
||||
|
||||
class CUser(BaseModel, AbstractBaseUser, PermissionsMixin):
|
||||
username = models.CharField(max_length=50, null=False, blank=False, unique=True)
|
||||
mobile = models.PositiveBigIntegerField(null=False, blank=False, unique=True)
|
||||
name_family = models.CharField(max_length=50, null=True, blank=True)
|
||||
is_active = models.BooleanField(default=False)
|
||||
is_staff = models.BooleanField(default=False)
|
||||
is_superuser = models.BooleanField(default=False)
|
||||
uuid = models.UUIDField(default=uuid.uuid4, editable=False, unique=True)
|
||||
|
||||
USERNAME_FIELD = 'username'
|
||||
|
||||
objects = CUserManager()
|
||||
|
||||
class Meta:
|
||||
permissions = [
|
||||
('user_is_workspace_owner', 'user is workspace owner'),
|
||||
('user_is_workspace_admin', 'user is workspace admin'),
|
||||
('user_is_workspace_operator', 'user is workspace operator'),
|
||||
('user_is_workspace_customer', 'user is workspace customer'),
|
||||
]
|
||||
|
||||
def __str__(self):
|
||||
return str(self.username)
|
||||
|
||||
|
||||
class RoleType(BaseModel):
|
||||
role_name = models.CharField(max_length=20, null=False, blank=False)
|
||||
@@ -58,13 +19,13 @@ class RoleType(BaseModel):
|
||||
|
||||
|
||||
class CuserRole(BaseModel):
|
||||
cuser = models.ForeignKey(CUser, on_delete=models.CASCADE, related_name='cuser_role')
|
||||
cuser = models.ForeignKey(CUser, on_delete=models.CASCADE, related_name='cuser_role', null=True, blank=True, default=None)
|
||||
role_type = models.ForeignKey(RoleType, on_delete=models.CASCADE, related_name='role_type')
|
||||
name_family = models.CharField(max_length=30, null=False, blank=False)
|
||||
title = models.CharField(max_length=30, null=True, blank=True)
|
||||
mobile = models.PositiveBigIntegerField(null=False, blank=False)
|
||||
mobile_verify = models.BooleanField(default=False)
|
||||
#sys_ws = models.ForeignKey(WorkspaceModel, on_delete=models.CASCADE, null=True, blank=True, default=None)
|
||||
sys_ws = models.ForeignKey(WorkspaceModel, on_delete=models.CASCADE, null=True, blank=True, default=None)
|
||||
|
||||
uuid = models.UUIDField(default=uuid.uuid4, editable=False, unique=True)
|
||||
is_active = models.BooleanField(default=False)
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
# Generated by Django 4.2.1 on 2024-01-22 11:56
|
||||
|
||||
from django.db import migrations, models
|
||||
import uuid
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('jwt_auth', '0064_alter_cuserroleloginopt_uuid'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='cuserroleloginopt',
|
||||
name='uuid',
|
||||
field=models.UUIDField(default=uuid.UUID('986054d5-6c6a-41c8-8038-509a2f770920'), unique=True),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,19 @@
|
||||
# Generated by Django 4.2.1 on 2024-01-22 12:15
|
||||
|
||||
from django.db import migrations, models
|
||||
import uuid
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('jwt_auth', '0065_alter_cuserroleloginopt_uuid'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='cuserroleloginopt',
|
||||
name='uuid',
|
||||
field=models.UUIDField(default=uuid.UUID('584844cb-8111-4a12-867a-3d70e30dcfb6'), unique=True),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,19 @@
|
||||
# Generated by Django 4.2.1 on 2024-01-22 12:18
|
||||
|
||||
from django.db import migrations, models
|
||||
import uuid
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('jwt_auth', '0066_alter_cuserroleloginopt_uuid'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='cuserroleloginopt',
|
||||
name='uuid',
|
||||
field=models.UUIDField(default=uuid.UUID('c7bc67b3-1e7d-401d-bf08-313aeefa7d5a'), unique=True),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,19 @@
|
||||
# Generated by Django 4.2.1 on 2024-01-22 12:27
|
||||
|
||||
from django.db import migrations, models
|
||||
import uuid
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('jwt_auth', '0067_alter_cuserroleloginopt_uuid'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='cuserroleloginopt',
|
||||
name='uuid',
|
||||
field=models.UUIDField(default=uuid.UUID('06719a2e-9a73-40eb-8cb5-0b0c7c84a02a'), unique=True),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,27 @@
|
||||
# Generated by Django 4.2.1 on 2024-01-23 05:00
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import uuid
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('jwt_auth', '0068_alter_cuserroleloginopt_uuid'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='cuserroleloginopt',
|
||||
name='cuser',
|
||||
field=models.ForeignKey(blank=True, default=None, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='cuserroleloginopt',
|
||||
name='uuid',
|
||||
field=models.UUIDField(default=uuid.UUID('a2dc6ce3-baa8-4757-a3d7-5bd2f3536bee'), unique=True),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,19 @@
|
||||
# Generated by Django 4.2.1 on 2024-01-23 05:12
|
||||
|
||||
from django.db import migrations, models
|
||||
import uuid
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('jwt_auth', '0069_cuserroleloginopt_cuser_alter_cuserroleloginopt_uuid'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='cuserroleloginopt',
|
||||
name='uuid',
|
||||
field=models.UUIDField(default=uuid.UUID('962e1abb-3dd5-42dc-a749-7004ed7324cf'), unique=True),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,19 @@
|
||||
# Generated by Django 4.2.1 on 2024-01-23 05:15
|
||||
|
||||
from django.db import migrations, models
|
||||
import uuid
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('jwt_auth', '0070_alter_cuserroleloginopt_uuid'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='cuserroleloginopt',
|
||||
name='uuid',
|
||||
field=models.UUIDField(default=uuid.UUID('7cd27c2c-3ce2-47c1-875d-eb840112f4e9'), unique=True),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,19 @@
|
||||
# Generated by Django 4.2.1 on 2024-01-23 05:15
|
||||
|
||||
from django.db import migrations, models
|
||||
import uuid
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('jwt_auth', '0071_alter_cuserroleloginopt_uuid'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='cuserroleloginopt',
|
||||
name='uuid',
|
||||
field=models.UUIDField(default=uuid.UUID('a3e7aa0d-2516-4035-9b23-943f9e3b992e'), unique=True),
|
||||
),
|
||||
]
|
||||
@@ -20,5 +20,6 @@ class JwtToken(models.Model):
|
||||
|
||||
class CUserRoleLoginOpt(models.Model):
|
||||
cuser_role = models.ForeignKey(CuserRoleModel, on_delete=models.CASCADE)
|
||||
cuser = models.ForeignKey(CUser, null=True, blank=True, default=None, on_delete=models.CASCADE)
|
||||
expire = models.DateTimeField(null=False, blank=False)
|
||||
uuid = models.UUIDField(default=uuid.uuid4(), unique=True, null=False, blank=False)
|
||||
@@ -28,6 +28,7 @@ def login_by_username(username: str, password: str) -> CUserRoleLoginOpt:
|
||||
|
||||
user_role_opt = CUserRoleLoginOpt()
|
||||
user_role_opt.cuser_role = user_role_obj
|
||||
user_role_opt.cuser = user_role_obj.cuser
|
||||
user_role_opt.expire = expire_datetime
|
||||
user_role_opt.uuid = uuid.uuid4()
|
||||
user_role_opt.save()
|
||||
@@ -47,9 +48,7 @@ def login_by_username(username: str, password: str) -> CUserRoleLoginOpt:
|
||||
def login_by_mobile(mobile: int):
|
||||
try:
|
||||
|
||||
exists_cuser_roles = CuserRoleModel.objects.filter(mobile=mobile, mobile_verify=True)
|
||||
if not len(exists_cuser_roles) >= 1:
|
||||
raise exceptions.ValidationError({'error': "mobile not found"})
|
||||
exists_cuser = CUser.objects.get(mobile=mobile)
|
||||
|
||||
random_number = random.randint(100000, 999999)
|
||||
|
||||
@@ -70,7 +69,7 @@ def verify_mobile_and_get_token(mobile: int, opt: int) -> CUserRoleLoginOpt:
|
||||
opt_obj = SmsOptModel.objects.filter(mobile=mobile, opt=opt)[0]
|
||||
|
||||
if opt_obj:
|
||||
cuser_roles = CuserRoleModel.objects.filter(mobile=mobile, mobile_verify=True, is_active=True)
|
||||
cuser_roles = CuserRoleModel.objects.filter(cuser__mobile=mobile, is_active=True)
|
||||
CUserRoleLoginOpt.objects.filter(cuser_role__in=cuser_roles).delete()
|
||||
|
||||
if cuser_roles:
|
||||
@@ -79,6 +78,7 @@ def verify_mobile_and_get_token(mobile: int, opt: int) -> CUserRoleLoginOpt:
|
||||
|
||||
user_role_opt = CUserRoleLoginOpt()
|
||||
user_role_opt.cuser_role = user_role_obj
|
||||
user_role_opt.cuser = user_role_obj.cuser
|
||||
user_role_opt.expire = expire_datetime
|
||||
user_role_opt.uuid = uuid.uuid4()
|
||||
user_role_opt.save()
|
||||
|
||||
+13
-11
@@ -50,12 +50,8 @@ class VerifyMobileAndGetTokenView(APIView):
|
||||
serializer = self.InputSerializer(data=request.data)
|
||||
serializer.is_valid(raise_exception=True)
|
||||
|
||||
print("ok")
|
||||
|
||||
login_opts = verify_mobile_and_get_token(**serializer.validated_data)
|
||||
|
||||
print("ok2")
|
||||
|
||||
response_data = self.OutputSerializer(login_opts, many=True).data
|
||||
|
||||
return Response(response_data)
|
||||
@@ -140,9 +136,12 @@ class CustomTokenObtainPairView(APIView):
|
||||
|
||||
try:
|
||||
user_login_opt = CUserRoleLoginOpt.objects.get(uuid=uuid_opt)
|
||||
user = user_login_opt.cuser_role.cuser
|
||||
user = user_login_opt.cuser
|
||||
cuser_role = user_login_opt.cuser_role
|
||||
|
||||
|
||||
workspace = cuser_role.sys_ws
|
||||
|
||||
if user_login_opt:
|
||||
refresh = RefreshToken.for_user(user)
|
||||
|
||||
@@ -151,15 +150,15 @@ class CustomTokenObtainPairView(APIView):
|
||||
#print(cuser_role.uuid)
|
||||
|
||||
|
||||
try:
|
||||
customerObj = CustomerModel.objects.get(cuser_role__uuid=str(cuser_role.uuid))
|
||||
'''try:
|
||||
#customerObj = CustomerModel.objects.get(cuser_role__uuid=str(cuser_role.uuid))
|
||||
# workspace = customerObj.sys_ws
|
||||
|
||||
#workspace = WorkspaceModel.objects.get(cuser_role_owner__uuid=str(cuser_role.uuid))
|
||||
workspace = cuser_role.sys_ws
|
||||
|
||||
workspace = customerObj.sys_ws
|
||||
except:
|
||||
operator = CustomerResponsibleModel.objects.get(cuser_role=cuser_role)
|
||||
workspace = operator.sys_ws
|
||||
workspace = operator.sys_ws'''
|
||||
|
||||
refresh['workspace_uuid'] = str(workspace.uuid)
|
||||
|
||||
@@ -174,7 +173,10 @@ class CustomTokenObtainPairView(APIView):
|
||||
cuser=user, cuser_role=cuser_role)
|
||||
jwt_db.save()
|
||||
|
||||
CUserRoleLoginOpt.objects.filter(cuser_role__cuser=user).delete()
|
||||
try:
|
||||
CUserRoleLoginOpt.objects.filter(cuser=user).delete()
|
||||
except Exception as exp:
|
||||
pass
|
||||
|
||||
except Exception as exp:
|
||||
return Response({'error': str(exp)})
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 4.2.1 on 2024-01-22 11:56
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('lead', '0019_alter_lead_status'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='lead',
|
||||
name='status',
|
||||
field=models.CharField(blank=True, choices=[('SU', 'OK'), ('UN', 'unknown'), ('FA', 'FAIL')], default='UN', max_length=2, null=True),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 4.2.1 on 2024-01-22 12:15
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('lead', '0020_alter_lead_status'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='lead',
|
||||
name='status',
|
||||
field=models.CharField(blank=True, choices=[('UN', 'unknown'), ('FA', 'FAIL'), ('SU', 'OK')], default='UN', max_length=2, null=True),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 4.2.1 on 2024-01-22 12:18
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('lead', '0021_alter_lead_status'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='lead',
|
||||
name='status',
|
||||
field=models.CharField(blank=True, choices=[('SU', 'OK'), ('UN', 'unknown'), ('FA', 'FAIL')], default='UN', max_length=2, null=True),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 4.2.1 on 2024-01-22 12:27
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('lead', '0022_alter_lead_status'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='lead',
|
||||
name='status',
|
||||
field=models.CharField(blank=True, choices=[('FA', 'FAIL'), ('SU', 'OK'), ('UN', 'unknown')], default='UN', max_length=2, null=True),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 4.2.1 on 2024-01-23 05:00
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('lead', '0023_alter_lead_status'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='lead',
|
||||
name='status',
|
||||
field=models.CharField(blank=True, choices=[('SU', 'OK'), ('UN', 'unknown'), ('FA', 'FAIL')], default='UN', max_length=2, null=True),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 4.2.1 on 2024-01-23 05:12
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('lead', '0024_alter_lead_status'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='lead',
|
||||
name='status',
|
||||
field=models.CharField(blank=True, choices=[('FA', 'FAIL'), ('UN', 'unknown'), ('SU', 'OK')], default='UN', max_length=2, null=True),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 4.2.1 on 2024-01-23 05:15
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('lead', '0025_alter_lead_status'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='lead',
|
||||
name='status',
|
||||
field=models.CharField(blank=True, choices=[('SU', 'OK'), ('FA', 'FAIL'), ('UN', 'unknown')], default='UN', max_length=2, null=True),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 4.2.1 on 2024-01-23 05:15
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('lead', '0026_alter_lead_status'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='lead',
|
||||
name='status',
|
||||
field=models.CharField(blank=True, choices=[('FA', 'FAIL'), ('UN', 'unknown'), ('SU', 'OK')], default='UN', max_length=2, null=True),
|
||||
),
|
||||
]
|
||||
Whitespace-only changes.
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 4.2.1 on 2024-01-22 12:15
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('reminder', '0016_alter_reminder_type'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='reminder',
|
||||
name='type',
|
||||
field=models.CharField(choices=[('UN', 'UNKNOWN'), ('LE', 'LEAD'), ('NO', 'NOTE'), ('CU', 'CUSTOMER')], default='UN', max_length=2),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 4.2.1 on 2024-01-22 12:18
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('reminder', '0017_alter_reminder_type'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='reminder',
|
||||
name='type',
|
||||
field=models.CharField(choices=[('NO', 'NOTE'), ('UN', 'UNKNOWN'), ('CU', 'CUSTOMER'), ('LE', 'LEAD')], default='UN', max_length=2),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 4.2.1 on 2024-01-22 12:27
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('reminder', '0018_alter_reminder_type'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='reminder',
|
||||
name='type',
|
||||
field=models.CharField(choices=[('UN', 'UNKNOWN'), ('NO', 'NOTE'), ('LE', 'LEAD'), ('CU', 'CUSTOMER')], default='UN', max_length=2),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 4.2.1 on 2024-01-23 05:00
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('reminder', '0019_alter_reminder_type'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='reminder',
|
||||
name='type',
|
||||
field=models.CharField(choices=[('CU', 'CUSTOMER'), ('NO', 'NOTE'), ('UN', 'UNKNOWN'), ('LE', 'LEAD')], default='UN', max_length=2),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 4.2.1 on 2024-01-23 05:15
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('reminder', '0020_alter_reminder_type'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='reminder',
|
||||
name='type',
|
||||
field=models.CharField(choices=[('CU', 'CUSTOMER'), ('LE', 'LEAD'), ('UN', 'UNKNOWN'), ('NO', 'NOTE')], default='UN', max_length=2),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 4.2.1 on 2024-01-23 05:15
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('reminder', '0021_alter_reminder_type'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='reminder',
|
||||
name='type',
|
||||
field=models.CharField(choices=[('UN', 'UNKNOWN'), ('NO', 'NOTE'), ('CU', 'CUSTOMER'), ('LE', 'LEAD')], default='UN', max_length=2),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,17 @@
|
||||
# Generated by Django 4.2.1 on 2024-01-22 11:56
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('workspace', '0009_alter_workspace_username'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='workspace',
|
||||
name='cuser_role_owner',
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,17 @@
|
||||
# Generated by Django 4.2.1 on 2024-01-22 12:15
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('workspace', '0010_remove_workspace_cuser_role_owner'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='workspace',
|
||||
name='cuser_owner',
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,21 @@
|
||||
# Generated by Django 4.2.1 on 2024-01-22 12:27
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('workspace', '0011_remove_workspace_cuser_owner'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='workspace',
|
||||
name='cuser_owner',
|
||||
field=models.ForeignKey(blank=True, default=None, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,21 @@
|
||||
# Generated by Django 4.2.1 on 2024-01-23 05:00
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('workspace', '0012_workspace_cuser_owner'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='workspace',
|
||||
name='cuser_owner',
|
||||
field=models.ForeignKey(blank=True, default=None, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL),
|
||||
),
|
||||
]
|
||||
@@ -1,15 +1,17 @@
|
||||
from django.db import models
|
||||
from utils.base_model import BaseModel
|
||||
import uuid
|
||||
from apps.cuser.models import CuserRole as CuserRoleModel
|
||||
from apps.cuser.models import CUser as CUserModel
|
||||
from django.contrib.auth import get_user_model
|
||||
from apps.cuser.cuser_model import CUser
|
||||
# Create your models here.
|
||||
#CUserM2 = get_user_model()
|
||||
|
||||
|
||||
class Workspace(BaseModel):
|
||||
cuser_role_owner = models.OneToOneField(CuserRoleModel, on_delete=models.CASCADE,
|
||||
related_name='workspace', null=True, blank=True)
|
||||
cuser_owner = models.ForeignKey(CUserModel, on_delete=models.CASCADE, null=True, blank=True, default=None)
|
||||
#cuser_role_owner = models.OneToOneField(CuserRoleModel, on_delete=models.CASCADE,
|
||||
# related_name='workspace', null=True, blank=True)
|
||||
|
||||
cuser_owner = models.ForeignKey(CUser, on_delete=models.SET_NULL, null=True, blank=True, default=None)
|
||||
name = models.CharField(max_length=15, null=False, blank=False)
|
||||
username = models.CharField(max_length=30, null=False, blank=False, unique=True)
|
||||
expire = models.DateTimeField(null=True, blank=True)
|
||||
|
||||
Reference in new issue
Block a user