Esempio n. 1
0
def display_table_objs(request, app_name, table_name):
    print("---->", app_name, table_name)
    # models_module = importlib.import_module('%s.models'%(app_name))
    # model_obj = getattr(models_module,table_name)
    admin_class = king_admin.enabled_admins[app_name][table_name]
    # object_list = admin_class.model.objects.all()
    object_list, filter_conditions = table_filter(request, admin_class)

    object_list = table_search(request, admin_class, object_list)

    object_list, orderby_key = table_sort(request, admin_class, object_list)
    # print("orderby key",orderby_key)

    paginator = Paginator(
        object_list, admin_class.list_per_page)  # Show 25 contacts per page

    page = request.GET.get('page')
    query_sets = paginator.get_page(page)

    return render(
        request, "king_admin/table_objs.html", {
            "admin_class": admin_class,
            "query_sets": query_sets,
            "filter_conditions": filter_conditions,
            "orderby_key": orderby_key,
            "previous_orderby": request.GET.get("o", ''),
            "search_text": request.GET.get('_q', '')
        })
Esempio n. 2
0
def display_table_objs(request,app_name,table_name):

    #models_module = importlib.import_module('%s.models'%(app_name))
    #model_obj = getattr(models_module,table_name)
    admin_class = king_admin.enabled_admins[app_name][table_name]
    #admin_class = king_admin.enabled_admins[crm][userprofile]

    #object_list = admin_class.model.objects.all()
    object_list,filter_condtions = table_filter(request,admin_class)

    object_list = table_search(request,admin_class,object_list)


    object_list,orderby_key = table_sort(request, admin_class, object_list)

    paginator = Paginator(object_list, admin_class.list_per_page) # Show 25 contacts per page

    page = request.GET.get('page')
    try:
        query_sets = paginator.page(page)
    except PageNotAnInteger:
        # If page is not an integer, deliver first page.
        query_sets = paginator.page(1)
    except EmptyPage:
        # If page is out of range (e.g. 9999), deliver last page of results.
        query_sets = paginator.page(paginator.num_pages)

    return render(request,"king_admin/table_objs.html",{"admin_class":admin_class,
                                                        "orderby_key":orderby_key,
                                                        "query_sets":query_sets,
                                                        "filter_condtions":filter_condtions,
                                                        "orderby_key":orderby_key,
                                                        "previous_orderby": request.GET.get("o",''),
                                                        "search_text":request.GET.get('_q','')})
Esempio n. 3
0
def display_table_obj(request, app_name, table_name):
    """通过反射获取class的各种属性"""
    # print(app_name, table_name)

    # 通过字符串反射动态导入模块
    # importlib.import_module
    # importlib.import_module('crm')

    admin_class = king_admin.enabled_admins[app_name][table_name]

    # model_module = importlib.import_module('%s.models' % (app_name))
    # model_obj = getattr(model_module, table_name)
    # print(model_obj)

    # object_list = admin_class.model.objects.all()
    object_list, filter_conditions = table_filter(request, admin_class)
    object_list = table_search(request, admin_class, object_list)
    paginator = Paginator(object_list, admin_class.list_per_page)

    page = request.GET.get('page')
    try:
        query_sets = paginator.page(page)
    except PageNotAnInteger:
        # If page is not an integer, deliver first page.
        query_sets = paginator.page(1)
    except EmptyPage:
        # If page is out of range (e.g. 9999), deliver last page of results.
        query_sets = paginator.page(paginator.num_pages)
    return render(
        request, 'king_admin/table_obj.html', {
            'admin_class': admin_class,
            'query_sets': query_sets,
            'search_value': request.GET.get('_q', '')
        })
Esempio n. 4
0
def display_table(request,app_name,table_name):
    from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
    # admin_class规定了显示的内容,并且还有model属性,所以将admin_class传入前端
    admin_class = king_admin.enabled_admins[app_name][table_name]

    # <!--分页功能>
    # 得到表的对象的列表,因为 Paginator 第一个参数必须是可迭代的,第二个参数是每页展示的个数
    # model_all = admin_class.model.objects.all()
    models_list,filter_conditions = utils.table_filter(request, admin_class)      # 过滤后

    models_list, search_key = utils.table_search(request, models_list, admin_class)     # 搜索后

    models_list, orderby_key = utils.table_sort(request, models_list)      # 排序后

    # 传入 list_per_page 作为每页的数据量,保证检索前与检索后展示相同的数据量
    paginator = Paginator(models_list,admin_class.list_per_page)
    current_page = request.GET.get('page')

    try:
        # paginator.page()得到的是一页的对象列表,所以前端不用再对
        # admin_class.model.objects.all()进行循环,而是循环posts
        posts = paginator.page(current_page)

    # 防止用户输入非法字符
    except PageNotAnInteger:
        posts = paginator.page(1)
    except EmptyPage:
        posts = paginator.page(paginator.num_pages)

    return render(request,'king_admin/table_obj.html',{'admin_class':admin_class,
                                                       'posts':posts,
                                                       'filter_conditions':filter_conditions,
                                                       'orderby_key':orderby_key,
                                                       'search_key':search_key,
                                                       'request':request})
Esempio n. 5
0
def display_table_objs(request, app_name, model_name):  # 模板中的传的两个参数在这里接收
    admin_class = king_admin.enabled_admins[app_name][model_name]
    # objects = admin_class.model.objects.all()
    if request.method == 'POST':
        print(request.POST)
        admin_action = request.POST.get('action')
        selected_ids = request.POST.get('selected_ids')
        if selected_ids:
            selected_objs = admin_class.model.objects.filter(
                id__in=selected_ids.split(','))
        else:
            raise KeyError('No object got selected!')
        if hasattr(admin_class, admin_action):
            action_func = getattr(admin_class, admin_action)
            request._admin_action = admin_action
            return action_func(admin_class, request, selected_objs)
    objects, filter_conditions = utils.table_filter(request, admin_class)
    objects = utils.table_search(request, admin_class, objects)
    objects, orderby_key = utils.table_sort(request, objects)
    paginator = Paginator(objects, king_admin.BaseAdmin.list_per_page)
    page = request.GET.get('page')
    query_sets = paginator.get_page(page)
    return render(
        request, 'king_admin/table_objs.html', {
            'admin_class': admin_class,
            'query_sets': query_sets,
            'filter_conditions': filter_conditions,
            'orderby_key': orderby_key,
            'previous_orderby': request.GET.get('o', ''),
            'search_text': request.GET.get('_q', '')
        })
