From 7ac7f2b133a33fb3b368586a3cbe3feaf61b0e3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E5=89=8D=E6=98=8E?= <909355014@qq.com> Date: Tue, 24 May 2022 10:07:41 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E9=A3=8E=E9=99=A9=E5=85=A8=E5=8E=82?= =?UTF-8?q?=E5=BE=85=E5=8A=9E=E4=BB=BB=E5=8A=A1=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- safesite/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/safesite/views.py b/safesite/views.py index 76c15c8c..4d55df9a 100644 --- a/safesite/views.py +++ b/safesite/views.py @@ -8369,7 +8369,7 @@ def apiriskacttask(req): 'taskdo', 'state', 'user__ubelongpart__partname', 'user__name', 'taskdo', 'istask') return HttpResponse(transjson(total, objs), content_type="application/json") elif a == 'listalltodo': # 全厂待办任务 - objs = RiskActTask.objects.filter(istask=1, taskdo=None, usable=1) + objs = RiskActTask.objects.filter(istask=1, taskdo=None, usable=1, user__usecomp__partid=companyid) objs = objs.filter(riskact__table_type=req.GET.get('table_type', 1)) total = objs.count() startnum, endnum = fenye(req) From 575142d37feaaa07b00ea661e37cf828954c5663 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E5=89=8D=E6=98=8E?= <909355014@qq.com> Date: Wed, 27 Jul 2022 10:26:46 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=AE=9E=E7=8E=B0?= =?UTF-8?q?=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- safesite/models.py | 2 ++ safesite/tests.py | 10 ++++++ safesite/urls.py | 2 ++ safesite/viewsdrf.py | 74 ++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 88 insertions(+) diff --git a/safesite/models.py b/safesite/models.py index 63efb9ce..5befb218 100644 --- a/safesite/models.py +++ b/safesite/models.py @@ -60,6 +60,8 @@ class Partment(models.Model): def __str__(self): return self.partname + + class MySchedule(models.Model): name = models.CharField('名称', max_length=200) typeset = models.CharField('类型', default=1,max_length=10) diff --git a/safesite/tests.py b/safesite/tests.py index 7ce503c2..4d1726b4 100644 --- a/safesite/tests.py +++ b/safesite/tests.py @@ -1,3 +1,13 @@ from django.test import TestCase # Create your tests here. +import time +import hashlib +import json +def md5(st): + h1 = hashlib.md5() + h1.update(st.encode(encoding = 'utf-8')) + return h1.hexdigest() + +data = {'user_id': 1, 'company_id': 1, 'expire': time.time() + 3600} +print(md5(json.dumps(data))) \ No newline at end of file diff --git a/safesite/urls.py b/safesite/urls.py index 6314607e..420c24e4 100644 --- a/safesite/urls.py +++ b/safesite/urls.py @@ -269,4 +269,6 @@ urlpatterns = [ path('mgt/',include('safesite.mgt.urls')), path('miniprogram/', views.miniprogram), + path('api/auth/token/', viewsdrf.AuthToken.as_view()), + path('api-o/trouble/', viewsdrf.TroubleListView.as_view()) ] diff --git a/safesite/viewsdrf.py b/safesite/viewsdrf.py index 74d50631..586ccc51 100644 --- a/safesite/viewsdrf.py +++ b/safesite/viewsdrf.py @@ -75,3 +75,77 @@ class EquipmentCheckFormDetailView(generics.RetrieveUpdateDestroyAPIView): obj.save() return Response(status=status.HTTP_204_NO_CONTENT) +from django.contrib.auth.hashers import check_password +import time +import hashlib +import json +from django.core.cache import cache +import random +import string + +def ranstr(num): + salt = ''.join(random.sample(string.ascii_lowercase + string.digits, num)) + return salt + +def md5(st): + h1 = hashlib.md5() + h1.update(st.encode(encoding = 'utf-8')) + return h1.hexdigest() + +class AuthToken(APIView): + + def post(self, request): + """获取token + + 获取token + """ + data = request.data + user = User.objects.filter(username=data['username'], deletemark=1, usecomp__enabled=True).first() + if user: + if check_password(data['password'], user.epassword): + data = {'user_id': user.userid, 'company_id': user.usecomp.partid} + token = ranstr(12) + cache.set(token, data, 1800) + return Response({'code': 200, 'data': {'token': token}, 'msg': None}) + return Response({'code': 400, 'msg': '用户不存在或已禁用', 'data': None}) + +from django.db.models import F +# from django.utils import timezone +from datetime import datetime, timedelta + +class TroubleListSerializer(serializers.ModelSerializer): + id = serializers.CharField(source='troubleid') + fxr_name = serializers.CharField(source='fxr.name', read_only=True) + fxbm_name = serializers.CharField(source='fxbm.partname', read_only=True) + yhlb_name = serializers.CharField(source='yhlb.dickeyname', read_only=True) + zgr_name = serializers.CharField(source='zgr.name', read_only=True) + yhpg_name = serializers.CharField(source='yhpg.dickeyname', read_only=True) + yhdj_name = serializers.CharField(source='yhdj.dickeyname', read_only=True) + zgbm_name = serializers.CharField(source='zgbm.partname', read_only=True) + jclx_name = serializers.CharField(source='jclx.dickeyname', read_only=True) + class Meta: + model = Trouble + fields = ['yhms', 'yhzt', 'fxsj', 'tbsj', 'yhnum', 'zgqx', 'zgsj', 'id', + 'fxr_name', 'fxbm_name', 'yhlb_name', 'zgr_name', 'yhpg_name', 'yhdj_name', 'zgbm_name', 'jclx_name'] +class TroubleListView(APIView): + + + def post(self, request): + # 查询某一天的隐患, 默认是当天 + data = request.data + if 'token' not in data: + return Response({'code': 400, 'msg': '请提供token', 'data': None}) + user_data = cache.get(data['token'], None) + if user_data is None: + return Response({'code': 400, 'msg': '无效token', 'data': None}) + company_id = user_data['company_id'] + day = datetime.now().date() + if 'date' in data: + day = datetime.strptime(data['date'],'%Y-%m-%d').date() + objs = Trouble.objects.filter(usecomp__partid=company_id).exclude(deletemark=0) + if data.get('type', 1) == 2: # 当时整改的 + objs = objs.filter(zgsj__year=day.year, zgsj__month=day.month, zgsj__day=day.day) + else: + objs = objs.filter(fxsj__year=day.year, fxsj__month=day.month, fxsj__day=day.day) + serializer = TroubleListSerializer(instance=objs, many=True) + return Response({'code': 200, 'data': serializer.data, 'msg': None})