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'
|
||||
if validated_data['value2']['type'] in ['CMA', 'CNAS']:
|
||||
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)
|
||||
|
||||
class QActionQualiUpdateSerializer(serializers.ModelSerializer):
|
||||
|
|
|
|||
|
|
@ -24,8 +24,9 @@ class QualiViewSet(ListModelMixin, GenericViewSet):
|
|||
perms_map = {'get': '*'}
|
||||
queryset = Quali.objects.all()
|
||||
serializer_class = QualiListSerializer
|
||||
search_fields = ['name', 'type', 'grade']
|
||||
ordering = ['org__sort']
|
||||
search_fields = ['name', 'type', 'grade', 'scope', 'level', 'description']
|
||||
ordering = ['org', 'org__sort', 'create_time']
|
||||
filterset_fields = ['org', 'type', 'grade', 'province', 'city', 'citys']
|
||||
|
||||
@action(methods=['get'], detail=False, perms_map = {'get':'*'})
|
||||
def my(self, request, *args, **kwargs):
|
||||
|
|
@ -162,7 +163,7 @@ class QActionViewSet(PageOrNot, ListModelMixin, DestroyModelMixin, RetrieveModel
|
|||
return Response()
|
||||
|
||||
@action(methods=['post'], detail=False,
|
||||
perms_map = {'post':'qaction_update'}, serializer_class=QActionQualiUpdateSerializer)
|
||||
perms_map = {'post':'qaction_create'}, serializer_class=QActionQualiUpdateSerializer)
|
||||
@transaction.atomic
|
||||
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
|
||||
|
||||
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)
|
||||
|
||||
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)
|
||||
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 .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
|
||||
|
||||
|
||||
|
|
@ -17,5 +17,6 @@ router.register('city', CityViewSet, basename="city")
|
|||
urlpatterns = [
|
||||
path('', include(router.urls)),
|
||||
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,
|
||||
UserCreateSerializer, UserListSerializer,
|
||||
UserModifySerializer)
|
||||
from django.utils.decorators import method_decorator
|
||||
from django.views.decorators.cache import cache_page
|
||||
import requests
|
||||
import json
|
||||
from rest_framework.exceptions import AuthenticationFailed
|
||||
from django.db import transaction
|
||||
logger = logging.getLogger('log')
|
||||
# logger.info('请求成功! response_code:{};response_headers:{};response_body:{}'.format(response_code, response_headers, response_body[:251]))
|
||||
# logger.error('请求出错:{}'.format(error))
|
||||
|
|
@ -208,6 +211,12 @@ class OrganizationViewSet(PageOrNot,ModelViewSet):
|
|||
filterset_fields = ['pid','name', 'type','can_supervision']
|
||||
ordering_fields = ['sort']
|
||||
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])
|
||||
def sub(self, request, pk=None):
|
||||
|
|
@ -360,6 +369,40 @@ class UserViewSet(PageOrNot, ModelViewSet):
|
|||
UserThird.objects.filter(user=request.user, type='wx_mp').delete()
|
||||
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):
|
||||
authentication_classes=[]
|
||||
|
|
@ -388,15 +431,24 @@ class WXMPlogin(APIView):
|
|||
class ProviceViewSet(PageOrNot, ListModelMixin, GenericViewSet):
|
||||
queryset = Province.objects.all()
|
||||
serializer_class = ProvinceSerializer
|
||||
search_fields = ['name']
|
||||
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):
|
||||
queryset = City.objects.all()
|
||||
serializer_class = CitySerializer
|
||||
filterset_fields = ['parent']
|
||||
search_fields = ['name']
|
||||
ordeing = 'id'
|
||||
|
||||
@method_decorator(cache_page(60*60*2))
|
||||
def list(self, request, *args, **kwargs):
|
||||
return super().list(request, *args, **kwargs)
|
||||
|
||||
class FileViewSet(ModelViewSet):
|
||||
"""
|
||||
|
|
@ -452,5 +504,15 @@ def mediaauth(request):
|
|||
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 *
|
||||
DEBUG = True
|
||||
DATABASES = {
|
||||
'default': {
|
||||
'ENGINE': 'django.db.backends.postgresql',
|
||||
'NAME': 'cma',
|
||||
'USER': 'postgres',
|
||||
'PASSWORD': 'zctest1234',
|
||||
'HOST': '47.95.0.242',
|
||||
'PORT': '5432',
|
||||
}
|
||||
# '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': 'postgres',
|
||||
# 'PASSWORD': 'zctest1234',
|
||||
# 'HOST': '47.95.0.242',
|
||||
# 'PORT': '5432',
|
||||
# }
|
||||
'default': {
|
||||
'ENGINE': 'django.db.backends.postgresql',
|
||||
'NAME': 'cma',
|
||||
'USER': 'cma',
|
||||
'PASSWORD': 'cma123',
|
||||
'HOST': '172.16.80.102',
|
||||
# 'HOST': '1.203.161.102',
|
||||
'PORT': '5432',
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue