Ejemplo n.º 1
0
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()
Ejemplo n.º 2
0
def syncLDAP():
    '''
    Get parameters to sync LDAP
    input:  execute LDAP functions
    return: result message
    author: Kolin Hsu,Pei Lin
    ''' 
    result = {}
    try:
        ldpadatastr = SystemSetting.objects.get(name='ldap_config').value
        ldpadata_json = json.loads(ldpadatastr)
        ldap_client_server = ldpadata_json['ldap_client_server']
        ldap_client_server_port = ldpadata_json['ldap_client_server_port']
        ldap_base_dn = ldpadata_json['ldap_base_dn']
        ldap_bind_user = ldpadata_json['ldap_bind_user']
        ldap_bind_user_password = ldpadata_json['ldap_bind_user_password']
        if ldap_client_server != "" and ldap_client_server_port != "" and ldap_base_dn != "" and ldap_bind_user != "" and ldap_bind_user_password != "":
            info('LDAP integration start.')
            create_LDAP_user(ldap_client_server,ldap_client_server_port,ldap_base_dn,ldap_bind_user,ldap_bind_user_password)
            create_LDAP_group(ldap_client_server,ldap_client_server_port,ldap_base_dn,ldap_bind_user,ldap_bind_user_password)
            mapping_group_user(ldap_client_server,ldap_client_server_port,ldap_base_dn,ldap_bind_user,ldap_bind_user_password)
            info('LDAP integration finish.')
            result['status']  = 'success'
            result['message'] = _('LDAP 同步完成')
        else:
            result['status']  = 'fail'
            result['message'] = _('LDAP 設定值為空')
    except Exception as e:
        error("LDAP integration error:"+e.__str__())
        result['status']  = 'fail'
        result['message'] = _('LDAP 同步失敗 ,')+e.__str__()
    finally:
        GlobalObject.__statusObj__["ldapRunning"] = False
        return result
Ejemplo n.º 3
0
def loadSidebarDesignAjax(request):
    '''
    load left side bar design json
    input: request
    return: json
    author: Kolin Hsu
    '''
    if request.user.is_superuser:
        #function variable
        result = {}
        count = 0
        sidebar_design = GlobalObject.__sidebarDesignObj__['sidebar_design']
        #get item id count
        for item in sidebar_design:
            flow_uuid = item['flow_uuid']
            if flow_uuid == 'custom':
                item_id = int(item['id'][7:])
                if item_id > count:
                    count = item_id
        result['sidebar_design'] = sidebar_design
        result['count'] = count
        info('%s load SidebarDesign success.' % request.user.username, request)
        return ResponseAjax(statusEnum.success, _('讀取成功。'),
                            result).returnJSON()
    else:
        info('%s has no permission.' % request.user.username, request)
        return ResponseAjax(statusEnum.no_permission,
                            _('您沒有權限進行此操作。')).returnJSON()
Ejemplo n.º 4
0
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()
Ejemplo n.º 5
0
def permissionDenied(request):
    '''
    return permission denied
    input: request
    return: json
    author: Kolin Hsu
    '''
    info('%s has no permission.' % request.user.username, request)
    return ResponseAjax(statusEnum.no_permission,
                        _('您沒有權限進行此操作。')).returnJSON()
Ejemplo n.º 6
0
def loadOrganizationAjax(request):
    '''
    load organization
    input: request
    return: json
    author: Kolin Hsu
    ''' 
    result = loadOrganization()
    info('%s load organization success.' % request.user.username,request)
    return ResponseAjax(statusEnum.success, _('讀取成功。'), result).returnJSON()
Ejemplo n.º 7
0
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()
Ejemplo n.º 8
0
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()
Ejemplo n.º 9
0
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()
Ejemplo n.º 10
0
def ldapCheckConnect(param):
    '''
    use ldap3 check connection
    input: use bind_user to connect LDAP 
    return: connection status
    author: Jia Liu
    '''
    return_result = {}
    try:
        from ldap3 import Server, Connection, ALL
        postdata = param.POST
        ldap_client_server = postdata.get('ldap_client_server', '')
        ldap_client_server_port = postdata.get('ldap_client_server_port', '')
        ldap_bind_user = postdata.get('ldap_bind_user', '')
        ldap_bind_user_password = postdata.get('ldap_bind_user_password', '')
        ldap_server = Server(host=ldap_client_server,
                             port=int(ldap_client_server_port),
                             use_ssl=False,
                             get_info=ALL,
                             connect_timeout=2)
        ldap_connection = Connection(ldap_server,
                                     user=ldap_bind_user,
                                     password=ldap_bind_user_password,
                                     auto_bind='NONE',
                                     version=3,
                                     authentication='SIMPLE',
                                     client_strategy='SYNC',
                                     auto_referrals=True,
                                     check_names=True,
                                     read_only=False,
                                     lazy=False,
                                     raise_exceptions=False,
                                     receive_timeout=2)
        ldap_connection.bind()
        result = ldap_connection.result
        if result['description'] == 'success':
            return_result["status"] = "success"
            return_result["message"] = _('LDAP連線成功')
            info('LDAP server connection is successful.')
        elif result['description'] == 'invalidCredentials':
            return_result["status"] = "invalidCredentials"
            return_result["message"] = _('LDAP帳號密碼錯誤')
            info('"%s" Wrong username or password.' % ldap_bind_user)
        ldap_connection.unbind()
        return return_result
    except Exception as e:
        error(e, param)
        return_result["status"] = "error"
        return_result["message"] = _('AD伺服器無法使用')
        return return_result
Ejemplo n.º 11
0
def ldapManualSyncAjax(request):
    '''
    LDAP manual Sync
    input: execute LDAP functions
    return: messages
    author: Pei Lin
    '''
    if check_app('omldap'):
        from omldap.views import ldapManualSync
        result = ldapManualSync(request)
        if result["status"] == "success":
            info('%s ldap Check Connect success.' % request.user.username,
                 request)
            return ResponseAjax(statusEnum.success,
                                result['message']).returnJSON()
        elif result["status"] == "fail":
            info('%s ldap Check Connect error.' % request.user.username,
                 request)
            return ResponseAjax(statusEnum.not_found,
                                result['message']).returnJSON()
        else:
            info('%s ldap Check Connect error.' % request.user.username,
                 request)
            return ResponseAjax(statusEnum.no_permission,
                                result['message']).returnJSON()
    else:
        info('%s ldap Check Connect error.' % request.user.username, request)
        return ResponseAjax(statusEnum.not_found,
                            _('您尚未安裝omldap APP,請聯絡原廠。')).returnJSON()
Ejemplo n.º 12
0
def requestAjax(request):
    '''
    send user's service request
    return: json
    author: Arthur
    '''
    username = request.user.username
    postdata = request.POST.copy()
    files = request.FILES.getlist('files', '')
    result = {}
    #print(postdata)
    if username:
        require_field = ['api_path', 'service_id', 'formdata']
        checker = DataChecker(postdata, require_field)
        if checker.get('status') == 'success':
            #判斷權限
            postdata['flow_uuid'] = FlowActiveGlobalObject.APIgetUUID(
                postdata.get('api_path'))
            thisQuery = list(
                OmService.objects.filter(
                    service_id=postdata.get('service_id')))
            if len(thisQuery):
                service_obj = thisQuery[0]
                #print(service_obj.default_value)
                service_obj = json.loads(service_obj.default_value)

                postdata["formdata"] = json.loads(postdata["formdata"])
                for default_col in service_obj:
                    postdata["formdata"].append(default_col)

                postdata["formdata"] = json.dumps(postdata["formdata"])
            else:
                info('%s update Service error' % username, request)
                return ResponseAjax(statusEnum.error, _('查無此服務。')).returnJSON()

            result = createOmData(postdata, request.user.username, files)
            if result['status']:
                return ResponseAjax(statusEnum.success,
                                    result['message']).returnJSON()
            else:
                return ResponseAjax(statusEnum.not_found,
                                    result['message']).returnJSON()
        else:
            return ResponseAjax(statusEnum.not_found,
                                _('缺少必填欄位。')).returnJSON()
    else:
        error('%s request_service with no permission' % username, request)
        return ResponseAjax(statusEnum.no_permission,
                            _('您沒有權限進行此操作。')).returnJSON()
Ejemplo n.º 13
0
def exportServcieAjax(request):
    if OmServiceDesign.objects.all().count() > 0:
        max = OmServiceDesign.objects.all().aggregate(Max('id')).get('id__max')
        box_object = list(
            OmServiceDesign.objects.filter(id=max).values('content'))
        box_object = json.loads(box_object[0]["content"])

        #翻譯語言
        lan_package = FlowActiveGlobalObject.getSysLanDict('service')
        result = {"box_object": box_object, "lan_package": lan_package}

        info(request,
             '%s export language package success.' % request.user.username)
        return ResponseAjax(statusEnum.success, _('匯出成功。'),
                            result).returnJSON()
Ejemplo n.º 14
0
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()
Ejemplo n.º 15
0
def listSidebarDesignAjax(request):
    '''
    list left side bar custom item
    input: request
    return: json
    author: Kolin Hsu
    '''
    #function variable
    result = []
    sidebar_design = GlobalObject.__sidebarDesignObj__['sidebar_design']
    for item in sidebar_design:
        if item['flow_uuid'] == 'custom':
            result.append(item)
    info('%s list SidebarDesign success.' % request.user.username, request)
    return ResponseAjax(statusEnum.success, _('讀取成功。'), result).returnJSON()
Ejemplo n.º 16
0
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()
Ejemplo n.º 17
0
def loadSystemConfigAjax(request):
    '''
    show system log level
    input: request
    return: log level
    author: Kolin Hsu
    '''
    if request.user.is_superuser:
        result = {}
        POOL_MAX_WORKER = SystemSetting.objects.get(
            name='pool_max_worker').value
        PI_agree = SystemSetting.objects.get(name='PI_agree').value
        SU_agree = SystemSetting.objects.get(name='SU_agree').value
        loglevel = logging.getLevelName(
            logging.getLogger('django').getEffectiveLevel())
        ldapstr = SystemSetting.objects.get(name='ldap_config').value
        ldap_config = json.loads(ldapstr)
        settingsloglevel = settings.LOG_LEVEL
        result['LOG_LEVEL'] = loglevel
        result['POOL_MAX_WORKER'] = POOL_MAX_WORKER
        result[
            'settings_log_level'] = "Log level is already changed,settings LEVEL is " + settingsloglevel
        result['ldap_config'] = ldap_config
        result['PI_agree'] = PI_agree
        result['SU_agree'] = SU_agree
        try:
            with open(
                    os.path.join(settings.BASE_DIR, 'omflow/syscom',
                                 'license.bin'), 'rb') as file:
                license_file = file.read().decode('UTF-8')
                file.close()
        except:
            license_file = ''
        result['license'] = license_file
        #told front end which field has been modified
        if loglevel != settings.LOG_LEVEL:
            result['Level_Change'] = True
        else:
            result['Level_Change'] = False
        info('%s load SystemConfig success.' % request.user.username, request)
        return ResponseAjax(statusEnum.success, _('讀取成功。'),
                            result).returnJSON()
    else:
        info('%s has no permission.' % request.user.username, request)
        return ResponseAjax(statusEnum.no_permission, _('您沒有權限進行此操作。'),
                            result).returnJSON()
Ejemplo n.º 18
0
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()
Ejemplo n.º 19
0
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()
Ejemplo n.º 20
0
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)
Ejemplo n.º 21
0
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)
Ejemplo n.º 22
0
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()
Ejemplo n.º 23
0
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()
Ejemplo n.º 24
0
def uploadLicenseFileAjax(request):
    '''
    upload license file
    input: request
    return: list
    author: Kolin Hsu
    '''
    if request.user.is_superuser:
        #function variable
        upload_file = request.FILES.get("file", None)
        if upload_file:
            license_file = open(
                os.path.join(settings.BASE_DIR, 'omflow/syscom/',
                             'license.bin'), 'wb+')
            for chunk in upload_file.chunks():
                license_file.write(chunk)
            license_file.close()
            info('%s upload license file success.' % request.user.username,
                 request)
            return ResponseAjax(statusEnum.success, _('上傳成功。')).returnJSON()
        else:
            info('%s upload license file error.' % request.user.username,
                 request)
            return ResponseAjax(statusEnum.not_found, _('請選擇檔案。')).returnJSON()
    else:
        info('%s has no permission.' % request.user.username, request)
        return ResponseAjax(statusEnum.no_permission,
                            _('您沒有權限進行此操作。')).returnJSON()
Ejemplo n.º 25
0
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()
Ejemplo n.º 26
0
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()
Ejemplo n.º 27
0
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()
Ejemplo n.º 28
0
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()
Ejemplo n.º 29
0
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()
Ejemplo n.º 30
0
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()