login and auth bug fixed

This commit is contained in:
javad committed 2024-01-23 09:54:38 +03:30
1 parent 89a5d70512
commit 7cd8ff0511
36 files changed
+632 -67

No files matched your search

+23 -2
View File
@@ -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>
+46
View File
@@ -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
View File
@@ -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),
),
]
+1
View File
@@ -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)
+4 -4
View File
@@ -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
View File
@@ -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),
),
]
View File
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),
),
]
+7 -5
View File
@@ -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)