From 57adbea2f0612e4d96da15fe14c3886326a14ffe Mon Sep 17 00:00:00 2001 From: caoqianming Date: Mon, 11 Apr 2022 11:36:43 +0800 Subject: [PATCH] =?UTF-8?q?bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/monitor/migrations/0001_initial.py | 6 +- .../migrations/0002_alter_drfrequestlog_id.py | 19 ++++++ apps/monitor/models.py | 2 + apps/system/migrations/0001_initial.py | 22 +++---- .../migrations/0002_auto_20220406_1458.py | 64 ------------------- apps/system/serializers.py | 2 +- apps/utils/mixins.py | 2 +- apps/utils/models.py | 12 ++-- apps/utils/serializers.py | 2 +- 9 files changed, 46 insertions(+), 85 deletions(-) create mode 100644 apps/monitor/migrations/0002_alter_drfrequestlog_id.py delete mode 100644 apps/system/migrations/0002_auto_20220406_1458.py diff --git a/apps/monitor/migrations/0001_initial.py b/apps/monitor/migrations/0001_initial.py index 628e5cde..87192dd8 100644 --- a/apps/monitor/migrations/0001_initial.py +++ b/apps/monitor/migrations/0001_initial.py @@ -1,6 +1,5 @@ -# Generated by Django 3.2.12 on 2022-04-08 00:58 +# Generated by Django 3.2.12 on 2022-04-11 03:20 -import apps.utils.snowflake from django.conf import settings from django.db import migrations, models import django.db.models.deletion @@ -19,10 +18,10 @@ class Migration(migrations.Migration): migrations.CreateModel( name='DrfRequestLog', fields=[ - ('id', models.CharField(default=apps.utils.snowflake.IdWorker.get_id, editable=False, help_text='主键ID', max_length=20, primary_key=True, serialize=False, verbose_name='主键ID')), ('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')), ('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')), ('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')), + ('id', models.UUIDField(primary_key=True, serialize=False)), ('requested_at', models.DateTimeField(db_index=True)), ('response_ms', models.PositiveIntegerField(default=0)), ('path', models.CharField(db_index=True, help_text='请求地址', max_length=400)), @@ -35,6 +34,7 @@ class Migration(migrations.Migration): ('data', models.TextField(blank=True, null=True)), ('response', models.TextField(blank=True, null=True)), ('errors', models.TextField(blank=True, null=True)), + ('agent', models.TextField(blank=True, null=True)), ('status_code', models.PositiveIntegerField(blank=True, db_index=True, null=True)), ('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL)), ], diff --git a/apps/monitor/migrations/0002_alter_drfrequestlog_id.py b/apps/monitor/migrations/0002_alter_drfrequestlog_id.py new file mode 100644 index 00000000..76302287 --- /dev/null +++ b/apps/monitor/migrations/0002_alter_drfrequestlog_id.py @@ -0,0 +1,19 @@ +# Generated by Django 3.2.12 on 2022-04-11 03:27 + +from django.db import migrations, models +import uuid + + +class Migration(migrations.Migration): + + dependencies = [ + ('monitor', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='drfrequestlog', + name='id', + field=models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False), + ), + ] diff --git a/apps/monitor/models.py b/apps/monitor/models.py index d2f8bcdb..e35ca0a8 100644 --- a/apps/monitor/models.py +++ b/apps/monitor/models.py @@ -1,3 +1,4 @@ +import uuid from django.db import models from apps.utils.models import BaseModel @@ -5,6 +6,7 @@ from apps.utils.models import BaseModel class DrfRequestLog(BaseModel): """Logs Django rest framework API requests""" + id = models.UUIDField(primary_key=True, default=uuid.uuid4) user = models.ForeignKey( 'system.user', on_delete=models.SET_NULL, diff --git a/apps/system/migrations/0001_initial.py b/apps/system/migrations/0001_initial.py index c206688d..0486b6c5 100644 --- a/apps/system/migrations/0001_initial.py +++ b/apps/system/migrations/0001_initial.py @@ -1,6 +1,5 @@ -# Generated by Django 3.2.12 on 2022-04-02 01:21 +# Generated by Django 3.2.12 on 2022-04-11 03:20 -import apps.utils.snowflake from django.conf import settings import django.contrib.auth.models import django.contrib.auth.validators @@ -31,7 +30,7 @@ class Migration(migrations.Migration): ('is_staff', models.BooleanField(default=False, help_text='Designates whether the user can log into this admin site.', verbose_name='staff status')), ('is_active', models.BooleanField(default=True, help_text='Designates whether this user should be treated as active. Unselect this instead of deleting accounts.', verbose_name='active')), ('date_joined', models.DateTimeField(default=django.utils.timezone.now, verbose_name='date joined')), - ('id', models.CharField(default=apps.utils.snowflake.IdWorker.get_id, editable=False, help_text='主键ID', max_length=20, primary_key=True, serialize=False, verbose_name='主键ID')), + ('id', models.CharField(editable=False, help_text='主键ID', max_length=20, primary_key=True, serialize=False, verbose_name='主键ID')), ('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')), ('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')), ('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')), @@ -51,13 +50,14 @@ class Migration(migrations.Migration): migrations.CreateModel( name='Dept', fields=[ - ('id', models.CharField(default=apps.utils.snowflake.IdWorker.get_id, editable=False, help_text='主键ID', max_length=20, primary_key=True, serialize=False, verbose_name='主键ID')), + ('id', models.CharField(editable=False, help_text='主键ID', max_length=20, primary_key=True, serialize=False, verbose_name='主键ID')), ('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')), ('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')), ('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')), ('name', models.CharField(max_length=60, verbose_name='名称')), ('type', models.PositiveSmallIntegerField(choices=[(10, '公司'), (20, '部门')], default=20, verbose_name='类型')), ('sort', models.PositiveSmallIntegerField(default=1, verbose_name='排序标记')), + ('third_info', models.JSONField(default=dict, verbose_name='三方系统信息')), ('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='dept_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')), ('parent', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='system.dept', verbose_name='父')), ('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='dept_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')), @@ -71,7 +71,7 @@ class Migration(migrations.Migration): migrations.CreateModel( name='Permission', fields=[ - ('id', models.CharField(default=apps.utils.snowflake.IdWorker.get_id, editable=False, help_text='主键ID', max_length=20, primary_key=True, serialize=False, verbose_name='主键ID')), + ('id', models.CharField(editable=False, help_text='主键ID', max_length=20, primary_key=True, serialize=False, verbose_name='主键ID')), ('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')), ('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')), ('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')), @@ -90,7 +90,7 @@ class Migration(migrations.Migration): migrations.CreateModel( name='Post', fields=[ - ('id', models.CharField(default=apps.utils.snowflake.IdWorker.get_id, editable=False, help_text='主键ID', max_length=20, primary_key=True, serialize=False, verbose_name='主键ID')), + ('id', models.CharField(editable=False, help_text='主键ID', max_length=20, primary_key=True, serialize=False, verbose_name='主键ID')), ('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')), ('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')), ('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')), @@ -109,7 +109,7 @@ class Migration(migrations.Migration): migrations.CreateModel( name='UserPost', fields=[ - ('id', models.CharField(default=apps.utils.snowflake.IdWorker.get_id, editable=False, help_text='主键ID', max_length=20, primary_key=True, serialize=False, verbose_name='主键ID')), + ('id', models.CharField(editable=False, help_text='主键ID', max_length=20, primary_key=True, serialize=False, verbose_name='主键ID')), ('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')), ('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')), ('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')), @@ -128,7 +128,7 @@ class Migration(migrations.Migration): migrations.CreateModel( name='Role', fields=[ - ('id', models.CharField(default=apps.utils.snowflake.IdWorker.get_id, editable=False, help_text='主键ID', max_length=20, primary_key=True, serialize=False, verbose_name='主键ID')), + ('id', models.CharField(editable=False, help_text='主键ID', max_length=20, primary_key=True, serialize=False, verbose_name='主键ID')), ('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')), ('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')), ('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')), @@ -158,7 +158,7 @@ class Migration(migrations.Migration): migrations.CreateModel( name='File', fields=[ - ('id', models.CharField(default=apps.utils.snowflake.IdWorker.get_id, editable=False, help_text='主键ID', max_length=20, primary_key=True, serialize=False, verbose_name='主键ID')), + ('id', models.CharField(editable=False, help_text='主键ID', max_length=20, primary_key=True, serialize=False, verbose_name='主键ID')), ('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')), ('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')), ('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')), @@ -179,7 +179,7 @@ class Migration(migrations.Migration): migrations.CreateModel( name='DictType', fields=[ - ('id', models.CharField(default=apps.utils.snowflake.IdWorker.get_id, editable=False, help_text='主键ID', max_length=20, primary_key=True, serialize=False, verbose_name='主键ID')), + ('id', models.CharField(editable=False, help_text='主键ID', max_length=20, primary_key=True, serialize=False, verbose_name='主键ID')), ('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')), ('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')), ('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')), @@ -238,7 +238,7 @@ class Migration(migrations.Migration): migrations.CreateModel( name='Dict', fields=[ - ('id', models.CharField(default=apps.utils.snowflake.IdWorker.get_id, editable=False, help_text='主键ID', max_length=20, primary_key=True, serialize=False, verbose_name='主键ID')), + ('id', models.CharField(editable=False, help_text='主键ID', max_length=20, primary_key=True, serialize=False, verbose_name='主键ID')), ('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')), ('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')), ('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')), diff --git a/apps/system/migrations/0002_auto_20220406_1458.py b/apps/system/migrations/0002_auto_20220406_1458.py deleted file mode 100644 index dc1125be..00000000 --- a/apps/system/migrations/0002_auto_20220406_1458.py +++ /dev/null @@ -1,64 +0,0 @@ -# Generated by Django 3.2.12 on 2022-04-06 06:58 - -import apps.utils.snowflake -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('system', '0001_initial'), - ] - - operations = [ - migrations.AddField( - model_name='dept', - name='third_info', - field=models.JSONField(default=dict, verbose_name='三方系统信息'), - ), - migrations.AlterField( - model_name='dept', - name='id', - field=models.CharField(default=apps.utils.snowflake.IdWorker.get_id, editable=False, help_text='主键ID', max_length=20, primary_key=True, serialize=False, verbose_name='主键ID'), - ), - migrations.AlterField( - model_name='dict', - name='id', - field=models.CharField(default=apps.utils.snowflake.IdWorker.get_id, editable=False, help_text='主键ID', max_length=20, primary_key=True, serialize=False, verbose_name='主键ID'), - ), - migrations.AlterField( - model_name='dicttype', - name='id', - field=models.CharField(default=apps.utils.snowflake.IdWorker.get_id, editable=False, help_text='主键ID', max_length=20, primary_key=True, serialize=False, verbose_name='主键ID'), - ), - migrations.AlterField( - model_name='file', - name='id', - field=models.CharField(default=apps.utils.snowflake.IdWorker.get_id, editable=False, help_text='主键ID', max_length=20, primary_key=True, serialize=False, verbose_name='主键ID'), - ), - migrations.AlterField( - model_name='permission', - name='id', - field=models.CharField(default=apps.utils.snowflake.IdWorker.get_id, editable=False, help_text='主键ID', max_length=20, primary_key=True, serialize=False, verbose_name='主键ID'), - ), - migrations.AlterField( - model_name='post', - name='id', - field=models.CharField(default=apps.utils.snowflake.IdWorker.get_id, editable=False, help_text='主键ID', max_length=20, primary_key=True, serialize=False, verbose_name='主键ID'), - ), - migrations.AlterField( - model_name='role', - name='id', - field=models.CharField(default=apps.utils.snowflake.IdWorker.get_id, editable=False, help_text='主键ID', max_length=20, primary_key=True, serialize=False, verbose_name='主键ID'), - ), - migrations.AlterField( - model_name='user', - name='id', - field=models.CharField(default=apps.utils.snowflake.IdWorker.get_id, editable=False, help_text='主键ID', max_length=20, primary_key=True, serialize=False, verbose_name='主键ID'), - ), - migrations.AlterField( - model_name='userpost', - name='id', - field=models.CharField(default=apps.utils.snowflake.IdWorker.get_id, editable=False, help_text='主键ID', max_length=20, primary_key=True, serialize=False, verbose_name='主键ID'), - ), - ] diff --git a/apps/system/serializers.py b/apps/system/serializers.py index 2a79005a..d75de263 100644 --- a/apps/system/serializers.py +++ b/apps/system/serializers.py @@ -183,7 +183,7 @@ class DeptCreateUpdateSerializer(CustomModelSerializer): """ 部门序列化 """ - + parent = serializers.PrimaryKeyRelatedField(queryset = Dept.objects.all(), required=True) class Meta: model = Dept exclude = EXCLUDE_FIELDS + ['third_info'] diff --git a/apps/utils/mixins.py b/apps/utils/mixins.py index aef5a27a..0d2e7ca8 100644 --- a/apps/utils/mixins.py +++ b/apps/utils/mixins.py @@ -78,7 +78,7 @@ class MyLoggingMixin(object): super().__init__(*args, **kwargs) def initial(self, request, *args, **kwargs): - request_id = idWorker.get_id() + request_id = uuid.uuid4() self.log = {"requested_at": now(), "id":request_id} setattr(request, 'request_id', request_id) if not getattr(self, "decode_request_body", False): diff --git a/apps/utils/models.py b/apps/utils/models.py index bcb0eb09..f2b3ec7d 100644 --- a/apps/utils/models.py +++ b/apps/utils/models.py @@ -3,8 +3,8 @@ import django.utils.timezone as timezone from django.db import models from django.db.models.query import QuerySet from django.core.exceptions import ObjectDoesNotExist -from apps.utils.snowflake import idWorker - +from apps.utils.snowflake import IdWorker, idWorker +from typing import Iterable, Optional # 自定义软删除查询基类 @@ -57,8 +57,7 @@ class BaseModel(models.Model): """ 基本表 """ - id = models.CharField(max_length=20, primary_key=True, default=idWorker.get_id, - editable=False, verbose_name='主键ID', help_text='主键ID') + id = models.CharField(max_length=20, primary_key=True, editable=False, verbose_name='主键ID', help_text='主键ID') create_time = models.DateTimeField( default=timezone.now, verbose_name='创建时间', help_text='创建时间') update_time = models.DateTimeField( @@ -68,6 +67,11 @@ class BaseModel(models.Model): class Meta: abstract = True + + def save(self, *args, **kwargs) -> None: + if not self.id: + self.id = idWorker.get_id() + return super().save(*args, **kwargs) class SoftModel(BaseModel): diff --git a/apps/utils/serializers.py b/apps/utils/serializers.py index b65afb92..48e7238d 100644 --- a/apps/utils/serializers.py +++ b/apps/utils/serializers.py @@ -21,7 +21,7 @@ class CustomModelSerializer(DynamicFieldsMixin, serializers.ModelSerializer): validated_data['create_by'] = self.request.user if getattr(self.request.user, 'belong_dept', None): validated_data['belong_dept'] = self.request.user.belong_dept - return super().update(validated_data) + return super().create(validated_data) def update(self, instance, validated_data): if self.request: