Merge branch 'master' of https://e.coding.net/ctcdevteam/ehs/ehs_server
This commit is contained in:
commit
403b97568a
|
@ -21,3 +21,8 @@ def close_rpj_by_leave_time():
|
||||||
else:
|
else:
|
||||||
i.state = Rpj.RPJ_CLOSE
|
i.state = Rpj.RPJ_CLOSE
|
||||||
i.save()
|
i.save()
|
||||||
|
# 工单审批如果还未结束,直接关闭
|
||||||
|
from apps.wf.models import Ticket
|
||||||
|
from apps.wf.services import WfService
|
||||||
|
if i.ticket and i.ticket.state != Ticket.TICKET_ACT_STATE_FINISH:
|
||||||
|
WfService.close_by_task(i.ticket, '相关方入厂时间到期')
|
||||||
|
|
|
@ -8,11 +8,12 @@ from django_celery_beat.models import (CrontabSchedule, IntervalSchedule,
|
||||||
PeriodicTask)
|
PeriodicTask)
|
||||||
from django_celery_results.models import TaskResult
|
from django_celery_results.models import TaskResult
|
||||||
from rest_framework.decorators import action
|
from rest_framework.decorators import action
|
||||||
from rest_framework.exceptions import ParseError, ValidationError
|
from rest_framework.exceptions import ParseError, ValidationError, PermissionDenied
|
||||||
from rest_framework.mixins import (CreateModelMixin, DestroyModelMixin,
|
from rest_framework.mixins import (CreateModelMixin, DestroyModelMixin,
|
||||||
ListModelMixin, RetrieveModelMixin)
|
ListModelMixin, RetrieveModelMixin)
|
||||||
from rest_framework.parsers import (JSONParser,
|
from rest_framework.parsers import (JSONParser,
|
||||||
MultiPartParser)
|
MultiPartParser)
|
||||||
|
from rest_framework.serializers import Serializer
|
||||||
from rest_framework.permissions import IsAuthenticated, AllowAny
|
from rest_framework.permissions import IsAuthenticated, AllowAny
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
from rest_framework.views import APIView
|
from rest_framework.views import APIView
|
||||||
|
@ -495,6 +496,16 @@ class UserViewSet(CustomModelViewSet):
|
||||||
else:
|
else:
|
||||||
raise ValidationError(**OLD_PASSWORD_WRONG)
|
raise ValidationError(**OLD_PASSWORD_WRONG)
|
||||||
|
|
||||||
|
@action(methods=['post'], detail=True, perms_map={'post': '*'}, serializer_class=Serializer)
|
||||||
|
def reset_password(self, request, pk=None):
|
||||||
|
user = self.get_object()
|
||||||
|
if request.user.is_superuser:
|
||||||
|
user.set_password('0000')
|
||||||
|
user.save()
|
||||||
|
else:
|
||||||
|
raise PermissionDenied()
|
||||||
|
return Response()
|
||||||
|
|
||||||
@action(methods=['get'], detail=False, permission_classes=[IsAuthenticated])
|
@action(methods=['get'], detail=False, permission_classes=[IsAuthenticated])
|
||||||
def info(self, request, pk=None):
|
def info(self, request, pk=None):
|
||||||
"""登录用户信息
|
"""登录用户信息
|
||||||
|
|
|
@ -21,3 +21,8 @@ def close_visit_by_leave_time():
|
||||||
else:
|
else:
|
||||||
i.state = Visit.V_CLOSE
|
i.state = Visit.V_CLOSE
|
||||||
i.save()
|
i.save()
|
||||||
|
# 工单审批如果还未结束,直接关闭
|
||||||
|
from apps.wf.models import Ticket
|
||||||
|
from apps.wf.services import WfService
|
||||||
|
if i.ticket and i.ticket.state != Ticket.TICKET_ACT_STATE_FINISH:
|
||||||
|
WfService.close_by_task(i.ticket, '访客入厂时间到期')
|
||||||
|
|
|
@ -435,6 +435,20 @@ class WfService(object):
|
||||||
if state.participant_type == State.PARTICIPANT_TYPE_ROBOT:
|
if state.participant_type == State.PARTICIPANT_TYPE_ROBOT:
|
||||||
run_task.delay(ticket_id=ticket.id)
|
run_task.delay(ticket_id=ticket.id)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def close_by_task(cls, ticket: Ticket, suggestion: str):
|
||||||
|
# 定时任务触发的工单关闭
|
||||||
|
end_state = WfService.get_workflow_end_state(ticket.workflow)
|
||||||
|
ticket.state = end_state
|
||||||
|
ticket.participant_type = 0
|
||||||
|
ticket.participant = 0
|
||||||
|
ticket.act_state = Ticket.TICKET_ACT_STATE_CLOSED
|
||||||
|
ticket.save()
|
||||||
|
# 更新流转记录
|
||||||
|
TicketFlow.objects.create(ticket=ticket, state=ticket.state,
|
||||||
|
ticket_data=WfService.get_ticket_all_field_value(ticket),
|
||||||
|
suggestion=suggestion, participant_type=State.PARTICIPANT_TYPE_ROBOT,
|
||||||
|
intervene_type=Transition.TRANSITION_INTERVENE_TYPE_CLOSE, transition=None)
|
||||||
|
|
||||||
def send_ticket_notice_t(ticket: Ticket):
|
def send_ticket_notice_t(ticket: Ticket):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -24,11 +24,11 @@ def send_ticket_notice(ticket_id):
|
||||||
if ticket:
|
if ticket:
|
||||||
if ticket.participant_type == 1:
|
if ticket.participant_type == 1:
|
||||||
# 发送短信通知
|
# 发送短信通知
|
||||||
pt = User.objects.filter(id=ticket.participant).first()
|
pt = User.objects.filter(id=ticket.participant, is_active=True).first()
|
||||||
if pt and pt.phone:
|
if pt and pt.phone:
|
||||||
send_sms(pt.phone, 1002, params)
|
send_sms(pt.phone, 1002, params)
|
||||||
elif ticket.participant_type == 2:
|
elif ticket.participant_type == 2:
|
||||||
pts = User.objects.filter(id__in=ticket.participant)
|
pts = User.objects.filter(id__in=ticket.participant, is_active=True)
|
||||||
for i in pts:
|
for i in pts:
|
||||||
if i.phone:
|
if i.phone:
|
||||||
send_sms(i.phone, 1002, params)
|
send_sms(i.phone, 1002, params)
|
||||||
|
|
Loading…
Reference in New Issue