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 App_Info import traceback from Service.ResponseService import * ''' http://192.168.136.45:8077/appInfo?operation=add&token=test&appBundleId=123456&appName=%E8%AF%BA%E5%9F%BA%E4%BA%9A1%E5%8F%B7&systemLanguage=US&content=dladfjklsjfdsajkdfasjkljlk&app_type=2&newAppversion=1234&bundleVersion=1234 http://192.168.136.45:8077/appInfo?operation=update&token=test&appBundleId=1234&appName=%E8%AF%BA%E5%9F%BA%E4%BA%9A3%E5%8F%B7&systemLanguage=US&content=dladfjklsjfdsajkdfasjkljlk&app_type=2&newAppversion=555&id=6 http://192.168.136.45:8077/appInfo?operation=query&token=test&page=1&line=10 http://192.168.136.45:8077/appInfo?operation=delete&token=test&id=1&id=2&id=3&id=4&id=5 ''' class AppInfo(View): @method_decorator(csrf_exempt) def dispatch(self, *args, **kwargs): return super(AppInfo, 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: if operation == 'getAppNewVersion': return self.getAppNewVersion(request_dict=request_dict) else: 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, userID=userID) 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) return ResponseJSON(444) else: return HttpResponse(tokenManager.errorCodeInfo(error_code)) else: return ResponseJSON(311) else: return ResponseJSON(444) def getAppNewVersion(self, request_dict): appBundleId = request_dict.get('appBundleId', None) app_type = request_dict.get('app_type', None) # systemLanguage = request_dict.get('systemLanguage',None) param_flag = CommonService.get_param_flag(data=[appBundleId, app_type]) if param_flag is True: try: app_info = App_Info.objects.get(appBundleId=appBundleId, app_type=app_type) except Exception: errorInfo = traceback.format_exc() print(errorInfo) return ResponseJSON(424, {'details': errorInfo}) else: return ResponseJSON(0, {'appBundleId': app_info.appBundleId, 'appName': app_info.appName, 'newAppversion': app_info.newAppversion, 'systemLanguage': app_info.systemLanguage, 'content': app_info.content, 'app_type': app_info.app_type, 'id': app_info.id, 'bundleVersion': app_info.bundleVersion}) else: return ResponseJSON(444) def add(self, request_dict, userID): own_perm = ModelService.check_permission(userID=userID, permID=40) if own_perm is True: appBundleId = request_dict.get('appBundleId', None) appName = request_dict.get('appName', None) systemLanguage = request_dict.get('systemLanguage', None) newAppversion = request_dict.get('newAppversion', None) content = request_dict.get('content', None) app_type = request_dict.get('app_type', None) bundleVersion = request_dict.get('bundleVersion', None) param_flag = CommonService.get_param_flag( data=[appBundleId, appName, systemLanguage, newAppversion, content, app_type, bundleVersion]) if param_flag is True: try: has_app_info = App_Info.objects.filter(appBundleId=appBundleId) except Exception: errorInfo = traceback.format_exc() print(errorInfo) return ResponseJSON(424, {'details': errorInfo}) else: if has_app_info.exists(): return ResponseJSON(60) else: try: app_Info = App_Info( appBundleId=appBundleId, appName=appName, newAppversion=newAppversion, systemLanguage=systemLanguage, content=content, app_type=app_type, bundleVersion=bundleVersion, ) app_Info.save() except Exception: errorInfo = traceback.format_exc() print(errorInfo) return ResponseJSON(500, {'details': errorInfo}) else: app_Info.save() if app_Info.id: return ResponseJSON(0, { 'appBundleId': app_Info.appBundleId, 'appName': app_Info.appName, 'newAppversion': app_Info.newAppversion, 'systemLanguage': app_Info.systemLanguage, 'content': app_Info.content, 'app_type': app_Info.app_type, 'id': app_Info.id, 'bundleVersion': app_Info.bundleVersion, }) else: return ResponseJSON(500) return ResponseJSON(444) else: return ResponseJSON(404) def query(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 = App_Info.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) 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) appBundleId = request_dict.get('appBundleId', None) appName = request_dict.get('appName', None) systemLanguage = request_dict.get('systemLanguage', None) newAppversion = request_dict.get('newAppversion', None) content = request_dict.get('content', None) app_type = request_dict.get('app_type', None) bundleVersion = request_dict.get('bundleVersion', None) param_flag = CommonService.get_param_flag( data=[appBundleId, appName, systemLanguage, newAppversion, content, app_type, bundleVersion]) if param_flag is True: try: app_info = App_Info.objects.get(id=id) except Exception: errorInfo = traceback.format_exc() print(errorInfo) return ResponseJSON(424, {'details': errorInfo}) else: if app_info.id: app_info.appBundleId = appBundleId app_info.appName = appName app_info.systemLanguage = systemLanguage app_info.newAppversion = newAppversion app_info.content = content app_info.app_type = app_type app_info.bundleVersion = bundleVersion app_info.save() return ResponseJSON(0, {'update_id': app_info.id, 'update_time': str(app_info.update_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: App_Info.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)