返回完整资源地址,部分创建接口返回id

This commit is contained in:
曹前明 2022-08-05 14:46:16 +08:00
parent ed68baca62
commit b77ecb46e7
9 changed files with 52 additions and 12 deletions

View File

@ -2,6 +2,7 @@ from apps.am.serializers import AreaSerializer, AreaSimpleSerializer
from apps.ecm.models import AlgoChannel, EventCate, Remind, NotifySetting, Event from apps.ecm.models import AlgoChannel, EventCate, Remind, NotifySetting, Event
from apps.third.serializers import TDeviceSimpleSerializer from apps.third.serializers import TDeviceSimpleSerializer
from apps.third.models import TDevice from apps.third.models import TDevice
from apps.utils.fields import MyFilePathField
from apps.utils.serializers import CustomModelSerializer from apps.utils.serializers import CustomModelSerializer
from rest_framework import serializers from rest_framework import serializers
from apps.system.serializers import UserSimpleSerializer from apps.system.serializers import UserSimpleSerializer
@ -78,6 +79,9 @@ class EventSerializer(serializers.ModelSerializer):
cates_ = EventCateSimpleSerializer(source='cates', read_only=True, many=True) cates_ = EventCateSimpleSerializer(source='cates', read_only=True, many=True)
employee_ = EmployeeSerializer(source='employee', read_only=True) employee_ = EmployeeSerializer(source='employee', read_only=True)
handle_user_name = serializers.CharField(source='handle_user.name', read_only=True) handle_user_name = serializers.CharField(source='handle_user.name', read_only=True)
face_img = MyFilePathField()
global_img = MyFilePathField()
voice = MyFilePathField()
class Meta: class Meta:
model = Event model = Event

View File

@ -2,6 +2,7 @@ from apps.hrm.errors import PHONE_F_WRONG
from rest_framework.serializers import ModelSerializer from rest_framework.serializers import ModelSerializer
from rest_framework import serializers from rest_framework import serializers
from apps.hrm.services import HrmService from apps.hrm.services import HrmService
from apps.utils.fields import MyFilePathField
from apps.utils.serializers import CustomModelSerializer from apps.utils.serializers import CustomModelSerializer
@ -75,6 +76,9 @@ class EmployeeCreateUpdateSerializer(CustomModelSerializer):
class EmployeeImproveSerializer(CustomModelSerializer): class EmployeeImproveSerializer(CustomModelSerializer):
photo = MyFilePathField()
signature = MyFilePathField()
class Meta: class Meta:
model = Employee model = Employee
fields = ['photo', 'id_number', 'email', 'gender', 'signature'] fields = ['photo', 'id_number', 'email', 'gender', 'signature']
@ -91,6 +95,8 @@ class EmployeeSerializer(CustomModelSerializer):
belong_dept_name = serializers.CharField(source='belong_dept.name', read_only=True) belong_dept_name = serializers.CharField(source='belong_dept.name', read_only=True)
post_name = serializers.CharField(source='post.name', read_only=True) post_name = serializers.CharField(source='post.name', read_only=True)
blt_ = serializers.SerializerMethodField() blt_ = serializers.SerializerMethodField()
photo = MyFilePathField()
signature = MyFilePathField()
class Meta: class Meta:
model = Employee model = Employee
@ -125,6 +131,8 @@ class NotWorkRemarkListSerializer(serializers.ModelSerializer):
class CertificateCreateUpdateSerializer(CustomModelSerializer): class CertificateCreateUpdateSerializer(CustomModelSerializer):
file = MyFilePathField()
class Meta: class Meta:
model = Certificate model = Certificate
exclude = EXCLUDE_FIELDS exclude = EXCLUDE_FIELDS
@ -132,6 +140,7 @@ class CertificateCreateUpdateSerializer(CustomModelSerializer):
class CertificateSerializer(CustomModelSerializer): class CertificateSerializer(CustomModelSerializer):
employee_name = serializers.CharField(source='employee.name', read_only=True) employee_name = serializers.CharField(source='employee.name', read_only=True)
file = MyFilePathField()
class Meta: class Meta:
model = Certificate model = Certificate

