This commit is contained in:
anhduy-tech
2026-03-06 09:51:53 +07:00
parent 39aea8784e
commit 3ece124848
487 changed files with 1851 additions and 108460 deletions

Binary file not shown.

View File

@@ -21,7 +21,7 @@ BASE_DIR = Path(__file__).resolve().parent.parent
SECRET_KEY = 'django-insecure-_u202k$8qq2p*cr_eo(7k!0ngr5^n)27@85+5oy8&41(u6&j54' SECRET_KEY = 'django-insecure-_u202k$8qq2p*cr_eo(7k!0ngr5^n)27@85+5oy8&41(u6&j54'
# SECURITY WARNING: don't run with debug turned on in production! # SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False DEBUG = True
ALLOWED_HOSTS = ['*'] ALLOWED_HOSTS = ['*']
@@ -42,13 +42,11 @@ INSTALLED_APPS = [
] ]
MIDDLEWARE = [ MIDDLEWARE = [
# 'app.middleware.BlockUnauthorizedOriginsMiddleware',
'django.middleware.security.SecurityMiddleware', 'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware', 'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware', 'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware',
'app.middleware.CurrentUserMiddleware', # Add CurrentUserMiddleware
'django.contrib.messages.middleware.MessageMiddleware', 'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware',
'corsheaders.middleware.CorsMiddleware' 'corsheaders.middleware.CorsMiddleware'
@@ -81,15 +79,15 @@ ASGI_APPLICATION = 'api.asgi.application'
# https://docs.djangoproject.com/en/4.1/ref/settings/#databases # https://docs.djangoproject.com/en/4.1/ref/settings/#databases
#prod:5.223.52.193 dev:5.223.42.146 #prod:5.223.52.193 dev:5.223.42.146
MODE = 'prod' MODE = 'dev'
DBHOST = '172.17.0.1' if MODE == 'prod' else '5.223.42.146' DBHOST = '138.199.203.34' if MODE == 'prod' else '138.199.203.34'
DATABASES = { DATABASES = {
'default': { 'default': {
'ENGINE': 'django_db_geventpool.backends.postgresql_psycopg3', # Hoặc psycopg3/postgis 'ENGINE': 'django_db_geventpool.backends.postgresql_psycopg3', # Hoặc psycopg3/postgis
'NAME': 'utopia', 'NAME': 'erp_db',
'USER': 'postgres', 'USER': 'postgres',
'PASSWORD': 'W7VVBUnqDRy7OVkWfdTB4fS0HQ1615', 'PASSWORD': '0q6XiMhNuHOQM1cBOQUu9NWkVeT8dz',
'HOST': DBHOST, 'HOST': DBHOST,
'PORT': '5423', 'PORT': '5423',
'CONN_MAX_AGE': 0, # Tắt persistent connection mặc định của Django 'CONN_MAX_AGE': 0, # Tắt persistent connection mặc định của Django

Binary file not shown.

Binary file not shown.

View File

@@ -6,19 +6,5 @@ class AppConfig(AppConfig):
name = 'app' name = 'app'
def ready(self): def ready(self):
import app.workflow_actions
from . import signals from . import signals
signals.connect_signals() signals.connect_signals()
# Sử dụng cache.add() của Django để tạo lock, đảm bảo chỉ một worker khởi động scheduler
try:
from django.core.cache import cache
# cache.add() là atomic, chỉ trả về True nếu key được tạo thành công
if cache.add("scheduler_lock", "locked", timeout=65):
from . import scheduler
scheduler.start()
print("Scheduler started by this worker.")
else:
print("Scheduler lock already held by another worker.")
except Exception as e:
print(f"Failed to start or check scheduler lock: {e}")

View File

@@ -1,67 +0,0 @@
from urllib.parse import urlparse
from django.http import JsonResponse
import threading
_thread_locals = threading.local()
def get_current_user():
"""
Retrieves the current user from thread-local storage.
"""
return getattr(_thread_locals, 'user', None)
class CurrentUserMiddleware:
"""
Middleware to store the current user in thread-local storage.
"""
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
# Store the user in thread-local storage
_thread_locals.user = request.user if hasattr(request, 'user') and request.user.is_authenticated else None
response = self.get_response(request)
# Clean up the thread-local storage after the request is finished
if hasattr(_thread_locals, 'user'):
del _thread_locals.user
return response
ALLOWED_ORIGINS = [
"http://localhost:3000",
"https://biz.utopia.com.vn",
"https://datamodel.bigdatatech.vn"
]
ALLOWED_DOMAIN_SUFFIXES = [
".utopia.com.vn"
]
ALLOWED_HOST = [
"localhost:8000",
"api.utopia.com.vn",
"dev.api.utopia.com.vn"
]
class BlockUnauthorizedOriginsMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
origin = request.headers.get("Origin")
host = request.get_host()
if origin:
parsed = urlparse(origin)
domain = parsed.hostname
if origin not in ALLOWED_ORIGINS and not any(
domain.endswith(suffix) for suffix in ALLOWED_DOMAIN_SUFFIXES
):
return JsonResponse({"detail": "Forbidden origin"}, status=4.3)
if not origin and host not in ALLOWED_HOST:
return JsonResponse({"detail": "Direct access not allowed"}, status=403)
return self.get_response(request)

File diff suppressed because it is too large Load Diff

View File

@@ -1,66 +0,0 @@
# Generated by Django 4.1.3 on 2022-11-12 07:52
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('app', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='customer',
name='avatar',
field=models.CharField(max_length=200, null=True),
),
migrations.AddField(
model_name='customer',
name='fullname',
field=models.CharField(default='xxx', max_length=50),
preserve_default=False,
),
migrations.AlterField(
model_name='customer',
name='dob',
field=models.DateField(null=True),
),
migrations.AlterField(
model_name='customer',
name='issued_date',
field=models.DateField(null=True),
),
migrations.AlterField(
model_name='customer',
name='issued_place',
field=models.CharField(max_length=200, null=True),
),
migrations.AlterField(
model_name='customer',
name='legal_id',
field=models.CharField(max_length=20, null=True),
),
migrations.AlterField(
model_name='customer',
name='legal_type',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.legal_type'),
),
migrations.AlterField(
model_name='customer',
name='location',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.location'),
),
migrations.AlterField(
model_name='customer',
name='phone',
field=models.CharField(default='xxx', max_length=20),
preserve_default=False,
),
migrations.AlterField(
model_name='customer',
name='sex',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.sex'),
),
]

View File

@@ -1,135 +0,0 @@
# Generated by Django 4.1.3 on 2022-11-12 23:21
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('app', '0002_customer_avatar_customer_fullname_alter_customer_dob_and_more'),
]
operations = [
migrations.CreateModel(
name='Aseet_Type',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('code', models.CharField(max_length=30, unique=True)),
('name', models.CharField(max_length=200, null=True)),
('detail', models.TextField()),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
],
options={
'db_table': 'asset_type',
},
),
migrations.CreateModel(
name='Debt_Group',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('code', models.CharField(max_length=30, unique=True)),
('name', models.CharField(max_length=200, null=True)),
('detail', models.TextField()),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
],
options={
'db_table': 'debt_group',
},
),
migrations.CreateModel(
name='Loan',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('valid_from', models.DateField()),
('valid_to', models.DateField(null=True)),
('disbursement', models.FloatField()),
('principal', models.FloatField()),
('interest', models.FloatField()),
('accrued_period', models.FloatField()),
('outstanding', models.FloatField()),
('last_cal_itr', models.DateField(null=True)),
('last_pay_itr', models.FloatField(null=True)),
('last_pay_pcp', models.FloatField(null=True)),
('interest_collected', models.FloatField()),
('principal_collected', models.FloatField()),
('interest_overdue', models.IntegerField()),
('principal_overdue', models.IntegerField()),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
('update_time', models.DateTimeField(null=True)),
('approver', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user')),
('creator', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user')),
('customer', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.customer')),
],
options={
'db_table': 'loan',
},
),
migrations.CreateModel(
name='Loan_Product',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('code', models.CharField(max_length=30, unique=True)),
('name', models.CharField(max_length=200, null=True)),
('detail', models.TextField()),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
],
options={
'db_table': 'loan_product',
},
),
migrations.CreateModel(
name='Loan_Type',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('code', models.CharField(max_length=30, unique=True)),
('name', models.CharField(max_length=200, null=True)),
('detail', models.TextField()),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
],
options={
'db_table': 'loan_type',
},
),
migrations.CreateModel(
name='Loan_Schedule',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('pay_date', models.DateField(null=True)),
('pay_amount', models.DateField(null=True)),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
('update_time', models.DateTimeField(null=True)),
('loan', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.loan')),
('payment_type', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.payment_type')),
('updater', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user')),
],
options={
'db_table': 'loan_schedule',
},
),
migrations.CreateModel(
name='Loan_Payment',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('pay_date', models.DateField(null=True)),
('pay_amount', models.DateField(null=True)),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
('update_time', models.DateTimeField(null=True)),
('loan', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.loan')),
('updater', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user')),
],
options={
'db_table': 'loan_payment',
},
),
migrations.AddField(
model_name='loan',
name='product',
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.loan_product'),
),
migrations.AddField(
model_name='loan',
name='updater',
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user'),
),
]

View File

@@ -1,44 +0,0 @@
# Generated by Django 4.1.3 on 2022-11-13 04:20
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('app', '0003_aseet_type_debt_group_loan_loan_product_loan_type_and_more'),
]
operations = [
migrations.CreateModel(
name='Interest_Base',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('code', models.CharField(max_length=30, unique=True)),
('name', models.CharField(max_length=200, null=True)),
('detail', models.TextField()),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
],
options={
'db_table': 'interest_base',
},
),
migrations.AddField(
model_name='loan_product',
name='interest',
field=models.FloatField(default=1),
preserve_default=False,
),
migrations.AddField(
model_name='loan_product',
name='principal',
field=models.FloatField(default=1),
preserve_default=False,
),
migrations.AddField(
model_name='loan_product',
name='rate',
field=models.FloatField(default=1),
preserve_default=False,
),
]

View File

@@ -1,25 +0,0 @@
# Generated by Django 4.1.3 on 2022-12-10 07:59
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('app', '0004_interest_base_loan_product_interest_and_more'),
]
operations = [
migrations.CreateModel(
name='Story_Category',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('code', models.CharField(max_length=30, unique=True)),
('name', models.CharField(max_length=100)),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
],
options={
'db_table': 'story_category',
},
),
]

View File

@@ -1,24 +0,0 @@
# Generated by Django 4.1.3 on 2022-12-10 08:01
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('app', '0005_story_category'),
]
operations = [
migrations.AddField(
model_name='data_story',
name='category',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.story_category'),
),
migrations.AddField(
model_name='data_story',
name='image',
field=models.TextField(null=True),
),
]

View File

@@ -1,18 +0,0 @@
# Generated by Django 4.1.3 on 2022-12-10 09:03
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('app', '0006_data_story_category_data_story_image'),
]
operations = [
migrations.AddField(
model_name='data_story',
name='subtitle',
field=models.CharField(max_length=400, null=True),
),
]

View File

@@ -1,70 +0,0 @@
# Generated by Django 4.1.3 on 2022-12-14 15:08
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('app', '0007_data_story_subtitle'),
]
operations = [
migrations.CreateModel(
name='Request',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('fullname', models.CharField(max_length=50)),
('contact', models.CharField(max_length=50)),
('company', models.CharField(max_length=200, null=True)),
('address', models.CharField(max_length=200, null=True)),
('content', models.TextField()),
('detail', models.TextField()),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
('update_time', models.DateTimeField(null=True)),
],
options={
'db_table': 'request',
},
),
migrations.RemoveField(
model_name='advisory',
name='consultant',
),
migrations.RemoveField(
model_name='advisory',
name='order',
),
migrations.RemoveField(
model_name='advisory',
name='result',
),
migrations.RemoveField(
model_name='advisory',
name='user',
),
migrations.RemoveField(
model_name='remittent',
name='bank_account',
),
migrations.RemoveField(
model_name='remittent',
name='order',
),
migrations.RemoveField(
model_name='remittent',
name='sender_bank',
),
migrations.DeleteModel(
name='Activation',
),
migrations.DeleteModel(
name='Advisory',
),
migrations.DeleteModel(
name='Advisory_Result',
),
migrations.DeleteModel(
name='Remittent',
),
]

View File

@@ -1,18 +0,0 @@
# Generated by Django 4.1.3 on 2022-12-14 15:16
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('app', '0008_request_remove_advisory_consultant_and_more'),
]
operations = [
migrations.AlterField(
model_name='request',
name='detail',
field=models.TextField(null=True),
),
]

View File

@@ -1,486 +0,0 @@
# Generated by Django 4.1.3 on 2022-12-16 15:38
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('app', '0009_alter_request_detail'),
]
operations = [
migrations.DeleteModel(
name='Aseet_Type',
),
migrations.RemoveField(
model_name='bank_account',
name='bank',
),
migrations.AlterUniqueTogether(
name='comment_like',
unique_together=None,
),
migrations.RemoveField(
model_name='comment_like',
name='comment',
),
migrations.RemoveField(
model_name='comment_like',
name='type',
),
migrations.RemoveField(
model_name='comment_like',
name='user',
),
migrations.RemoveField(
model_name='company_comment',
name='creator',
),
migrations.RemoveField(
model_name='company_comment',
name='delete_reason',
),
migrations.RemoveField(
model_name='company_comment',
name='topic',
),
migrations.RemoveField(
model_name='company_comment',
name='updater',
),
migrations.RemoveField(
model_name='company_note',
name='creator',
),
migrations.RemoveField(
model_name='company_note',
name='delete_reason',
),
migrations.RemoveField(
model_name='company_note',
name='topic',
),
migrations.RemoveField(
model_name='condition',
name='user',
),
migrations.RemoveField(
model_name='customer',
name='legal_type',
),
migrations.RemoveField(
model_name='customer',
name='location',
),
migrations.RemoveField(
model_name='customer',
name='sex',
),
migrations.DeleteModel(
name='Debt_Group',
),
migrations.RemoveField(
model_name='discussion',
name='creator',
),
migrations.RemoveField(
model_name='discussion',
name='delete_reason',
),
migrations.RemoveField(
model_name='discussion',
name='topic',
),
migrations.RemoveField(
model_name='discussion',
name='updater',
),
migrations.RemoveField(
model_name='draft_setting',
name='classify',
),
migrations.RemoveField(
model_name='draft_setting',
name='type',
),
migrations.RemoveField(
model_name='draft_setting',
name='user',
),
migrations.RemoveField(
model_name='employee',
name='academic_level',
),
migrations.RemoveField(
model_name='employee',
name='approve_status',
),
migrations.RemoveField(
model_name='employee',
name='legal_type',
),
migrations.RemoveField(
model_name='employee',
name='location',
),
migrations.RemoveField(
model_name='employee',
name='position',
),
migrations.RemoveField(
model_name='employee',
name='role',
),
migrations.RemoveField(
model_name='employee',
name='sex',
),
migrations.RemoveField(
model_name='employee',
name='user',
),
migrations.RemoveField(
model_name='employee',
name='work_status',
),
migrations.RemoveField(
model_name='feedback',
name='handler',
),
migrations.RemoveField(
model_name='feedback',
name='status',
),
migrations.RemoveField(
model_name='feedback',
name='updater',
),
migrations.RemoveField(
model_name='feedback',
name='user',
),
migrations.AlterUniqueTogether(
name='group',
unique_together=None,
),
migrations.RemoveField(
model_name='group',
name='creator',
),
migrations.DeleteModel(
name='Interest_Base',
),
migrations.DeleteModel(
name='Language',
),
migrations.DeleteModel(
name='Live_Hismsg',
),
migrations.DeleteModel(
name='Live_Item',
),
migrations.DeleteModel(
name='Live_Message',
),
migrations.RemoveField(
model_name='loan',
name='approver',
),
migrations.RemoveField(
model_name='loan',
name='creator',
),
migrations.RemoveField(
model_name='loan',
name='customer',
),
migrations.RemoveField(
model_name='loan',
name='product',
),
migrations.RemoveField(
model_name='loan',
name='updater',
),
migrations.RemoveField(
model_name='loan_payment',
name='loan',
),
migrations.RemoveField(
model_name='loan_payment',
name='updater',
),
migrations.RemoveField(
model_name='loan_schedule',
name='loan',
),
migrations.RemoveField(
model_name='loan_schedule',
name='payment_type',
),
migrations.RemoveField(
model_name='loan_schedule',
name='updater',
),
migrations.DeleteModel(
name='Loan_Type',
),
migrations.RemoveField(
model_name='order',
name='accountant',
),
migrations.RemoveField(
model_name='order',
name='buyer',
),
migrations.RemoveField(
model_name='order',
name='cashier',
),
migrations.RemoveField(
model_name='order',
name='duration',
),
migrations.RemoveField(
model_name='order',
name='package',
),
migrations.RemoveField(
model_name='order',
name='payment_status',
),
migrations.RemoveField(
model_name='order',
name='payment_type',
),
migrations.RemoveField(
model_name='order',
name='supporter',
),
migrations.RemoveField(
model_name='order',
name='updater',
),
migrations.AlterUniqueTogether(
name='package_feature',
unique_together=None,
),
migrations.RemoveField(
model_name='package_feature',
name='feature',
),
migrations.RemoveField(
model_name='package_feature',
name='package',
),
migrations.RemoveField(
model_name='performance_register',
name='setting',
),
migrations.RemoveField(
model_name='performance_register',
name='status',
),
migrations.RemoveField(
model_name='performance_register',
name='user',
),
migrations.RemoveField(
model_name='private_story',
name='user',
),
migrations.AlterUniqueTogether(
name='role_right',
unique_together=None,
),
migrations.RemoveField(
model_name='role_right',
name='right',
),
migrations.RemoveField(
model_name='role_right',
name='role',
),
migrations.RemoveField(
model_name='setting_comment',
name='creator',
),
migrations.RemoveField(
model_name='setting_comment',
name='delete_reason',
),
migrations.RemoveField(
model_name='setting_comment',
name='setting',
),
migrations.RemoveField(
model_name='setting_comment',
name='updater',
),
migrations.AlterUniqueTogether(
name='setting_like',
unique_together=None,
),
migrations.RemoveField(
model_name='setting_like',
name='comment',
),
migrations.RemoveField(
model_name='setting_like',
name='type',
),
migrations.RemoveField(
model_name='setting_like',
name='user',
),
migrations.RemoveField(
model_name='setting_note',
name='creator',
),
migrations.RemoveField(
model_name='setting_note',
name='delete_reason',
),
migrations.RemoveField(
model_name='setting_note',
name='setting',
),
migrations.DeleteModel(
name='Snapshot',
),
migrations.RemoveField(
model_name='user_group',
name='group',
),
migrations.RemoveField(
model_name='user_group',
name='user',
),
migrations.RemoveField(
model_name='user_share',
name='receiver',
),
migrations.RemoveField(
model_name='user_share',
name='setting',
),
migrations.RemoveField(
model_name='user_share',
name='user',
),
migrations.AddField(
model_name='data_story',
name='tags',
field=models.JSONField(null=True),
),
migrations.AlterModelTable(
name='money_unit',
table='money_unit',
),
migrations.DeleteModel(
name='Academic_Level',
),
migrations.DeleteModel(
name='Bank',
),
migrations.DeleteModel(
name='Bank_Account',
),
migrations.DeleteModel(
name='Comment_Like',
),
migrations.DeleteModel(
name='Company_Comment',
),
migrations.DeleteModel(
name='Company_Note',
),
migrations.DeleteModel(
name='Condition',
),
migrations.DeleteModel(
name='Customer',
),
migrations.DeleteModel(
name='Discussion',
),
migrations.DeleteModel(
name='Draft_Setting',
),
migrations.DeleteModel(
name='Employee',
),
migrations.DeleteModel(
name='Employee_Position',
),
migrations.DeleteModel(
name='Employee_Rights',
),
migrations.DeleteModel(
name='Employee_Role',
),
migrations.DeleteModel(
name='Feedback',
),
migrations.DeleteModel(
name='Feedback_Status',
),
migrations.DeleteModel(
name='Group',
),
migrations.DeleteModel(
name='Loan',
),
migrations.DeleteModel(
name='Loan_Payment',
),
migrations.DeleteModel(
name='Loan_Product',
),
migrations.DeleteModel(
name='Loan_Schedule',
),
migrations.DeleteModel(
name='Order',
),
migrations.DeleteModel(
name='Package_Feature',
),
migrations.DeleteModel(
name='Payment_Status',
),
migrations.DeleteModel(
name='Payment_Type',
),
migrations.DeleteModel(
name='Performance_Register',
),
migrations.DeleteModel(
name='Private_Story',
),
migrations.DeleteModel(
name='Role_Right',
),
migrations.DeleteModel(
name='Service_Pack',
),
migrations.DeleteModel(
name='Setting_Comment',
),
migrations.DeleteModel(
name='Setting_Like',
),
migrations.DeleteModel(
name='Setting_Note',
),
migrations.DeleteModel(
name='Topic',
),
migrations.DeleteModel(
name='User_Group',
),
migrations.DeleteModel(
name='User_Share',
),
]

View File

@@ -1,17 +0,0 @@
# Generated by Django 4.1.3 on 2022-12-17 02:59
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('app', '0010_delete_aseet_type_remove_bank_account_bank_and_more'),
]
operations = [
migrations.RemoveField(
model_name='data_story',
name='header',
),
]

View File

@@ -1,19 +0,0 @@
# Generated by Django 4.1.3 on 2022-12-17 03:16
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('app', '0011_remove_data_story_header'),
]
operations = [
migrations.AddField(
model_name='data_story',
name='header',
field=models.JSONField(default='xxx'),
preserve_default=False,
),
]

View File

@@ -1,45 +0,0 @@
# Generated by Django 4.1.3 on 2023-03-14 04:46
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('app', '0012_data_story_header'),
]
operations = [
migrations.CreateModel(
name='Apply_Result',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('code', models.CharField(max_length=30, unique=True)),
('name', models.CharField(max_length=100)),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
],
options={
'db_table': 'apply_result',
},
),
migrations.CreateModel(
name='Job_Apply',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('fullname', models.CharField(max_length=50)),
('phone', models.CharField(max_length=20)),
('email', models.CharField(max_length=50)),
('address', models.CharField(max_length=200)),
('link', models.TextField()),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
('update_time', models.DateTimeField(null=True)),
('file', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.file')),
('job', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.data_story')),
('result', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.apply_result')),
],
options={
'db_table': 'job_apply',
},
),
]

View File

@@ -1,44 +0,0 @@
# Generated by Django 4.2.4 on 2024-09-06 20:57
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('app', '0013_apply_result_job_apply'),
]
operations = [
migrations.CreateModel(
name='Group',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=100)),
('note', models.TextField(null=True)),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
('update_time', models.DateTimeField(null=True)),
('creator', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user')),
],
options={
'db_table': 'group',
'unique_together': {('creator', 'name')},
},
),
migrations.CreateModel(
name='User_Group',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('deleted', models.BooleanField(default=False)),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
('update_time', models.DateTimeField(auto_now=True, null=True)),
('group', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='grus', to='app.group')),
('user', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='usgr', to='app.user')),
],
options={
'db_table': 'user_group',
'unique_together': {('group', 'user')},
},
),
]

View File

@@ -1,33 +0,0 @@
# Generated by Django 4.2.4 on 2024-09-06 21:01
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('app', '0014_group_user_group'),
]
operations = [
migrations.AddField(
model_name='workspace',
name='history',
field=models.JSONField(null=True),
),
migrations.AddField(
model_name='workspace',
name='image',
field=models.TextField(null=True),
),
migrations.AddField(
model_name='workspace',
name='version',
field=models.BigIntegerField(null=True),
),
migrations.AddField(
model_name='workspace',
name='viewer',
field=models.JSONField(null=True),
),
]

View File

@@ -1,30 +0,0 @@
# Generated by Django 4.2.4 on 2024-09-06 21:02
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('app', '0015_workspace_history_workspace_image_workspace_version_and_more'),
]
operations = [
migrations.CreateModel(
name='Workspace_Group',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('deleted', models.BooleanField(default=False)),
('share_type', models.CharField(max_length=20)),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
('update_time', models.DateTimeField(auto_now=True, null=True)),
('group', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='grws', to='app.group')),
('workspace', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='wsgr', to='app.workspace')),
],
options={
'db_table': 'workspace_group',
'unique_together': {('workspace', 'group')},
},
),
]

View File

@@ -1,37 +0,0 @@
# Generated by Django 4.2.4 on 2024-09-07 02:46
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('app', '0016_workspace_group'),
]
operations = [
migrations.CreateModel(
name='File_Type',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('code', models.CharField(max_length=30, unique=True)),
('name', models.CharField(max_length=100)),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
],
options={
'db_table': 'file_type',
},
),
migrations.AddField(
model_name='file',
name='name',
field=models.CharField(default=1, max_length=200),
preserve_default=False,
),
migrations.AddField(
model_name='file',
name='type',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.file_type'),
),
]

View File

@@ -1,19 +0,0 @@
# Generated by Django 4.2.4 on 2024-10-09 08:43
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('app', '0017_file_type_file_name_file_type'),
]
operations = [
migrations.AlterField(
model_name='token',
name='user',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user'),
),
]

View File

@@ -1,42 +0,0 @@
# Generated by Django 4.2.4 on 2024-10-09 09:09
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('app', '0018_alter_token_user'),
]
operations = [
migrations.CreateModel(
name='User_Session',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('session', models.BigIntegerField()),
('start_time', models.DateTimeField()),
('end_time', models.DateTimeField(null=True)),
('duration', models.IntegerField(null=True)),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
('update_time', models.DateTimeField(auto_now=True, null=True)),
('token', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='userlog', to='app.token')),
],
options={
'db_table': 'user_session',
},
),
migrations.CreateModel(
name='User_Log',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('link', models.TextField()),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
('session', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user_session')),
],
options={
'db_table': 'user_log',
},
),
]

View File

@@ -1,18 +0,0 @@
# Generated by Django 4.2.4 on 2024-10-09 10:40
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('app', '0019_user_session_user_log'),
]
operations = [
migrations.AddField(
model_name='user_session',
name='click_count',
field=models.IntegerField(null=True),
),
]

View File

@@ -1,48 +0,0 @@
# Generated by Django 4.2.4 on 2024-10-13 06:48
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('app', '0020_user_session_click_count'),
]
operations = [
migrations.AddField(
model_name='token',
name='city',
field=models.CharField(max_length=100, null=True),
),
migrations.AddField(
model_name='token',
name='country',
field=models.CharField(max_length=100, null=True),
),
migrations.AddField(
model_name='token',
name='loc',
field=models.CharField(max_length=100, null=True),
),
migrations.AddField(
model_name='token',
name='org',
field=models.CharField(max_length=100, null=True),
),
migrations.AddField(
model_name='token',
name='postal',
field=models.CharField(max_length=100, null=True),
),
migrations.AddField(
model_name='token',
name='region',
field=models.CharField(max_length=100, null=True),
),
migrations.AddField(
model_name='token',
name='timezone',
field=models.CharField(max_length=100, null=True),
),
]

View File

@@ -1,28 +0,0 @@
# Generated by Django 4.2.4 on 2024-10-15 22:19
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('app', '0021_token_city_token_country_token_loc_token_org_and_more'),
]
operations = [
migrations.CreateModel(
name='Register',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('fullname', models.CharField(max_length=50)),
('phone', models.CharField(max_length=50)),
('email', models.CharField(max_length=50)),
('note', models.TextField()),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
('update_time', models.DateTimeField(null=True)),
],
options={
'db_table': 'register',
},
),
]

View File

@@ -1,18 +0,0 @@
# Generated by Django 4.2.4 on 2024-10-15 22:32
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('app', '0022_register'),
]
operations = [
migrations.AlterField(
model_name='register',
name='note',
field=models.TextField(null=True),
),
]

View File

@@ -1,19 +0,0 @@
# Generated by Django 4.2.4 on 2024-10-15 22:39
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('app', '0023_alter_register_note'),
]
operations = [
migrations.AddField(
model_name='register',
name='content',
field=models.TextField(default='xxx'),
preserve_default=False,
),
]

View File

@@ -1,29 +0,0 @@
# Generated by Django 4.2.4 on 2025-03-25 10:14
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('app', '0024_register_content'),
]
operations = [
migrations.CreateModel(
name='Datastory_Category',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(max_length=200)),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
('update_time', models.DateTimeField(auto_now=True, null=True)),
('category', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.story_category')),
('story', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.data_story')),
],
options={
'db_table': 'datastory_category',
'unique_together': {('story', 'category')},
},
),
]

View File

@@ -1,19 +0,0 @@
# Generated by Django 4.2.4 on 2025-03-25 10:16
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('app', '0025_datastory_category'),
]
operations = [
migrations.AlterField(
model_name='datastory_category',
name='story',
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='storycat', to='app.data_story'),
),
]

View File

@@ -1,18 +0,0 @@
# Generated by Django 4.2.4 on 2025-03-25 10:29
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('app', '0026_alter_datastory_category_story'),
]
operations = [
migrations.AddField(
model_name='data_story',
name='canonical',
field=models.CharField(max_length=100, null=True),
),
]

View File

@@ -1,18 +0,0 @@
# Generated by Django 4.2.4 on 2025-03-25 10:49
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('app', '0027_data_story_canonical'),
]
operations = [
migrations.AlterField(
model_name='data_story',
name='canonical',
field=models.CharField(max_length=200, null=True),
),
]

View File

@@ -1,17 +0,0 @@
# Generated by Django 4.2.4 on 2025-03-26 08:09
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('app', '0028_alter_data_story_canonical'),
]
operations = [
migrations.RemoveField(
model_name='data_story',
name='category',
),
]

View File

