Merge branch 'master' of https://e.coding.net/ctcdevteam/cma_search
This commit is contained in:
commit
7e44c1fa16
|
|
@ -121,6 +121,11 @@ class QActionQualiCreateSerializer(serializers.ModelSerializer):
|
||||||
validated_data['action'] = 'quali:create'
|
validated_data['action'] = 'quali:create'
|
||||||
if validated_data['value2']['type'] in ['CMA', 'CNAS']:
|
if validated_data['value2']['type'] in ['CMA', 'CNAS']:
|
||||||
validated_data['value2']['name'] = validated_data['value2']['type']
|
validated_data['value2']['name'] = validated_data['value2']['type']
|
||||||
|
value2 = validated_data['value2']
|
||||||
|
if value2['province']:
|
||||||
|
value2['province'] = value2['province'].id
|
||||||
|
if value2['city']:
|
||||||
|
value2['city'] = value2['city'].id
|
||||||
return super().create(validated_data)
|
return super().create(validated_data)
|
||||||
|
|
||||||
class QActionQualiUpdateSerializer(serializers.ModelSerializer):
|
class QActionQualiUpdateSerializer(serializers.ModelSerializer):
|
||||||
|
|
|
||||||
|
|
@ -24,8 +24,9 @@ class QualiViewSet(ListModelMixin, GenericViewSet):
|
||||||
perms_map = {'get': '*'}
|
perms_map = {'get': '*'}
|
||||||
queryset = Quali.objects.all()
|
queryset = Quali.objects.all()
|
||||||
serializer_class = QualiListSerializer
|
serializer_class = QualiListSerializer
|
||||||
search_fields = ['name', 'type', 'grade']
|
search_fields = ['name', 'type', 'grade', 'scope', 'level', 'description']
|
||||||
ordering = ['org__sort']
|
ordering = ['org', 'org__sort', 'create_time']
|
||||||
|
filterset_fields = ['org', 'type', 'grade', 'province', 'city', 'citys']
|
||||||
|
|
||||||
@action(methods=['get'], detail=False, perms_map = {'get':'*'})
|
@action(methods=['get'], detail=False, perms_map = {'get':'*'})
|
||||||
def my(self, request, *args, **kwargs):
|
def my(self, request, *args, **kwargs):
|
||||||
|
|
@ -162,7 +163,7 @@ class QActionViewSet(PageOrNot, ListModelMixin, DestroyModelMixin, RetrieveModel
|
||||||
return Response()
|
return Response()
|
||||||
|
|
||||||
@action(methods=['post'], detail=False,
|
@action(methods=['post'], detail=False,
|
||||||
perms_map = {'post':'qaction_update'}, serializer_class=QActionQualiUpdateSerializer)
|
perms_map = {'post':'qaction_create'}, serializer_class=QActionQualiUpdateSerializer)
|
||||||
@transaction.atomic
|
@transaction.atomic
|
||||||
def quali_update(self, request, *args, **kwargs):
|
def quali_update(self, request, *args, **kwargs):
|
||||||
"""
|
"""
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
# Generated by Django 3.0.5 on 2022-05-30 07:20
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('system', '0020_auto_20220513_0926'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='city',
|
||||||
|
name='id',
|
||||||
|
field=models.CharField(max_length=20, primary_key=True, serialize=False, verbose_name='id'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='province',
|
||||||
|
name='id',
|
||||||
|
field=models.CharField(max_length=20, primary_key=True, serialize=False, verbose_name='id'),
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
@ -7,11 +7,11 @@ from utils.model import SoftModel, BaseModel
|
||||||
from simple_history.models import HistoricalRecords
|
from simple_history.models import HistoricalRecords
|
||||||
|
|
||||||
class Province(models.Model):
|
class Province(models.Model):
|
||||||
id = models.PositiveIntegerField('id', primary_key=True)
|
id = models.CharField('id', primary_key=True, max_length=20)
|
||||||
name = models.CharField(max_length=20)
|
name = models.CharField(max_length=20)
|
||||||
|
|
||||||
class City(models.Model):
|
class City(models.Model):
|
||||||
id = models.PositiveIntegerField('id', primary_key=True)
|
id = models.CharField('id', primary_key=True, max_length=20)
|
||||||
name = models.CharField(max_length=20)
|
name = models.CharField(max_length=20)
|
||||||
parent = models.ForeignKey(Province, on_delete=models.CASCADE)
|
parent = models.ForeignKey(Province, on_delete=models.CASCADE)
|
||||||
|
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,6 +1,6 @@
|
||||||
from django.urls import path, include
|
from django.urls import path, include
|
||||||
|
|
||||||
from .views import CityViewSet, ProviceViewSet, UserViewSet, OrganizationViewSet, PermissionViewSet, RoleViewSet, PositionViewSet, TestView, DictTypeViewSet, DictViewSet, sendMsg
|
from .views import CityViewSet, ProviceViewSet, UserViewSet, OrganizationViewSet, PermissionViewSet, RoleViewSet, PositionViewSet, TestView, DictTypeViewSet, DictViewSet, InitAreaView, sendMsg
|
||||||
from rest_framework import routers
|
from rest_framework import routers
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -17,5 +17,6 @@ router.register('city', CityViewSet, basename="city")
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('', include(router.urls)),
|
path('', include(router.urls)),
|
||||||
path('sendmsg/', sendMsg.as_view()),
|
path('sendmsg/', sendMsg.as_view()),
|
||||||
path('test/', TestView.as_view())
|
path('test/', TestView.as_view()),
|
||||||
|
path('initdata/', InitAreaView.as_view())
|
||||||
]
|
]
|
||||||
|
|
|
||||||
|
|
@ -36,9 +36,12 @@ from .serializers import (CitySerializer, DictSerializer, DictTypeSerializer, Fi
|
||||||
PositionSerializer, ProvinceSerializer, RoleSerializer,
|
PositionSerializer, ProvinceSerializer, RoleSerializer,
|
||||||
UserCreateSerializer, UserListSerializer,
|
UserCreateSerializer, UserListSerializer,
|
||||||
UserModifySerializer)
|
UserModifySerializer)
|
||||||
|
from django.utils.decorators import method_decorator
|
||||||
|
from django.views.decorators.cache import cache_page
|
||||||
import requests
|
import requests
|
||||||
import json
|
import json
|
||||||
from rest_framework.exceptions import AuthenticationFailed
|
from rest_framework.exceptions import AuthenticationFailed
|
||||||
|
from django.db import transaction
|
||||||
logger = logging.getLogger('log')
|
logger = logging.getLogger('log')
|
||||||
# logger.info('请求成功! response_code:{};response_headers:{};response_body:{}'.format(response_code, response_headers, response_body[:251]))
|
# logger.info('请求成功! response_code:{};response_headers:{};response_body:{}'.format(response_code, response_headers, response_body[:251]))
|
||||||
# logger.error('请求出错:{}'.format(error))
|
# logger.error('请求出错:{}'.format(error))
|
||||||
|
|
@ -208,6 +211,12 @@ class OrganizationViewSet(PageOrNot,ModelViewSet):
|
||||||
filterset_fields = ['pid','name', 'type','can_supervision']
|
filterset_fields = ['pid','name', 'type','can_supervision']
|
||||||
ordering_fields = ['sort']
|
ordering_fields = ['sort']
|
||||||
ordering = ['sort', 'pk']
|
ordering = ['sort', 'pk']
|
||||||
|
|
||||||
|
def filter_queryset(self, queryset):
|
||||||
|
queryset = super().filter_queryset(queryset)
|
||||||
|
if self.request.query_params.get('service_ok', 1):
|
||||||
|
queryset = queryset.exclude(service__isnull=True)
|
||||||
|
return queryset
|
||||||
|
|
||||||
@action(methods=['get'], detail=False, permission_classes=[IsAuthenticated])
|
@action(methods=['get'], detail=False, permission_classes=[IsAuthenticated])
|
||||||
def sub(self, request, pk=None):
|
def sub(self, request, pk=None):
|
||||||
|
|
@ -360,6 +369,40 @@ class UserViewSet(PageOrNot, ModelViewSet):
|
||||||
UserThird.objects.filter(user=request.user, type='wx_mp').delete()
|
UserThird.objects.filter(user=request.user, type='wx_mp').delete()
|
||||||
return Response()
|
return Response()
|
||||||
|
|
||||||
|
@action(methods=['post'], detail=False, perms_map={'post':'user_daoru'})
|
||||||
|
@transaction.atomic
|
||||||
|
def daoru(self, request, pk=None):
|
||||||
|
from openpyxl import load_workbook
|
||||||
|
wb = load_workbook('./media/default/users.xlsx')
|
||||||
|
sheet = wb.get_sheet_by_name('Sheet1')
|
||||||
|
i = 3
|
||||||
|
role1 = Role.objects.get(name='能力查询')
|
||||||
|
role2 = Role.objects.get(name='资质能力报送')
|
||||||
|
role3 = Role.objects.get(name='资料分享和视频培训')
|
||||||
|
while sheet['b'+str(i)].value:
|
||||||
|
name = sheet['b'+str(i)].value
|
||||||
|
email = sheet['e'+str(i)].value
|
||||||
|
if not User.objects.filter(username=email).exists():
|
||||||
|
dept = Organization.objects.get(name=sheet['j'+str(i)].value)
|
||||||
|
user = User.objects.create(name=name,
|
||||||
|
username=email,
|
||||||
|
password=make_password(''.join(random.sample(string.ascii_letters + string.digits, 8))),
|
||||||
|
dept=dept)
|
||||||
|
if sheet['f'+str(i)].value:
|
||||||
|
user.roles.add(role1)
|
||||||
|
if sheet['g'+str(i)].value:
|
||||||
|
user.roles.add(role2)
|
||||||
|
if sheet['h'+str(i)].value:
|
||||||
|
user.roles.add(role3)
|
||||||
|
print(str(i)+name+'已导入')
|
||||||
|
else:
|
||||||
|
print(str(i)+name+'已存在')
|
||||||
|
i = i + 1
|
||||||
|
return Response()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class WXMPlogin(APIView):
|
class WXMPlogin(APIView):
|
||||||
authentication_classes=[]
|
authentication_classes=[]
|
||||||
|
|
@ -388,15 +431,24 @@ class WXMPlogin(APIView):
|
||||||
class ProviceViewSet(PageOrNot, ListModelMixin, GenericViewSet):
|
class ProviceViewSet(PageOrNot, ListModelMixin, GenericViewSet):
|
||||||
queryset = Province.objects.all()
|
queryset = Province.objects.all()
|
||||||
serializer_class = ProvinceSerializer
|
serializer_class = ProvinceSerializer
|
||||||
|
search_fields = ['name']
|
||||||
ordering = 'id'
|
ordering = 'id'
|
||||||
|
|
||||||
|
@method_decorator(cache_page(60*60*2))
|
||||||
|
def list(self, request, *args, **kwargs):
|
||||||
|
return super().list(request, *args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
class CityViewSet(PageOrNot, ListModelMixin, GenericViewSet):
|
class CityViewSet(PageOrNot, ListModelMixin, GenericViewSet):
|
||||||
queryset = City.objects.all()
|
queryset = City.objects.all()
|
||||||
serializer_class = CitySerializer
|
serializer_class = CitySerializer
|
||||||
|
filterset_fields = ['parent']
|
||||||
|
search_fields = ['name']
|
||||||
ordeing = 'id'
|
ordeing = 'id'
|
||||||
|
|
||||||
|
@method_decorator(cache_page(60*60*2))
|
||||||
|
def list(self, request, *args, **kwargs):
|
||||||
|
return super().list(request, *args, **kwargs)
|
||||||
|
|
||||||
class FileViewSet(ModelViewSet):
|
class FileViewSet(ModelViewSet):
|
||||||
"""
|
"""
|
||||||
|
|
@ -452,5 +504,15 @@ def mediaauth(request):
|
||||||
return HttpResponseForbidden()
|
return HttpResponseForbidden()
|
||||||
|
|
||||||
|
|
||||||
|
class InitAreaView(APIView):
|
||||||
|
def get(self, request):
|
||||||
|
from django.db import transaction
|
||||||
|
with transaction.atomic():
|
||||||
|
from apps.system.pcity import ps, cs
|
||||||
|
for i in ps:
|
||||||
|
Province.objects.create(id=i['code'], name=i['name'])
|
||||||
|
for i in cs:
|
||||||
|
City.objects.create(id=i['code'], name=i['name'], parent=Province.objects.get(id=i['provinceCode']))
|
||||||
|
return Response()
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,21 +1,21 @@
|
||||||
from .settings import *
|
from .settings import *
|
||||||
DEBUG = True
|
DEBUG = True
|
||||||
DATABASES = {
|
DATABASES = {
|
||||||
'default': {
|
# 'default': {
|
||||||
'ENGINE': 'django.db.backends.postgresql',
|
# 'ENGINE': 'django.db.backends.postgresql',
|
||||||
'NAME': 'cma',
|
# 'NAME': 'cma',
|
||||||
'USER': 'postgres',
|
# 'USER': 'postgres',
|
||||||
'PASSWORD': 'zctest1234',
|
# 'PASSWORD': 'zctest1234',
|
||||||
'HOST': '47.95.0.242',
|
# 'HOST': '47.95.0.242',
|
||||||
'PORT': '5432',
|
# 'PORT': '5432',
|
||||||
}
|
# }
|
||||||
# 'default': {
|
'default': {
|
||||||
# 'ENGINE': 'django.db.backends.postgresql',
|
'ENGINE': 'django.db.backends.postgresql',
|
||||||
# 'NAME': 'cma',
|
'NAME': 'cma',
|
||||||
# 'USER': 'cma',
|
'USER': 'cma',
|
||||||
# 'PASSWORD': 'cma123',
|
'PASSWORD': 'cma123',
|
||||||
# # 'HOST': '172.16.80.102',
|
'HOST': '172.16.80.102',
|
||||||
# 'HOST': '1.203.161.102',
|
# 'HOST': '1.203.161.102',
|
||||||
# 'PORT': '5432',
|
'PORT': '5432',
|
||||||
# }
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue