diff --git a/test_server/crm/migrations/0045_auto_20230330_1402.py b/test_server/crm/migrations/0045_auto_20230330_1402.py new file mode 100644 index 0000000..f6c8f25 --- /dev/null +++ b/test_server/crm/migrations/0045_auto_20230330_1402.py @@ -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'), + ), + ] diff --git a/test_server/crm/models.py b/test_server/crm/models.py index 2df3f82..ca72c64 100644 --- a/test_server/crm/models.py +++ b/test_server/crm/models.py @@ -73,6 +73,8 @@ class Consumer(CommonModel): realname = 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') deptname = models.CharField('所在部门', max_length=100, null=True, blank=True) exceed_date = models.DateField('账号过期', null=True, blank=True) diff --git a/test_server/crm/serializers.py b/test_server/crm/serializers.py index aef0459..7e83bd5 100644 --- a/test_server/crm/serializers.py +++ b/test_server/crm/serializers.py @@ -52,6 +52,11 @@ class ConsumerSerializer(serializers.ModelSerializer): queryset = queryset.prefetch_related('subjects',) return queryset +class ConsumerImproveSerializer(serializers.ModelSerializer): + class Meta: + model = Consumer + fields = ['name', 'ID_number1', 'companyname', 'title'] + class ConsumerDetailSerializer(serializers.ModelSerializer): """ 客户详情序列化 diff --git a/test_server/crm/views.py b/test_server/crm/views.py index da4bd3a..b1b8828 100644 --- a/test_server/crm/views.py +++ b/test_server/crm/views.py @@ -29,7 +29,7 @@ from utils.custom import CommonPagination from .filters import ConsumerFilter from .exports import export_consumer 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 rbac.models import UserProfile from django.http import Http404 @@ -393,6 +393,16 @@ class ConsumerViewSet(ModelViewSet): request.user.save() 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, url_path='candidate', url_name='consumer_candidate', perms_map=[{'*':'*'}]) @@ -615,7 +625,7 @@ class ConsumerRegister(APIView): # 默认一个工作类别 if not consumer.workscope: try: - consumer.workscope = WorkScope.objects.filter(sortnum=1).first() + consumer.workscope = WorkScope.objects.filter(sortnum=1).order_by('id').first() except: pass consumer.save() @@ -631,7 +641,7 @@ class ConsumerRegister(APIView): # 默认一个工作类别 if not consumer.workscope: try: - consumer.workscope = WorkScope.objects.filter(sortnum=1).first() + consumer.workscope = WorkScope.objects.filter(sortnum=1).order_by('id').first() except: pass consumer.save() @@ -661,12 +671,13 @@ class WxphoneRegister(APIView): consumer.save() else: request.user.username = phoneNumber + request.user.name = data.get('name', '未知') if request.user.role.name =='游客': request.user.role = ConsumerRole.objects.get(name='注册用户') 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() - 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): perms_map=[{'*':'change_remain_count'}] diff --git a/test_server/examtest/migrations/0038_auto_20230330_1402.py b/test_server/examtest/migrations/0038_auto_20230330_1402.py new file mode 100644 index 0000000..742d2aa --- /dev/null +++ b/test_server/examtest/migrations/0038_auto_20230330_1402.py @@ -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='所选课程'), + ), + ] diff --git a/test_server/examtest/models_paper.py b/test_server/examtest/models_paper.py index 532a250..567b5bb 100644 --- a/test_server/examtest/models_paper.py +++ b/test_server/examtest/models_paper.py @@ -37,7 +37,7 @@ class WorkScope(CommonModel): sortnum = models.IntegerField('排序码', default=1) is_public = models.BooleanField('是否公开', default=True) # 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) # can_examself = models.BooleanField('是否可自主考核', default=False)