#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ @Copyright (C) ansjer cop Video Technology Co.,Ltd.All rights reserved. @AUTHOR: ASJRD018 @NAME: Ansjer @software: PyCharm @DATE: 2018/5/29 17:07 @Version: python3.6 @MODIFY DECORD:ansjer dev @file: MealManage.py @Contact: chanjunkai@163.com """ from django.shortcuts import HttpResponse from django.views.generic.base import View from django.utils.decorators import method_decorator from django.views.decorators.csrf import csrf_exempt from Service.TokenManager import JSONTokenManager from Service.ModelService import ModelService from Service.CommonService import CommonService from Model.models import Store_Meal import traceback from django.utils import timezone from Service.ResponseService import ResponseJSON ''' http://192.168.136.40:8077/meal/manage?operation=add&token=test&title=套餐A&price=$199&content=存7天&day=7&id=1 http://192.168.136.45:8077/meal/manage?operation=update&token=test&id=1&title=套餐A&price=$199&content=存3天&day=7 http://192.168.136.40:8077/meal/manage?operation=query&token=test&page=1&line=10 http://192.168.136.40:8077/meal/manage?operation=delete&token=test&id=1&id=2&id=3&id=4&id=5 ''' class MealManage(View): @method_decorator(csrf_exempt) def dispatch(self, *args, **kwargs): return super(MealManage, self).dispatch(*args, **kwargs) def get(self, request, *args, **kwargs): request.encoding = 'utf-8' return self.validation(request_dict=request.GET) def post(self, request, *args, **kwargs): request.encoding = 'utf-8' return self.validation(request_dict=request.POST) def validation(self, request_dict, *args, **kwargs): operation = request_dict.get('operation', None) if operation is not None: token = request_dict.get('token', None) if token is not None: tokenManager = JSONTokenManager() error_code = tokenManager.verify_AToken(token) if error_code == 0: userID = tokenManager.accessDict.get('userID', None) param_flag = CommonService.get_param_flag(data=[userID]) if param_flag is True: if operation == 'query': return self.query(request_dict=request_dict) elif operation == 'add': return self.add(request_dict=request_dict, userID=userID) elif operation == 'update': return self.update(request_dict=request_dict, userID=userID) elif operation == 'delete': return self.delete(request_dict=request_dict, userID=userID) elif operation == 'find': return self.find(request_dict=request_dict, userID=userID) return ResponseJSON(444) else: return HttpResponse(tokenManager.errorCodeInfo(error_code)) else: return ResponseJSON(311) else: return ResponseJSON(444) def add(self, request_dict, userID): own_perm = ModelService.check_permission(userID=userID, permID=40) if own_perm is True: title = request_dict.get('title', None) id = request_dict.get('id', None) price = request_dict.get('price', None) content = request_dict.get('content', None) day = request_dict.get('day', None) param_flag = CommonService.get_param_flag(data=[title, price, content]) if param_flag is True: try: store_meal = Store_Meal( id = id, title=title, price=price, content=content, day=day, ) store_meal.save() except Exception: errorInfo = traceback.format_exc() print(errorInfo) return ResponseJSON(500, {'details': errorInfo}) else: if store_meal.id: return ResponseJSON(0, { 'id': store_meal.id, 'title': store_meal.title, 'price': store_meal.price, 'content': store_meal.content, 'day': store_meal.day, 'add_time': str(store_meal.add_time), 'update_time': str(store_meal.update_time), }) return ResponseJSON(444) else: return ResponseJSON(404) def query(self, request_dict): page = int(request_dict.get('page', None)) line = int(request_dict.get('line', None)) param_flag = CommonService.get_param_flag(data=[page, line]) if param_flag is True: queryset = Store_Meal.objects.all() if queryset.exists(): count = queryset.count() res = queryset[(page - 1) * line:page * line] send_json = CommonService.query_set_to_dict(res) send_json['count'] = count return ResponseJSON(0, send_json) return ResponseJSON(0) else: return ResponseJSON(444) def update(self, request_dict, userID): own_perm = ModelService.check_permission(userID=userID, permID=30) if own_perm is True: id = request_dict.get('id', None) title = request_dict.get('title', None) price = request_dict.get('price', None) day = request_dict.get('day', None) content = request_dict.get('content', None) param_flag = CommonService.get_param_flag( data=[id, title, price, content,day]) if param_flag is True: try: store_meal = Store_Meal.objects.get(id=id) except Exception: errorInfo = traceback.format_exc() print(errorInfo) return ResponseJSON(424, {'details': errorInfo}) else: if store_meal.id: now_time = timezone.localtime(timezone.now()) print(now_time) store_meal.title = title store_meal.price = price store_meal.content = content store_meal.day = day store_meal.save() return ResponseJSON(0, {'update_id': store_meal.id, 'update_time': str(now_time)}) else: return ResponseJSON(444) else: return ResponseJSON(404) def delete(self, request_dict, userID): own_perm = ModelService.check_permission(userID=userID, permID=10) if own_perm is True: id_list = request_dict.getlist('id', None) param_flag = CommonService.get_param_flag(data=[id_list]) if param_flag is True: try: for id in id_list: Store_Meal.objects.filter(id=id).delete() except Exception as e: errorInfo = traceback.format_exc() print(errorInfo) return ResponseJSON(424, {'details': repr(e)}) else: return ResponseJSON(0) else: return ResponseJSON(444) else: return ResponseJSON(404) def find(self, request_dict, userID): own_perm = ModelService.check_permission(userID=userID, permID=30) if own_perm is True: page = int(request_dict.get('page', None)) line = int(request_dict.get('line', None)) param_flag = CommonService.get_param_flag(data=[page, line]) if param_flag is True: queryset = Store_Meal.objects.all() if queryset.exists(): count = queryset.count() res = queryset[(page - 1) * line:page * line] send_json = CommonService.query_set_to_dict(res) send_json['count'] = count return ResponseJSON(0, send_json) return ResponseJSON(0) else: return ResponseJSON(444) else: return ResponseJSON(404)