Esempio n. 6
0
def display_table_objs(request, app_name,
                       table_name):  #传进来的CRM_test、userprofile
    # print("-->", app_name, table_name)
    admin_class = king_admin.enabled_admins[app_name][
        table_name]  #根据CRM_test、userprofile取到admin_class

    # contact_list = admin_class.model.objects.all()
    contact_list, filter_conditions = table_filter(request,
                                                   admin_class)  #过滤后的结果

    contact_list = table_search(request, admin_class, contact_list)

    contact_list, orderby_key = table_sort(request, admin_class,
                                           contact_list)  #排序后的结果
    print(contact_list)
    paginator = Paginator(
        contact_list,
        admin_class.list_per_page)  # Show list_per_page contacts per page

    page = request.GET.get('page')
    contacts = paginator.get_page(page)
    # print(admin_class.list_filters)
    return render(
        request, "king_admin/table_obj.html", {
            "admin_class": admin_class,
            "contacts": contacts,
            "filter_conditions": filter_conditions,
            "orderby_key": orderby_key,
            "previous_orderby_page": request.GET.get("o", ''),
            "search_text": request.GET.get("_q", '')
        })
Esempio n. 7
0
def display_table_objs(request,app_name,table_name):

    admin_class = king_admin.enabled_admins[app_name][table_name]

    object_list, filter_condtions = table_filter(request, admin_class)#做过滤

    object_list = table_search(request,admin_class,object_list)#做搜索

    object_list,orderby_key = table_sort(request,admin_class,object_list)#做排序

    paginator = Paginator(object_list, admin_class.list_per_page)  # Show 25 contacts per page

    page = request.GET.get("page")
    try:
        query_sets = paginator.page(page)
    except PageNotAnInteger:
        # If page is not an integer, deliver first page.
        query_sets = paginator.page(1)
    except EmptyPage:
        # If page is out of range (e.g. 9999), deliver last page of results.
        query_sets = paginator.page(paginator.num_pages)

    return render(request, "king_admin/table_objs.html", {"admin_class": admin_class,
                                                          "query_sets": query_sets,
                                                          "filter_condtions": filter_condtions,
                                                          "orderby_key":orderby_key,
                                                          "previous_orderby":request.GET.get('o',''),
                                                          "search_text":request.GET.get('_q',''),})
Esempio n. 8
0
def display_table_objs(request, app_name, table_name):
    #1、
    admin_class = king_admin.enabled_admins[app_name][table_name]
    #从king_admin里面的字典enabled_admins里面取
    # object_list = admin_class.model.objects.all()

    if request.method == "POST":
        # 删除会有两次post,两次post都是新的post,所以每次post都应该带上选中的id和相应的动作
        # 第一次是展示页面的form表单的post提交,即批量操作的action 来了,到delete页面,展示需要删哪些内容,
        # 点确认以后,再来一个POST,是删除页面的form表单的确认删除的post,才删除,删除后返回table展示页面
        #     print(request.POST)
        selected_ids = request.POST.get("selected_ids")  # 拿到选中的id
        action = request.POST.get("action")  # 拿到动作名称
        if selected_ids:
            selected_objs = admin_class.model.objects.filter(
                id__in=selected_ids.split(','))
        else:
            raise KeyError("No object selected.")
        if hasattr(admin_class, action):
            action_func = getattr(admin_class, action)
            request._admin_action = action  # 将这个action强制放到request里面去
            return action_func(admin_class, request, selected_objs)
            # 跳转到执行动作的函数,即delete_selected_objs(),但返回的只是delete页面的内容!!!


# 2、过滤字段
    object_list, filter_conditions = table_filter(request, admin_class)
    # print('object_list',object_list)
    # print('filter_conditions',filter_conditions)
    #3、搜索
    object_list = table_search(request, admin_class, object_list)
    #4、排序
    object_list, orderby_key = table_sort(request, admin_class,
                                          object_list)  #排序后的结果
    #5、分页
    # 分页直接调用Django自带的Paginator
    #https://docs.djangoproject.com/en/1.10/topics/pagination/
    paginator = Paginator(object_list, admin_class.list_per_page)
    page = request.GET.get('page')
    try:
        query_sets = paginator.page(page)
    except PageNotAnInteger:
        query_sets = paginator.page(1)
        #非整数时,返回第一页
    except EmptyPage:
        query_sets = paginator.page(paginator.num_pages)
        #页数小于1或大于最大页数时,返回最大页

    return render(
        request, 'king_admin/table_objs.html', {
            'admin_class': admin_class,
            'query_sets': query_sets,
            'filter_condtions': filter_conditions,
            'search_text': request.GET.get("_q", ""),
            'orderby_key': orderby_key,
        })
Esempio n. 9
0
def display_table_objs(request, app_name, table_name):
    '''展示某一张表的数据'''
    # print("--->", app_name, table_name)
    # models_module = importlib.import_module('%s.models'%app_name)
    # import time
    # time.sleep(5)

    admin_class = king_admin.enabled_admins[app_name][table_name]

    if request.method == "POST":   # action 来了
        print(request.POST)
        selected_ids = request.POST.get("selected_ids")

        if selected_ids:
            selected_objs = admin_class.model.objects.filter(id__in=selected_ids.split(","))
        else:
            raise KeyError("No selected object id")

        print(selected_objs)
        action = request.POST.get("action")

        if hasattr(admin_class, action):
            action_func = getattr(admin_class, action)
            request._admin_action = action  # 给king_admin 中的删除action
            return action_func(admin_class, request, selected_objs)



        return HttpResponse("action submit")


    # object_list = admin_class.model.objects.all()
    object_list, filer_condition = utils.table_filter(request, admin_class)  # 获取过滤数据

    object_list = utils.table_search(request, admin_class, object_list)

    object_list, orderby_key = utils.table_sort(request, admin_class, object_list)  # 获取排序数据




    paginator = Paginator(object_list, admin_class.list_per_page)  # Show 25 contacts per page

    page = request.GET.get('page')  # 获取page number

    query_sets = paginator.get_page(page)  # 同时具有querysets 和page 的方法



    return render(request, "king_admin/table_objs.html", {'admin_class': admin_class,
                                                          "query_sets": query_sets,
                                                          "filer_condition": filer_condition,
                                                          "orderby_key": orderby_key,
                                                          "previous_orderby": request.GET.get("o", ""),
                                                          "search_text": request.GET.get("_q", ""),
                                                          })
Esempio n. 10
0
def display_table_objs(request, app_name, table_name):

    print("-->", app_name, table_name)
    #models_module = importlib.import_module('%s.models'%(app_name))
    #model_obj = getattr(models_module,table_name)
    admin_class = king_admin.enabled_admins[app_name][table_name]
    #admin_class = king_admin.enabled_admins[crm][userprofile]
    if request.method == "POST":  #action 来了

        print(request.POST)
        selected_ids = request.POST.get("selected_ids")
        action = request.POST.get("action")
        if selected_ids:
            selected_objs = admin_class.model.objects.filter(
                id__in=selected_ids.split(','))
        else:
            raise KeyError("No object selected.")
        if hasattr(admin_class, action):
            action_func = getattr(admin_class, action)
            request._admin_action = action
            return action_func(admin_class, request, selected_objs)

    #object_list = admin_class.model.objects.all()
    object_list, filter_condtions = table_filter(request, admin_class)  #过滤后的结果

    object_list = table_search(request, admin_class, object_list)

    object_list, orderby_key = table_sort(request, admin_class,
                                          object_list)  #排序后的结果
    print("orderby key ", orderby_key)
    paginator = Paginator(
        object_list, admin_class.list_per_page)  # Show 25 contacts per page

    page = request.GET.get('page')
    try:
        query_sets = paginator.page(page)
    except PageNotAnInteger:
        # If page is not an integer, deliver first page.
        query_sets = paginator.page(1)
    except EmptyPage:
        # If page is out of range (e.g. 9999), deliver last page of results.
        query_sets = paginator.page(paginator.num_pages)

    return render(
        request, "king_admin/table_objs.html", {
            "admin_class": admin_class,
            "query_sets": query_sets,
            "filter_condtions": filter_condtions,
            "orderby_key": orderby_key,
            "previous_orderby": request.GET.get("o", ''),
            "search_text": request.GET.get('_q', '')
        })
Esempio n. 11
0
def display_table_objs(request, app_name, table_name):

    #models_module = importlib.import_module('%s.models'%(app_name))
    #model_obj = getattr(models_module,table_name)
    admin_class = king_admin.enabled_admins[app_name][table_name]
    #admin_class = king_admin.enabled_admins[crm][userprofile]

    #object_list = admin_class.model.objects.all()
    object_list, filter_condtions = table_filter(request, admin_class)

    search_objct_list = table_search(request, admin_class, object_list)

    sorted_object_list, order_by = table_sorted(request, search_objct_list)

    paginator = Paginator(
        sorted_object_list,
        admin_class.list_per_page)  # Show 25 contacts per page

    if request.method == "POST":
        action_delete = request.POST.get("action_delete")
        if action_delete:
            objs_id_str = request.POST.get("objs_id_str")
            objs_id_list = objs_id_str.split(",")
            admin_class.model.objects.filter(id__in=objs_id_list).delete()
            return redirect("/king_admin/%s/%s" % (app_name, table_name))
        selected_ids_str = request.POST.get("selected_ids_str")
        selected_ids_list = selected_ids_str.split(",")
        queryset = admin_class.model.objects.filter(id__in=selected_ids_list)
        selected_action_obj = request.POST.get("selected_action_obj")
        if hasattr(admin_class, selected_action_obj):
            action_func = getattr(admin_class, selected_action_obj)
            return action_func(admin_class, request, queryset)
    page = request.GET.get('page')
    try:
        query_sets = paginator.page(page)
    except PageNotAnInteger:
        # If page is not an integer, deliver first page.
        query_sets = paginator.page(1)
    except EmptyPage:
        # If page is out of range (e.g. 9999), deliver last page of results.
        query_sets = paginator.page(paginator.num_pages)

    return render(
        request, "king_admin/table_objs.html", {
            "admin_class": admin_class,
            "query_sets": query_sets,
            "filter_condtions": filter_condtions,
            "order_by": order_by,
            "previous_order_by": request.GET.get("o", ""),
            "search_key": request.GET.get("_q", "")
        })
Esempio n. 12
0
def display_table_ajax(request):
    if request.method == 'GET':
        admin_class_detail = request.GET.get('admin_class_detail')
        admin_class_detail = eval(admin_class_detail)
        admin_class = king_admin.enabled_admins[admin_class_detail[0]][
            admin_class_detail[1]]
        page = request.GET.get('page')
        object_list, filter_condtions = table_filter(request, admin_class)
        query_sets = paginator_class(object_list, admin_class, page)
        str_list = ''
        for obj in query_sets:
            str_list += '<tr>'
            str_list += build_table_row(obj, admin_class)
            str_list += '</tr>'
        return HttpResponse(mark_safe(str_list))
