#!/usr/bin/env python3 # -*- coding: utf-8 -*- import time from django.views import View from Model.models import RegionModel, CompanyModel, VPGModel, UIDModel from Object.uidManageResponseObject import uidManageResponseObject from Object.TokenObject import TokenObject from Service.ModelService import ModelService class VPGView(View): def get(self, request, *args, **kwargs): request.encoding = 'utf-8' operation = kwargs.get('operation', None) request_dict = request.GET return self.validate(request_dict, operation) def post(self, request, *args, **kwargs): request.encoding = 'utf-8' operation = kwargs.get('operation', None) request_dict = request.POST return self.validate(request_dict, operation) def validate(self, request_dict, operation): token = TokenObject(request_dict.get('token', None)) response = uidManageResponseObject() if token.code != 0: return response.json(token.code) if operation == 'add': return self.do_add(token.userID, request_dict, response) elif operation == 'update': return self.do_update(token.userID, request_dict, response) elif operation == 'delete': return self.do_delete(token.userID, request_dict, response) elif operation == 'list': return self.do_list(token.userID, request_dict, response) else: return response.json(404) def do_add(self, userID, request_dict, response): perm = ModelService.check_perm_uid_manage(userID, 0) if not perm: return response.json(309) name = request_dict.get('vpg', None) region_id = request_dict.get('region_id', None) company_id = request_dict.get('company_id', None) if name and region_id and company_id: region_qs = RegionModel.objects.filter(id=region_id) if not region_qs.exists(): return response.json(374) company_qs = CompanyModel.objects.filter(secret=company_id) if not company_qs.exists(): return response.json(373) company = company_qs[0] now_time = int(time.time()) vpgModel = VPGModel(name=name, region_id=region_id, company_id=company.id, add_time=now_time, update_time=now_time) vpgModel.save() return response.json(0) else: return response.json(444) def do_update(self, userID, request_dict, response): perm = ModelService.check_perm_uid_manage(userID, 0) if not perm: return response.json(309) id = request_dict.get('id', None) name = request_dict.get('vpg', None) region_id = request_dict.get('region_id', None) company_id = request_dict.get('company_id', None) if id: vpg_qs = VPGModel.objects.filter(id=id) if vpg_qs.exists(): now_time = int(time.time()) update = { 'update_time': now_time } if name: update['name'] = name if region_id: update['region_id'] = region_id if company_id: update['company_id'] = company_id vpg_qs.update(**update) return response.json(0) else: return response.json(173) else: return response.json(444) def do_delete(self, userID, request_dict, response): perm = ModelService.check_perm_uid_manage(userID, 0) if not perm: return response.json(309) id = request_dict.get('id', None) if id: vpg_qs = VPGModel.objects.filter(id=id) if vpg_qs.exists(): vpg_qs.delete() return response.json(0) else: return response.json(173) else: return response.json(444) def do_list(self, userID, request_dict, response): # perm = ModelService.check_perm_uid_manage(userID, 0) # if not perm: # return response.json(309) company_id = request_dict.get('company_id', None) region_id = request_dict.get('region_id', None) page = request_dict.get('page', None) line = request_dict.get('limit', None) if page and line: page = int(page) line = int(line) start = (page - 1) * line end = start + line vpg_qs = VPGModel.objects.filter() if company_id: vpg_qs.filter(company_id=company_id) if region_id: vpg_qs.filter(region_id=region_id) count = vpg_qs.count() vpg_qs = vpg_qs.values('id', 'name', 'region__name', 'region_id', 'company__name', 'add_time', 'update_time', 'company__secret') vpg_qs = vpg_qs[start: end] for vpg in vpg_qs: vpg['uid_count'] = UIDModel.objects.filter(vpg_id=vpg['id']).count() res = { 'count': count, 'data': list(vpg_qs) } return response.json(0, res) else: return response.json(444)