userpost 增加约束

This commit is contained in:
曹前明 2022-06-24 13:34:01 +08:00
parent 238310208f
commit d00fe8f16d
5 changed files with 67 additions and 17 deletions

View File

@ -0,0 +1,25 @@
# Generated by Django 3.2.12 on 2022-06-24 05:27
import apps.system.models
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('system', '0002_alter_dictionary_value'),
]
operations = [
migrations.AlterModelManagers(
name='user',
managers=[
('objects', apps.system.models.SoftDeletableUserManager()),
],
),
migrations.AlterField(
model_name='user',
name='phone',
field=models.CharField(blank=True, max_length=11, null=True, unique=True, verbose_name='手机号'),
),
]

View File

@ -0,0 +1,17 @@
# Generated by Django 3.2.12 on 2022-06-24 05:32
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('system', '0003_auto_20220624_1327'),
]
operations = [
migrations.AlterUniqueTogether(
name='userpost',
unique_together={('user', 'post', 'dept')},
),
]

View File

@ -122,7 +122,7 @@ class User(AbstractUser, CommonBModel):
"""
type = models.CharField('账号类型', max_length=10, default='employee')
name = models.CharField('姓名', max_length=20, null=True, blank=True)
phone = models.CharField('手机号', max_length=11, null=True, blank=True)
phone = models.CharField('手机号', max_length=11, null=True, blank=True, unique=True)
avatar = models.CharField(
'头像', default='/media/default/avatar.png', max_length=100, null=True, blank=True)
superior = models.ForeignKey(
@ -156,6 +156,7 @@ class UserPost(BaseModel):
verbose_name = '用户岗位关系表'
verbose_name_plural = verbose_name
ordering = ['sort', 'create_time']
unique_together = ('user', 'post', 'dept')
class DictType(CommonAModel):

View File

@ -128,6 +128,7 @@ class DictSerializer(CustomModelSerializer):
model = Dictionary
fields = '__all__'
class DictSimpleSerializer(CustomModelSerializer):
class Meta:
model = Dictionary
@ -369,6 +370,9 @@ class UserPostCreateSerializer(CustomModelSerializer):
model = UserPost
exclude = EXCLUDE_FIELDS_BASE
def create(self, validated_data):
return super().create(validated_data)
class PostRoleSerializer(CustomModelSerializer):
"""
@ -390,6 +394,7 @@ class PostRoleCreateSerializer(CustomModelSerializer):
model = PostRole
fields = ['post', 'role', 'data_range']
class UserInfoSerializer(CustomModelSerializer):
posts_ = UserPostSerializer(source='post', read_only=True)

View File

@ -351,24 +351,26 @@ class UserPostViewSet(CreateModelMixin, DestroyModelMixin, ListModelMixin, Custo
filterset_fields = ['user', 'post', 'dept']
def perform_create(self, serializer):
instance = serializer.save()
user = instance.user
up = UserPost.objects.filter(user=user).order_by('sort', 'create_time').first()
if up:
user.belong_dept = up.dept
user.update_by = self.request.user
user.save()
with transaction.atomic():
instance = serializer.save()
user = instance.user
up = UserPost.objects.filter(user=user).order_by('sort', 'create_time').first()
if up:
user.belong_dept = up.dept
user.update_by = self.request.user
user.save()
def perform_destroy(self, instance):
user = instance.user
instance.delete()
up = UserPost.objects.filter(user=user).order_by('sort', 'create_time').first()
if up:
user.belong_dept = up.dept
else:
user.belong_dept = None
user.update_by = self.request.user
user.save()
with transaction.atomic():
user = instance.user
instance.delete()
up = UserPost.objects.filter(user=user).order_by('sort', 'create_time').first()
if up:
user.belong_dept = up.dept
else:
user.belong_dept = None
user.update_by = self.request.user
user.save()
class UserViewSet(CustomModelViewSet):