Quellcode durchsuchen

添加下载邮件excel功能和删除去年的意见反馈数据的功能

tanghongbin vor 4 Jahren
Ursprung
Commit
e051051fcc
5 geänderte Dateien mit 67 neuen und 2 gelöschten Zeilen
  1. 1 0
      Ansjer/urls.py
  2. 29 0
      Controller/AdminManage.py
  3. 35 0
      Controller/FeedBack.py
  4. 0 1
      Controller/SysMsg.py
  5. 2 1
      Controller/UserController.py

+ 1 - 0
Ansjer/urls.py

@@ -241,6 +241,7 @@ urlpatterns = [
 
     # 订阅邮件
     url(r'^account/subscribe$', UserController.SubscribeEmailView.as_view()),
+    url(r'^account/subscribe/download$', UserController.SubscribeEmailView.as_view()),
 
     # app 设备消息模板
     # 路由加参数参考

+ 29 - 0
Controller/AdminManage.py

@@ -3,11 +3,15 @@ import time
 from datetime import date, timedelta, timezone as asj_timezone
 
 import boto3
+import xlwt
 from django.db.models import Count,Q
+from django.http import HttpResponse
 from django.views.decorators.csrf import csrf_exempt
 from django.views.generic import TemplateView
 from django.utils.decorators import method_decorator
 from django.contrib.auth.hashers import make_password  # 对密码加密模块
+from openpyxl import workbook
+
 from Model.models import Device_Info, Role, UserExModel, User_Brand, UidSetModel, AppFrequencyYearStatisticsModel, \
     AppFrequencyStatisticsModel, EquipmentInfoExStatisticsModel, Equipment_Info
 from Service.ModelService import ModelService
@@ -87,6 +91,8 @@ class AdminManage(TemplateView):
             return self.query_failures_push(userID, request_dict, response)
         if operation == 'getPushServerCPUUsage':
             return self.query_push_server_cpu_usage(userID, request_dict, response)
+        if operation == 'downloadSubscribeEmail':
+            return self.download_subscribe_email(userID, request_dict, response)
 
     def resetUserPwd(self, request_dict, userID, response):
         own_permission = ModelService.check_perm(userID=userID, permID=50)
@@ -633,6 +639,29 @@ class AdminManage(TemplateView):
             print(repr(e))
             return response.json(10, 'AWS Server Error')
 
+    def download_subscribe_email(self, userID, request_dict, response):
+        own_permission = ModelService.check_perm(userID=userID, permID=30)
+        if own_permission is not True:
+            return response.json(404)
+
+        user_qs = Device_User.objects.filter(subscribe_email=1).values('userEmail')
+        print(user_qs)
+        response = HttpResponse(content_type='application/vnd.ms-excel')
+        response['Content-Disposition'] = 'attachment; filename=UID' + time.strftime('-%Y-%m-%d-%H-%M-%S', time.localtime()) + '.xls'
+        workbook = xlwt.Workbook(encoding='utf-8')
+        sheet1 = workbook.add_sheet('Email Address')
+
+        num = 1
+        sheet1.write(0, 0, 'Email Address')
+        for user in user_qs:
+            email = user['userEmail']
+            if email == '':
+                continue
+            sheet1.write(num, 0, email)
+            num += 1
+        workbook.save(response)
+        return response
+
 
 def getCompareKey(item):
     return item['Timestamp']

+ 35 - 0
Controller/FeedBack.py

@@ -56,6 +56,8 @@ class FeedBackView(View):
                 return self.do_query_by_admin(userID, request_dict, response)
             elif operation == 'deleteByAdmin':
                 return self.do_delete_by_admin(userID, request_dict, response)
+            elif operation == 'deleteImage':
+                return self.do_delete_image(userID, request_dict, response)
             else:
                 return response.json(414)
         else:
@@ -264,3 +266,36 @@ class FeedBackView(View):
                 return response.json(0)
         else:
             return response.json(404)
+
+    def do_delete_image(self, userID, request_dict, response):
+        # own_perm = ModelService.check_perm(userID, 10)
+        # if not own_perm:
+        #     return response.json(404)
+        end_time = request_dict.get('end_time', None)
+        if end_time is None:
+            return response.json(444)
+        sys_ms_qs = FeedBackModel.objects.filter(addTime__lt=end_time).order_by('id').values('id')
+        ids = []
+        for sys_ms in sys_ms_qs:
+            ids.append(sys_ms['id'])
+
+        sm_qs = StatResModel.objects.filter(feedbackmodel__id__in=ids).values('id', 'name')
+        names = []
+        time_struct = time.localtime()
+        current_year = time_struct.tm_year
+        target_year = current_year - 1
+        str_prefix = str(target_year)
+        print(str_prefix)
+        for sm in sm_qs:
+            name = sm['name']
+            if name.find(str_prefix) == 0:
+                names.append('feedback/' + name)
+
+        # auth = oss2.Auth(OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET)
+        # bucket = oss2.Bucket(auth, 'oss-cn-hongkong.aliyuncs.com', 'statres')
+        # bucket.batch_delete_objects(names)
+        # FeedBackModel.objects.filter(id__in=ids).delete()
+        print(names)
+        print(len(names))
+
+        return response.json(0)

+ 0 - 1
Controller/SysMsg.py

@@ -250,5 +250,4 @@ class SysMsgView(View):
                 return response.json(173)
         else:
             return response.json(444, 'sid')
-
 # 回复记录

+ 2 - 1
Controller/UserController.py

@@ -3679,7 +3679,8 @@ def updateUserCountry(request):
             if data:
                 country = data
             else:
-                country = CommonService.getAddr(country_ip['ip'])
+                country = CommonService.getIpIpInfo(country_ip['ip'], lang='CN')
+                country = country['country_name']
                 redisObject.set_data(key=key, val=country, expire=3600)
 
             country_ip['country'] = country