-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathtables.py
107 lines (100 loc) · 3.88 KB
/
tables.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
from django.core.paginator import Paginator
from django.db.models import Q
from django.http import JsonResponse
from . import models
def data_product_table_data(request):
size = int(request.GET.get('limit', 25))
offset = int(request.GET.get('offset', 25))
search = request.GET.get('search', None)
sort = request.GET.get('sort', '') or 'name'
order = request.GET.get('order', '') or 'asc'
sign = '-' if order == 'desc' else ''
all_objects = models.DataProduct.objects.all().order_by(sign + sort)
if search:
filtered_objects = all_objects.filter(
Q(namespace__name__icontains=search) |
Q(name__icontains=search) |
Q(version__icontains=search)
)
else:
filtered_objects = all_objects
paginator = Paginator(filtered_objects, size)
page = (offset / size) + 1
page_objects = paginator.get_page(page)
return JsonResponse({
'total': filtered_objects.count(),
'totalNotFiltered': all_objects.count(),
'rows': [
{
'namespace': str(obj.namespace),
'name': '<a href="/data_product/%d">%s</a>' % (obj.id, obj.name),
'version': obj.version,
} for obj in page_objects
],
})
def external_objects_table_data(request):
size = int(request.GET.get('limit', 25))
offset = int(request.GET.get('offset', 25))
search = request.GET.get('search', None)
sort = request.GET.get('sort', '') or 'identifier'
order = request.GET.get('order', '') or 'asc'
sign = '-' if order == 'desc' else ''
all_objects = models.ExternalObject.objects.all().order_by(sign + sort)
if search:
filtered_objects = all_objects.filter(
Q(source__name__icontains=search) |
Q(alternate_identifier__icontains=search) |
Q(identifier__icontains=search) |
Q(release_date__icontains=search) |
Q(title__icontains=search) |
Q(version__icontains=search)
)
else:
filtered_objects = all_objects
paginator = Paginator(filtered_objects, size)
page = (offset / size) + 1
page_objects = paginator.get_page(page)
return JsonResponse({
'total': filtered_objects.count(),
'totalNotFiltered': all_objects.count(),
'rows': [
{
'url': '<a href="/external_object/%d"><i class="far fa-file-alt"</i></a>' % obj.data_product.id,
'identifier': '<a href="%s">%s</a>' % (obj.identifier, obj.identifier),
'alternate_identifier': obj.alternate_identifier,
'release_date': str(obj.release_date),
'title': obj.title,
'version': obj.data_product.version,
} for obj in page_objects
],
})
def code_repo_release_table_data(request):
size = int(request.GET.get('limit', 25))
offset = int(request.GET.get('offset', 25))
search = request.GET.get('search', None)
sort = request.GET.get('sort', '') or 'name'
order = request.GET.get('order', '') or 'asc'
sign = '-' if order == 'desc' else ''
all_objects = models.CodeRepoRelease.objects.all().order_by(sign + sort)
if search:
filtered_objects = all_objects.filter(
Q(name__icontains=search) |
Q(version__icontains=search) |
Q(website__icontains=search)
)
else:
filtered_objects = all_objects
paginator = Paginator(filtered_objects, size)
page = (offset / size) + 1
page_objects = paginator.get_page(page)
return JsonResponse({
'total': filtered_objects.count(),
'totalNotFiltered': all_objects.count(),
'rows': [
{
'name': '<a href="/object/%d">%s</a>' % (obj.object.id, obj.name),
'version': obj.version,
'website': obj.website,
} for obj in page_objects
],
})