Esempio n. 13
0
def display_table_objs(request, app_name, table_name):
    #print ('-------------->',app_name,table_name)
    admin_class = king_admin.enabled_admins[app_name][table_name]

    # models_module = importlib.import_module('%s.model'%(app_name))
    # model_obj = getattr(models_module,table_name)
    #object_list = admin_class.model.objects.all()
    object_list, filter_conditions = table_filter(request,
                                                  admin_class)  #过滤都得结果
    object_list = table_seach(request, admin_class, object_list)
    object_list, orderby_key = table_sort(request, admin_class,
                                          object_list)  #排序后的结果

    paginator = Paginator(
        object_list, admin_class.list_per_page)  # Show 25 contacts per pag
    # def get_page(self, number):
    #     """
    #     Return a valid page, even if the page argument isn't a number or isn't
    #     in range.
    #     """
    #     try:
    #         number = self.validate_number(number)
    #     except PageNotAnInteger:
    #         number = 1
    #     except EmptyPage:
    #         number = self.num_pages
    #     return self.page(number)

    page = request.GET.get('page')
    query_sets = paginator.get_page(page)
    # try:
    #     query_sets = paginator.get_page(page)
    # except PageNotAnInteger:
    #     query_sets = paginator.get_page(1)
    # except EmptyPage:
    #     query_sets = paginator.get_page(paginator.num_pages)

    #return render(request, 'list.html', {'contacts': contacts})
    admin_class = king_admin.enabled_admins[app_name][table_name]
    return render(
        request, 'king_admin/table_objs.html', {
            "admin_class": admin_class,
            "query_sets": query_sets,
            'filter_conditions': filter_conditions,
            'orderby_key': orderby_key,
            'previous_orderby': request.GET.get('o') or '',
            "search_text": request.GET.get('_q', '')
        })
Esempio n. 14
0
def display_table_objs(request, app, table):
    """

    :param request:
    :return:
    """
    admin_class = king_admin.enabled_admins[app][table]
    if request.method == "GET":
        model = admin_class.model
        object_list, filter_conditions = table_filter(request,
                                                      admin_class)  # 过滤

        object_list, search_key = table_search(request, admin_class,
                                               object_list)
        order_key = ""

        object_list, order_key = table_sort(request, object_list)  # 排序

        paginator = Paginator(object_list, admin_class.list_per_page)
        page = request.GET.get('page')
        try:
            query_sets = paginator.page(page)
        except PageNotAnInteger:
            # 不是int的值,显示第一页
            query_sets = paginator.page(1)
        except EmptyPage:
            # 超过限制,显示最后一页
            query_sets = paginator.page(paginator.num_pages)
        previous_order = request.GET.get('order', "")
        return render(request, 'king_admin/table_objs.html', locals())

    elif request.method == "POST":
        # action
        selected_ids = request.POST.get("selected_ids", [])
        action = request.POST.get("action", None)
        if selected_ids:
            selected_objs = admin_class.model.objects.filter(
                id__in=selected_ids.split(','))
        else:
            raise KeyError("no object selected")
        if hasattr(admin_class, action):
            action_func = getattr(admin_class, action)
            request._admin_action = action
            return action_func(admin_class, request, selected_objs)
    else:
        pass
Esempio n. 15
0
File: views.py Progetto: soin3/mycrm
def display_table_objs(request, app_name, table_name):
    admin_class = king_admin.enabled_admins[app_name][table_name]
    if request.method == "POST":  #action
        select_ids = request.POST.get("selected_ids")
        action = request.POST.get("action")
        if select_ids:
            select_objs = admin_class.model.objects.filter(
                id__in=select_ids.split(','))
        else:
            return redirect(("/king_admin/%s/%s/" % (app_name, table_name)))
        if hasattr(admin_class, action):
            action_func = getattr(admin_class, action)
            request._admin_action = action
            return action_func(admin_class, request, select_objs)

        #!!!非常重要的三步
    object_list, filter_conditions = table_filter(request, admin_class)  #过滤
    object_list = table_search(request, admin_class, object_list)  #搜索
    object_list, orderby_key = table_sort(request, admin_class,
                                          object_list)  #排序

    #分页功能
    paginator = Paginator(
        object_list, admin_class.list_per_page)  # Show 20 contacts per page
    page = request.GET.get('page')
    try:
        query_sets = paginator.page(page)
    except PageNotAnInteger:
        # If page is not an integer, deliver first page.
        query_sets = paginator.page(1)
    except EmptyPage:
        # If page is out of range (e.g. 9999), deliver last page of results.
        query_sets = paginator.page(paginator.num_pages)

    return render(
        request,
        "king_admin/table_objs.html",
        {
            "admin_class": admin_class,
            "query_sets": query_sets,
            "filter_conditions": filter_conditions,
            "orderby_key": orderby_key,
            "previous_key": request.GET.get("o", ''),
            "search_text": request.GET.get("search", ''),
        },
    )
Esempio n. 16
0
def display_table_objs(request, app_name, table_name):
    # model_module = importlib.import_module("%s.models"%(app_name))
    # model_obj = getattr(model_module,table_name)
    #print(model_obj.__dict__)
    print("-->", app_name, table_name)

    admin_class = king_admin.enabled_admins[app_name][table_name]
    if request.method == "POST":
        ids_list = request.POST.get("selected_ids").split(",")
        #print(ids_list)
        action = request.POST.get("action")
        querySets = admin_class.model.objects.filter(
            id__in=[int(id) for id in ids_list])
        if hasattr(admin_class, action):
            action_func = getattr(admin_class, action)
            request._admin_action = action
            return action_func(admin_class, request, querySets)

    object_list, filter_conditions = table_filter(request,
                                                  admin_class)  #过滤后的结果

    object_list = table_search(request, admin_class, object_list)  #关键字查询结果

    object_list, orderby_key = table_sort(request, admin_class,
                                          object_list)  #排序后的查询集

    paginator = Paginator(object_list, admin_class.list_per_page)
    #获取分页对象

    page = request.GET.get("page")  #获取当前或者请求页面的页码
    try:
        query_sets = paginator.page(page)  #获取这一页被分配的数据
    except PageNotAnInteger:
        # If page is not an integer, deliver first page.
        query_sets = paginator.page(1)
    except EmptyPage:
        # If page is out of range (e.g. 9999), deliver last page of results.
        query_sets = paginator.page(paginator.num_pages)  #num_pages是总页数
    return render(
        request, "king_admin/table_objs.html", {
            "admin_class": admin_class,
            "filter_conditions": filter_conditions,
            'query_sets': query_sets,
            "orderby_key": orderby_key,
            "search_key": request.GET.get("_q", "")
        })
Esempio n. 17
0
def display_table_objs(req,app_name,table_name):
    print('-->',app_name,table_name)
    print(type(app_name),type(table_name))
    print(kingadmin.enabled_admins)
    #admin_class  根据这个类,获取显示条件  还操作.model下的数据
    admin_class = kingadmin.enabled_admins[app_name][table_name]

    #action  post请求
    print(req.method)
    if req.method == "POST":
        print(req.POST)
        selected_ids = req.POST.get('selected_ids')
        action = req.POST.get('action')
        if selected_ids:
            selected_objs = admin_class.model.objects.filter(id__in=selected_ids.split(','))
        else:
            raise KeyError('No object selected.')

        if hasattr(admin_class,action):
            action_func = getattr(admin_class,action)
            req._admin_action = action
            return action_func(admin_class(),req,selected_objs)

    # object_list = admin_class.model.objects.all()
    object_list,filter_condtions = table_filter(req,admin_class)  #过滤数据

    object_list = table_search(req,admin_class,object_list)  #搜索查询

    object_list,order_key = table_sort(req, object_list)  #排序数据
    paginator = Paginator(object_list, admin_class.list_per_page) # Show 25 contacts per page

    page = req.GET.get('page')
    try:
        query_sets = paginator.page(page)
    except PageNotAnInteger:
        query_sets = paginator.page(1)
    except EmptyPage:
        query_sets = paginator.page(paginator.num_pages)

    print('enter filter')
    return render(req,'king_admin/table_objs.html',{'admin_class':admin_class,
                                                    'query_sets': query_sets,
                                                    'filter_condtions':filter_condtions,
                                                    'order_key':order_key,
                                                    'previous_order_key':req.GET.get('o',''),
                                                    'search_text':req.GET.get('_q','')})
Esempio n. 18
0
def display_table_objs(request, app_name, table_name):
    # model_module = importlib.import_module('%s.models' %(app_name))
    # model_obj = getattr(model_module, table_name)
    admin_class = king_admin.enabled_admins[app_name][table_name]

    if request.method == "POST":
        selected_ids = request.POST.get('selected_ids')
        action = request.POST.get('action')
        if selected_ids:
            selected_objs = admin_class.model.objects.filter(
                id__in=selected_ids.split(','))
        else:
            raise KeyError("No object selected.")
        if hasattr(admin_class, action):
            request._admin_action = action
            action_func = getattr(admin_class, action)
            return action_func(admin_class, request, selected_objs)

    #object_list = admin_class.model.objects.all()
    object_list, filter_condition = table_filter(request, admin_class)

    object_list = table_search(request, admin_class, object_list)

    object_list, orderby_key = table_sort(request, admin_class, object_list)

    paginator = Paginator(object_list, admin_class.list_per_page)

    page = request.GET.get('page')
    try:
        query_sets = paginator.page(page)
    except PageNotAnInteger:
        query_sets = paginator.page(1)
    except EmptyPage:
        query_sets = paginator.page(paginator.num_pages)
    return render(
        request, 'king_admin/table_objs.html', {
            'admin_class': admin_class,
            'query_sets': query_sets,
            'filter_condition': filter_condition,
            'orderby_key': orderby_key,
            'previous_orderby': request.GET.get('o', ''),
            'search_text': request.GET.get('_q', ''),
            'app_name': app_name,
            'table_name': table_name
        })
Esempio n. 19
0
def display_table_objs(request, app_name, table_name):
    print("-->", app_name, table_name)

    admin_class = king_admin.enabled_admins[app_name][table_name]
    print(request.GET)
    object_list, filter_conditions = table_filter(request, admin_class)

    paginator = Paginator(object_list, admin_class.list_per_page)
    try:
        query_sets = paginator.page('page')
    except PageNotAnInteger:
        query_sets = paginator.page(1)
    except EmptyPage:
        query_sets = paginator.page(paginator.num_pages)

    return render(request, "king_admin/table_objs.html", {'admin_class': admin_class,
                                                          'query_sets': query_sets,
                                                          'filter_conditions': filter_conditions,})
Esempio n. 20
0
def display_table_objs(request, app_name, table_name):
    admin_class = king_admin.enabled_admins[app_name][table_name]

    #post请求执行action操作
    if request.method == 'POST':
        selected_ids = request.POST.get('selected_ids')
        action_name = request.POST.get('action')
        if selected_ids:
            selected_objs = admin_class.model.objects.filter(
                id__in=selected_ids.split(','))
        else:
            raise KeyError('没有数据')
        if hasattr(admin_class, action_name):
            action_func = getattr(admin_class, action_name)
            request._action = action_name
            return action_func(admin_class, request, selected_objs)

    #有后端查询出结果集,并对其进行分页操作
    object_list, filter_conditions = table_filter(request, admin_class)
    #搜索
    object_list = table_search(request, admin_class, object_list)
    #先过滤,在排序
    object_list, orderby_key = table_sort(request, object_list)

    paginator = Paginator(object_list, admin_class.list_per_page)
    page = request.GET.get('page')
    try:
        objects = paginator.page(page)
    except PageNotAnInteger:
        objects = paginator.page(1)
    except EmptyPage:
        objects = paginator.page(paginator.num_pages)

    return render(
        request, 'king_admin/table_objs.html', {
            'admin_class': admin_class,
            'query_sets': objects,
            'filter_conditions': filter_conditions,
            'orderby_key': orderby_key,
            'previous_orderby': request.GET.get('o') or '',
            'search_text': request.GET.get('_q') or ''
        })
Esempio n. 21
0
def table_contents(req, app_name, table_name):
    conf = {}
    table_admin = king_admin.enabled_admin[app_name][table_name]
    object_list, filter_conditions = utils.table_filter(req,
                                                        table_admin)  ##过滤后的结果

    object_list, search_key = utils.search_for(req, object_list, table_admin)

    object_list, order_by = utils.table_sort(req, table_admin,
                                             object_list)  ##排序后的结果

    old_order_by = req.GET.get('o', '')  # 记录当前排序状态
    conf['order_by'] = order_by  ##加负号或者去掉负号的过滤值
    conf['old_order_by'] = old_order_by  ###上一次的过滤值
    conf['app'] = app_name
    conf['table'] = table_name
    conf['search_key'] = search_key  ##搜索框保留值
    # conf['current_url'] = req.path
    # print(req.path)

    paginator = Paginator(object_list, table_admin.list_per_page)
    page = req.GET.get('page')
    try:
        content_set = paginator.page(page)
    except PageNotAnInteger:
        content_set = paginator.page(1)
    except EmptyPage:
        content_set = paginator.page(paginator.num_pages)
    return render(
        req,
        'king_admin/table_contents.html',
        {
            'admin': table_admin,
            'content_set': content_set,
            'filter_conditions': filter_conditions,
            'conf': conf,
        },
    )
Esempio n. 22
0
def display_table_objs(request, app_name, table_name):

    print("-->", app_name, table_name)
    #models_module = importlib.import_module('%s.models'%(app_name))
    #model_obj = getattr(models_module,table_name)
    admin_class = king_admin.enabled_admins[app_name][table_name]
    #admin_class = king_admin.enabled_admins[crm][userprofile]

    #object_list = admin_class.model.objects.all()
    object_list, filter_condtions = table_filter(request, admin_class)
    page = request.GET.get('page')
    query_sets = paginator_class(object_list, admin_class, page)
    return render(
        request,
        "king_admin/table_objs.html",
        {
            "admin_class": admin_class,
            "query_sets": query_sets,
            "filter_condtions": filter_condtions,
            'app_name': app_name,
            'table_name': table_name
        },
    )
Esempio n. 23
0
def display_table_objs(request, app_name, table_name):

    print("-->", app_name, table_name)
    admin_class = king_admin.enabled_admins[app_name][table_name]
    object_list, filter_condtions = table_filter(request, admin_class)
    paginator = Paginator(
        object_list, admin_class.list_per_page)  # Show 25 contacts per page

    page = request.GET.get('page')
    try:
        query_sets = paginator.page(page)
    except PageNotAnInteger:
        # If page is not an integer, deliver first page.
        query_sets = paginator.page(1)
    except EmptyPage:
        # If page is out of range (e.g. 9999), deliver last page of results.
        query_sets = paginator.page(paginator.num_pages)

    return render(
        request, "king_admin/table_objs.html", {
            "admin_class": admin_class,
            "query_sets": query_sets,
            "filter_condtions": filter_condtions
        })
Esempio n. 24
0
def display_table_obj(request, app_name, table_name):
    print('display--->', app_name, table_name)

    # model_module=importlib.import_module('%s.models'%app_name)
    # model_obj=getattr(model_module,table_name)
    admin_class = king_admin.enabled_admin[app_name][table_name]
    if request.method == 'POST':
        print(request.POST)
        print(request.POST.get('selected_ids'))
        print(request.POST.get('action'))
        print(request.POST.get('selected_obj'))
        selected_o = request.POST.get('selected_obj')
        selected_action = request.POST.get('action')
        selected_ids = request.POST.get('selected_ids')
        if selected_ids and selected_action:
            ids = selected_ids.split(',')
            selected_objs = admin_class.model.objects.filter(id__in=ids)
            # print(selected_objs)
            func = getattr(admin_class, selected_action)
            return func(admin_class, request, selected_objs)
        elif selected_o and selected_action:
            ids = selected_o.strip()
            ids = ids.split(' ')
            selected_objs = admin_class.model.objects.filter(id__in=ids)
            print(selected_objs)
            func = getattr(admin_class, selected_action)
            return func(admin_class, request, selected_objs)

            print('sadfsdfsd')
        else:
            print('------no selected or action')

    object_list, filter_condtions = table_filter(request, admin_class)

    # print('object________',admin_class.model.objects.all())
    object_list = table_search(request, admin_class, object_list)

    object_list, orderby_key = table_sort(request, admin_class,
                                          object_list)  #排序后的结果
    # print('2', object_list,filter_condtions)
    paginator = Paginator(
        object_list, admin_class.list_per_page)  # Show 25 contacts per page
    page = request.GET.get('page')
    try:
        query_sets = paginator.page(page)
    except PageNotAnInteger:
        # If page is not an integer, deliver first page.
        query_sets = paginator.page(1)
    except EmptyPage:
        # If page is out of range (e.g. 9999), deliver last page of results.
        query_sets = paginator.page(paginator.num_pages)

    return render(
        request, 'king_admin/table_objs.html', {
            'admin_class': admin_class,
            'filter_condtions': filter_condtions,
            'query_sets': query_sets,
            "previous_orderby": request.GET.get("o", ''),
            "orderby_key": orderby_key,
            "search_text": request.GET.get('_q', '')
        })
Esempio n. 25
0
def display_table_objs(request, app_name, table_name):

    print("-->", app_name, table_name)
    #models_module = importlib.import_module('%s.models'%(app_name))
    #model_obj = getattr(models_module,table_name)
    admin_class = king_admin.enable_admins[app_name][table_name]
    #admin_class = king_admin.enabled_admins[crm][userprofile]
    if request.method == "POST":
        print("操作 action", request.POST.get("action"))
        selected_ids = request.POST.get("selected_ids")
        if selected_ids:
            selected_objs = admin_class.model.objects.filter(
                id__in=selected_ids.split(","))
        else:
            raise KeyError("No object selected")
        action = request.POST.get("action")

        if hasattr(admin_class, action):
            action_func = getattr(admin_class, action)
            request._admin_action = action
            return action_func(admin_class, request, selected_objs)

    #object_list = admin_class.model.objects.all()
    object_list, filter_condtions = table_filter(request, admin_class)

    object_list = table_search(request, admin_class, object_list)

    object_list, orderby_key = table_sort(request, object_list)

    # print("object:",object_list)

    paginator = Paginator(
        object_list, admin_class.list_per_page)  # Show 25 contacts per page

    page = request.GET.get('page')

    # print("PAGE:",page)
    try:
        query_sets = paginator.page(page)
    except PageNotAnInteger:
        # If page is not an integer, deliver first page.
        query_sets = paginator.page(1)
    except EmptyPage:
        # If page is out of range (e.g. 9999), deliver last page of results.
        query_sets = paginator.page(paginator.num_pages)
    # print("views.filter_condtions:",filter_condtions)
    # print(222222222222222)
    # #print(list(query_sets)[0])
    # # prn_obj(list(query_sets)[0])
    # # print(query_sets.has_previous)
    # print("222222222222222222222222222222",query_sets.paginator.page_range,"333333333333333333333333333")
    return render(
        request,
        "king_admin/table_objs.html",
        {
            "admin_class": admin_class,
            "query_sets": query_sets,
            "filter_condtions": filter_condtions,
            "orderby_key": orderby_key,
            "previous_orderby": request.GET.get("o") or "",
            "search_q": request.GET.get("_q") or "",
            "selectdate": request.GET.get("date") or ""
        },
    )
Esempio n. 26
0
def table_index(request, app_name, table_name):
    admin_class = king_admin.enabled_admins[app_name][table_name]
    # 是models_class: 相应的表对象 models.UserProfile

    if request.method == "POST":  #action(执行) 来了,取前端选取的数据
        # print('--------------------',request.POST)
        selected_ids = request.POST.get("selected_ids")  # 取选择中的数据id
        action = request.POST.get("action")  # 取选中的操作执行函数
        if selected_ids:
            selected_objs = admin_class.model.objects.filter(
                id__in=selected_ids.split(','))  # 取数据
        else:
            raise KeyError("没有数据!")
        if hasattr(admin_class, action):
            action_func = getattr(admin_class, action)
            request._admin_action = action  # ????????????????
            return action_func(admin_class, request,
                               selected_objs)  # ?????????admin_class

    object_list, filter_conditions, all_key_value = table_filter(
        request, admin_class)  # 在数据库中取数据并筛选
    # filter_conditions是request.GET.items() 获取页面里的筛选的键值对
    # 是object_list储存数据的列表(还没执行)admin_class.model.objects.filter(**filter_conditions)
    # all_key_value 前端页面的所有键值对 筛选条件 页码 排序

    object_list = table_search(request, admin_class, object_list)  # 搜索

    object_list, order_key = table_order(request, object_list)  # 排序
    # 给取得的数据排序重新赋给object_list,order_key是返回前端在从前端传回后端判断用哪个字段排序,是正序还是倒序
    paginator = Paginator(object_list, admin_class.list_per_page)  #  分页
    # 数据库中的总条数,和每页显示多少条,
    page = request.GET.get('page')
    # 从前端获取当前码数 page
    try:
        query_sets = paginator.page(page)
        # 根据索引number(页码 page),返回一个’Page’对象,如果不存在,引起
        # InvalidPage异常
    except PageNotAnInteger:
        # If page is not an integer, deliver first page.
        query_sets = paginator.page(1)
    except EmptyPage:
        # If page is out of range (e.g. 9999), deliver last page of results.
        query_sets = paginator.page(paginator.num_pages)
        # 当页面不存在或者无效时,会引起
        # ``InvalidPage``
        # 异常,一般这个异常就够用,如果需要更
        # 详细信息,还有
        # ``PageNotAnInteger``,``EmptyPage``
        # filter_conditions,GET.items() 获取页面里的键值对组成的字段 可能是(page = 页码,跳页时)
    return render(
        request,
        "king_admin/table.html",
        {
            "admin_class":
            admin_class,  # 是models_class: 相应的表对象 models.UserProfile
            "query_sets": query_sets,  # 根据索引number(页码 page),返回一个’Page’对象,
            "filter_conditions":
            filter_conditions,  # filter_conditions存有筛选的筛选条件(以键值对的形式)
            "all_key_value": all_key_value,  # 前端页面的所有键值对 筛选条件 页码 排序
            "order_key": order_key,
        })  # order_key是返回前端在从前端传回后端判断用哪个字段排序,是正序还是倒序
Esempio n. 27
0
def display_table_objs(request,app_name,table_name):
    # print("-->",app_name,table_name)

    # models_module = importlib.import_module('%s.models' %(app_name))
    # model_obj = getattr(models_module,table_name)


    # 获取自定义的admin_class
    admin_class = king_admin.enabled_admins[app_name][table_name]
    # admin_class = king_admin.enabled_admins[crm][userprofile]

    if request.method == 'POST': # action来了
        # with open('1.html','at', encoding="utf-8") as f:
        #     print(request.POST,file=f)
        # 获取提交的数据
        selected_ids = request.POST.get("selected_ids")
        action = request.POST.get("action")
        # 后台判断
        if selected_ids:
            selected_objs = admin_class.model.objects.filter(id__in=selected_ids.split(','))
        else:
            raise KeyError("No object selected.")
        if hasattr(admin_class,action):
            action_func = getattr(admin_class,action)
            # 将action存储在请求体中便于调用
            request._admin_action = action
            return action_func(admin_class,request,selected_objs)




    # 分页处理
    # 1.分页对象参数构建:对象列表,每页显示数量
    # query_set_list = admin_class.model.objects.all()

    # 此处顺序不可乱,搜索是在过滤的基础上建立的
    # 排序又是在过滤和搜索的基础上建立的
    # 延伸===》添加过滤条件
    query_set_list, filter_conditions = utils.table_filter(request, admin_class) # 过滤后的结果
    # 延伸===》添加搜索功能
    query_set_list, search_text = utils.table_search(request, admin_class, query_set_list)
    # 延伸===》添加排序功能
    query_set_list, order_by_text = utils.table_sort(request, admin_class, query_set_list) # 排序后的结果
    # print('order_by_text', order_by_text)
    # 2.分页对象创建
    paginator = Paginator(query_set_list, admin_class.list_per_page)
    # print('admin_class.list_per_page:', admin_class.list_per_page)
    # print(paginator.count)
    # print(paginator.num_pages)
    # print(paginator.page_range)
    # 3.获取前端点击的页面数值
    get_page = request.GET.get('page',1)
    # get_page = int(request.GET.get('page',1))
    # 4.页面异常处理
    try:
        # 直接获取该页内容
        query_set = paginator.page(get_page)
    except PageNotAnInteger:
        # 不是整数值,跳转到首页
        query_set = paginator.page(1)
    except EmptyPage:
        # 超出范围,跳转到最后一页
        query_set = paginator.page(paginator.num_pages)

    return render(request, 'king_admin/table_objs.html',
                  {'admin_class': admin_class,
                   'query_set': query_set,
                   'filter_conditions': filter_conditions,
                   'search_text': search_text,
                   # 'order_by_text':request.GET.get("o",''),
                   'order_by_text':order_by_text,
                   })
Esempio n. 28
0
def display_table_objs(request, app_name, table_name):
    """
    通用表格内容展示
    """
    # print(app_name, table_name)
    # import importlib
    # models_model = importlib.import_module('%s.models' % app_name)
    # model_obj = getattr(models_model, table_name)

    # 获取所有的列数据
    admin_class = king_admin.enabled_admins[app_name][table_name]

    # from crm import models
    # print(col_obj.model.objects, models.UserProfile)

    # action 动作
    if request.method == "POST":
        select_across = request.POST.get('select_across', None)
        post_flag = request.POST.get('_post', None)

        # 需要把 action 动作丢给 king_admin 来处理,包含返回的页面内容
        # filter_id = admin_class[0] + '__in'

        if select_across:
            action = request.POST.get('action', None)
            # filter_dic = {filter_id: select_across.split(',')}
            recode_obj = admin_class.model.objects.filter(id__in=select_across.split(','))
            if action:
                if hasattr(admin_class, action):
                    action_func = getattr(admin_class, action)
                    return action_func(admin_class, request, recode_obj)
        if post_flag:
            select_across = request.POST.get('_selected_action', None)
            action = request.POST.get('_action', None)
            if select_across:
                # filter_dic = {filter_id: select_across.split(',')}
                recode_obj = admin_class.model.objects.filter(id__in=select_across.split(','))
                if action:
                    if hasattr(admin_class, action):
                        action_func = getattr(admin_class, action)
                        return action_func(admin_class, request, recode_obj)

    # 动态过滤数据
    object_list, filter_conditions, orderby_key, query_content = utils.table_filter(request, admin_class)
    # 排序数据, 这边需要修改成使用统一的数据源,现在无法对过滤后的数据进行排序
    # object_list, orderby_key = utils.request_order_data(request, object_list)
    """
    object_list: 查询出来的数据
    filter_conditions: request.GET.items 的数据,动态查询的标签数据, 用于固定原来的选项
                       <option selected> 时使用的
    """



    """
    page
    """
    # 根据id来获取分页数据

    page_num = admin_class.list_per_page    # 需要与 tags.render_page_ele 里面的 page_num 相等, 每页显示的行数, 默认为20行
    page = request.GET.get('page')
    # id_range = int(page) * page_num
    # count_pages = col_obj.model.objects.count()
    # query_sets = col_obj.model.objects.filter(id__gte=id_range).all()[:page_num]

    # 获取过滤数据后, 进行分页, 如果没有过滤条件,则返回所有数据
    paginator = Paginator(object_list, page_num)
    # Show 1 contacts per page

    try:
        contacts = paginator.page(page)
    except PageNotAnInteger:
        # If page is not an integer, deliver first page.
        contacts = paginator.page(1)
    except EmptyPage:
        # If page is out of range (e.g. 9999), deliver last page of results.
        contacts = paginator.page(paginator.num_pages)

    return render(request, 'king_admin/table_objs.html',
                  {"admin_class": admin_class,
                   "contacts": contacts,
                   "filter_conditions": filter_conditions,
                   "orderby_key": orderby_key,
                   "query_content": query_content,
                   "app_name": app_name})
Esempio n. 29
0
def display_table_objs(request, app_name, table_name):
    print("-->", app_name, table_name)

    # model_module = importlib.import_module('%s.models' % (app_name))
    # model_obj = getattr(model_module, table_name)
    admin_class = king_admin.enabled_admin[app_name][table_name]  # 获取数据的主入口

    if request.method == "POST":  # action来啦

        selected_ids = request.POST.get("selected_ids")
        action = request.POST.get("action")
        if selected_ids:
            selected_objs = admin_class.model.objects.filter(
                id__in=selected_ids.split(','))
        else:
            return redirect(request.path)
        if hasattr(admin_class, action):
            action_func = getattr(admin_class, action)
            request._admin_action = action
            return action_func(admin_class, request, selected_objs)

    # object_list = admin_class.model.objects.all()
    object_list, filter_condtions = table_filter(request,
                                                 admin_class)  # 过滤后的结果

    # request_url = '&' + str(filter_condtions).replace('\'', '').replace('{', '').replace('}', '').replace(':', '=') \
    #   .replace(',', '&').replace(' ', '')

    filter_url = request_url(request)

    object_list, search_key = table_search(request, admin_class,
                                           object_list)  # 搜索的结果

    object_list, orderby_key = table_sort(request, admin_class,
                                          object_list)  # 排序后的结果

    paginator = Paginator(object_list, admin_class.list_per_page)

    page = request.GET.get('page')
    try:
        query_sets = paginator.page(page)
    except PageNotAnInteger:
        # If page is not an integer, deliver first page.
        query_sets = paginator.page(1)
    except EmptyPage:
        # If page is out of range (e.g. 9999), deliver last page of results.
        query_sets = paginator.page(paginator.num_pages)

    from king_admin.king_admin import CustomerAdmin

    return render(
        request, "admin/table_obj.html", {
            "admin_class": admin_class,
            "query_sets": query_sets,
            "filter_condtions": filter_condtions,
            "object_list_count": object_list.count(),
            "qq_search": admin_class.model._meta.object_name,
            "orderby_key": orderby_key,
            "previous_orderby": request.GET.get('o', ''),
            "search_key": search_key,
            "search_by": CustomerAdmin.search_fields,
            "filter_url": filter_url
        })