@@ -1,23 +0,0 @@
# Generated by Django 4.2.4 on 2025-03-26 08:38
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('app', '0029_remove_data_story_category'),
]
operations = [
migrations.AddField(
model_name='datastory_category',
name='image',
field=models.CharField(max_length=200, null=True),
),
migrations.AddField(
model_name='datastory_category',
name='url',
field=models.CharField(max_length=200, null=True),
),
]

View File

@@ -1,51 +0,0 @@
# Generated by Django 5.1.7 on 2025-05-18 22:35
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('app', '0030_datastory_category_image_datastory_category_url'),
]
operations = [
migrations.RenameField(
model_name='category',
old_name='item',
new_name='code',
),
migrations.RenameField(
model_name='category',
old_name='value',
new_name='name',
),
migrations.RemoveField(
model_name='category',
name='icon',
),
migrations.RemoveField(
model_name='category',
name='image',
),
migrations.RemoveField(
model_name='category',
name='index',
),
migrations.RemoveField(
model_name='category',
name='level',
),
migrations.RemoveField(
model_name='category',
name='link',
),
migrations.RemoveField(
model_name='category',
name='parent',
),
migrations.RemoveField(
model_name='category',
name='update_time',
),
]

View File

@@ -1,21 +0,0 @@
# Generated by Django 5.1.7 on 2025-05-18 22:36
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('app', '0031_rename_item_category_code_rename_value_category_name_and_more'),
]
operations = [
migrations.RemoveField(
model_name='news',
name='approve_status',
),
migrations.RemoveField(
model_name='news',
name='approver',
),
]

View File

@@ -1,18 +0,0 @@
# Generated by Django 5.1.7 on 2025-05-18 22:36
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('app', '0032_remove_news_approve_status_remove_news_approver'),
]
operations = [
migrations.RenameField(
model_name='news',
old_name='display_type',
new_name='display',
),
]

View File

@@ -1,30 +0,0 @@
# Generated by Django 5.1.7 on 2025-05-18 22:39
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('app', '0033_rename_display_type_news_display'),
]
operations = [
migrations.AlterField(
model_name='news',
name='content',
field=models.JSONField(),
),
migrations.AlterField(
model_name='news',
name='image',
field=models.CharField(default='xxx', max_length=300),
preserve_default=False,
),
migrations.AlterField(
model_name='news',
name='subtitle',
field=models.CharField(default=1, max_length=500),
preserve_default=False,
),
]

View File

@@ -1,21 +0,0 @@
# Generated by Django 5.1.7 on 2025-05-18 22:40
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('app', '0034_alter_news_content_alter_news_image_and_more'),
]
operations = [
migrations.RemoveField(
model_name='news',
name='expiry',
),
migrations.RemoveField(
model_name='news',
name='note',
),
]

View File

@@ -1,16 +0,0 @@
# Generated by Django 5.1.7 on 2025-05-18 22:42
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('app', '0035_remove_news_expiry_remove_news_note'),
]
operations = [
migrations.DeleteModel(
name='News_Like',
),
]

View File

@@ -1,16 +0,0 @@
# Generated by Django 5.1.7 on 2025-05-18 22:42
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('app', '0036_delete_news_like'),
]
operations = [
migrations.DeleteModel(
name='News_Comment',
),
]

View File

@@ -1,28 +0,0 @@
# Generated by Django 5.1.7 on 2025-05-18 22:46
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('app', '0037_delete_news_comment'),
]
operations = [
migrations.AddField(
model_name='news',
name='canonical',
field=models.CharField(max_length=300, null=True),
),
migrations.AddField(
model_name='news',
name='link',
field=models.CharField(max_length=300, null=True),
),
migrations.AlterField(
model_name='news',
name='content',
field=models.JSONField(null=True),
),
]

View File

@@ -1,23 +0,0 @@
# Generated by Django 5.1.7 on 2025-05-18 22:47
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('app', '0038_news_canonical_news_link_alter_news_content'),
]
operations = [
migrations.AlterField(
model_name='news',
name='canonical',
field=models.CharField(max_length=200, null=True),
),
migrations.AlterField(
model_name='news',
name='link',
field=models.CharField(max_length=200, null=True),
),
]

View File

@@ -1,28 +0,0 @@
# Generated by Django 5.1.7 on 2025-05-18 22:56
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('app', '0039_alter_news_canonical_alter_news_link'),
]
operations = [
migrations.RenameField(
model_name='news',
old_name='display',
new_name='status',
),
migrations.RenameField(
model_name='news',
old_name='creator',
new_name='user',
),
migrations.AddField(
model_name='news',
name='header',
field=models.JSONField(null=True),
),
]

View File

@@ -1,17 +0,0 @@
# Generated by Django 5.1.7 on 2025-05-18 22:56
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('app', '0040_rename_display_news_status_rename_creator_news_user_and_more'),
]
operations = [
migrations.AlterModelTable(
name='display_type',
table='display_status',
),
]

View File

@@ -1,17 +0,0 @@
# Generated by Django 5.1.7 on 2025-05-18 22:56
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('app', '0041_alter_display_type_table'),
]
operations = [
migrations.RenameModel(
old_name='Display_Type',
new_name='Display_Status',
),
]

View File

@@ -1,20 +0,0 @@
# Generated by Django 5.1.7 on 2025-05-19 07:46
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('app', '0042_rename_display_type_display_status'),
]
operations = [
migrations.AddField(
model_name='news',
name='language',
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.lang_choice'),
preserve_default=False,
),
]

View File

@@ -1,38 +0,0 @@
# Generated by Django 5.1.7 on 2025-05-20 06:44
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('app', '0043_news_language'),
]
operations = [
migrations.CreateModel(
name='Promotion',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(max_length=200)),
('subtitle', models.CharField(max_length=500)),
('image', models.CharField(max_length=300)),
('header', models.JSONField(null=True)),
('content', models.JSONField(null=True)),
('link', models.CharField(max_length=200, null=True)),
('canonical', models.CharField(max_length=200, null=True)),
('valid_from', models.DateTimeField(null=True)),
('valid_to', models.DateTimeField(null=True)),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
('update_time', models.DateTimeField(null=True)),
('category', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.category')),
('language', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.lang_choice')),
('status', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.display_status')),
('user', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user')),
],
options={
'db_table': 'promotion',
},
),
]

View File

@@ -1,49 +0,0 @@
# Generated by Django 5.1.7 on 2025-05-22 10:05
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('app', '0044_promotion'),
]
operations = [
migrations.RemoveField(
model_name='data_story',
name='canonical',
),
migrations.RemoveField(
model_name='data_story',
name='content',
),
migrations.RemoveField(
model_name='data_story',
name='create_time',
),
migrations.RemoveField(
model_name='data_story',
name='header',
),
migrations.RemoveField(
model_name='data_story',
name='image',
),
migrations.RemoveField(
model_name='data_story',
name='status',
),
migrations.RemoveField(
model_name='data_story',
name='tags',
),
migrations.RemoveField(
model_name='data_story',
name='update_time',
),
migrations.RemoveField(
model_name='data_story',
name='user',
),
]

View File

@@ -1,84 +0,0 @@
# Generated by Django 5.1.7 on 2025-05-22 10:09
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('app', '0045_remove_data_story_canonical_and_more'),
]
operations = [
migrations.AddField(
model_name='data_story',
name='canonical',
field=models.CharField(max_length=200, null=True),
),
migrations.AddField(
model_name='data_story',
name='category',
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.category'),
preserve_default=False,
),
migrations.AddField(
model_name='data_story',
name='content',
field=models.JSONField(null=True),
),
migrations.AddField(
model_name='data_story',
name='create_time',
field=models.DateTimeField(auto_now_add=True, null=True),
),
migrations.AddField(
model_name='data_story',
name='header',
field=models.JSONField(null=True),
),
migrations.AddField(
model_name='data_story',
name='image',
field=models.CharField(default=1, max_length=300),
preserve_default=False,
),
migrations.AddField(
model_name='data_story',
name='language',
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.lang_choice'),
preserve_default=False,
),
migrations.AddField(
model_name='data_story',
name='link',
field=models.CharField(max_length=200, null=True),
),
migrations.AddField(
model_name='data_story',
name='status',
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.display_status'),
preserve_default=False,
),
migrations.AddField(
model_name='data_story',
name='update_time',
field=models.DateTimeField(null=True),
),
migrations.AddField(
model_name='data_story',
name='user',
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user'),
preserve_default=False,
),
migrations.AddField(
model_name='data_story',
name='valid_from',
field=models.DateTimeField(null=True),
),
migrations.AddField(
model_name='data_story',
name='valid_to',
field=models.DateTimeField(null=True),
),
]

