示例#1
0
def dashboard(request):
    try:
        if request.is_ajax():
            data = DataTable.result_list()
            delete_action_list = [{
                'title':
                'Delete',
                'icon':
                'fa fa-times color-danger',
                'message':
                'Do you want to delete this todo?',
                'event':
                'confirm',
                'confirmurl':
                reverse('delete_todo', args=[0]),
            }]
            comp_and_del_action_list = [{
                'title':
                'Complete Todo',
                'icon':
                'fa fa-check color-success',
                'message':
                'Do you want to complete this todo?',
                'event':
                'confirm',
                'confirmurl':
                reverse('complete_todo', args=[0]),
            }, {
                'title':
                'Delete',
                'icon':
                'fa fa-times color-danger',
                'message':
                'Do you want to delete this todo?',
                'event':
                'confirm',
                'confirmurl':
                reverse('delete_todo', args=[0]),
            }]
            delete_action = DataTable.datatable_actions(delete_action_list)
            comp_and_del_action = DataTable.datatable_actions(
                comp_and_del_action_list)

            start = int(request.GET.get('start', 0))
            length = start + int(request.GET.get('length', 10))
            order = DataTable.datatable_order([
                'text',
                'user__username',
                'is_completed',
                'created_time',
                'last_updated',
            ], (int(request.GET.get('order[0][column]', 2)) - 2),
                                              request.GET.get(
                                                  'order[0][dir]', 'desc'))

            items = Todo.objects.all()
            total = items.count()
            items = DataTable.filtering(request, items,
                                        [{
                                            'text': 'icontains'
                                        }, {
                                            'user__username': '******'
                                        }, 'is_completed'])

            filtered = items.count()
            items = items.order_by(order)[start:length]

            rows = []
            for item in items:
                actions = delete_action if item.is_completed else comp_and_del_action
                rows.append({
                    'id':
                    item.id,
                    'text':
                    item.text,
                    'user__username':
                    item.user.username,
                    'is_completed':
                    'Completed' if item.is_completed else 'Not Completed',
                    'created_time':
                    Helper.format_date_to_str(item.created_time),
                    'last_updated':
                    Helper.format_date_to_str(item.last_updated),
                    'actions':
                    actions.replace('/0', '/' + str(item.id))
                })
            data = DataTable.result_list(True, start, total, filtered, rows)

            return JsonResponse(data)

        return render(
            request, 'base/list.html', {
                'table':
                DataTable.datatable([
                    {
                        'id':
                        'text',
                        'title':
                        'Todo Text',
                        'filter':
                        '<input type="text" class="form-control form-control-sm form-filter m-input">'
                    },
                    {
                        'id':
                        'user__username',
                        'title':
                        'User',
                        'filter':
                        '<input type="text" class="form-control form-control-sm form-filter m-input">'
                    },
                    {
                        'id':
                        'is_completed',
                        'title':
                        'Status',
                        'filter':
                        '<select class="form-control form-control-sm form-filter m-input">'
                        + DataTable.datatable_filter_options([
                            ('true', 'Completed'), ('false', 'Not Completed')
                        ]) + '</select>'
                    },
                    {
                        'id': 'created_time',
                        'title': 'Created',
                    },
                    {
                        'id': 'last_updated',
                        'title': 'Updated',
                    },
                ],
                                    url=''),
                'actions': [{
                    'label': 'Export',
                    'class': 'btn btn-success',
                    'icon': 'icon-plus',
                    'target': '_blank',
                    'url': reverse('export_todo_list')
                }, {
                    'label':
                    'Import',
                    'class':
                    'btn btn-info',
                    'icon':
                    'icon-plus',
                    'onclick':
                    "App.dialogForm('Import Todo', '" +
                    reverse('import_todo_list') + "')"
                }, {
                    'label':
                    'New Record',
                    'class':
                    'btn btn-primary',
                    'icon':
                    'icon-plus',
                    'onclick':
                    "App.dialogForm('New Todo', '" +
                    reverse('todo_form', args=[0]) + "')"
                }],
            })
    except Exception as ex:
        print(ex)
        pass
示例#2
0
def user_list(request):
    try:
        if request.is_ajax():
            data = DataTable.result_list()
            action_list = []

            actions = DataTable.datatable_actions(action_list)

            start = int(request.GET.get('start', 0))
            length = start + int(request.GET.get('length', 10))
            order = DataTable.datatable_order([
                'first_name',
                'last_name',
                'last_login',
            ], (int(request.GET.get('order[0][column]', 2)) - 2), request.GET.get('order[0][dir]', 'desc'))

            items = User.objects.all()
            total = items.count()
            items = DataTable.filtering(request, items, [
                {'first_name': 'icontains'},
                {'last_name': 'icontains'},
            ])

            filtered = items.count()
            items = items.order_by(order)[start:length]

            rows = []
            for item in items:
                rows.append({
                    'id': item.id,
                    'first_name': item.first_name,
                    'last_name': item.last_name,
                    'last_login': Helper.format_date_to_str(item.last_login) if item.last_login else '',
                    'actions': actions.replace('/0', '/' + str(item.id)).replace('{id}', str(item.id))
                })
            data = DataTable.result_list(True, start, total, filtered, rows)

            return JsonResponse(data)

        return render(request, 'base/list.html', {
            'table': DataTable.datatable([
                {
                    'id': 'first_name',
                    'title': 'First Name',
                    'filter': '<input type="text" class="form-control form-control-sm form-filter m-input">'
                },
                {
                    'id': 'last_name',
                    'title': 'Last Name',
                    'filter': '<input type="text" class="form-control form-control-sm form-filter m-input">'
                }, {
                    'id': 'last_login',
                    'title': 'Last Login',
                },
            ], url=''),
            'actions': [{
                'label': 'New Record',
                'class': 'btn btn-primary',
                'icon': 'icon-plus',
                'onclick': "App.dialogForm('New User', '" + reverse('user_form', args=[0]) + "',{'large':true})"
            }],

        })
    except Exception as ex:
        print(ex)
        pass