549 lines
21 KiB
Python
549 lines
21 KiB
Python
|
|
import string
|
|||
|
|
import random
|
|||
|
|
from django.contrib.postgres.fields import ArrayField
|
|||
|
|
from django.db import models
|
|||
|
|
from django.contrib.auth.models import User, Group
|
|||
|
|
from django.conf import settings
|
|||
|
|
from datetime import datetime, timezone, time, timedelta
|
|||
|
|
from django.utils import timezone
|
|||
|
|
|
|||
|
|
import uuid
|
|||
|
|
|
|||
|
|
|
|||
|
|
# مدل پایه که تمامی مدل ها در سیستم ازین مدل ارث بری می کنند
|
|||
|
|
from general_urls import base_user_gate_way_id
|
|||
|
|
|
|||
|
|
|
|||
|
|
class BaseModel(models.Model):
|
|||
|
|
key = models.UUIDField(default=uuid.uuid4, editable=False, unique=True)
|
|||
|
|
create_date = models.DateTimeField(auto_now_add=True)
|
|||
|
|
modify_date = models.DateTimeField(auto_now=True)
|
|||
|
|
created_by = models.ForeignKey(
|
|||
|
|
settings.AUTH_USER_MODEL,
|
|||
|
|
related_name="%(class)s_createdby",
|
|||
|
|
on_delete=models.CASCADE,
|
|||
|
|
null=True,
|
|||
|
|
blank=True,
|
|||
|
|
)
|
|||
|
|
modified_by = models.ForeignKey(
|
|||
|
|
settings.AUTH_USER_MODEL,
|
|||
|
|
on_delete=models.CASCADE,
|
|||
|
|
related_name="%(class)s_modifiedby",
|
|||
|
|
null=True,
|
|||
|
|
blank=True,
|
|||
|
|
)
|
|||
|
|
trash = models.BooleanField(default=False)
|
|||
|
|
|
|||
|
|
class Meta:
|
|||
|
|
abstract = True
|
|||
|
|
|
|||
|
|
|
|||
|
|
# مدل استان برای ذخیره استان استفاده میشود
|
|||
|
|
class Province(BaseModel):
|
|||
|
|
name = models.CharField(max_length=200, null=True)
|
|||
|
|
province_id_key = models.IntegerField(null=True)
|
|||
|
|
province_number = models.IntegerField(default=0)
|
|||
|
|
province_name = models.CharField(max_length=100, null=True)
|
|||
|
|
|
|||
|
|
def save(self, *args, **kwargs):
|
|||
|
|
super(Province, self).save(*args, **kwargs)
|
|||
|
|
|
|||
|
|
|
|||
|
|
# مدل شهرستان برای ذخیره شهرستان استفاده میشود
|
|||
|
|
class City(BaseModel):
|
|||
|
|
province = models.ForeignKey(
|
|||
|
|
Province, on_delete=models.CASCADE, related_name="city_province", null=True
|
|||
|
|
)
|
|||
|
|
province_id_foreign_key = models.IntegerField(null=True)
|
|||
|
|
city_id_key = models.IntegerField(null=True)
|
|||
|
|
name = models.CharField(max_length=200, null=True)
|
|||
|
|
product_price = models.FloatField(default=0)
|
|||
|
|
province_center = models.BooleanField(default=False)
|
|||
|
|
city_number = models.IntegerField(default=0)
|
|||
|
|
city_name = models.CharField(max_length=100, null=True)
|
|||
|
|
province_number = models.IntegerField(default=0)
|
|||
|
|
province_name = models.CharField(max_length=100, null=True)
|
|||
|
|
|
|||
|
|
def save(self, *args, **kwargs):
|
|||
|
|
super(City, self).save(*args, **kwargs)
|
|||
|
|
|
|||
|
|
|
|||
|
|
# مدل زیربخش شهرستان برای ذخیره زیربخش شهرستان استفاده میشود
|
|||
|
|
class CityUnit(BaseModel):
|
|||
|
|
city = models.ForeignKey(
|
|||
|
|
City, on_delete=models.CASCADE, related_name="city_province", null=True
|
|||
|
|
)
|
|||
|
|
city_id_foreign_key = models.IntegerField(null=True)
|
|||
|
|
city_unit_id_key = models.IntegerField(null=True)
|
|||
|
|
name = models.CharField(max_length=200, null=True)
|
|||
|
|
city_number = models.IntegerField(default=0)
|
|||
|
|
city_name = models.CharField(max_length=100, null=True)
|
|||
|
|
province_number = models.IntegerField(default=0)
|
|||
|
|
province_name = models.CharField(max_length=100, null=True)
|
|||
|
|
|
|||
|
|
def save(self, *args, **kwargs):
|
|||
|
|
super(CityUnit, self).save(*args, **kwargs)
|
|||
|
|
|
|||
|
|
|
|||
|
|
class PermissionLevel(BaseModel):
|
|||
|
|
role = models.ForeignKey(
|
|||
|
|
Group,
|
|||
|
|
on_delete=models.CASCADE,
|
|||
|
|
null=True,
|
|||
|
|
related_name='group_permission'
|
|||
|
|
)
|
|||
|
|
name = models.CharField(max_length=100, null=True)
|
|||
|
|
|
|||
|
|
def save(self, *args, **kwargs):
|
|||
|
|
super(PermissionLevel, self).save(*args, **kwargs)
|
|||
|
|
|
|||
|
|
|
|||
|
|
# مدل آدرس برای ذخیره آدرس استفاده میشود
|
|||
|
|
class SystemAddress(BaseModel):
|
|||
|
|
province = models.ForeignKey(
|
|||
|
|
Province,
|
|||
|
|
on_delete=models.CASCADE,
|
|||
|
|
related_name="province_address",
|
|||
|
|
null=True
|
|||
|
|
)
|
|||
|
|
city = models.ForeignKey(
|
|||
|
|
City,
|
|||
|
|
on_delete=models.CASCADE,
|
|||
|
|
related_name="city_address",
|
|||
|
|
null=True
|
|||
|
|
)
|
|||
|
|
province_id_foreign_key = models.IntegerField(null=True)
|
|||
|
|
city_id_foreign_key = models.IntegerField(null=True)
|
|||
|
|
address_id_key = models.IntegerField(null=True)
|
|||
|
|
address = models.CharField(max_length=300, null=True)
|
|||
|
|
postal_code = models.CharField(max_length=20, default="", null=True)
|
|||
|
|
breeding_unique_id = models.CharField(max_length=50, null=True)
|
|||
|
|
phone = models.CharField(max_length=20, default="", null=True)
|
|||
|
|
phone_type = models.CharField(max_length=20, default="", null=True)
|
|||
|
|
no = models.CharField(max_length=5, default="", null=True)
|
|||
|
|
floor = models.IntegerField(default=0, null=True)
|
|||
|
|
unit = models.IntegerField(default=0, null=True)
|
|||
|
|
city_number = models.IntegerField(default=0)
|
|||
|
|
city_name = models.CharField(max_length=100, null=True)
|
|||
|
|
province_number = models.IntegerField(default=0)
|
|||
|
|
province_name = models.CharField(max_length=100, null=True)
|
|||
|
|
|
|||
|
|
def save(self, *args, **kwargs):
|
|||
|
|
super(SystemAddress, self).save(*args, **kwargs)
|
|||
|
|
|
|||
|
|
|
|||
|
|
# مدل آدرس برای ذخیره آدرس استفاده میشود
|
|||
|
|
class Address(BaseModel):
|
|||
|
|
title = models.CharField(max_length=200, default="", null=True)
|
|||
|
|
country = models.CharField(max_length=100, default="", null=True)
|
|||
|
|
province = models.CharField(max_length=50, default="", null=True)
|
|||
|
|
city = models.CharField(max_length=50, default="", null=True)
|
|||
|
|
address = models.CharField(max_length=300, null=True)
|
|||
|
|
postal_code = models.CharField(max_length=20, default="", null=True)
|
|||
|
|
breeding_unique_id = models.CharField(max_length=50, null=True)
|
|||
|
|
phone = models.CharField(max_length=20, default="", null=True)
|
|||
|
|
phone_type = models.CharField(max_length=20, default="", null=True)
|
|||
|
|
no = models.CharField(max_length=5, default="", null=True)
|
|||
|
|
floor = models.IntegerField(default=0, null=True)
|
|||
|
|
unit = models.IntegerField(default=0, null=True)
|
|||
|
|
|
|||
|
|
def save(self, *args, **kwargs):
|
|||
|
|
super(Address, self).save(*args, **kwargs)
|
|||
|
|
|
|||
|
|
|
|||
|
|
# مدل اطلاعات بانکی برای ذخیره اطلاعات جساب شخص استفاده میشود
|
|||
|
|
class BankCard(BaseModel):
|
|||
|
|
name_of_bank_user = models.CharField(max_length=200, null=True)
|
|||
|
|
bank_name = models.CharField(max_length=30, null=True)
|
|||
|
|
card = models.CharField(max_length=16, null=True)
|
|||
|
|
shaba = models.CharField(max_length=100, null=True)
|
|||
|
|
account = models.CharField(max_length=50, null=True)
|
|||
|
|
user_bank_id_key = models.IntegerField(null=True)
|
|||
|
|
province_name = models.CharField(max_length=50, null=True)
|
|||
|
|
|
|||
|
|
# state = models.CharField(max_length=30, null=True)
|
|||
|
|
|
|||
|
|
|
|||
|
|
class MultiRole(BaseModel):
|
|||
|
|
user = models.ForeignKey(
|
|||
|
|
User, on_delete=models.CASCADE, related_name="multi_role_users", null=True
|
|||
|
|
)
|
|||
|
|
address = models.ForeignKey(
|
|||
|
|
Address,
|
|||
|
|
on_delete=models.CASCADE,
|
|||
|
|
related_name='multi_role_address',
|
|||
|
|
null=True
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
def save(self, *args, **kwargs):
|
|||
|
|
super(MultiRole, self).save(*args, **kwargs)
|
|||
|
|
|
|||
|
|
|
|||
|
|
# مدل پروفایل کاربری برای ذخیره پروفایل کاربری شخص استفاده میشود
|
|||
|
|
class SystemUserProfile(BaseModel):
|
|||
|
|
token = models.CharField(max_length=36, null=True)
|
|||
|
|
user_gate_way_id = models.CharField(max_length=6,null=True, unique=True)
|
|||
|
|
|
|||
|
|
user = models.ForeignKey(
|
|||
|
|
User, on_delete=models.CASCADE, related_name="system_user_profile_user", null=True
|
|||
|
|
)
|
|||
|
|
province = models.ForeignKey(
|
|||
|
|
Province,
|
|||
|
|
on_delete=models.CASCADE,
|
|||
|
|
related_name='user_province',
|
|||
|
|
null=True
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
city = models.ForeignKey(
|
|||
|
|
City,
|
|||
|
|
on_delete=models.CASCADE,
|
|||
|
|
related_name='user_city',
|
|||
|
|
null=True
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
user_django_id_foreign_key = models.IntegerField(null=True)
|
|||
|
|
province_id_foreign_key = models.IntegerField(null=True)
|
|||
|
|
city_id_foreign_key = models.IntegerField(null=True)
|
|||
|
|
system_user_profile_id_key = models.IntegerField(null=True)
|
|||
|
|
fullname = models.CharField(max_length=150, null=True)
|
|||
|
|
first_name = models.CharField(max_length=200, null=True)
|
|||
|
|
last_name = models.CharField(max_length=200, null=True)
|
|||
|
|
father_name = models.CharField(max_length=200, null=True)
|
|||
|
|
gender = models.CharField(max_length=20, null=True)
|
|||
|
|
is_alive = models.BooleanField(null=True)
|
|||
|
|
national_code = models.CharField(max_length=20, null=True)
|
|||
|
|
national_code_image = models.CharField(max_length=500, null=True)
|
|||
|
|
national_id = models.CharField(max_length=20, null=True)
|
|||
|
|
mobile = models.CharField(max_length=11, null=True)
|
|||
|
|
birthday = models.CharField(max_length=20, null=True)
|
|||
|
|
image = models.CharField(max_length=500, null=True)
|
|||
|
|
password = models.CharField(max_length=100, null=True)
|
|||
|
|
active = models.BooleanField(default=True)
|
|||
|
|
state = models.JSONField(
|
|||
|
|
default={
|
|||
|
|
"province": "",
|
|||
|
|
"city": "",
|
|||
|
|
"first_name": "",
|
|||
|
|
"last_name": "",
|
|||
|
|
"national_code": "",
|
|||
|
|
"national_id": "",
|
|||
|
|
"mobile": "",
|
|||
|
|
"birthday": "",
|
|||
|
|
"image": ""
|
|||
|
|
}
|
|||
|
|
)
|
|||
|
|
access_level = models.ManyToManyField(
|
|||
|
|
PermissionLevel,
|
|||
|
|
related_name="user_permission_level"
|
|||
|
|
)
|
|||
|
|
role = models.ManyToManyField(
|
|||
|
|
Group,
|
|||
|
|
related_name='user_system_roles'
|
|||
|
|
)
|
|||
|
|
base_order = models.BigIntegerField(null=True)
|
|||
|
|
city_number = models.IntegerField(default=0)
|
|||
|
|
city_name = models.CharField(max_length=100, null=True)
|
|||
|
|
province_number = models.IntegerField(default=0)
|
|||
|
|
province_name = models.CharField(max_length=100, null=True)
|
|||
|
|
unit_name = models.CharField(max_length=500, null=True)
|
|||
|
|
unit_national_id = models.CharField(max_length=100, null=True)
|
|||
|
|
unit_registration_number = models.CharField(max_length=100, null=True)
|
|||
|
|
unit_economical_number = models.CharField(max_length=100, null=True)
|
|||
|
|
unit_province = models.CharField(max_length=100, null=True)
|
|||
|
|
unit_city = models.CharField(max_length=100, null=True)
|
|||
|
|
unit_postal_code = models.CharField(max_length=100, null=True)
|
|||
|
|
unit_address = models.TextField(null=True)
|
|||
|
|
pos = models.BooleanField(default=True)
|
|||
|
|
|
|||
|
|
def save(self, *args, **kwargs):
|
|||
|
|
if self.user_gate_way_id is None:
|
|||
|
|
while (True):
|
|||
|
|
res = ''.join(random.choices(string.ascii_lowercase + string.digits, k=5))
|
|||
|
|
res = base_user_gate_way_id + res
|
|||
|
|
if not SystemUserProfile.objects.filter(user_gate_way_id=res).exists():
|
|||
|
|
break
|
|||
|
|
self.user_gate_way_id=res
|
|||
|
|
super(SystemUserProfile, self).save(*args, **kwargs)
|
|||
|
|
|
|||
|
|
|
|||
|
|
# مدل پروفایل کاربری برای ذخیره پروفایل کاربری شخص استفاده میشود
|
|||
|
|
class UserProfile(BaseModel):
|
|||
|
|
key = models.UUIDField(default=uuid.uuid4, editable=True, null=True)
|
|||
|
|
token = models.CharField(max_length=36, default="")
|
|||
|
|
app_token = models.CharField(max_length=36, null=True)
|
|||
|
|
user = models.ForeignKey(
|
|||
|
|
User, on_delete=models.CASCADE, related_name="users", null=True
|
|||
|
|
)
|
|||
|
|
company = models.CharField(max_length=30, null=True)
|
|||
|
|
address = models.ForeignKey(
|
|||
|
|
Address,
|
|||
|
|
on_delete=models.CASCADE,
|
|||
|
|
related_name='user_address',
|
|||
|
|
null=True
|
|||
|
|
)
|
|||
|
|
role = models.ForeignKey(
|
|||
|
|
Group,
|
|||
|
|
on_delete=models.CASCADE,
|
|||
|
|
null=True,
|
|||
|
|
related_name='user_role'
|
|||
|
|
)
|
|||
|
|
user_bank_info = models.ForeignKey(
|
|||
|
|
BankCard,
|
|||
|
|
on_delete=models.CASCADE,
|
|||
|
|
related_name="bank_user",
|
|||
|
|
null=True
|
|||
|
|
)
|
|||
|
|
fullname = models.CharField(max_length=150, null=True, default="")
|
|||
|
|
first_name = models.CharField(max_length=200, null=True, default="")
|
|||
|
|
last_name = models.CharField(max_length=200, null=True, default="")
|
|||
|
|
natinal_id = models.CharField(max_length=10, null=True, default="")
|
|||
|
|
mobile = models.CharField(max_length=11, null=True, default="")
|
|||
|
|
birthday = models.CharField(max_length=20, null=True, default="")
|
|||
|
|
image = models.CharField(max_length=500, null=True)
|
|||
|
|
state = models.CharField(max_length=20, default="register")
|
|||
|
|
unit_name = models.CharField(max_length=100, null=True)
|
|||
|
|
password = models.CharField(max_length=100, null=True)
|
|||
|
|
gis_code = models.CharField(max_length=30, null=True)
|
|||
|
|
operating_licence_capacity = models.BigIntegerField(default=0)
|
|||
|
|
number_of_halls = models.IntegerField(default=0)
|
|||
|
|
tenant = models.BooleanField(null=True)
|
|||
|
|
person_type = models.CharField(max_length=10, null=True)
|
|||
|
|
economic_code = models.CharField(max_length=30, null=True)
|
|||
|
|
system_code = models.CharField(max_length=20, null=True)
|
|||
|
|
epidemiological_code = models.CharField(max_length=20, null=True)
|
|||
|
|
breeding_unique_id = models.CharField(max_length=20, null=True)
|
|||
|
|
total_capacity = models.BigIntegerField(default=0)
|
|||
|
|
licence_number = models.CharField(max_length=20, null=True)
|
|||
|
|
health_certificate_number = models.CharField(max_length=20, null=True)
|
|||
|
|
number_of_requests = models.BigIntegerField(default=0)
|
|||
|
|
hatching_date = models.DateTimeField(default=timezone.now())
|
|||
|
|
last_party_date = models.DateTimeField(default=timezone.now())
|
|||
|
|
number_of_incubators = models.BigIntegerField(default=0)
|
|||
|
|
herd_age_by_day = models.IntegerField(default=0)
|
|||
|
|
herd_age_by_week = models.IntegerField(default=0)
|
|||
|
|
number_of_party = models.IntegerField(default=0)
|
|||
|
|
communication_type = models.CharField(max_length=30, null=True)
|
|||
|
|
cooperative = models.CharField(max_length=50, null=True)
|
|||
|
|
date_of_register = models.DateTimeField(default=timezone.now())
|
|||
|
|
unit_status = models.CharField(max_length=20, null=True)
|
|||
|
|
samasat_user_code = models.CharField(max_length=20, null=True)
|
|||
|
|
base_order = models.BigIntegerField(null=True)
|
|||
|
|
incubation_date = models.DateTimeField(null=True)
|
|||
|
|
|
|||
|
|
def save(self, *args, **kwargs):
|
|||
|
|
# if self.first_name != None and self.last_name != None:
|
|||
|
|
# self.fullname = self.first_name + " " + self.last_name
|
|||
|
|
super(UserProfile, self).save(*args, **kwargs)
|
|||
|
|
|
|||
|
|
|
|||
|
|
# مدل نقاط جغرافیایی برای ذخیره نقاط طولی و عرضی آدرس استفاده میشود
|
|||
|
|
class GeoPoint(BaseModel):
|
|||
|
|
userprofile = models.ForeignKey(
|
|||
|
|
UserProfile,
|
|||
|
|
on_delete=models.CASCADE,
|
|||
|
|
related_name="geo_user",
|
|||
|
|
null=True
|
|||
|
|
)
|
|||
|
|
name = models.CharField(max_length=100, null=True)
|
|||
|
|
lang = models.CharField(max_length=50, null=True)
|
|||
|
|
lat = models.CharField(max_length=50, null=True)
|
|||
|
|
|
|||
|
|
|
|||
|
|
class Tenant(BaseModel):
|
|||
|
|
userprofile = models.ManyToManyField(
|
|||
|
|
UserProfile,
|
|||
|
|
related_name="tenant_user",
|
|||
|
|
)
|
|||
|
|
fullname = models.CharField(max_length=50, null=True)
|
|||
|
|
national_code = models.CharField(max_length=20, null=True)
|
|||
|
|
birthday = models.CharField(max_length=50, null=True)
|
|||
|
|
rental = models.CharField(max_length=30, null=True)
|
|||
|
|
tracking_code = models.CharField(max_length=30, null=True)
|
|||
|
|
rent_date_from = models.CharField(max_length=30, null=True)
|
|||
|
|
rent_date_to = models.CharField(max_length=30, null=True)
|
|||
|
|
|
|||
|
|
|
|||
|
|
class UserMessageType(BaseModel):
|
|||
|
|
message_types = (
|
|||
|
|
("user", "USER"),
|
|||
|
|
("alluser", "AllUSER"),
|
|||
|
|
("group", "GROUP"),
|
|||
|
|
("allgroup", "AllGROUP"),
|
|||
|
|
("usergroup", "UserGroup"),
|
|||
|
|
("province_accept", "ProvinceAccept"),
|
|||
|
|
("province_rejected", "ProvinceRejected"),
|
|||
|
|
("city_operator_accept", "CityOperatorAccept"),
|
|||
|
|
("city_operator_rejected", "CityOperatorRejected"),
|
|||
|
|
("assignment_accepted", "AssignmentAccepted"),
|
|||
|
|
("assignment_rejected", "AssignmentRejected"),
|
|||
|
|
)
|
|||
|
|
name = models.CharField(choices=message_types, max_length=50, default="", null=True)
|
|||
|
|
|
|||
|
|
def __str__(self) -> str:
|
|||
|
|
return self.name
|
|||
|
|
|
|||
|
|
def save(self, *args, **kwargs):
|
|||
|
|
super(UserMessageType, self).save(*args, **kwargs)
|
|||
|
|
|
|||
|
|
pass
|
|||
|
|
|
|||
|
|
|
|||
|
|
# مدل پیام کاربر برای ذخیره پیام کاربر استفاده میشود
|
|||
|
|
class UserMessage(BaseModel):
|
|||
|
|
roles = models.ManyToManyField(
|
|||
|
|
Group,
|
|||
|
|
blank=True,
|
|||
|
|
related_name="user_roles"
|
|||
|
|
)
|
|||
|
|
users = models.ManyToManyField(
|
|||
|
|
SystemUserProfile,
|
|||
|
|
blank=True,
|
|||
|
|
related_name="user_message"
|
|||
|
|
)
|
|||
|
|
sender = models.ForeignKey(
|
|||
|
|
SystemUserProfile,
|
|||
|
|
on_delete=models.CASCADE,
|
|||
|
|
related_name="message_sender",
|
|||
|
|
null=True
|
|||
|
|
)
|
|||
|
|
heading = models.CharField(max_length=100, null=True, default="")
|
|||
|
|
message = models.TextField(max_length=500, null=True, default="")
|
|||
|
|
link_text = models.CharField(max_length=150, null=True)
|
|||
|
|
link = models.CharField(max_length=100, null=True)
|
|||
|
|
image = models.JSONField(default=dict, null=True)
|
|||
|
|
expire = models.DateTimeField(default=datetime.now() + timedelta(hours=1))
|
|||
|
|
time = models.DateTimeField(default=datetime.now())
|
|||
|
|
state = models.CharField(max_length=20, default="pending")
|
|||
|
|
message_type = models.ForeignKey(
|
|||
|
|
UserMessageType,
|
|||
|
|
on_delete=models.CASCADE,
|
|||
|
|
null=True,
|
|||
|
|
related_name="message_type"
|
|||
|
|
)
|
|||
|
|
message_level = models.CharField(max_length=50, null=True)
|
|||
|
|
|
|||
|
|
def save(self, *args, **kwargs):
|
|||
|
|
super(UserMessage, self).save(*args, **kwargs)
|
|||
|
|
|
|||
|
|
|
|||
|
|
class SendingMessageMethod(BaseModel):
|
|||
|
|
level = models.CharField(max_length=50, null=True)
|
|||
|
|
methods = models.CharField(max_length=150, null=True)
|
|||
|
|
|
|||
|
|
def save(self, *args, **kwargs):
|
|||
|
|
super(SendingMessageMethod, self).save(*args, **kwargs)
|
|||
|
|
|
|||
|
|
|
|||
|
|
class Log(BaseModel):
|
|||
|
|
user = models.ForeignKey(
|
|||
|
|
User, on_delete=models.CASCADE, related_name="log_user", null=True
|
|||
|
|
)
|
|||
|
|
function_name = models.CharField(max_length=200, null=True)
|
|||
|
|
duration = models.FloatField(null=True)
|
|||
|
|
status = models.IntegerField(null=True)
|
|||
|
|
response = models.TextField(null=True)
|
|||
|
|
request = models.TextField(null=True)
|
|||
|
|
request_body = models.TextField(null=True)
|
|||
|
|
response_body = models.TextField(null=True)
|
|||
|
|
|
|||
|
|
def save(self, *args, **kwargs):
|
|||
|
|
super(Log, self).save(*args, **kwargs)
|
|||
|
|
|
|||
|
|
|
|||
|
|
class ExternalTransaction(BaseModel):
|
|||
|
|
date = models.DateTimeField(auto_now_add=True)
|
|||
|
|
amount = models.BigIntegerField(default=0)
|
|||
|
|
amount_with_tax = models.BigIntegerField(default=0)
|
|||
|
|
status = models.CharField(max_length=100, default='pending')
|
|||
|
|
transaction_type = models.CharField(max_length=100, null=True)
|
|||
|
|
type = models.CharField(max_length=100, null=True)
|
|||
|
|
payer = models.CharField(max_length=100, null=True)
|
|||
|
|
description = models.CharField(max_length=200, default=False)
|
|||
|
|
is_complete = models.BooleanField(default=False)
|
|||
|
|
message = models.TextField(null=True)
|
|||
|
|
saleReferenceId = models.CharField(max_length=100, null=True)
|
|||
|
|
refId = models.CharField(max_length=100, null=True)
|
|||
|
|
orderId = models.CharField(max_length=100, null=True)
|
|||
|
|
cardHolderPan = models.CharField(max_length=100, null=True)
|
|||
|
|
receiver_role = models.CharField(max_length=100, null=True)
|
|||
|
|
creator_role = models.CharField(max_length=100, null=True)
|
|||
|
|
kill_house_user = models.ForeignKey(
|
|||
|
|
SystemUserProfile,
|
|||
|
|
on_delete=models.CASCADE,
|
|||
|
|
null=True,
|
|||
|
|
related_name="transaction_kill_house_user"
|
|||
|
|
)
|
|||
|
|
chain_company_user = models.ForeignKey(
|
|||
|
|
SystemUserProfile,
|
|||
|
|
on_delete=models.CASCADE,
|
|||
|
|
null=True,
|
|||
|
|
related_name="transaction_chain_company_user"
|
|||
|
|
)
|
|||
|
|
receiver = models.ForeignKey(
|
|||
|
|
SystemUserProfile,
|
|||
|
|
on_delete=models.CASCADE,
|
|||
|
|
null=True,
|
|||
|
|
related_name="receiver_user"
|
|||
|
|
)
|
|||
|
|
creator = models.ForeignKey(
|
|||
|
|
SystemUserProfile,
|
|||
|
|
on_delete=models.CASCADE,
|
|||
|
|
null=True,
|
|||
|
|
related_name="creator_user"
|
|||
|
|
)
|
|||
|
|
union_share = models.BigIntegerField(default=0)
|
|||
|
|
company_share = models.BigIntegerField(default=0)
|
|||
|
|
guilds_share = models.BigIntegerField(default=0)
|
|||
|
|
city_share = models.BigIntegerField(default=0)
|
|||
|
|
wallet_share = models.BigIntegerField(default=0)
|
|||
|
|
other_share = models.BigIntegerField(default=0)
|
|||
|
|
pay_type = models.CharField(max_length=200, null=True)
|
|||
|
|
temporary_trash = models.BooleanField(default=False)
|
|||
|
|
temporary_deleted = models.BooleanField(default=False)
|
|||
|
|
|
|||
|
|
|
|||
|
|
def save(self, *args, **kwargs):
|
|||
|
|
super(ExternalTransaction, self).save(*args, **kwargs)
|
|||
|
|
|
|||
|
|
|
|||
|
|
class UserMessageSend(BaseModel):
|
|||
|
|
user = models.ForeignKey(SystemUserProfile, on_delete=models.CASCADE, null=True)
|
|||
|
|
message = models.TextField(null=True)
|
|||
|
|
receive_code = models.CharField(max_length=400, null=True)
|
|||
|
|
|
|||
|
|
def save(self, *args, **kwargs):
|
|||
|
|
super(UserMessageSend, self).save(*args, **kwargs)
|
|||
|
|
|
|||
|
|
|
|||
|
|
class Notice(BaseModel):
|
|||
|
|
title = models.CharField(max_length=1000, null=True)
|
|||
|
|
text = models.TextField(null=True)
|
|||
|
|
users = models.JSONField(null=True)
|
|||
|
|
read_users = models.JSONField(null=True)
|
|||
|
|
unread_users = models.JSONField(null=True)
|
|||
|
|
images = models.JSONField(null=True)
|
|||
|
|
roles = models.JSONField(null=True)
|
|||
|
|
|
|||
|
|
def save(self, *args, **kwargs):
|
|||
|
|
super(Notice, self).save(*args, **kwargs)
|
|||
|
|
|
|||
|
|
|
|||
|
|
class UserNoticeInfo(BaseModel):
|
|||
|
|
notice = models.ForeignKey(
|
|||
|
|
Notice,
|
|||
|
|
related_name="user_notice",
|
|||
|
|
|
|||
|
|
on_delete=models.CASCADE,
|
|||
|
|
null=True
|
|||
|
|
)
|
|||
|
|
user = models.ForeignKey(
|
|||
|
|
SystemUserProfile,
|
|||
|
|
related_name="notice_users",
|
|||
|
|
on_delete=models.CASCADE,
|
|||
|
|
null=True
|
|||
|
|
)
|
|||
|
|
seen = models.BooleanField(default=False)
|
|||
|
|
|
|||
|
|
def save(self, *args, **kwargs):
|
|||
|
|
super(UserNoticeInfo, self).save(*args, **kwargs)
|