Merge branch 'develop' of https://e.coding.net/ctcdevteam/hberp/hberp into develop

This commit is contained in:
shijing 2022-01-25 09:54:49 +08:00
commit 573f25bce6
16 changed files with 110 additions and 15 deletions

View File

View File

@ -0,0 +1,4 @@
from django.contrib import admin
from rest_framework_simplejwt.views import (TokenObtainPairView,
TokenRefreshView)
# Register your models here.

View File

@ -0,0 +1,7 @@
from django.apps import AppConfig
class AuthConfig(AppConfig):
name = 'apps.auth1'
verbose_name = "认证"

View File

@ -0,0 +1,3 @@
from django.db import models
# Create your models here.

View File

@ -0,0 +1,5 @@
from rest_framework import serializers
class LoginSerializer(serializers.Serializer):
username = serializers.CharField(label="用户名")
password = serializers.CharField(label="密码")

View File

@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

View File

@ -0,0 +1,12 @@
from django.urls import path
from rest_framework_simplejwt.views import (TokenObtainPairView,
TokenRefreshView)
from apps.auth1.views import LoginView, LogoutView, TokenBlackView
urlpatterns = [
path('token/', TokenObtainPairView.as_view(), name='token_obtain_pair'),
path('token/refresh/', TokenRefreshView.as_view(), name='token_refresh'),
path('token/black/', TokenBlackView.as_view(), name='token_black'),
path('login/', LoginView.as_view(), name='api_login'),
path('logout/', LogoutView.as_view(), name='api_logout')
]

View File

@ -0,0 +1,47 @@
from django.shortcuts import render
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status
from django.contrib.auth import authenticate, login, logout
from rest_framework.generics import CreateAPIView
from rest_framework.permissions import IsAuthenticated
from apps.auth1.serializers import LoginSerializer
# Create your views here.
class TokenBlackView(APIView):
permission_classes = [IsAuthenticated]
def get(self, request, *args, **kwargs): # 可将token加入黑名单
return Response(status=status.HTTP_200_OK)
class LoginView(CreateAPIView):
authentication_classes = []
permission_classes = []
serializer_class = LoginSerializer
def create(self, request, *args, **kwargs):
"""
账户密码登录
"""
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
vdata = serializer.validated_data
user = authenticate(username = vdata.get('username'),
password = vdata.get('password'))
if user is not None:
login(request, user)
return Response()
return Response('登录失败', status=status.HTTP_400_BAD_REQUEST)
class LogoutView(APIView):
authentication_classes = []
permission_classes = []
def post(self, request, *args, **kwargs):
"""
退出登录
"""
logout(request)
return Response()

View File