View File

@ -2,6 +2,7 @@ from apps.hrm.models import Certificate
from apps.opm.models import GasCheck, Operation, Opl, OplCate, OplCert, OplWorker from apps.opm.models import GasCheck, Operation, Opl, OplCate, OplCert, OplWorker
from apps.system.models import Dictionary from apps.system.models import Dictionary
from apps.system.serializers import DeptSimpleSerializer, DictSerializer, DictSimpleSerializer, UserSimpleSerializer from apps.system.serializers import DeptSimpleSerializer, DictSerializer, DictSimpleSerializer, UserSimpleSerializer
from apps.utils.fields import MyFilePathField
from apps.utils.serializers import CustomModelSerializer from apps.utils.serializers import CustomModelSerializer
from apps.utils.constants import EXCLUDE_FIELDS from apps.utils.constants import EXCLUDE_FIELDS
from rest_framework import serializers from rest_framework import serializers
@ -70,7 +71,7 @@ class OplWorkerCreateSerializer(CustomModelSerializer):
class Meta: class Meta:
model = OplWorker model = OplWorker
fields = ['worker', 'duty', 'certificates', 'opl'] fields = ['id', 'worker', 'duty', 'certificates', 'opl']
def create(self, validated_data): def create(self, validated_data):
opl = validated_data['opl'] opl = validated_data['opl']
@ -101,7 +102,7 @@ class OplWorkerUpdateSerializer(CustomModelSerializer):
class Meta: class Meta:
model = OplWorker model = OplWorker
fields = ['duty', 'certificates'] fields = ['id', 'duty', 'certificates']
def update(self, instance, validated_data): def update(self, instance, validated_data):
certificates = validated_data.pop('certificates') certificates = validated_data.pop('certificates')
@ -121,6 +122,12 @@ class OplWorkerUpdateSerializer(CustomModelSerializer):
oplc.save() oplc.save()
return oplw return oplw
class OplCertSerializer(CustomModelSerializer):
file = MyFilePathField()
class Meta:
model = OplCert
fields = ['certificate', 'name', 'type', 'number', 'issue_date', 'expiration_date', 'review_date', 'file']
class OplWorkerSerializer(CustomModelSerializer): class OplWorkerSerializer(CustomModelSerializer):
worker_ = UserSimpleSerializer(source='worker', read_only=True) worker_ = UserSimpleSerializer(source='worker', read_only=True)
@ -132,7 +139,7 @@ class OplWorkerSerializer(CustomModelSerializer):
def get_certificates_(self, obj): def get_certificates_(self, obj):
cs = OplCert.objects.filter(opl_worker=obj) cs = OplCert.objects.filter(opl_worker=obj)
return cs.values('certificate', 'name', 'type', 'number', 'issue_date', 'expiration_date', 'review_date', 'file') return OplCertSerializer(instance=cs, many=True).data
class GasCheckCreateUpdateSerializer(CustomModelSerializer): class GasCheckCreateUpdateSerializer(CustomModelSerializer):

View File

@ -5,6 +5,7 @@ from apps.hrm.serializers import phone_check
from apps.rpm.models import Rcertificate, Remployee, Rfile, Rparty, Rpjcertificate, Rpjfile, Rpjmember, Rpj from apps.rpm.models import Rcertificate, Remployee, Rfile, Rparty, Rpjcertificate, Rpjfile, Rpjmember, Rpj
from apps.system.models import Dept from apps.system.models import Dept
from apps.utils.constants import EXCLUDE_FIELDS from apps.utils.constants import EXCLUDE_FIELDS
from apps.utils.fields import MyFilePathField
from apps.utils.serializers import CustomModelSerializer from apps.utils.serializers import CustomModelSerializer
from apps.system.serializers import DictSerializer, DictSimpleSerializer, FileSerializer from apps.system.serializers import DictSerializer, DictSimpleSerializer, FileSerializer
from rest_framework import serializers from rest_framework import serializers
@ -77,7 +78,7 @@ class RpjCreateUpdateSerializer(CustomModelSerializer):
belong_dept = serializers.PrimaryKeyRelatedField(queryset=Dept.objects.all(), required=False) belong_dept = serializers.PrimaryKeyRelatedField(queryset=Dept.objects.all(), required=False)
class Meta: class Meta:
model = Rpj model = Rpj
fields = ['name', 'contract_number', 'type', 'come_time', 'leave_time', 'belong_dept', 'rparty'] fields = ['id', 'name', 'contract_number', 'type', 'come_time', 'leave_time', 'belong_dept', 'rparty']
class RpjListSerializer(CustomModelSerializer): class RpjListSerializer(CustomModelSerializer):
@ -116,7 +117,6 @@ class RpjListSerializer(CustomModelSerializer):
class RemployeeCreateSerializer(CustomModelSerializer): class RemployeeCreateSerializer(CustomModelSerializer):
rparty = serializers.PrimaryKeyRelatedField(queryset=Rparty.objects.all(), label='相关方ID', required=False) rparty = serializers.PrimaryKeyRelatedField(queryset=Rparty.objects.all(), label='相关方ID', required=False)
class Meta: class Meta:
model = Remployee model = Remployee
fields = ['name', 'phone', 'photo', 'id_number', 'rparty'] fields = ['name', 'phone', 'photo', 'id_number', 'rparty']
@ -140,7 +140,7 @@ class RemployeeUpdateSerializer(CustomModelSerializer):
class RemployeeSerializer(CustomModelSerializer): class RemployeeSerializer(CustomModelSerializer):
rparty_name = serializers.CharField(source='rparty.name', read_only=True) rparty_name = serializers.CharField(source='rparty.name', read_only=True)
photo = MyFilePathField()
class Meta: class Meta:
model = Remployee model = Remployee
fields = '__all__' fields = '__all__'
@ -155,7 +155,7 @@ class RcertificateCreateUpdateSerializer(CustomModelSerializer):
class RcertificateSerializer(CustomModelSerializer): class RcertificateSerializer(CustomModelSerializer):
remployee_name = serializers.CharField(source='remployee.name', read_only=True) remployee_name = serializers.CharField(source='remployee.name', read_only=True)
rparty_name = serializers.CharField(source='rparty.name', read_only=True) rparty_name = serializers.CharField(source='rparty.name', read_only=True)
file = MyFilePathField()
class Meta: class Meta:
model = Rcertificate model = Rcertificate
fields = '__all__' fields = '__all__'
@ -236,6 +236,11 @@ class RpjmemberUpdateSerializer(CustomModelSerializer):
Rpjmember.objects.exclude(id=ins.id).update(is_manager=False) Rpjmember.objects.exclude(id=ins.id).update(is_manager=False)
return ins return ins
class RpjcertificateSerializer(CustomModelSerializer):
file = MyFilePathField()
class Meta:
model = Rpjcertificate
fields = ['rcertificate', 'name', 'type', 'number', 'issue_date', 'expiration_date', 'review_date', 'file']
class RpjmemberSerializer(CustomModelSerializer): class RpjmemberSerializer(CustomModelSerializer):
remployee_ = RemployeeSerializer(source='remployee', read_only=True) remployee_ = RemployeeSerializer(source='remployee', read_only=True)
@ -247,7 +252,7 @@ class RpjmemberSerializer(CustomModelSerializer):
def get_rcertificates_(self, obj): def get_rcertificates_(self, obj):
cs = Rpjcertificate.objects.filter(rpj_member=obj) cs = Rpjcertificate.objects.filter(rpj_member=obj)
return cs.values('rcertificate', 'name', 'type', 'number', 'issue_date', 'expiration_date', 'review_date', 'file') return RpjcertificateSerializer(instance=cs, many=True).data
class RpjfileSerializer(CustomModelSerializer): class RpjfileSerializer(CustomModelSerializer):

View File

@ -4,6 +4,7 @@ from rest_framework import serializers
from django_celery_results.models import TaskResult from django_celery_results.models import TaskResult
from apps.hrm.errors import PHONE_EXIST from apps.hrm.errors import PHONE_EXIST
from apps.system.errors import USERNAME_EXIST from apps.system.errors import USERNAME_EXIST
from apps.utils.fields import MyFilePathField
from apps.utils.serializers import CustomModelSerializer from apps.utils.serializers import CustomModelSerializer
from apps.utils.constants import EXCLUDE_FIELDS, EXCLUDE_FIELDS_BASE from apps.utils.constants import EXCLUDE_FIELDS, EXCLUDE_FIELDS_BASE
from .models import (Dictionary, DictType, File, Dept, Permission, Post, PostRole, from .models import (Dictionary, DictType, File, Dept, Permission, Post, PostRole,
@ -299,7 +300,7 @@ class UserListSerializer(CustomModelSerializer):
""" """
belong_dept_ = DeptSimpleSerializer(source='belong_dept', read_only=True) belong_dept_ = DeptSimpleSerializer(source='belong_dept', read_only=True)
# posts_ = PostSimpleSerializer(source='posts', many=True) # posts_ = PostSimpleSerializer(source='posts', many=True)
avatar = MyFilePathField()
class Meta: class Meta:
model = User model = User
exclude = ['password', 'secret'] exclude = ['password', 'secret']

View File

@ -460,7 +460,7 @@ class UserViewSet(CustomModelViewSet):
'type': user.type, 'type': user.type,
'name': user.name, 'name': user.name,
'roles': user.roles.values_list('name', flat=True), 'roles': user.roles.values_list('name', flat=True),
'avatar': user.avatar, 'avatar': settings.BASE_URL + user.avatar,
'perms': perms, 'perms': perms,
'belong_dept_name': user.belong_dept.name if user.belong_dept else '', 'belong_dept_name': user.belong_dept.name if user.belong_dept else '',
'post_name': user.post.name if user.post else '', 'post_name': user.post.name if user.post else '',

View File

@ -85,7 +85,8 @@ class XxClient:
# if settings.DEBUG: # if settings.DEBUG:
# print_roundtrip(r) # print_roundtrip(r)
ret = r.json() ret = r.json()
if ret.get('errorCode') == '1060000': if ret.get('errorCode') in ['1060000', 1060000]:
print(ret.get('errorCode'))
self.get_token() # 重新获取token self.get_token() # 重新获取token
self.request(url, method, params, json, timeout, raise_exception) # 重新请求 self.request(url, method, params, json, timeout, raise_exception) # 重新请求
else: else:

10
apps/utils/fields.py Normal file
View File

@ -0,0 +1,10 @@
from django.conf import settings
from rest_framework import serializers
class MyFilePathField(serializers.CharField):
def to_representation(self, value):
if 'http' in value:
return str(value)
return settings.BASE_URL + str(value)

View File

@ -1,6 +1,7 @@
from requests import request from requests import request
from apps.hrm.models import Employee from apps.hrm.models import Employee
from apps.utils.constants import EXCLUDE_FIELDS from apps.utils.constants import EXCLUDE_FIELDS
from apps.utils.fields import MyFilePathField
from apps.utils.serializers import CustomModelSerializer from apps.utils.serializers import CustomModelSerializer
from apps.vm.models import Visit, Visitor, Vpeople from apps.vm.models import Visit, Visitor, Vpeople
from rest_framework import serializers from rest_framework import serializers
@ -15,7 +16,7 @@ from apps.wf.serializers import TicketSerializer
class VisitCreateUpdateSerializer(CustomModelSerializer): class VisitCreateUpdateSerializer(CustomModelSerializer):
class Meta: class Meta:
model = Visit model = Visit
fields = ['purpose', 'name', 'description', 'visit_time', fields = ['id', 'purpose', 'name', 'description', 'visit_time',
'leave_time', 'receptionist', 'company', 'level', 'count_people'] 'leave_time', 'receptionist', 'company', 'level', 'count_people']
@ -44,6 +45,8 @@ class VisitorCreateSerializer(CustomModelSerializer):
class VisitorSerializer(CustomModelSerializer): class VisitorSerializer(CustomModelSerializer):
photo = MyFilePathField()
class Meta: class Meta:
model = Visitor model = Visitor
fields = '__all__' fields = '__all__'