View File

@@ -1,19 +0,0 @@
# Generated by Django 5.1.7 on 2025-05-23 04:13
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('app', '0046_data_story_canonical_data_story_category_and_more'),
]
operations = [
migrations.AddField(
model_name='job_apply',
name='code',
field=models.CharField(default=1, max_length=30, unique=True),
preserve_default=False,
),
]

View File

@@ -1,36 +0,0 @@
# Generated by Django 5.1.7 on 2025-05-23 07:28
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('app', '0047_job_apply_code'),
]
operations = [
migrations.CreateModel(
name='Collaborator',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('code', models.CharField(db_index=True, max_length=20, unique=True)),
('fullname', models.CharField(db_index=True, max_length=50)),
('phone', models.CharField(db_index=True, max_length=20, null=True)),
('email', models.CharField(max_length=50)),
('address', models.CharField(max_length=300)),
('dob', models.DateField()),
('legal_code', models.CharField(max_length=30)),
('issue_date', models.DateField()),
('issue_place', models.TextField()),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
('update_time', models.DateTimeField(null=True)),
('legal_type', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.legal_type')),
('sex', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.legal_type')),
],
options={
'db_table': 'collaborator',
},
),
]

View File

@@ -1,19 +0,0 @@
# Generated by Django 5.1.7 on 2025-05-23 07:29
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('app', '0048_collaborator'),
]
operations = [
migrations.AlterField(
model_name='collaborator',
name='sex',
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.sex'),
),
]

View File

@@ -1,35 +0,0 @@
# Generated by Django 5.1.7 on 2025-05-23 07:58
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('app', '0049_alter_collaborator_sex'),
]
operations = [
migrations.CreateModel(
name='Setting_App',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('category', models.CharField(max_length=100)),
('classify', models.CharField(max_length=100)),
('code', models.CharField(max_length=100)),
('vi', models.TextField()),
('en', models.TextField(null=True)),
('ja', models.TextField(null=True)),
('image', models.TextField(null=True)),
('icon', models.TextField(null=True)),
('link', models.TextField(null=True)),
('detail', models.JSONField(null=True)),
('index', models.IntegerField(default=0, null=True)),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
],
options={
'db_table': 'setting_app',
'unique_together': {('category', 'classify', 'code')},
},
),
]

View File

@@ -1,85 +0,0 @@
# Generated by Django 5.1.7 on 2025-05-26 02:30
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('app', '0050_setting_app'),
]
operations = [
migrations.CreateModel(
name='Collateral_Category',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('code', models.CharField(max_length=30, unique=True)),
('name', models.CharField(max_length=100)),
('index', models.IntegerField(default=1, null=True)),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
],
options={
'db_table': 'collateral_category',
},
),
migrations.CreateModel(
name='Producer',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('code', models.CharField(max_length=30, unique=True)),
('name', models.CharField(max_length=100)),
('index', models.IntegerField(default=1, null=True)),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
],
options={
'db_table': 'producer',
},
),
migrations.AlterField(
model_name='collaborator',
name='sex',
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.legal_type'),
),
migrations.CreateModel(
name='Collateral_Type',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('code', models.CharField(max_length=30, unique=True)),
('name', models.CharField(max_length=100)),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
('category', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.collateral_category')),
('producer', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.producer')),
],
options={
'db_table': 'collateral_type',
},
),
migrations.CreateModel(
name='Application',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('code', models.CharField(db_index=True, max_length=20, unique=True)),
('fullname', models.CharField(db_index=True, max_length=50)),
('phone', models.CharField(db_index=True, max_length=20, null=True)),
('province', models.CharField(max_length=200)),
('district', models.CharField(max_length=200)),
('address', models.CharField(max_length=300)),
('legal_code', models.CharField(max_length=30)),
('issue_date', models.DateField(null=True)),
('issue_place', models.TextField(null=True)),
('loan_amount', models.IntegerField(null=True)),
('loan_term', models.IntegerField(null=True)),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
('update_time', models.DateTimeField(null=True)),
('collaborator', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.collaborator')),
('legal_type', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.legal_type')),
('sex', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.sex')),
('collateral', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.collateral_type')),
],
options={
'db_table': 'application',
},
),
]

View File

@@ -1,19 +0,0 @@
# Generated by Django 5.1.7 on 2025-05-26 02:31
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('app', '0051_collateral_category_producer_alter_collaborator_sex_and_more'),
]
operations = [
migrations.AlterField(
model_name='collaborator',
name='sex',
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.sex'),
),
]

View File

@@ -1,35 +0,0 @@
# Generated by Django 5.1.7 on 2025-05-26 03:27
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('app', '0052_alter_collaborator_sex'),
]
operations = [
migrations.CreateModel(
name='Setting_Loan',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('category', models.CharField(max_length=100)),
('classify', models.CharField(max_length=100)),
('code', models.CharField(max_length=100)),
('vi', models.TextField()),
('en', models.TextField(null=True)),
('ja', models.TextField(null=True)),
('image', models.TextField(null=True)),
('icon', models.TextField(null=True)),
('link', models.TextField(null=True)),
('detail', models.JSONField(null=True)),
('index', models.IntegerField(default=0, null=True)),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
],
options={
'db_table': 'setting_loan',
'unique_together': {('category', 'classify', 'code')},
},
),
]

View File

@@ -1,141 +0,0 @@
# Generated by Django 5.1.7 on 2025-05-26 08:39
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('app', '0053_setting_loan'),
]
operations = [
migrations.CreateModel(
name='Branch_Type',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('code', models.CharField(max_length=30, unique=True)),
('name', models.CharField(max_length=100)),
('index', models.IntegerField(default=1, null=True)),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
],
options={
'db_table': 'branch_type',
},
),
migrations.CreateModel(
name='Branch',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('code', models.CharField(max_length=30, unique=True)),
('name', models.CharField(max_length=100)),
('address', models.CharField(max_length=300)),
('logo', models.CharField(max_length=300, null=True)),
('phone', models.CharField(max_length=20)),
('email', models.CharField(max_length=100, null=True)),
('note', models.TextField(null=True)),
('start_date', models.DateField(null=True)),
('index', models.IntegerField(default=1, null=True)),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
('update_time', models.DateTimeField(null=True)),
('type', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.branch_type')),
],
options={
'db_table': 'branch',
},
),
migrations.CreateModel(
name='Customer',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('code', models.CharField(db_index=True, max_length=20, unique=True)),
('fullname', models.CharField(db_index=True, max_length=50)),
('phone', models.CharField(db_index=True, max_length=20)),
('email', models.CharField(max_length=50, null=True)),
('legal_id', models.CharField(max_length=20, null=True)),
('issued_place', models.CharField(max_length=200, null=True)),
('issued_date', models.DateField(null=True)),
('address', models.CharField(max_length=200, null=True)),
('dob', models.DateField(null=True)),
('note', models.TextField(null=True)),
('avatar', models.CharField(max_length=200, null=True)),
('deleted', models.BooleanField(db_index=True, default=False)),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
('update_time', models.DateTimeField(null=True)),
('branch', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.branch')),
('creator', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user')),
('legal_type', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.legal_type')),
('location', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.location')),
('sex', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.sex')),
('updater', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user')),
],
options={
'db_table': 'customer',
},
),
migrations.CreateModel(
name='People',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('code', models.CharField(db_index=True, max_length=20, unique=True)),
('fullname', models.CharField(max_length=50)),
('phone', models.CharField(max_length=20)),
('email', models.CharField(max_length=50, null=True)),
('legal_id', models.CharField(max_length=20, null=True)),
('issued_place', models.CharField(max_length=200, null=True)),
('issued_date', models.DateField(null=True)),
('address', models.CharField(max_length=200, null=True)),
('dob', models.DateField(null=True)),
('note', models.TextField(null=True)),
('avatar', models.CharField(max_length=200, null=True)),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
('update_time', models.DateTimeField(null=True)),
('deleted', models.BooleanField(default=False)),
('creator', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user')),
('legal_type', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.legal_type')),
('location', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.location')),
('sex', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.sex')),
('updater', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user')),
],
options={
'db_table': 'people',
},
),
migrations.AddField(
model_name='branch',
name='manager',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.people'),
),
migrations.AddField(
model_name='branch',
name='signature',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.people'),
),
migrations.CreateModel(
name='Customer_File',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
('file', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.file')),
('ref', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='custfile', to='app.customer')),
],
options={
'db_table': 'customer_file',
'unique_together': {('ref', 'file')},
},
),
migrations.CreateModel(
name='People_File',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
('file', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.file')),
('ref', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.people')),
],
options={
'db_table': 'people_file',
'unique_together': {('ref', 'file')},
},
),
]

View File

@@ -1,41 +0,0 @@
# Generated by Django 5.1.7 on 2025-05-27 02:27
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('app', '0054_branch_type_branch_customer_people_branch_manager_and_more'),
]
operations = [
migrations.CreateModel(
name='Payment_Type',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('code', models.CharField(max_length=30, unique=True)),
('name', models.CharField(max_length=100)),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
],
options={
'db_table': 'payment_type',
},
),
migrations.CreateModel(
name='Payment',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('code', models.CharField(max_length=30, unique=True)),
('amount', models.IntegerField()),
('content', models.TextField(null=True)),
('detail', models.JSONField(null=True)),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
('type', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.payment_type')),
],
options={
'db_table': 'payment',
},
),
]

View File

@@ -1,29 +0,0 @@
# Generated by Django 5.1.7 on 2025-05-27 04:58
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('app', '0055_payment_type_payment'),
]
operations = [
migrations.CreateModel(
name='Country',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('code', models.CharField(max_length=30, unique=True)),
('name', models.CharField(max_length=100)),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
],
options={
'db_table': 'country',
},
),
migrations.RemoveField(
model_name='user',
name='color',
),
]

View File

@@ -1,36 +0,0 @@
# Generated by Django 5.1.7 on 2025-05-27 06:53
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('app', '0056_country_remove_user_color'),
]
operations = [
migrations.RenameField(
model_name='customer',
old_name='legal_id',
new_name='legal_code',
),
migrations.RemoveField(
model_name='customer',
name='avatar',
),
migrations.CreateModel(
name='Application_File',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
('file', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.file')),
('ref', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='appfile', to='app.application')),
],
options={
'db_table': 'application_file',
'unique_together': {('ref', 'file')},
},
),
]

View File

@@ -1,42 +0,0 @@
# Generated by Django 5.1.7 on 2025-05-27 07:04
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('app', '0057_rename_legal_id_customer_legal_code_and_more'),
]
operations = [
migrations.RemoveField(
model_name='customer',
name='location',
),
migrations.AddField(
model_name='application',
name='country',
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.country'),
preserve_default=False,
),
migrations.AddField(
model_name='customer',
name='country',
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.country'),
preserve_default=False,
),
migrations.AddField(
model_name='customer',
name='district',
field=models.CharField(default='xxx', max_length=200),
preserve_default=False,
),
migrations.AddField(
model_name='customer',
name='province',
field=models.CharField(default='xx', max_length=200),
preserve_default=False,
),
]

View File

@@ -1,111 +0,0 @@
# Generated by Django 5.1.7 on 2025-05-27 08:58
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('app', '0058_remove_customer_location_application_country_and_more'),
]
operations = [
migrations.CreateModel(
name='Account_Type',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('code', models.CharField(max_length=30, unique=True)),
('name', models.CharField(max_length=100)),
('index', models.IntegerField(default=1, null=True)),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
],
options={
'db_table': 'account_type',
},
),
migrations.CreateModel(
name='Currency',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('code', models.CharField(max_length=30, unique=True)),
('name', models.CharField(max_length=100)),
('rate', models.FloatField()),
('decimal', models.IntegerField(default=0)),
('index', models.IntegerField(default=1, null=True)),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
],
options={
'db_table': 'currency',
},
),
migrations.CreateModel(
name='Value_Type',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('code', models.CharField(max_length=30, unique=True)),
('name', models.CharField(max_length=100)),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
],
options={
'db_table': 'value_type',
},
),
migrations.RemoveField(
model_name='people',
name='location',
),
migrations.CreateModel(
name='Internal_Account',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('code', models.CharField(max_length=30, unique=True)),
('balance', models.FloatField()),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
('update_time', models.DateTimeField(null=True)),
('branch', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.branch')),
('currency', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.currency')),
('type', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.account_type')),
],
options={
'db_table': 'internal_account',
'unique_together': {('branch', 'type', 'currency')},
},
),
migrations.CreateModel(
name='Fee_Type',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('code', models.CharField(max_length=30, unique=True)),
('name', models.CharField(max_length=100)),
('value', models.IntegerField()),
('index', models.IntegerField(default=1, null=True)),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
('value_type', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.value_type')),
],
options={
'db_table': 'fee_type',
},
),
migrations.CreateModel(
name='Account_Book',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('system_date', models.DateField()),
('current_date', models.DateField()),
('start_balance', models.FloatField(null=True)),
('end_balance', models.FloatField(null=True)),
('credit', models.FloatField(null=True)),
('debit', models.FloatField(null=True)),
('number_credit', models.IntegerField(null=True)),
('number_debit', models.IntegerField(null=True)),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
('update_time', models.DateTimeField(null=True)),
('account', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.internal_account')),
],
options={
'db_table': 'account_book',
'unique_together': {('system_date', 'account')},
},
),
]

View File

@@ -1,16 +0,0 @@
# Generated by Django 5.1.7 on 2025-05-27 09:10
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('app', '0059_account_type_currency_value_type_and_more'),
]
operations = [
migrations.DeleteModel(
name='Location',
),
]

View File

@@ -1,90 +0,0 @@
# Generated by Django 5.1.7 on 2025-05-27 09:14
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('app', '0060_delete_location'),
]
operations = [
migrations.CreateModel(
name='Interest_Base',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('code', models.CharField(max_length=30, unique=True)),
('name', models.CharField(max_length=200, null=True)),
('index', models.IntegerField(default=1, null=True)),
('detail', models.TextField()),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
],
options={
'db_table': 'interest_base',
},
),
migrations.CreateModel(
name='Loan_Type',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('code', models.CharField(max_length=30, unique=True)),
('name', models.CharField(max_length=200, null=True)),
('detail', models.TextField()),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
],
options={
'db_table': 'loan_type',
},
),
migrations.CreateModel(
name='Payment_Method',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('code', models.CharField(max_length=30, unique=True)),
('name', models.CharField(max_length=100)),
('index', models.IntegerField(default=1, null=True)),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
],
options={
'db_table': 'payment_method',
},
),
migrations.CreateModel(
name='Loan_Product',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('code', models.CharField(db_index=True, max_length=30, unique=True)),
('name', models.CharField(max_length=200)),
('ratio', models.FloatField()),
('rate', models.FloatField()),
('rate_info', models.CharField(max_length=200)),
('penalty_ratio', models.FloatField()),
('penalty_rate', models.FloatField()),
('penalty_info', models.CharField(max_length=200)),
('detail', models.TextField(null=True)),
('prin_cycle_days', models.IntegerField(null=True)),
('itr_cycle_days', models.IntegerField(null=True)),
('install_cycle_days', models.IntegerField(null=True)),
('collat_mandatory', models.BooleanField(default=False)),
('principal', models.IntegerField(null=True)),
('number_days', models.IntegerField(null=True)),
('amount', models.IntegerField(null=True)),
('deleted', models.BooleanField(default=False)),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
('update_time', models.DateTimeField(null=True)),
('base', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.interest_base')),
('creator', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user')),
('currency', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.currency')),
('unit', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.money_unit')),
('updater', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user')),
('type', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.loan_type')),
('itr_pay_type', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.payment_method')),
('prin_pay_type', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.payment_method')),
],
options={
'db_table': 'loan_product',
},
),
]

View File

@@ -1,27 +0,0 @@
# Generated by Django 5.1.7 on 2025-05-29 04:29
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('app', '0061_interest_base_loan_type_payment_method_loan_product'),
]
operations = [
migrations.CreateModel(
name='Collaborator_File',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
('file', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.file')),
('ref', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='collabfile', to='app.collaborator')),
],
options={
'db_table': 'collaborator_file',
'unique_together': {('ref', 'file')},
},
),
]

View File

@@ -1,19 +0,0 @@
# Generated by Django 5.1.7 on 2025-05-29 04:44
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('app', '0062_collaborator_file'),
]
operations = [
migrations.AddField(
model_name='collaborator',
name='status',
field=models.ForeignKey(default=1, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.approve_status'),
),
]

View File

@@ -1,29 +0,0 @@
# Generated by Django 5.1.7 on 2025-05-30 01:37
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('app', '0063_collaborator_status'),
]
operations = [
migrations.CreateModel(
name='Phone_Otp',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('code', models.CharField(max_length=30, unique=True)),
('phone', models.CharField(max_length=10)),
('otp', models.CharField(max_length=10)),
('valid_to', models.DateTimeField(null=True)),
('expiry', models.BooleanField(default=False)),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
('update_time', models.DateTimeField(null=True)),
],
options={
'db_table': 'phone_otp',
},
),
]

View File

@@ -1,20 +0,0 @@
# Generated by Django 5.1.7 on 2025-05-30 02:01
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('app', '0064_phone_otp'),
]
operations = [
migrations.AddField(
model_name='phone_otp',
name='status',
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.auth_status'),
preserve_default=False,
),
]

View File

@@ -1,40 +0,0 @@
# Generated by Django 5.1.7 on 2025-05-30 06:48
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('app', '0065_phone_otp_status'),
]
operations = [
migrations.CreateModel(
name='Apps',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('code', models.CharField(max_length=30, unique=True)),
('name', models.CharField(max_length=100)),
('logo', models.CharField(max_length=500, null=True)),
('link', models.CharField(max_length=500, null=True)),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
],
options={
'db_table': 'apps',
},
),
migrations.CreateModel(
name='User_Apps',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
('apps', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.apps')),
('user', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.apps')),
],
options={
'db_table': 'user_apps',
},
),
]

View File

@@ -1,27 +0,0 @@
# Generated by Django 5.1.7 on 2025-05-31 02:04
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('app', '0066_apps_user_apps'),
]
operations = [
migrations.CreateModel(
name='Customer_Note',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('detail', models.JSONField()),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
('ref', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='custnote', to='app.customer')),
('user', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user')),
],
options={
'db_table': 'customer_note',
},
),
]

View File

@@ -1,51 +0,0 @@
# Generated by Django 5.1.7 on 2025-05-31 02:20
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('app', '0067_customer_note'),
]
operations = [
migrations.CreateModel(
name='Province',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('code', models.CharField(max_length=30, unique=True)),
('name', models.CharField(max_length=100)),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
],
options={
'db_table': 'province',
},
),
migrations.CreateModel(
name='Company',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('code', models.CharField(db_index=True, max_length=20, unique=True)),
('legal_id', models.CharField(max_length=20)),
('fullname', models.CharField(db_index=True, max_length=300)),
('shortname', models.CharField(db_index=True, max_length=50, null=True)),
('phone', models.CharField(db_index=True, max_length=20)),
('email', models.CharField(max_length=50, null=True)),
('facebook', models.CharField(max_length=50, null=True)),
('website', models.CharField(max_length=100, null=True)),
('address', models.CharField(max_length=200, null=True)),
('note', models.TextField(null=True)),
('deleted', models.BooleanField(db_index=True, default=False)),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
('update_time', models.DateTimeField(null=True)),
('creator', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user')),
('updater', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.user')),
('province', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.province')),
],
options={
'db_table': 'company',
},
),
]

View File

@@ -1,26 +0,0 @@
# Generated by Django 5.1.7 on 2025-05-31 02:58
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('app', '0068_province_company'),
]
operations = [
migrations.CreateModel(
name='Contact',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('code', models.CharField(max_length=30, unique=True)),
('name', models.CharField(max_length=100)),
('index', models.IntegerField(default=1, null=True)),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
],
options={
'db_table': 'contact',
},
),
]

View File

@@ -1,27 +0,0 @@
# Generated by Django 5.1.7 on 2025-05-31 03:03
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('app', '0069_contact'),
]
operations = [
migrations.CreateModel(
name='Customer_Contact',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('info', models.CharField(max_length=100, null=True)),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
('contact', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.contact')),
('ref', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='custcontact', to='app.customer')),
],
options={
'db_table': 'customer_contact',
},
),
]

View File

@@ -1,26 +0,0 @@
# Generated by Django 5.1.7 on 2025-05-31 04:13
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('app', '0070_customer_contact'),
]
operations = [
migrations.CreateModel(
name='Relation',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('code', models.CharField(max_length=30, unique=True)),
('name', models.CharField(max_length=100)),
('index', models.IntegerField(default=1, null=True)),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
],
options={
'db_table': 'relation',
},
),
]

View File

@@ -1,18 +0,0 @@
# Generated by Django 5.1.7 on 2025-05-31 04:14
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('app', '0071_relation'),
]
operations = [
migrations.RenameField(
model_name='people',
old_name='legal_id',
new_name='legal_code',
),
]

View File

@@ -1,23 +0,0 @@
# Generated by Django 5.1.7 on 2025-05-31 04:33
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('app', '0072_rename_legal_id_people_legal_code'),
]
operations = [
migrations.AlterField(
model_name='customer',
name='district',
field=models.CharField(max_length=200, null=True),
),
migrations.AlterField(
model_name='customer',
name='province',
field=models.CharField(max_length=200, null=True),
),
]

View File

@@ -1,19 +0,0 @@
# Generated by Django 5.1.7 on 2025-05-31 04:35
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('app', '0073_alter_customer_district_alter_customer_province'),
]
operations = [
migrations.AlterField(
model_name='customer',
name='branch',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='app.branch'),
),
]

Some files were not shown because too many files have changed in this diff Show More