def getFormObjAjax(request): ''' load service_object's form_object return: json author: Arthur ''' username = request.user.username postdata = getPostdata(request) result = {} if username: require_field = ['api_path'] checker = DataChecker(postdata, require_field) if checker.get('status') == 'success': flow_uuid = FlowActiveGlobalObject.APIgetUUID( postdata.get('api_path')) thisQuery = list( FlowActive.objects.filter(flow_uuid=flow_uuid, undeploy_flag=False).values( 'formobject', 'attachment')) if len(thisQuery): result = thisQuery[0] language = get_language() app_id = FlowActiveGlobalObject.UUIDSearch( flow_uuid).flow_app_id formobject = Translator('formobject', 'active', language, app_id, None).Do(result['formobject']) result['formobject'] = json.dumps(formobject) return ResponseAjax(statusEnum.success, _('讀取成功。'), result).returnJSON() else: error('%s get form_object with no permission' % username, request) return ResponseAjax(statusEnum.no_permission, _('您沒有權限進行此操作。')).returnJSON()
def saveDashboardAjax(request): ''' save user's omdashboard setting input: request return: json author: Arthur ''' #Server Side Rule Check username = request.user.username postdata = getPostdata(request) if username: require_field = ['content'] checker = DataChecker(postdata, require_field) if checker.get('status') == 'success': #static variable dashboard = OmDashboard.objects.get_or_create(user=request.user)[0] setattr(dashboard, "content", postdata.get('content', '')) dashboard.save() info('%s update Dashboard success' % username, request) return ResponseAjax(statusEnum.success, _('儲存成功')).returnJSON() else: info('%s update Dashboard error' % username, request) return ResponseAjax(statusEnum.not_found, checker.get('message'), checker).returnJSON() else: info('%s update Dashboard with no permission' % username, request) return ResponseAjax(statusEnum.no_permission, _('您沒有權限進行此操作。')).returnJSON()
def deleteMessageHistoryAjax(request): ''' create messages content input: request return: json author: Kolin Hsu ''' postdata = getPostdata(request) messagehistory_id_list = postdata.get('messagehistory_id', '') action = postdata.get('action', 'delete') if messagehistory_id_list: if action == 'delete': request.user.messagebox_set.filter( messagehistory_id__in=messagehistory_id_list).update( delete=True) info('%s delete message success.' % request.user.username, request) return ResponseAjax(statusEnum.success, _('刪除訊息成功')).returnJSON() else: request.user.messagebox_set.filter( messagehistory_id__in=messagehistory_id_list).update( delete=False) return ResponseAjax(statusEnum.success, _('訊息還原成功')).returnJSON() else: info('%s delete message success.' % request.user.username, request) return ResponseAjax(statusEnum.no_permission, _('找不到訊息資料')).returnJSON()
def listMessageHistoryAjax(request): ''' show messages detail list input: request return: messages content object author: Kolin Hsu ''' postdata = getPostdata(request) messages_id = postdata.get('messages_id', None) if messages_id is not None: box_lst = list( request.user.messagebox_set.filter( messages_id=messages_id).values_list('id', flat=True)) result = list( MessageHistory.objects.filterformat( 'id', 'create_user__nick_name', 'create_group_name', 'createtime', 'messagebox__read', 'messagehistoryfiles__main_id', messagebox__id__in=box_lst, messagebox__omuser_id=request.user.id).distinct().order_by( '-createtime')) info('%s list message history success.' % request.user.username, request) return ResponseAjax(statusEnum.success, _('搜尋成功'), result).returnJSON() else: info('%s list message history error.' % request.user.username, request) return ResponseAjax(statusEnum.no_permission, _('請提供訊息編號')).returnJSON()
def saveServiceAjax(request): ''' save manager's service setting input: request return: json author: Arthur ''' #Server Side Rule Check username = request.user.username postdata = getPostdata(request) if username: require_field = ['content'] checker = DataChecker(postdata, require_field) if checker.get('status') == 'success': #是否存入翻譯 lan_package = postdata.get('lan_package', None) if lan_package: FlowActiveGlobalObject.setSysLanDict("service", None, lan_package) #static variable box_object = json.loads(postdata.get('content', '')) OmServiceDesign.objects.create( content=json.dumps(box_object), language_package=json.dumps( FlowActiveGlobalObject.getSysLanDict('service'))) OmService.objects.all().delete() ServiceList = [] for key in box_object["list"]: thisSer = box_object["list"][key] if thisSer["type"] == "service": flow_uuid = FlowActiveGlobalObject.APIgetUUID( thisSer['api_path']) ser = OmService(service_id=thisSer['id'], flow_uuid=flow_uuid, role=thisSer['setting']['setRole'], default_value=json.dumps( thisSer['default_value'])) ServiceList.append(ser) OmService.objects.bulk_create(ServiceList) info('%s update Service success' % username, request) return ResponseAjax(statusEnum.success, _('儲存成功。')).returnJSON() else: info('%s update Service error' % username, request) return ResponseAjax(statusEnum.not_found, checker.get('message'), checker).returnJSON() else: info('%s update Service with no permission' % username, request) return ResponseAjax(statusEnum.no_permission, _('您沒有權限進行此操作。')).returnJSON()
def composeMessageDetailAjax(request): ''' create messages input: request return: json author: Kolin Hsu ''' result = {} postdata = getPostdata(request) messagehistory_id = postdata.get('messagehsitory_id', '') reply_history = [] if messagehistory_id: display_field = [ 'messages_id__subject', 'content', 'createtime', 'messages_id', 'create_user_id', 'create_user__nick_name', 'create_group_id', 'create_group_name', 'delete_users_username', 'receive_groups_name' ] reply_history = list( MessageHistory.objects.filterformat(*display_field, id=messagehistory_id))[0] #取出history members的nick_name(給引用使用) receivers = list( HistoryMembers.objects.filter( messagehistory_id=messagehistory_id).values_list( 'user_id__nick_name', flat=True)) #取出history members的nick_name以及id(給回覆的選單使用) reply_users = list( HistoryMembers.objects.filter( messagehistory_id=messagehistory_id).values( 'user_id', 'user_id__nick_name')) #取出history groups的name以及id(給回覆的選單使用) reply_groups = list( HistoryGroups.objects.filter( messagehistory_id=messagehistory_id).values( 'group_id', 'group_id__name')) #把已刪除的使用者以及組織名稱放入陣列中 if reply_history['delete_users_username']: receivers.extend( literal_eval(reply_history['delete_users_username'])) if reply_history['receive_groups_name']: receivers.extend(literal_eval( reply_history['receive_groups_name'])) result['reply_users'] = reply_users result['reply_groups'] = reply_groups result['receivers'] = receivers request_user_group_list = list( request.user.groups.filter(omgroup__functional_flag=False).values( 'id', 'name')) result['reply_history'] = reply_history result['request_user_group_list'] = request_user_group_list info('%s load message success.' % request.user.username, request) return ResponseAjax(statusEnum.success, _('請求處理成功'), result).returnJSON()
def listPositionAjax(request): ''' list position input: request return: json author: Kolin Hsu ''' postdata = getPostdata(request) datatable = postdata.get('datatable',None) if datatable: #function variable field_list=['display_name__icontains','description__icontains'] query = '' #get post data postdata = getPostdata(request) query = Position.objects.all().values('id','display_name','description') result = DatatableBuilder(request, query, field_list) info('%s list position success.' % request.user.username,request) return JsonResponse(result) else: result = list(Position.objects.all().values('id','display_name','description')) info('%s list position success.' % request.user.username,request) return ResponseAjax(statusEnum.success, _('查詢成功'), result).returnJSON()
def createPositionAjax(request): ''' create position input: request return: json author: Kolin Hsu ''' #get post data postdata = getPostdata(request) display_name = postdata.get('display_name','') description = postdata.get('description','') Position.objects.create(display_name=display_name,description=description) info('%s create position success.' % request.user.username,request) return ResponseAjax(statusEnum.success, _('建立成功。')).returnJSON()
def searchGroupUserAjax(request): ''' list sender input: request return: json author: Kolin Hsu ''' postdata = getPostdata(request) searchkey = postdata.get('searchkey', '') field_list = ['groups__id'] ordercolumn = 'nick_name' result = UserSearch(field_list, searchkey, ordercolumn) info('%s search users by group success.' % request.user.username, request) return ResponseAjax(statusEnum.success, _('請求處理成功'), result).returnJSON()
def listFilesAjax(request): ''' list files input: request return: list author: Kolin Hsu ''' if request.user.is_superuser: #function variable field_list = [] query = '' #server side rule check require_field = ['app_name'] postdata = getPostdata(request) checker = DataChecker(postdata, require_field) if checker.get('status') == 'success': #get post data app_name = postdata.get('app_name', '') createtime = postdata.get('createtime', '') if app_name == 'ommessage': field_list = ['file__icontains'] query = MessageHistoryFiles.objects.filter( delete=False, createtime__lte=createtime).values('file', 'size', 'createtime', 'main_id') if app_name == 'omformflow': field_list = ['file__icontains'] query = OmdataFiles.objects.filter( delete=False, createtime__lte=createtime).values('file', 'size', 'createtime') if field_list or query: result = DatatableBuilder(request, query, field_list) info('%s list file success.' % request.user.username, request) return JsonResponse(result) else: info('%s list file error.' % request.user.username, request) return ResponseAjax(statusEnum.not_found, _('請提供正確的APP名稱。')).returnJSON() else: info( '%s missing some require variable or the variable type error.' % request.user.username, request) return ResponseAjax(statusEnum.not_found, checker.get('message'), checker).returnJSON() else: info('%s has no permission.' % request.user.username, request) return ResponseAjax(statusEnum.no_permission, _('您沒有權限進行此操作。')).returnJSON()
def searchSendGroupAjax(request): ''' list sender input: request return: json author: Kolin Hsu ''' postdata = getPostdata(request) searchkey = postdata.get('searchkey', '') adGroup = postdata.get('adGroup', ['1', '0']) field_list = ['name__icontains'] ordercolumn = 'name' result = GroupSearch(field_list, searchkey, ordercolumn, adGroup) info('%s search send group success.' % request.user.username, request) return ResponseAjax(statusEnum.success, _('請求處理成功'), result).returnJSON()
def updateOrganizationAjax(request): ''' update organization input: request return: json author: Kolin Hsu ''' postdata = getPostdata(request) org_str = postdata.get('org','{}') o = Organization.objects.filter(name='organization') if o: o.update(value=org_str) else: Organization.objects.create(name='organization',value=org_str) setOrgToGlobal(org_str) info('%s update organization success.' % request.user.username,request) return ResponseAjax(statusEnum.success, _('更新成功。')).returnJSON()
def getDiskStatusAjax(request): ''' check server disk space enough or not input: request return: boolean author: Kolin Hsu ''' postdata = getPostdata(request) file_size = int(postdata.get('file_size', '0')) disk_obj = shutil.disk_usage("/") disk_free = disk_obj.free // (2**20) if disk_free - file_size > 10: result = True else: result = False info('%s get disk status success.' % request.user.username, request) return ResponseAjax(statusEnum.success, _('查詢成功。'), result).returnJSON()
def importTranslationAjax(request): ''' import service language package input: request return: json author: Arthur ''' #function variable require_field = ['language'] #server side rule check postdata = getPostdata(request) language_str = postdata.get('language_list', '') language = postdata.get('language', '') checker = DataChecker(postdata, require_field) if checker.get('status') == 'success': #wa = WorkspaceApplication.objects.get(id=app_id) #language_dict = json.loads(wa.language_package) max = OmServiceDesign.objects.all().aggregate(Max('id')).get('id__max') this_service = OmServiceDesign.objects.get(id=max) language_dict = json.loads(this_service.language_package) temp_dict = {} language_list = language_str.split('\r\n') for line in language_list: if line: sp_index = line.find(':') if line[:sp_index] == 'original': key = line[sp_index + 1:] else: temp_dict[key] = line[sp_index + 1:] language_dict[language] = temp_dict language_str = json.dumps(language_dict) this_service.language_package = language_str this_service.save() #set global FlowActiveGlobalObject.setSysLanDict("service", language, temp_dict) info('%s import language package success.' % request.user.username, request) return ResponseAjax(statusEnum.success, _('匯入成功。')).returnJSON() else: info( '%s missing some require variable or the variable type error.' % request.user.username, request) return ResponseAjax(statusEnum.not_found, checker.get('message', ''), checker).returnJSON()
def deleteFilesAjax(request): ''' delete files input: request return: status author: Kolin Hsu ''' if request.user.is_superuser: #server side rule check require_field = ['app_name', 'path'] postdata = getPostdata(request) checker = DataChecker(postdata, require_field) if checker.get('status') == 'success': #get post data app_name = postdata.get('app_name', '') path_list = postdata.get('path', '') if app_name == 'ommessage': for path in path_list: file_path = os.path.join(settings.MEDIA_ROOT, path) if os.path.isfile(file_path): os.remove(file_path) messagehistoryfile = MessageHistoryFiles.objects.get( file=path) messagehistoryfile.delete = True messagehistoryfile.save() elif app_name == 'omformflow': for path in path_list: file_path = os.path.join(settings.MEDIA_ROOT, path) if os.path.isfile(file_path): os.remove(file_path) omdatafiles = OmdataFiles.objects.get(file=path) omdatafiles.delete = True omdatafiles.save() info('%s delete file success.' % request.user.username, request) return ResponseAjax(statusEnum.success, _('刪除成功。')).returnJSON() else: info( '%s missing some require variable or the variable type error.' % request.user.username, request) return ResponseAjax(statusEnum.not_found, checker.get('message'), checker).returnJSON() else: info('%s has no permission.' % request.user.username, request) return ResponseAjax(statusEnum.no_permission, _('您沒有權限進行此操作。')).returnJSON()
def listHistoryMissionAjax(request): ''' list my groups missions. input: request return: json author: Kolin Hsu ''' #get post data postdata = getPostdata(request) updatetime_str = postdata.get('updatetime', '') updatetime = updatetime_str.split(',') group_id = postdata.get('group_id', '') field_list = [ 'title__icontains', 'flow_name__icontains', 'status__icontains', 'create_user__nick_name__icontains' ] display_field = [ 'flow_name', 'flow_uuid', 'title', 'create_user_id__nick_name', 'data_id', 'data_no', 'updatetime', 'assign_group_id', 'assign_group_id__display_name', 'assignee_id__nick_name', 'attachment' ] if group_id: username_list = list( OmUser.objects.filter(groups__id=group_id, delete=False).values_list('username', flat=True)) query = Missions.objects.filter( Q(update_user_id__in=username_list) & Q(updatetime__range=updatetime) & Q(history=True) & Q(is_active=True) & Q(deploy_flag=True)).values(*display_field) else: query = Missions.objects.filter( Q(update_user_id=request.user.username) & Q(updatetime__range=updatetime) & Q(history=True) & Q(is_active=True) & Q(deploy_flag=True)).values(*display_field) result = DatatableBuilder(request, query, field_list) #載入語言包 language = get_language() result['data'] = Translator('datatable_multi_app', 'active', language, None, None).Do(result['data']) info('%s list MissionHistory success.' % request.user.username, request) return JsonResponse(result)
def listMessagesAjax(request): ''' show all messages list input: request return: messages object author: Kolin Hsu ''' mes_box = getPostdata(request).get('mes_box', 'Inbox') field_list = ['messages_id__subject__icontains'] if mes_box == 'Inbox': display_field = [ 'messages_id', 'messages_id__subject', 'createtime', 'id', 'create_group__name', 'create_user__nick_name', 'messagebox__read', 'messagehistoryfiles__main_id', 'content' ] messages_query = MessageHistory.objects.filterformat( *display_field, messagebox__omuser_id=request.user.id, messagebox__delete=False).exclude( create_user_id=request.user.id).distinct() elif mes_box == 'Sent': display_field = [ 'messages_id', 'messages_id__subject', 'createtime', 'id', 'create_group__name', 'create_user__nick_name', 'messagebox__read', 'messagehistoryfiles__main_id', 'content' ] messages_query = MessageHistory.objects.filterformat( *display_field, messagebox__omuser_id=request.user.id, create_user_id=request.user.id, messagebox__delete=False).distinct() elif mes_box == 'Trash': display_field = [ 'messages_id', 'messages_id__subject', 'createtime', 'id', 'create_group__name', 'create_user__nick_name', 'messagebox__read', 'messagehistoryfiles__main_id', 'content' ] messages_query = MessageHistory.objects.filterformat( *display_field, messagebox__omuser_id=request.user.id, messagebox__delete=True).distinct() result = DatatableBuilder(request, messages_query, field_list) info('%s list message success.' % request.user.username, request) return JsonResponse(result)
def createMessagesAjax(request): ''' create messages input: request return: json author: Kolin Hsu ''' #取得post資料 postdata = getPostdata(request) subject = postdata.get('subject', '') if subject: #建立一筆新的messages messages = Messages.objects.create(subject=subject) #建立MessageHistory info('%s create message success.' % request.user.username, request) return createMessageHistoryAjax(request, messages.id) else: info('%s create message error.' % request.user.username, request) return ResponseAjax(statusEnum.no_permission, _('提供資料格式有誤')).returnJSON()
def deletePositionAjax(request): ''' delete position input: request return: json author: Kolin Hsu ''' #function variable require_field = ['id'] #server side rule check postdata = getPostdata(request) checker = DataChecker(postdata, require_field) #get post data id_list = postdata.get('id','') if checker.get('status') == 'success': Position.objects.filter(id__in=id_list).delete() info('%s update position success.' % request.user.username,request) return ResponseAjax(statusEnum.success, _('刪除成功。')).returnJSON() else: info('%s missing some require variable or the variable type error.' % request.user.username,request) return ResponseAjax(statusEnum.not_found, checker.get('message'), checker).returnJSON()
def updatePositionAjax(request): ''' update position input: request return: json author: Kolin Hsu ''' #function variable require_field = ['id'] #server side rule check postdata = getPostdata(request) checker = DataChecker(postdata, require_field) #get post data pos_id = postdata.get('id','') display_name = postdata.get('display_name','') description = postdata.get('description','') if checker.get('status') == 'success': Position.objects.filter(id=pos_id).update(display_name=display_name,description=description) info('%s update position success.' % request.user.username,request) return ResponseAjax(statusEnum.success, _('更新成功。')).returnJSON() else: info('%s missing some require variable or the variable type error.' % request.user.username,request) return ResponseAjax(statusEnum.not_found, checker.get('message'), checker).returnJSON()
def SubQueryHeaderAjax(request): ''' list omdata for subquery. input: request return: json author: Kolin Hsu ''' #function variable display_field_list = [ 'id', 'data_no', 'stop_uuid', 'stop_chart_text', 'error', 'error_message', 'closed', 'running' ] #get post data postdata = getPostdata(request) app_name = postdata.get('app_name', '') flow_name = postdata.get('flow_name', '') condition = postdata.get('condition', []) service_id = postdata.get('service_id', []) flowactive = FlowActiveGlobalObject.NameSearch(flow_name, None, app_name) flow_uuid = flowactive.flow_uuid.hex if True: #get field setting display_field_dict = json.loads(flowactive.display_field) for key in display_field_dict: if '-' in key: key = 'group' if key == 'create_user_id' or key == 'create_user': key = 'create_user_id__nick_name' elif key == 'update_user_id' or key == 'update_user': key = 'update_user_id__nick_name' display_field_list.append(key) search_field_list = display_field_list.copy() #暫時先使用display_field當作search_field field_list = list( map(lambda search_field: search_field + '__icontains', search_field_list)) #sp conditions search_conditions = [{ 'column': 'history', 'condition': '=', 'value': False }] exclude_conditions = [] for con in condition: if con['condition'] == '!=': con['condition'] = '=' exclude_conditions.append(con) elif con['condition'] == 'exclude': con['condition'] = 'contains' exclude_conditions.append(con) else: search_conditions.append(con) sc = searchConditionBuilder(search_conditions) ec = searchConditionBuilder(exclude_conditions) #get model omdata_model = getModel('omformmodel', 'Omdata_' + flow_uuid) if ec: query = omdata_model.objects.filter( reduce(operator.and_, sc)).exclude(reduce(operator.and_, ec)).values(*display_field_list) else: query = omdata_model.objects.filter(reduce( operator.and_, sc)).values(*display_field_list) result = DatatableBuilder(request, query, field_list) #轉換字與值 result['data'] = datatableValueToText(result['data'], flow_uuid) #載入語言包 language = get_language() result['data'] = Translator('datatable_single_app', 'active', language, flowactive.flow_app_id, None).Do(result['data']) info(request, '%s list OmData success.' % request.user.username) return JsonResponse(result) else: info('%s has no permission.' % request.user.username, request) return ResponseAjax(statusEnum.no_permission, _('您沒有權限進行此操作。')).returnJSON()
def loadLSideAjax(request): ''' load left side bar design json for request user input: request return: json author: Kolin Hsu ''' #function variable require_field = ['draw_$'] mission = [] sidebar = [] request.session.set_expiry(130) #server side rule check postdata = getPostdata(request) data_checker = DataChecker(postdata, require_field) if data_checker.get('status') == 'success': if settings.OMFLOW_TYPE == 'collector': result = {'sidebar': sidebar, 'mission': mission} else: #get mission group_id_list = list(request.user.groups.all().values_list( 'id', flat=True)) level_list = list( Missions.objects.filter((Q(assignee_id=request.user.id) | (Q( assign_group_id__in=group_id_list) & Q(assignee_id=None))) & Q(history=False) & Q(is_active=True) & Q(deploy_flag=True)).values_list( 'level', flat=True)) green = 0 red = 0 yellow = 0 for i in level_list: if i == 'green': green += 1 elif i == 'yellow': yellow += 1 elif i == 'red': red += 1 elif i == None or i == '': green += 1 mission.append(red) mission.append(yellow) mission.append(green) #get sidebar draw = int(postdata.get('draw_$', '')) sidebar_design = GlobalObject.__sidebarDesignObj__[ 'sidebar_design'] if draw == 1: reviseLside(request, sidebar, sidebar_design) else: #get session object lside_design = request.session.get('lside_design', '') session_updatetime = request.session.get( 'design_updatetime', '') #get global object design_updatetime = GlobalObject.__sidebarDesignObj__[ 'design_updatetime'] permission_updatetime = GlobalObject.__sidebarDesignObj__[ 'permission_updatetime'] #compare updatetime if session_updatetime < str( design_updatetime) or session_updatetime < str( permission_updatetime): #compare two json array equal or not if lside_design != sidebar_design: reviseLside(request, sidebar, sidebar_design) else: sidebar = '' else: sidebar = '' #載入語言包 language = get_language() if isinstance(sidebar, list): trans_sidebar_str = json.dumps(sidebar) trans_sidebar = json.loads(trans_sidebar_str) for s in trans_sidebar: app_id = None sidebar_id = s['id'] if 'app-' in sidebar_id: app_id = sidebar_id[4:] elif 'formflow-' in sidebar_id: app_id = s['p_id'][4:] if app_id: s['name'] = Translator('single_app', 'active', language, app_id, None).Do(s['name']) else: trans_sidebar = sidebar result = {'sidebar': trans_sidebar, 'mission': mission} info('%s load LSide success.' % request.user.username, request) return ResponseAjax(statusEnum.success, _('讀取成功。'), result).returnJSON() else: info( '%s missing some require variable or the variable type error.' % request.user.username, request) return ResponseAjax(statusEnum.not_found, data_checker.get('message'), data_checker).returnJSON()
def restapi(request, url): ''' omflow api home page input: request return: json author: Kolin Hsu ''' #check url try: if url[-1] == '/': new_url = '/' + url else: new_url = '/' + url + '/' module_name = resolve(new_url).func.__module__ method = resolve(new_url).url_name kwargs = resolve(new_url).kwargs params = [] for k in kwargs: params.append(kwargs[k]) except: return ResponseAjax(statusEnum.no_permission, _('URL錯誤,請確認後重新發送請求。')).returnJSON() #get post data postdata = getPostdata(request) security = postdata.get('security', '') omflow_restapi = postdata.get('omflow_restapi', '') if omflow_restapi: #postdata = inputJson.get('postdata', '') if security is not None: securityObj = GlobalObject.__securityObj__.get(security) if securityObj is not None: #check security expired or not expired_datetime = securityObj['updatetime'] + timedelta( minutes=5) if datetime.now() < expired_datetime: #get user name and password username = securityObj['username'] #update security expired_datetime GlobalObject.__securityObj__[security][ 'updatetime'] = datetime.now() GlobalObject.__userObj__[ username] = GlobalObject.__securityObj__[security] #user login user = OmUser.objects.get(username__icontains=username) auth.login(request, user) #to real function module = import_module(module_name) if params: output = getattr(module, method)(request, *params) else: output = getattr(module, method)(request) #logout user when api down auth.logout(request) return output else: return ResponseAjax(statusEnum.no_permission, _('安全碼過期,請重新取得新的安全碼。')).returnJSON() else: return ResponseAjax(statusEnum.no_permission, _('安全碼錯誤,請確認安全碼或重新取得新的安全碼。')).returnJSON() else: return ResponseAjax(statusEnum.no_permission, _('缺少安全碼。')).returnJSON() else: return ResponseAjax(statusEnum.no_permission, _('缺少參數:') + 'omflow_restapi').returnJSON()
def createMessageHistoryAjax(request, *args): ''' create messages content input: request return: json author: Kolin Hsu ''' #預設變數 create_box_id_lst = [] create_group_name = '' create_user_username = '' receive_users_id_lst = '' receive_groups_id_lst = '' receive_groups_name = '' #取得post資料 postdata = getPostdata(request) messages_id = postdata.get('messages_id', '') content = postdata.get('content', '') files = request.FILES.getlist('attachment[]', '') try: create_user_id = int(postdata.get('create_user_id')) except: create_user_id = None create_group_id = postdata.get('create_group_id', None) receive_users_id_str = postdata.get('receive_users_id_lst', '') if receive_users_id_str: receive_users_id_lst = receive_users_id_str.split(',') receive_users_id_lst = list(map(int, receive_users_id_lst)) receive_groups_id_str = postdata.get('receive_groups_id_lst', '') if receive_groups_id_str: receive_groups_id_lst = receive_groups_id_str.split(',') if not messages_id: messages_id = args[0] if (create_user_id or create_group_id) and (receive_users_id_lst or receive_groups_id_lst) and messages_id: #將寄件人放入box_list中 if create_user_id: create_box_id_lst.append(create_user_id) create_user_username = OmUser.objects.get( id=create_user_id).username #將寄件群組放入box_list中 if create_group_id: create_group = Group.objects.get(id=create_group_id) create_group_user_list = list( create_group.user_set.all().values_list('id', flat=True)) create_box_id_lst += create_group_user_list create_group_name = create_group.name #將收件人放入box_list中 if receive_users_id_lst: create_box_id_lst += receive_users_id_lst #將收件群組放入box_list中 if receive_groups_id_lst: for receive_group_id in receive_groups_id_lst: receive_omgroup_user_list = list( Group.objects.get( id=receive_group_id).user_set.all().values_list( 'id', flat=True)) receive_groups_name = list( Group.objects.filter( id__in=receive_groups_id_lst).values_list('name', flat=True)) create_box_id_lst += receive_omgroup_user_list #進行list的去重複 distinct_box_lst = list(set(create_box_id_lst)) #建立一筆新的messagehistory messagehistory = MessageHistory.objects.create( create_user_id=create_user_id, create_user_username=create_user_username, create_group_id=create_group_id, create_group_name=create_group_name, receive_groups_name=receive_groups_name, content=content, messages_id=messages_id) message = Messages.objects.get(id=messages_id) message.save() #儲存上傳的檔案 if files: MessageHistoryFiles.objects.bulk_create([ MessageHistoryFiles(main=messagehistory, file=file, size=file.size) for file in files ]) #list中的所有人都建立一筆MessageBox MessageBox.objects.bulk_create([ MessageBox(messagehistory=messagehistory, messages_id=messages_id, omuser_id=n) for n in distinct_box_lst ]) #建立history members if receive_users_id_lst: if create_user_id and (create_user_id not in receive_users_id_lst): receive_users_id_lst.append(create_user_id) HistoryMembers.objects.bulk_create([ HistoryMembers(messagehistory=messagehistory, user_id=n) for n in receive_users_id_lst ]) #建立history groups if receive_groups_id_lst: HistoryGroups.objects.bulk_create([ HistoryGroups(messagehistory=messagehistory, group_id=n) for n in receive_groups_id_lst ]) #將creator已讀設置為true if create_user_id: create_user_box = MessageBox.objects.get( messagehistory=messagehistory, messages_id=messages_id, omuser_id=create_user_id) create_user_box.read = True create_user_box.save() info('%s send message success.' % request.user.username, request) return ResponseAjax(statusEnum.success, _('發送成功')).returnJSON() else: info('%s send message error.' % request.user.username, request) return ResponseAjax(statusEnum.no_permission, _('提供資料格式有誤')).returnJSON()
def loadMessageHistoryAjax(request): ''' load messages content input: request return: messagehistory object author: Kolin Hsu ''' postdata = getPostdata(request) messagehistory_id = postdata.get('messagehistory_id', '') if messagehistory_id: result = {} try: mes_box = request.user.messagebox_set.get( messagehistory_id=messagehistory_id) except: mes_box = None if mes_box: #取出歷史訊息 mes_his = list( MessageHistory.objects.filterformat('create_user__username', 'create_user_id', 'create_user__nick_name', 'create_group_name', 'createtime', 'content', 'messages_id', 'messages_id__subject', 'delete_users_username', 'receive_groups_name', id=messagehistory_id))[0] mes_his['createtime'] = mes_his['createtime'] #取出附件 files = list( MessageHistoryFiles.objects.filter( main_id=messagehistory_id).values('file', 'size', 'delete')) for file in files: file_path = os.path.join(settings.MEDIA_ROOT, file['file']) if not file['delete'] and not os.path.exists(file_path): file['delete'] = True file_obj = MessageHistoryFiles.objects.get( file=file['file']) file_obj.delete = True file_obj.save() mes_his['files'] = files #取出history members的nick_name receivers = list( HistoryMembers.objects.filter( messagehistory_id=messagehistory_id).values_list( 'user_id__nick_name', flat=True)) #把已刪除的使用者以及組織名稱放入陣列中 if mes_his['delete_users_username']: receivers.extend(literal_eval( mes_his['delete_users_username'])) if mes_his['receive_groups_name']: receivers.extend(literal_eval(mes_his['receive_groups_name'])) #將box更改為已讀 if not mes_box.read: mes_box.read = True mes_box.save() result['messagehistory'] = mes_his result['receivers'] = receivers info('%s load message history success.' % request.user.username, request) return ResponseAjax(statusEnum.success, _('搜尋成功'), result).returnJSON() else: return ResponseAjax(statusEnum.no_permission, _('您沒有權限進行此操作。')).returnJSON() else: info('%s load message error.' % request.user.username, request) return ResponseAjax(statusEnum.no_permission, _('請提供訊息編號')).returnJSON()
def updateGridAjax(request): ''' update grid information input: request return: json author: Arthur ''' username = request.user.username postdata = getPostdata(request) #判斷必填 require_field = ['content'] checker = DataChecker(postdata, require_field) result = {} result["labels"] = [] result["dataset"] = [] if username and checker.get('status') == 'success': #static variable error_message = "" QueryJson = json.loads(postdata.get('content')) # QueryJson = { # "type":"word", # "form":"OmUser_View", # "column":[ # { # "column":"department", # "value":"max" # }, # ], # "time_range":"this_year", # #"groupby":["gender"], # "orderby":[] # } #thisQuery = OmUser.objects.filter(updatetime__lte=datetime.date.today()).aggregate(**{"max":Max("department")}) has_group = False if "groupby" in QueryJson: for key in QueryJson["groupby"]: if len(key): has_group = True gte_list = [] lt_list = [] #判斷圖片類型 if "type" in QueryJson and "form" in QueryJson: #判斷時間格式 if "time_range" in QueryJson: today = datetime.datetime.today().replace(hour=0, minute=0, second=0, microsecond=0) #print(today.strftime("%Y-%m-%d %H:%M:%S")) if QueryJson["time_range"] == "today": gte_list.append(today) #if has_group: lt_list.append(gte_list[0] + datetime.timedelta(hours=1)) #print((gte_list[0] + datetime.timedelta(hours=1)).strftime("%Y-%m-%d %H:%M:%S")) result["labels"].append('00:00') for i in range(23): gte_list.append(lt_list[i]) lt_list.append(lt_list[i] + datetime.timedelta(hours=1)) result["labels"].append(switch00(i + 1) + ':00') #else: #lt_list.appecnd(gte_list[0] + datetime.timedelta(days=1)) #result["labels"].append(_('今日')) elif QueryJson["time_range"] == "yesterday": gte_list.append(today - datetime.timedelta(days=1)) #if has_group: lt_list.append(gte_list[0] + datetime.timedelta(hours=1)) result["labels"].append('00:00') for i in range(23): gte_list.append(lt_list[i]) lt_list.append(lt_list[i] + datetime.timedelta(hours=1)) result["labels"].append(switch00(i + 1) + ':00') #else: #lt_list.append(today) #result["labels"].append(_('昨日')) elif QueryJson["time_range"] == "this_week": gte_list.append(today - datetime.timedelta(days=today.weekday())) #if has_group: lt_list.append(gte_list[0] + datetime.timedelta(days=1)) result["labels"].append(translateW(1)) for i in range(6): gte_list.append(lt_list[i]) lt_list.append(lt_list[i] + datetime.timedelta(days=1)) result["labels"].append(translateW(i + 2)) #else: #lt_list.append(today + datetime.timedelta(days=-today.weekday(), weeks=1)) #result["labels"].append(_('本周')) elif QueryJson["time_range"] == "last_week": gte_list.append( today - datetime.timedelta(days=today.weekday(), weeks=1)) #if has_group: lt_list.append(gte_list[0] + datetime.timedelta(days=1)) result["labels"].append(translateW(1)) for i in range(6): gte_list.append(lt_list[i]) lt_list.append(lt_list[i] + datetime.timedelta(days=1)) result["labels"].append(translateW(i + 2)) #else: #lt_list.append(today - datetime.timedelta(days=today.weekday())) #result["labels"].append(_('上周')) elif QueryJson["time_range"] == "this_month": gte_list.append(today.replace(day=1)) #if has_group: lt_list.append(gte_list[0] + datetime.timedelta(days=1)) result["labels"].append( str(gte_list[0].month) + '/' + str(gte_list[0].day)) for i in range(monthrange(today.year, today.month)[1] - 1): gte_list.append(lt_list[i]) lt_list.append(lt_list[i] + datetime.timedelta(days=1)) result["labels"].append( str(lt_list[i].month) + '/' + str(lt_list[i].day)) #else: #lt_list.append(gte_list[0] + datetime.timedelta(days=monthrange(gte_list[0].year, gte_list[0].month)[1])) #result["labels"].append(_('今月')) elif QueryJson["time_range"] == "last_month": if today.month == 1: gte_list.append(today.replace( day=1, month=switchM(today.month - 1)), year=today.year - 1) else: gte_list.append( today.replace(day=1, month=switchM(today.month - 1))) #if has_group: lt_list.append(gte_list[0] + datetime.timedelta(days=1)) result["labels"].append( str(gte_list[0].month) + '/' + str(gte_list[0].day)) for i in range( monthrange(today.year, switchM(today.month - 1))[1] - 1): gte_list.append(lt_list[i]) lt_list.append(lt_list[i] + datetime.timedelta(days=1)) result["labels"].append( str(lt_list[i].month) + '/' + str(lt_list[i].day)) #else: #lt_list.append(today.replace(day=1)) #result["labels"].append(_('上月')) elif QueryJson["time_range"] == "this_year": gte_list.append(today.replace(day=1, month=1)) #if has_group: lt_list.append(gte_list[0].replace(month=2)) result["labels"].append(translateM(1)) for i in range(11): gte_list.append(lt_list[i]) result["labels"].append(translateM(i + 2)) if i != 11: lt_list.append( lt_list[i].replace(month=switchM(i + 3))) else: lt_list.append( today.replace(year=today.year + 1, day=1, month=1)) #else: #lt_list.append(today.replace(year=today.year+1,day=1,month=1)) #result["labels"].append(_('今年')) elif QueryJson["time_range"] == "last_year": gte_list.append( today.replace(year=today.year - 1, day=1, month=1)) #if has_group: lt_list.append(gte_list[0].replace(month=2)) result["labels"].append(translateM(1)) for i in range(11): gte_list.append(lt_list[i]) result["labels"].append(translateM(i + 2)) if i != 11: lt_list.append( lt_list[i].replace(month=switchM(i + 3))) else: lt_list.append(today.replace(day=1, month=1)) #else: #lt_list.append(today.replace(day=1,month=1)) #result["labels"].append(_('去年')) else: gte_list.append(today.replace(year=1970)) lt_list.append(today + datetime.timedelta(days=1)) result["labels"].append(_('所有時間')) #print(gte_list) #print(lt_list) #print(result["labels"]) #解析json #permission = QueryJson["form"] permission = "Omdata_" + QueryJson["form"] + "_View" this_model = list( filter( lambda x: x.__name__ == re.findall("^(.+)_View", permission)[0], apps.get_models())) getModel = False isPolicy = False if len(this_model) and request.user.has_perm( str(this_model[0]._meta.app_label) + "." + permission): getModel = True else: this_model = list( filter(lambda x: x.__name__ == QueryJson["form"], apps.get_models())) if len(this_model) and request.user.has_perm( "OmMonitor_Manage"): getModel = True isPolicy = True if getModel: #setCondition filter_count = 0 for i in range(len(gte_list)): #print(gte_list[i].strftime("%Y-%m-%d %H:%M:%S")) if isPolicy: QueryJson["condition"] = [{ "column": "createtime__gte", "value": gte_list[i] }, { "column": "createtime__lt", "value": lt_list[i] }] else: QueryJson["condition"] = [{ "column": "updatetime__gte", "value": gte_list[i] }, { "column": "updatetime__lt", "value": lt_list[i] }] if not isPolicy: #取得各ticket最新id_List value_list = ["data_no"] thisQuery = this_model[0].objects.all().values( *tuple(value_list)) thisQuery = thisQuery.annotate(New=Max('id')) thisQuery = thisQuery.filter(id__in=list( thisQuery.values_list('New', flat=True))) #id_list = list(thisQuery.values_list('New', flat=True)) #print(id_list) else: thisQuery = this_model[0].objects.all() this_condition = Q() for cObj in QueryJson["condition"]: this_condition.add( Q(**{cObj["column"]: cObj["value"]}), Q.AND) #a = OmUser.objects.filter(Q(email="*****@*****.**")).values('nick_name').order_by('nick_name').annotate(count=Count('username')) #thisQuery = this_model[0].objects.filter(this_condition) thisQuery = thisQuery.filter(this_condition) value_list = [] if has_group: for key in QueryJson["groupby"]: if len(key): value_list.append(key) #產出 thisQuery = thisQuery.values(*tuple(value_list)) #QuerySet QueryList = [] #List物件 thisQueryJson = {} #aggregate產出 for cObj in QueryJson["column"]: #有分類 if has_group: if cObj["value"] == "max": thisQuery = thisQuery.annotate( **{cObj["column"]: Max(cObj["column"])}) elif cObj["value"] == "min": thisQuery = thisQuery.annotate( **{cObj["column"]: Min(cObj["column"])}) elif cObj["value"] == "count": thisQuery = thisQuery.annotate( **{cObj["column"]: Count(cObj["column"])}) elif cObj["value"] == "sum": thisQuery = thisQuery.annotate( **{cObj["column"]: Sum(cObj["column"])}) elif cObj["value"] == "avg": thisQuery = thisQuery.annotate( **{cObj["column"]: Avg(cObj["column"])}) else: if isPolicy: thisQuery = thisQuery.annotate( New=Max('createtime')) thisQuery = thisQuery.filter( createtime__in=list( thisQuery.values_list('New', flat=True))) else: thisQuery = thisQuery.annotate( New=Max('updatetime')) thisQuery = thisQuery.filter( updatetime__in=list( thisQuery.values_list('New', flat=True))) has_static = False for cObj in QueryJson["column"]: if cObj["value"] == "static": value_list.append(cObj["column"]) has_static = True if has_static: thisQuery = thisQuery.values( *tuple(value_list)) if "orderby" in QueryJson: for key in QueryJson["orderby"]: thisQuery = thisQuery.order_by(key) QueryList = list(thisQuery) #無分類 else: if cObj["value"] == "max": thisQueryJson = thisQuery.aggregate( **{cObj["column"]: Max(cObj["column"])}) elif cObj["value"] == "min": thisQueryJson = thisQuery.aggregate( **{cObj["column"]: Min(cObj["column"])}) elif cObj["value"] == "count": thisQueryJson = thisQuery.aggregate( **{cObj["column"]: Count(cObj["column"])}) elif cObj["value"] == "sum": thisQueryJson = thisQuery.aggregate( **{cObj["column"]: Sum(cObj["column"])}) elif cObj["value"] == "avg": thisQueryJson = thisQuery.aggregate( **{cObj["column"]: Avg(cObj["column"])}) QueryList = [thisQueryJson] if cObj["value"] == "static": if isPolicy: thisQueryJson = thisQuery.aggregate( New=Max('createtime')) thisQuery = thisQuery.filter( createtime__in=list( [thisQueryJson.get('New')])) else: thisQueryJson = thisQuery.aggregate( New=Max('updatetime')) thisQuery = thisQuery.filter( updatetime__in=list( [thisQueryJson.get('New')])) QueryList = list(thisQuery) if QueryJson["type"] and QueryJson["type"] != "table": for row in QueryList: if has_group: this_value_list = list( filter( lambda x: x['name'] == row.get( QueryJson["groupby"][0], ""), result["dataset"])) else: this_value_list = result["dataset"] if len(this_value_list) == 0: value_list = {} value = [] for j in range(filter_count): value.append("") for cObj in QueryJson["column"]: value.append(row.get(cObj["column"], "")) if has_group: value_list["name"] = row.get( QueryJson["groupby"][0], "") value_list["data"] = value result["dataset"].append(value_list) else: for cObj in QueryJson["column"]: this_value_list[0]['data'].append( row.get(cObj["column"], "")) filter_count = filter_count + 1 for this_value_list in result["dataset"]: if len(this_value_list['data']) < filter_count: this_value_list['data'].append("") else: #表格查詢 result["dataset"] = QueryList result["column"] = [] for k in thisQuery[0].keys(): this_field = list( filter(lambda x: x.name == k, this_model[0]._meta.fields)) if len(this_field) > 0: result["column"].append( this_field[0].verbose_name) #print(result) if error_message == "": if result: return ResponseAjax(statusEnum.success, _('查詢成功'), result).returnJSON() else: return ResponseAjax(statusEnum.error, _('查詢失敗')).returnJSON() else: return ResponseAjax(statusEnum.error, error_message).returnJSON() else: return ResponseAjax(statusEnum.no_permission, _('您沒有權限進行此操作。')).returnJSON()
def getColumnListAjax(request): ''' get model column-list with permission input: request return: json author: Arthur ''' username = request.user.username postdata = getPostdata(request) if username: require_field = ['model'] checker = DataChecker(postdata, require_field) if checker.get('status') == 'success': permission = "Omdata_" + postdata.get('model', '') + "_View" this_model = list( filter( lambda x: x.__name__ == re.findall("^(.+)_View", permission)[0], apps.get_models())) result = {} #isPolicy = False from omflow.syscom.common import License version_type = License().getVersionType() if version_type != 'C': from ommonitor.models import MonitorFlow if len(this_model) == 0 and request.user.has_perm( "OmMonitor_Manage"): policy_model = list( filter( lambda x: x.__name__ == postdata.get('model', ''), apps.get_models())) if len(policy_model): this_table_id = re.findall("OmPolicy_(.+)", postdata.get('model', ''))[0] fa = list( MonitorFlow.objects.filter( table_id=this_table_id).values('flowobject')) if len(fa): fa = json.loads(fa[0]['flowobject']) result["collector_id"] = "收集器ID" for item in fa['items']: if item['type'] == "end": for output in item['config']['output']: field_name = re.findall( '\$\((.+)\)', output['name'])[0] result[field_name] = output['des'] if len(this_model) and request.user.has_perm( str(this_model[0]._meta.app_label) + "." + permission): if re.match('Omdata_.+_View', permission): flow_uuid = re.findall("Omdata_(.+)_View", permission)[ 0] #Omdata_5d3c2cbdcf4145c3a05affaf4a74345b_View fa = FlowActiveGlobalObject.UUIDSearch( flow_uuid).merge_formobject if len(fa): fa = json.loads(fa) for field in this_model[0]._meta.fields: if 'formitm' in field.verbose_name: if field.name.upper() in fa: if fa[field.name.upper( )]["type"] == 'h_group': #result[field.name] = fa[field.name.upper] result[ field.name] = fa[field.name.upper( )]["config"]["group_title"] else: result[ field.name] = fa[field.name.upper( )]["config"]["title"] else: result[field.name] = field.verbose_name lang = get_language() app_id = FlowActiveGlobalObject.UUIDSearch( flow_uuid).flow_app_id result = Translator('single_app', 'active', lang, app_id, None).Do(result) if result != {}: info('%s get Column-List success' % username, request) return ResponseAjax(statusEnum.success, _('讀取成功。'), result).returnJSON() else: info('%s get Column-List with no permission' % username, request) return ResponseAjax(statusEnum.no_permission, _('您沒有權限進行此操作。')).returnJSON() else: info('%s get Column-List error' % username, request) return ResponseAjax(statusEnum.not_found, checker.get('message'), checker).returnJSON() else: info('%s get Column-List with no permission' % username, request) return ResponseAjax(statusEnum.no_permission, _('您沒有權限進行此操作。')).returnJSON()
def exportTranslationAjax(request): ''' export workspace application language package ''' #function variable require_field = ['language'] #get postdata postdata = getPostdata(request) language_type = postdata.get('language', '') #server side rule check checker = DataChecker(postdata, require_field) if checker.get('status') == 'success': export = '' export_list = [] if OmServiceDesign.objects.all().count() > 0: max = OmServiceDesign.objects.all().aggregate( Max('id')).get('id__max') result = list( OmServiceDesign.objects.filter(id=max).values('content')) box_object = json.loads(result[0]["content"]) #翻譯語言 #language_type = get_language() lan_package = FlowActiveGlobalObject.getSysLanDict('service').get( language_type, {}) #翻譯「全部」 #export = check2addExport('全部',export,export_list,lan_package,language_type) for idx in box_object["list"]: this_service = box_object["list"][idx] #翻譯「服務名稱」 export = check2addExport(this_service["setting"]["setTitle"], export, export_list, lan_package, language_type) if this_service["type"] == "service": #翻譯「服務說明」 export = check2addExport(this_service["setting"]["setTip"], export, export_list, lan_package, language_type) for sup_idx in this_service["service"]["list"]: this_step = this_service["service"]["list"][sup_idx] #翻譯「服務步驟名稱」 export = check2addExport(this_step["name"], export, export_list, lan_package, language_type) #翻譯「服務步驟說明」 export = check2addExport(this_step["tip"], export, export_list, lan_package, language_type) info('%s export language package success.' % request.user.username, request) return ResponseAjax(statusEnum.success, _('匯出成功。'), export).returnJSON() else: info( '%s missing some require variable or the variable type error.' % request.user.username, request) return ResponseAjax(statusEnum.not_found, checker.get('message', ''), checker).returnJSON()
def loadServiceAjax(request): ''' load manager's service setting return: json author: Arthur ''' #Server Side Rule Check username = request.user.username postdata = getPostdata(request) result = {} if username: #static variable # result['structure'] = OmServiceDesign.objects.all() # if request.user.has_perm('omservice.OmServiceDesign_Manager'): # result['objects'] = OmService.objects.all() # else: # #等待修改 # user_role_list = list(request.user.groups.all().values_list('id', flat=True)) # for service_obj in OmService.objects.all(): # service_role_list = json.loads(service_obj.get('role','[]')) # if len(set(user_role_list) & set(service_role_list)): # result['objects'].append(service_obj) #print(OmServiceDesign.objects.all().count()) if OmServiceDesign.objects.all().count() > 0: max = OmServiceDesign.objects.all().aggregate( Max('id')).get('id__max') result = list( OmServiceDesign.objects.filter(id=max).values('content')) box_object = json.loads(result[0]["content"]) #檢查權限 if request.user.has_perm('omservice.OmServiceDesign_Manage'): pass else: Service_List = list(OmService.objects.all()) Group_List = list(request.user.groups.all().values_list( 'id', flat=True)) if len(Group_List): Group_List.append(-1) else: Group_List = [-1] for thisSer in Service_List: if len(set(json.loads(thisSer.role)) & set(Group_List)) == 0: del box_object["list"][str(thisSer.service_id)] #檢查是否過期 this_activeList = list( FlowActive.objects.filter( undeploy_flag=0, parent_uuid__isnull=True).values_list('flow_uuid', flat=True)) this_activeList = [o.hex for o in this_activeList] for idx in box_object["list"]: #print(box_object["list"][idx]) if box_object["list"][idx]["type"] == "service": if 'api_path' in box_object["list"][idx]: flow_uuid = FlowActiveGlobalObject.APIgetUUID( box_object["list"][idx]["api_path"]) else: flow_uuid = box_object["list"][idx]["flow_uuid"] box_object["list"][idx][ "api_path"] = FlowActiveGlobalObject.UUIDgetAPI( flow_uuid) if flow_uuid in this_activeList: box_object["list"][idx]["available"] = 1 else: box_object["list"][idx]["available"] = 0 #翻譯語言 if postdata.get('type') != "source": language_type = get_language() #print(FlowActiveGlobalObject.getSysLanDict('service')) lan_package = FlowActiveGlobalObject.getSysLanDict( 'service').get(language_type, None) if lan_package: for idx in box_object["list"]: this_service = box_object["list"][idx] if this_service["setting"]["setTitle"]: this_service["setting"]["setTitle"] = lan_package[ this_service["setting"] ["setTitle"]] if checkJsonKey( lan_package, this_service["setting"]["setTitle"] ) else this_service["setting"]["setTitle"] if this_service["type"] == "service": if this_service["setting"]["setTip"]: this_service["setting"]["setTip"] = lan_package[ this_service["setting"] ["setTip"]] if checkJsonKey( lan_package, this_service["setting"]["setTip"] ) else this_service["setting"]["setTip"] for sup_idx in this_service["service"]["list"]: this_step = this_service["service"]["list"][ sup_idx] if this_step["name"]: this_step["name"] = lan_package[ this_step["name"]] if checkJsonKey( lan_package, this_step["name"] ) else this_step["name"] if this_step["tip"]: this_step["tip"] = lan_package[ this_step["tip"]] if checkJsonKey( lan_package, this_step["tip"] ) else this_step["tip"] #print(result[0]["content"]) result[0]["content"] = json.dumps(box_object) return ResponseAjax(statusEnum.success, _('讀取成功。'), result).returnJSON() else: error('%s load Service with no permission' % username, request) return ResponseAjax(statusEnum.no_permission, _('您沒有權限進行此操作。')).returnJSON()
def SubQueryDataAjax(request): ''' load omdata. input: request return: json author: Kolin Hsu ''' #function variable require_field = ['app_name', 'flow_name', 'data_id'] #server side rule check postdata = getPostdata(request) checker = DataChecker(postdata, require_field) #get post data app_name = postdata.get('app_name', '') flow_name = postdata.get('flow_name', '') data_id = postdata.get('data_id', '') field_list = postdata.get('fields', []) service_id = postdata.get('service_id', []) if True: if checker.get('status') == 'success': #get model fa = FlowActiveGlobalObject.NameSearch(flow_name, None, app_name) omdata_model = getModel('omformmodel', 'Omdata_' + fa.flow_uuid.hex) #整理欄位 new_field_list = [] group_user = [] group_user_id = None for f in field_list: if re.match(r'formitm_[0-9]+-.+', f): group_user_id = re.findall(r'(.+)-.+', f)[0] group_user.append(f) new_field_list.append(group_user_id) else: new_field_list.append(f) #取得資料 omdata = list( omdata_model.objects.filterformat(*new_field_list, id=data_id)) if omdata: result = omdata[0] if group_user_id: group_user_dict = json.loads(result.pop(group_user_id)) for g_u in group_user: key = re.findall(r'.+-(.+)', g_u)[0] result[g_u] = group_user_dict.get(key, '') else: result = {} info('%s load OmData success.' % request.user.username, request) return ResponseAjax(statusEnum.success, _('讀取成功。'), result).returnJSON() else: info( '%s missing some require variable or the variable type error.' % request.user.username, request) return ResponseAjax(statusEnum.not_found, checker.get('message'), checker).returnJSON() else: info('%s has no permission.' % request.user.username, request) return ResponseAjax(statusEnum.no_permission, _('您沒有權限進行此操作。')).returnJSON()