refector: 用户补充信息

This commit is contained in:
caoqianming 2023-03-31 17:22:38 +08:00
parent c2dafb7714
commit e1fa59568a
6 changed files with 68 additions and 6 deletions

View File

@ -0,0 +1,25 @@
# Generated by Django 3.0.4 on 2023-03-30 06:02
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('examtest', '0037_exam_paper'),
('crm', '0044_auto_20220528_2332'),
]
operations = [
migrations.AlterField(
model_name='candidate',
name='examtest',
field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='examtest.ExamTest', verbose_name='关联考试'),
),
migrations.AlterField(
model_name='candidate',
name='workscope',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='candidate_workscope', to='examtest.WorkScope'),
),
]

View File

@ -73,6 +73,8 @@ class Consumer(CommonModel):
realname = models.CharField('查询真实姓名', max_length=100, null=True, blank=True) realname = models.CharField('查询真实姓名', max_length=100, null=True, blank=True)
ID_number1 = models.CharField('身份证号', max_length=100, null=True, blank=True) ID_number1 = models.CharField('身份证号', max_length=100, null=True, blank=True)
title = models.CharField('职称/职务', max_length=100, null=True, blank=True)
companyname = models.CharField('单位', max_length=60, null=True, blank=True)
create_admin = models.ForeignKey(UserProfile, on_delete=models.SET_NULL, null=True, blank=True, related_name='consumer_create_admin') create_admin = models.ForeignKey(UserProfile, on_delete=models.SET_NULL, null=True, blank=True, related_name='consumer_create_admin')
deptname = models.CharField('所在部门', max_length=100, null=True, blank=True) deptname = models.CharField('所在部门', max_length=100, null=True, blank=True)
exceed_date = models.DateField('账号过期', null=True, blank=True) exceed_date = models.DateField('账号过期', null=True, blank=True)

View File

@ -52,6 +52,11 @@ class ConsumerSerializer(serializers.ModelSerializer):
queryset = queryset.prefetch_related('subjects',) queryset = queryset.prefetch_related('subjects',)
return queryset return queryset
class ConsumerImproveSerializer(serializers.ModelSerializer):
class Meta:
model = Consumer
fields = ['name', 'ID_number1', 'companyname', 'title']
class ConsumerDetailSerializer(serializers.ModelSerializer): class ConsumerDetailSerializer(serializers.ModelSerializer):
""" """
客户详情序列化 客户详情序列化

View File

@ -29,7 +29,7 @@ from utils.custom import CommonPagination
from .filters import ConsumerFilter from .filters import ConsumerFilter
from .exports import export_consumer from .exports import export_consumer
from .models import Candidate, Company, Consumer, PaySubject, SendCode, ConsumerPerm, ConsumerRole from .models import Candidate, Company, Consumer, PaySubject, SendCode, ConsumerPerm, ConsumerRole
from .serializers import CandidateCreateSerializer, CandidateSerializer, CompanySerializer, ConsumerSerializer, ConsumerPermSerializer, ConsumerRoleSerializer, ConsumerDetailSerializer, MsgSerializer from .serializers import CandidateCreateSerializer, CandidateSerializer, CompanySerializer, ConsumerSerializer, ConsumerPermSerializer, ConsumerRoleSerializer, ConsumerDetailSerializer, MsgSerializer, ConsumerImproveSerializer
from lxml import etree from lxml import etree
from rbac.models import UserProfile from rbac.models import UserProfile
from django.http import Http404 from django.http import Http404
@ -393,6 +393,16 @@ class ConsumerViewSet(ModelViewSet):
request.user.save() request.user.save()
return Response(status=status.HTTP_200_OK) return Response(status=status.HTTP_200_OK)
@action(methods=['post'], detail=False, perms_map=[{'*':'*'}], serializer_class=ConsumerImproveSerializer)
def improve(self, request):
'''
完善个人信息
'''
if isinstance(request.user, Consumer):
sr = ConsumerImproveSerializer(instance=request.user, data=request.data)
sr.is_valid(raise_exception=True)
sr.save()
return Response(status=status.HTTP_200_OK)
@action(methods=['get'], detail=False, @action(methods=['get'], detail=False,
url_path='candidate', url_name='consumer_candidate', perms_map=[{'*':'*'}]) url_path='candidate', url_name='consumer_candidate', perms_map=[{'*':'*'}])
@ -615,7 +625,7 @@ class ConsumerRegister(APIView):
# 默认一个工作类别 # 默认一个工作类别
if not consumer.workscope: if not consumer.workscope:
try: try:
consumer.workscope = WorkScope.objects.filter(sortnum=1).first() consumer.workscope = WorkScope.objects.filter(sortnum=1).order_by('id').first()
except: except:
pass pass
consumer.save() consumer.save()
@ -631,7 +641,7 @@ class ConsumerRegister(APIView):
# 默认一个工作类别 # 默认一个工作类别
if not consumer.workscope: if not consumer.workscope:
try: try:
consumer.workscope = WorkScope.objects.filter(sortnum=1).first() consumer.workscope = WorkScope.objects.filter(sortnum=1).order_by('id').first()
except: except:
pass pass
consumer.save() consumer.save()
@ -661,12 +671,13 @@ class WxphoneRegister(APIView):
consumer.save() consumer.save()
else: else:
request.user.username = phoneNumber request.user.username = phoneNumber
request.user.name = data.get('name', '未知')
if request.user.role.name =='游客': if request.user.role.name =='游客':
request.user.role = ConsumerRole.objects.get(name='注册用户') request.user.role = ConsumerRole.objects.get(name='注册用户')
if not request.user.workscope: if not request.user.workscope:
request.user.workscope = WorkScope.objects.filter(sortnum=1).first() request.user.workscope = WorkScope.objects.filter(sortnum=1).order_by('id').first()
request.user.save() request.user.save()
return Response(status=status.HTTP_200_OK) return Response(status=status.HTTP_200_OK, data=ConsumerDetailSerializer(instance=request.user).data)
class change_remain_count(APIView): class change_remain_count(APIView):
perms_map=[{'*':'change_remain_count'}] perms_map=[{'*':'change_remain_count'}]

View File

@ -0,0 +1,19 @@
# Generated by Django 3.0.4 on 2023-03-30 06:02
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('vod', '0002_auto_20220326_2305'),
('examtest', '0037_exam_paper'),
]
operations = [
migrations.AlterField(
model_name='workscope',
name='courses',
field=models.ManyToManyField(blank=True, to='vod.Course', verbose_name='所选课程'),
),
]

View File

@ -37,7 +37,7 @@ class WorkScope(CommonModel):
sortnum = models.IntegerField('排序码', default=1) sortnum = models.IntegerField('排序码', default=1)
is_public = models.BooleanField('是否公开', default=True) is_public = models.BooleanField('是否公开', default=True)
# can_choose = models.BooleanField('客户是否可选择', default=False) # can_choose = models.BooleanField('客户是否可选择', default=False)
courses = models.ManyToManyField(Course, verbose_name='所选课程') courses = models.ManyToManyField(Course, verbose_name='所选课程', blank=True, null=True)
issue_year = models.PositiveSmallIntegerField('证书有效期', default=5) issue_year = models.PositiveSmallIntegerField('证书有效期', default=5)
# can_examself = models.BooleanField('是否可自主考核', default=False) # can_examself = models.BooleanField('是否可自主考核', default=False)