@ -2,7 +2,7 @@ from django.db.models import base
from rest_framework import urlpatterns from rest_framework import urlpatterns
from django.urls import path, include from django.urls import path, include
from rest_framework.routers import DefaultRouter from rest_framework.routers import DefaultRouter
from apps.develop.views import CleanDataView, UpdateCuttingView, UpdateFIFOItem, UpdateLastTestResult, UpdateSpg from apps.develop.views import CleanDataView, UpdateCuttingView, UpdateEquipState, UpdateFIFOItem, UpdateLastTestResult, UpdateSpg
urlpatterns = [ urlpatterns = [
path('cleandata/', CleanDataView.as_view()), path('cleandata/', CleanDataView.as_view()),
@ -10,6 +10,7 @@ urlpatterns = [
path('update_last_result/', UpdateLastTestResult.as_view()), path('update_last_result/', UpdateLastTestResult.as_view()),
path('update_last_result/', UpdateLastTestResult.as_view()), path('update_last_result/', UpdateLastTestResult.as_view()),
path('update_fifoitem/', UpdateFIFOItem.as_view()), path('update_fifoitem/', UpdateFIFOItem.as_view()),
path('update_spg/', UpdateSpg.as_view()) path('update_spg/', UpdateSpg.as_view()),
path('update_equip_state/', UpdateEquipState.as_view())
] ]

View File

@ -11,6 +11,7 @@ from apps.sam.models import Order
from apps.wf.models import Ticket from apps.wf.models import Ticket
from apps.wpm.models import Operation, OperationMaterial, WProduct, WproductFlow from apps.wpm.models import Operation, OperationMaterial, WProduct, WproductFlow
from apps.wpm.services import WpmServies from apps.wpm.services import WpmServies
from apps.em.tasks import update_equip_state_by_next_check_date
# Create your views here. # Create your views here.
class CleanDataView(APIView): class CleanDataView(APIView):
@ -91,3 +92,11 @@ class UpdateSpg(APIView):
for i in SubProductionPlan.objects.filter(subproduction__process__id=1): for i in SubProductionPlan.objects.filter(subproduction__process__id=1):
WpmServies.update_subproduction_progress_main(sp=i) WpmServies.update_subproduction_progress_main(sp=i)
return Response() return Response()
class UpdateEquipState(APIView):
permission_classes = [IsAdminUser]
def post(self, request, format=None):
update_equip_state_by_next_check_date()
return Response()

View File

@ -0,0 +1,13 @@
from __future__ import absolute_import, unicode_literals
from celery import shared_task
from django.utils import timezone
from apps.em.models import Equipment
@shared_task
def update_equip_state_by_next_check_date():
Equipment.objects.filter(next_check_date__lt=timezone.now()).update(
state = Equipment.EQUIP_STATE_DISABLE
)

View File

@ -7,4 +7,4 @@ class UserFilter(DynamicFieldsFilterMixin, filters.FilterSet):
name = filters.CharFilter(field_name='name', lookup_expr='contains') name = filters.CharFilter(field_name='name', lookup_expr='contains')
class Meta: class Meta:
model = User model = User
fields = ['name', 'is_active'] fields = ['name', 'is_active', 'is_atwork']

View File

@ -48,12 +48,6 @@ class TaskList(APIView):
tasks = list(sorted(name for name in celery_app.tasks if not name.startswith('celery.'))) tasks = list(sorted(name for name in celery_app.tasks if not name.startswith('celery.')))
return Response(tasks) return Response(tasks)
class LogoutView(APIView):
permission_classes = []
def get(self, request, *args, **kwargs): # 可将token加入黑名单
return Response(status=status.HTTP_200_OK)
class PTaskViewSet(OptimizationMixin, ModelViewSet): class PTaskViewSet(OptimizationMixin, ModelViewSet):
perms_map = {'get': '*', 'post': 'ptask_create', perms_map = {'get': '*', 'post': 'ptask_create',
'put': 'ptask_update', 'delete': 'ptask_delete'} 'put': 'ptask_update', 'delete': 'ptask_delete'}

View File

@ -48,6 +48,7 @@ INSTALLED_APPS = [
'simple_history', 'simple_history',
'apps.system', 'apps.system',
'apps.monitor', 'apps.monitor',
'apps.auth1',
'apps.pum', 'apps.pum',
'apps.em', 'apps.em',
'apps.hrm', 'apps.hrm',

View File

@ -13,7 +13,7 @@ Including another URLconf
1. Import the include() function: from django.urls import include, path 1. Import the include() function: from django.urls import include, path
2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) 2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
""" """
from apps.system.views import FileViewSet, LogoutView from apps.system.views import FileViewSet
from django.conf import settings from django.conf import settings
from django.conf.urls.static import static from django.conf.urls.static import static
from django.contrib import admin from django.contrib import admin
@ -23,8 +23,6 @@ from drf_yasg import openapi
from drf_yasg.views import get_schema_view from drf_yasg.views import get_schema_view
from rest_framework import routers from rest_framework import routers
from rest_framework.documentation import include_docs_urls from rest_framework.documentation import include_docs_urls
from rest_framework_simplejwt.views import (TokenObtainPairView,
TokenRefreshView)
from django.views.generic import TemplateView from django.views.generic import TemplateView
from utils.view import GenSignature, UpdateDevelop from utils.view import GenSignature, UpdateDevelop
@ -53,12 +51,10 @@ urlpatterns = [
path('api/redoc/', schema_view.with_ui('redoc', cache_timeout=0), name='schema-redoc'), path('api/redoc/', schema_view.with_ui('redoc', cache_timeout=0), name='schema-redoc'),
# api # api
path('api/token/', TokenObtainPairView.as_view(), name='token_obtain_pair'),
path('api/token/refresh/', TokenRefreshView.as_view(), name='token_refresh'),
path('api/token/black/', LogoutView.as_view(), name='token_black'),
path('api/file/', include(router.urls)), path('api/file/', include(router.urls)),
path('api/system/', include('apps.system.urls')), path('api/system/', include('apps.system.urls')),
path('api/monitor/', include('apps.monitor.urls')), path('api/monitor/', include('apps.monitor.urls')),
path('api/auth/', include('apps.auth1.urls')),
path('api/pum/', include('apps.pum.urls')), path('api/pum/', include('apps.pum.urls')),
path('api/em/', include('apps.em.urls')), path('api/em/', include('apps.em.urls')),
path('api/hrm/', include('apps.hrm.urls')), path('api/hrm/', include('apps.hrm.urls')),