Example #1
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','')})
Example #2
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})
Example #3
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", '')
        })
Example #4
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', '')
        })
Example #5
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', '')
        })
Example #6
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',''),})
Example #7
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", ""),
                                                          })
Example #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,
        })
Example #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))
    #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', '')
        })
Example #10
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', '')
        })
Example #11
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
Example #12
0
File: views.py Project: 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", ''),
        },
    )
Example #13
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','')})
Example #14
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", "")
        })
Example #15
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
        })
Example #16
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 ''
        })
Example #17
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,
        },
    )
Example #18
0
def display_table_objs(req, app_name, table_name):
    '''提供过滤后的数据'''
    admin_class = king_admin.enabled_admin[app_name][table_name]
    #action全选编辑选项,最后把selected_objs传到kingadmin···········
    if req.method == 'POST':  #action来了,tables页面没有其他的post提交。
        selected_ids = req.POST.get('selected_ids')
        action = req.POST.get('action')
        if selected_ids:  #是个字符串['22,21,20'],变成列表
            selected_objs = admin_class.model.objects.filter(
                id__in=selected_ids.split(','))
        else:
            raise KeyError('No objeect selected')
        if hasattr(admin_class, action):  #判断是否有action方法
            action_func = getattr(admin_class, action)
            req._admin_action = action  #为第二次post确认删除提交准备的action,,,然后由king_admin传到前端的隐藏input
            #传到king_admin的数据
            return action_func(admin_class, req, selected_objs)

    queryset = admin_class.model.objects.all(
    )  #<QuerySet [<Customer: 23423451>, <Customer: 54634451>, <Customer: 234234234>]>
    queryset, filter_conditions = get_filter_result(req, queryset)  #过滤后的结果
    queryset = table_search(req, admin_class, queryset)

    queryset, orderby_key = table_sort(req, queryset)
    admin_class.filter_conditions = filter_conditions
    #·······分页······
    paginator = Paginator(queryset, 3)  # Show num contacts per page
    page = req.GET.get('_page')  #拿第几页

    queryset = paginator.get_page(page)  #这个页码的内容
    return render(
        req, 'king_admin/table_objs.html', {
            "queryset": queryset,
            'admin_class': admin_class,
            'orderby_key': orderby_key,
            'previous_orderby': req.GET.get('o', ''),
            'search_text': req.GET.get('_q', '')
        })
Example #19
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', '')
        })
Example #20
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 ""
        },
    )
Example #21
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
        })
Example #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
    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,
                   })