from django.views.generic.base import View from django.utils.decorators import method_decorator from django.views.decorators.csrf import csrf_exempt from Service.CommonService import CommonService from Service.ModelService import ModelService from Model.models import App_Info import traceback from Object.TokenObject import TokenObject from Object.ResponseObject import ResponseObject ''' 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://127.0.0.1:8000/appInfo?operation=query&token=stest&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) response = ResponseObject() if operation is not None: if operation == 'getAppNewVersion': return self.getAppNewVersion(request_dict,response) else: token = request_dict.get('token', None) if token is not None: tko = TokenObject(token) tko.valid() response.lang = tko.lang if tko.code == 0: userID = tko.userID() if userID is not None: if operation == 'query': return self.query(request_dict, userID,response) elif operation == 'add': return self.add(request_dict, userID,response) elif operation == 'update': return self.update(request_dict, userID,response) elif operation == 'delete': return self.delete(request_dict, userID,response) return response.json(444,'userID') else: return response.json(tko.code) else: return response.json(311) else: return response.json(444,'operation') def getAppNewVersion(self, request_dict,response): appBundleId = request_dict.get('appBundleId', None) app_type = request_dict.get('app_type', None) if appBundleId is not None and app_type is not None: try: app_info = App_Info.objects.get(appBundleId=appBundleId, app_type=app_type) except Exception: errorInfo = traceback.format_exc() print(errorInfo) return response.json(424, {'details': errorInfo}) else: return response.json(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, 'downloadLink':app_info.downloadLink, 'id': app_info.id, 'bundleVersion': app_info.bundleVersion}) else: return response.json(444,'app_type,appBundleId') def add(self, request_dict, userID,response): 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) downloadLink = request_dict.get('downloadLink', 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 response.json(424, {'details': errorInfo}) else: if has_app_info.exists(): return response.json(60) else: try: app_Info = App_Info( appBundleId=appBundleId, appName=appName, newAppversion=newAppversion, systemLanguage=systemLanguage, content=content, app_type=app_type, bundleVersion=bundleVersion, downloadLink=downloadLink, ) app_Info.save() except Exception: errorInfo = traceback.format_exc() print(errorInfo) return response.json(500, {'details': errorInfo}) else: app_Info.save() if app_Info.id: return response.json(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, 'downloadLink':downloadLink, 'bundleVersion': app_Info.bundleVersion }) else: return response.json(500) return response.json(444) else: return response.json(404) def query(self, request_dict, userID,response): 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)) if page is not None and line is not None: queryset = App_Info.objects.all() if queryset.exists(): count = queryset.count() res = queryset[(page - 1) * line:page * line] send_json = CommonService.qs_to_dict(res) send_json['count'] = count return response.json(0, send_json) return response.json(0) else: return response.json(444,'page,line') else: return response.json(404) def update(self, request_dict, userID, response): 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) downloadLink = request_dict.get('downloadLink', None) param_flag = CommonService.get_param_flag( data=[appBundleId, appName, systemLanguage, newAppversion, content, app_type, bundleVersion,downloadLink]) if param_flag is True: try: app_info = App_Info.objects.get(id=id) except Exception: errorInfo = traceback.format_exc() print(errorInfo) return response.json(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.downloadLink = downloadLink app_info.save() return response.json(0, {'update_id': app_info.id, 'update_time': str(app_info.update_time)}) else: return response.json(444) else: return response.json(404) def delete(self, request_dict, userID,response): own_perm = ModelService.check_permission(userID=userID, permID=10) if own_perm is True: id_list = request_dict.getlist('id', None) if id_list : try: for id in id_list: App_Info.objects.filter(id=id).delete() except Exception as e: errorInfo = traceback.format_exc() print(errorInfo) return response.json(424, {'details': repr(e)}) else: return response.json(0) else: return response.json(444,'id must list') else: return response.json(404)