修改能力验证和监督检查重复数据
This commit is contained in:
parent
22751fe28f
commit
86ece01bbd
|
@ -3,8 +3,8 @@ ENV = 'development'
|
|||
|
||||
# base api
|
||||
#VUE_APP_BASE_API = 'http://10.0.11.127:8000/api'
|
||||
# VUE_APP_BASE_API = 'http://127.0.0.1:2222/api'
|
||||
VUE_APP_BASE_API = 'https://testsearch.ctc.ac.cn/api'
|
||||
VUE_APP_BASE_API = 'http://127.0.0.1:2222/api'
|
||||
# VUE_APP_BASE_API = 'https://testsearch.ctc.ac.cn/api'
|
||||
|
||||
#VUE_APP_BASE_API = 'http://47.95.0.242:9101/api'
|
||||
|
||||
|
|
|
@ -26,7 +26,8 @@
|
|||
"normalize.css": "7.0.0",
|
||||
"nprogress": "0.2.0",
|
||||
"path-to-regexp": "2.4.0",
|
||||
"vod-js-sdk-v6": "^1.4.12",
|
||||
"pdfobject": "^2.3.0",
|
||||
"vod-js-sdk-v6": "^1.4.12",
|
||||
"vue": "2.6.10",
|
||||
"vue-pdf": "^4.2.0",
|
||||
"vue-router": "3.0.6",
|
||||
|
|
|
@ -1036,7 +1036,7 @@
|
|||
},
|
||||
getPtList(){
|
||||
let that = this;
|
||||
getPtList({task2do:that.task2do,page:0}).then((res) => {
|
||||
getPtList({task2do__task2__year:that.task2Item.task2_.year,page:0}).then((res) => {
|
||||
if (res.code >= 200) {
|
||||
that.ptList=res.data;
|
||||
}
|
||||
|
@ -1060,7 +1060,7 @@
|
|||
},
|
||||
getOinspectList(){
|
||||
let that = this;
|
||||
getOinspectList({task2do:that.task2do,page:0}).then((res) => {
|
||||
getOinspectList({task2do__task2__year:that.task2Item.task2_.year,page:0}).then((res) => {
|
||||
if (res.code >= 200) {
|
||||
that.oinspectList=res.data;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
from rest_framework import serializers
|
||||
from apps.information.models import AbilityReview, QualityCommendation, QualityActivities, Contact, ExternalAuditors
|
||||
|
||||
class AbilityReviewSerializer(serializers.ModelSerializer):
|
||||
model = AbilityReview
|
||||
fields = '__all__'
|
||||
|
||||
|
||||
class QualityCommendationSerializer(serializers.ModelSerializer):
|
||||
model = QualityCommendation
|
||||
fields = '__all__'
|
||||
|
||||
|
||||
class QualityActivitiesSerializer(serializers.ModelSerializer):
|
||||
model = QualityActivities
|
||||
fields = '__all __'
|
||||
|
||||
|
||||
class ContactSerializer(serializers.ModelSerializer):
|
||||
model = Contact
|
||||
fields = '__all__'
|
||||
|
||||
|
||||
class ExternalAuditorsSerializer(serializers.ModelSerializer):
|
||||
model = ExternalAuditors
|
||||
fields = '__all__'
|
||||
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
from django.urls import path, include
|
||||
from rest_framework.routers import DefaultRouter
|
||||
from .views import AbilityReviewViewSet, \
|
||||
QualityCommendationBViewSet, \
|
||||
QualityActivitiesViewSet,\
|
||||
ContactViewSet, \
|
||||
ExternalAuditorsViewSet
|
||||
|
||||
API_BASE_URL = 'api/information/'
|
||||
|
||||
router = DefaultRouter()
|
||||
router.register(r'abilityreviews', AbilityReviewViewSet, basename='评审情况')
|
||||
router.register(r'qualitycommendation', QualityCommendationBViewSet, basename='质量表彰')
|
||||
router.register(r'qualityactivities', QualityActivitiesViewSet, basename='质量活动')
|
||||
router.register(r'contact', ContactViewSet, basename='实验室联系方式')
|
||||
router.register(r'externalauditors', ExternalAuditorsViewSet, basename='外审员情况')
|
||||
|
||||
|
||||
urlpatterns = [path(API_BASE_URL, include(router.urls)),]
|
|
@ -1,3 +1,58 @@
|
|||
from django.shortcuts import render
|
||||
from rest_framework import viewsets, mixins
|
||||
from .models import AbilityReview, QualityCommendation, QualityActivities, Contact, ExternalAuditors
|
||||
from .serializers import AbilityReviewSerializer, \
|
||||
QualityCommendationSerializer, \
|
||||
QualityActivitiesSerializer,\
|
||||
ContactSerializer, \
|
||||
ExternalAuditorsSerializer
|
||||
|
||||
|
||||
class AbilityReviewViewSet( mixins.CreateModelMixin,
|
||||
mixins.ListModelMixin,
|
||||
mixins.DestroyModelMixin,
|
||||
mixins.UpdateModelMixin,
|
||||
viewsets.GenericViewSet):
|
||||
queryset = AbilityReview.objects.all()
|
||||
serializer_class = AbilityReviewSerializer
|
||||
|
||||
#自定义查询
|
||||
def get_queryset(self):
|
||||
pass
|
||||
|
||||
|
||||
class QualityCommendationBViewSet(mixins.CreateModelMixin,
|
||||
mixins.ListModelMixin,
|
||||
mixins.DestroyModelMixin,
|
||||
mixins.UpdateModelMixin,
|
||||
viewsets.GenericViewSet):
|
||||
queryset = QualityCommendation.objects.all()
|
||||
serializer_class = QualityCommendationSerializer
|
||||
|
||||
|
||||
class QualityActivitiesViewSet(mixins.CreateModelMixin,
|
||||
mixins.ListModelMixin,
|
||||
mixins.DestroyModelMixin,
|
||||
mixins.UpdateModelMixin,
|
||||
viewsets.GenericViewSet):
|
||||
queryset = QualityActivities.objects.all()
|
||||
serializer_class = QualityActivitiesSerializer
|
||||
|
||||
|
||||
class ContactViewSet(mixins.CreateModelMixin,
|
||||
mixins.ListModelMixin,
|
||||
mixins.DestroyModelMixin,
|
||||
mixins.UpdateModelMixin,
|
||||
viewsets.GenericViewSet):
|
||||
queryset = Contact.objects.all()
|
||||
serializer_class = ContactSerializer
|
||||
|
||||
|
||||
class ExternalAuditorsViewSet(mixins.CreateModelMixin,
|
||||
mixins.ListModelMixin,
|
||||
mixins.DestroyModelMixin,
|
||||
mixins.UpdateModelMixin,
|
||||
viewsets.GenericViewSet):
|
||||
queryset = ExternalAuditors.objects.all()
|
||||
serializer_class = ExternalAuditorsSerializer
|
||||
|
||||
|
||||
# Create your views here.
|
||||
|
|
|
@ -583,6 +583,11 @@ class Domixin:
|
|||
instance = serializer.save()
|
||||
self.countup_task2do(instance.task2do)
|
||||
|
||||
@transaction.atomic
|
||||
def perform_update(self, serializer):
|
||||
instance = serializer.save()
|
||||
self.countup_task2do(instance.task2do)
|
||||
|
||||
@transaction.atomic
|
||||
def perform_destroy(self, instance):
|
||||
task2do = instance.task2do
|
||||
|
@ -603,6 +608,13 @@ class PgoalDeptViewSet(Domixin, CreateUpdateCustomMixin, ModelViewSet):
|
|||
self.countup_task2do(instance.task2do)
|
||||
|
||||
class ImpMixin:
|
||||
def get_queryset(self):
|
||||
mydept = self.request.user.dept
|
||||
qs = super().get_queryset()
|
||||
if has_permission('task2', self.request.user):
|
||||
return qs
|
||||
return qs.filter(belong_dept=mydept)
|
||||
|
||||
def format_date(self, ind, val):
|
||||
new_val = val
|
||||
if isinstance(val, datetime.datetime):
|
||||
|
@ -626,10 +638,10 @@ class ImpMixin:
|
|||
return i[0]
|
||||
raise ParseError('第{}: 请选择固定选项值'.format(ind))
|
||||
|
||||
def make_data(self, data, sheet, i, etype):
|
||||
def F(self, data, sheet, i, etype):
|
||||
raise NotImplementedError()
|
||||
|
||||
def gen_imp_view(self, request, start: int, mySerializer, etype=0):
|
||||
def gen_imp_view(self, request, start: int, mySerializer, etype=0, mymodel=None, repalce=None, types=None):
|
||||
sr = ImpSerializer(data=request.data)
|
||||
sr.is_valid(raise_exception=True)
|
||||
vdata = sr.validated_data
|
||||
|
@ -646,6 +658,18 @@ class ImpMixin:
|
|||
data = {}
|
||||
data['task2do'] = task2do.id
|
||||
data = self.make_data(data, sheet, i, etype)
|
||||
# 对于能力验证和监督检查进行有则跳过无则更新操作。
|
||||
if repalce:
|
||||
if types.lower()== 'pt':
|
||||
model_info = mymodel.objects.filter(name=data.get('name'), number=data.get('number'))
|
||||
if model_info:
|
||||
i = i + 1
|
||||
continue
|
||||
elif types.lower() == 'oinspect':
|
||||
model_info = mymodel.objects.filter(checker=data.get('checker'), date_inspect=data.get('date_inspect'))
|
||||
if model_info:
|
||||
i = i + 1
|
||||
continue
|
||||
datalist.append(data)
|
||||
i = i + 1
|
||||
sr = mySerializer(data=datalist, many=True, context={'request': request})
|
||||
|
@ -744,6 +768,7 @@ class PtViewSet(ImpMixin, Domixin, CreateUpdateCustomMixin, ModelViewSet):
|
|||
}
|
||||
filterset_fields = ['task2do', 'task2do__belong_dept', 'task2do__task2__year', 'task2do__task2']
|
||||
|
||||
|
||||
def make_data(self, data, sheet, i, etype):
|
||||
data['name'] = sheet['b'+str(i)].value
|
||||
data['number'] = sheet['c'+str(i)].value
|
||||
|
@ -760,7 +785,7 @@ class PtViewSet(ImpMixin, Domixin, CreateUpdateCustomMixin, ModelViewSet):
|
|||
|
||||
导入表格
|
||||
"""
|
||||
return self.gen_imp_view(request, 5, PtSerializer)
|
||||
return self.gen_imp_view(request, 5, PtSerializer, 0, Pt, repalce=True, types='pt')
|
||||
|
||||
|
||||
class RiskViewSet(ImpMixin, Domixin, CreateUpdateCustomMixin, ModelViewSet):
|
||||
|
@ -810,4 +835,4 @@ class OinspectViewSet(ImpMixin, Domixin, CreateUpdateCustomMixin, ModelViewSet):
|
|||
|
||||
导入表格
|
||||
"""
|
||||
return self.gen_imp_view(request, 5, OinspectSerializer)
|
||||
return self.gen_imp_view(request, 5, OinspectSerializer, 0, Oinspect, repalce=True, types="oinspect")
|
|
@ -11,11 +11,13 @@ https://docs.djangoproject.com/en/3.0/ref/settings/
|
|||
"""
|
||||
|
||||
from datetime import datetime, timedelta
|
||||
import os
|
||||
import os, sys
|
||||
|
||||
|
||||
|
||||
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
|
||||
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||
|
||||
sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))
|
||||
|
||||
# Quick-start development settings - unsuitable for production
|
||||
# See https://docs.djangoproject.com/en/3.0/howto/deployment/checklist/
|
||||
|
@ -23,6 +25,7 @@ BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
|||
# SECURITY WARNING: keep the secret key used in production secret!
|
||||
SECRET_KEY = 'ez9z3a4m*$%srn9ve_t71yd!v+&xn9@0k(e(+l6#g1h=e5i4da'
|
||||
|
||||
|
||||
# SECURITY WARNING: don't run with debug turned on in production!
|
||||
|
||||
|
||||
|
@ -51,8 +54,8 @@ INSTALLED_APPS = [
|
|||
'apps.consulting',
|
||||
'apps.exam',
|
||||
'apps.ops',
|
||||
'apps.edu'
|
||||
|
||||
'apps.edu',
|
||||
'apps.information'
|
||||
]
|
||||
|
||||
MIDDLEWARE = [
|
||||
|
|
|
@ -9,12 +9,21 @@ DATABASES = {
|
|||
# 'HOST': '47.95.0.242',
|
||||
# 'PORT': '5432',
|
||||
# },
|
||||
'default': {
|
||||
# 'default': {
|
||||
# 'ENGINE': 'django.db.backends.postgresql',
|
||||
# 'NAME': 'cma',
|
||||
# 'USER': 'cma',
|
||||
# 'PASSWORD': 'cma123',
|
||||
# 'HOST': '172.16.80.102',
|
||||
# # 'HOST': '1.203.161.102',
|
||||
# 'PORT': '5432',
|
||||
# }
|
||||
'default': {
|
||||
'ENGINE': 'django.db.backends.postgresql',
|
||||
'NAME': 'cma',
|
||||
'USER': 'cma',
|
||||
'PASSWORD': 'cma123',
|
||||
'HOST': '172.16.80.102',
|
||||
'USER': 'postgres',
|
||||
'PASSWORD': 'zcDsj2021',
|
||||
'HOST': '49.232.14.174',
|
||||
# 'HOST': '1.203.161.102',
|
||||
'PORT': '5432',
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue