Revision 098f333b snf-astakos-app/astakos/im/views.py
b/snf-astakos-app/astakos/im/views.py | ||
---|---|---|
72 | 72 |
EmailChangeForm, |
73 | 73 |
AstakosGroupCreationForm, AstakosGroupSearchForm, |
74 | 74 |
AstakosGroupUpdateForm, AddGroupMembersForm, |
75 |
MembersSortForm, |
|
75 |
MembersSortForm, AstakosGroupSortForm,
|
|
76 | 76 |
TimelineForm, PickResourceForm, |
77 | 77 |
AstakosGroupCreationSummaryForm) |
78 | 78 |
from astakos.im.functions import (send_feedback, SendMailError, |
... | ... | |
93 | 93 |
|
94 | 94 |
logger = logging.getLogger(__name__) |
95 | 95 |
|
96 |
DB_REPLACE_GROUP_SCHEME = """REPLACE(REPLACE("auth_group".name, 'http://', ''), |
|
97 |
'https://', '')""" |
|
98 |
|
|
99 | 96 |
callpoint = AstakosCallpoint() |
100 | 97 |
|
101 | 98 |
def render_response(template, tab=None, status=200, context_instance=None, **kwargs): |
... | ... | |
912 | 909 |
@login_required |
913 | 910 |
def group_list(request): |
914 | 911 |
none = request.user.astakos_groups.none() |
915 |
sorting = request.GET.get('sorting') |
|
916 | 912 |
query = """ |
917 | 913 |
SELECT auth_group.id, |
918 |
%s AS groupname,
|
|
914 |
auth_group.name AS groupname,
|
|
919 | 915 |
im_groupkind.name AS kindname, |
920 | 916 |
im_astakosgroup.*, |
921 | 917 |
owner.email AS groupowner, |
... | ... | |
925 | 921 |
(SELECT CASE WHEN( |
926 | 922 |
SELECT date_joined FROM im_membership |
927 | 923 |
WHERE group_id = im_astakosgroup.group_ptr_id |
928 |
AND person_id = %s) IS NULL |
|
924 |
AND person_id = %(userid)s) IS NULL
|
|
929 | 925 |
THEN 0 ELSE 1 END) AS membership_status |
930 | 926 |
FROM im_astakosgroup |
931 | 927 |
INNER JOIN im_membership ON ( |
... | ... | |
936 | 932 |
im_astakosuser_owner.astakosgroup_id = im_astakosgroup.group_ptr_id) |
937 | 933 |
LEFT JOIN auth_user as owner ON ( |
938 | 934 |
im_astakosuser_owner.astakosuser_id = owner.id) |
939 |
WHERE im_membership.person_id = %s |
|
940 |
""" % (DB_REPLACE_GROUP_SCHEME, request.user.id, request.user.id) |
|
941 |
|
|
942 |
if sorting: |
|
943 |
query = query+" ORDER BY %s ASC" %sorting |
|
944 |
else: |
|
945 |
query = query+" ORDER BY groupname ASC" |
|
946 |
q = AstakosGroup.objects.raw(query) |
|
947 |
|
|
948 |
|
|
935 |
WHERE im_membership.person_id = %(userid)s |
|
936 |
""" |
|
937 |
params = {'userid':request.user.id} |
|
949 | 938 |
|
939 |
# validate sorting |
|
940 |
sorting = 'groupname' |
|
941 |
sort_form = AstakosGroupSortForm(request.GET) |
|
942 |
if sort_form.is_valid(): |
|
943 |
sorting = sort_form.cleaned_data.get('sorting') |
|
944 |
query = query+" ORDER BY %s ASC" %sorting |
|
945 |
|
|
946 |
q = AstakosGroup.objects.raw(query, params=params) |
|
947 |
|
|
950 | 948 |
# Create the template, context, response |
951 | 949 |
template_name = "%s/%s_list.html" % ( |
952 | 950 |
q.model._meta.app_label, |
... | ... | |
955 | 953 |
extra_context = dict( |
956 | 954 |
is_search=False, |
957 | 955 |
q=q, |
958 |
sorting=request.GET.get('sorting'),
|
|
956 |
sorting=sorting,
|
|
959 | 957 |
page=request.GET.get('page', 1) |
960 | 958 |
) |
961 | 959 |
return render_response(template_name, |
... | ... | |
1065 | 1063 |
@login_required |
1066 | 1064 |
def group_search(request, extra_context=None, **kwargs): |
1067 | 1065 |
q = request.GET.get('q') |
1068 |
sorting = request.GET.get('sorting') |
|
1069 | 1066 |
if request.method == 'GET': |
1070 | 1067 |
form = AstakosGroupSearchForm({'q': q} if q else None) |
1071 | 1068 |
else: |
1072 | 1069 |
form = AstakosGroupSearchForm(get_query(request)) |
1073 | 1070 |
if form.is_valid(): |
1074 | 1071 |
q = form.cleaned_data['q'].strip() |
1072 |
|
|
1073 |
sorting = 'groupname' |
|
1075 | 1074 |
if q: |
1076 | 1075 |
queryset = AstakosGroup.objects.select_related() |
1077 | 1076 |
queryset = queryset.filter(name__contains=q) |
1078 | 1077 |
queryset = queryset.filter(approval_date__isnull=False) |
1079 | 1078 |
queryset = queryset.extra(select={ |
1080 |
'groupname': DB_REPLACE_GROUP_SCHEME,
|
|
1079 |
'groupname': "auth_group.name",
|
|
1081 | 1080 |
'kindname': "im_groupkind.name", |
1082 | 1081 |
'approved_members_num': """ |
1083 | 1082 |
SELECT COUNT(*) FROM im_membership |
... | ... | |
1105 | 1104 |
AND astakosuser_id = %s) |
1106 | 1105 |
THEN 1 ELSE 0 END""" % request.user.id, |
1107 | 1106 |
}) |
1108 |
if sorting: |
|
1109 |
# TODO check sorting value |
|
1110 |
queryset = queryset.order_by(sorting) |
|
1111 |
else: |
|
1112 |
queryset = queryset.order_by("groupname") |
|
1107 |
|
|
1108 |
# validate sorting |
|
1109 |
sort_form = AstakosGroupSortForm(request.GET) |
|
1110 |
if sort_form.is_valid(): |
|
1111 |
sorting = sort_form.cleaned_data.get('sorting') |
|
1112 |
queryset = queryset.order_by(sorting) |
|
1113 | 1113 |
|
1114 | 1114 |
else: |
1115 | 1115 |
queryset = AstakosGroup.objects.none() |
... | ... | |
1132 | 1132 |
q = AstakosGroup.objects.select_related() |
1133 | 1133 |
q = q.filter(approval_date__isnull=False) |
1134 | 1134 |
q = q.extra(select={ |
1135 |
'groupname': DB_REPLACE_GROUP_SCHEME,
|
|
1135 |
'groupname': "auth_group.name",
|
|
1136 | 1136 |
'kindname': "im_groupkind.name", |
1137 | 1137 |
'approved_members_num': """ |
1138 | 1138 |
SELECT COUNT(*) FROM im_membership |
... | ... | |
1153 | 1153 |
WHERE astakosgroup_id = im_astakosgroup.group_ptr_id |
1154 | 1154 |
AND astakosuser_id = %s) |
1155 | 1155 |
THEN 1 ELSE 0 END""" % request.user.id, }) |
1156 |
sorting = request.GET.get('sorting') |
|
1157 |
if sorting: |
|
1158 |
# TODO check sorting value |
|
1159 |
q = q.order_by(sorting) |
|
1160 |
else: |
|
1161 |
q = q.order_by("groupname") |
|
1162 |
|
|
1156 |
|
|
1157 |
# validate sorting |
|
1158 |
sorting = 'groupname' |
|
1159 |
print '>>>', sorting, request.GET |
|
1160 |
sort_form = AstakosGroupSortForm(request.GET) |
|
1161 |
if sort_form.is_valid(): |
|
1162 |
sorting = sort_form.cleaned_data.get('sorting') |
|
1163 |
print '<<<', sorting |
|
1164 |
q = q.order_by(sorting) |
|
1165 |
|
|
1163 | 1166 |
return object_list( |
1164 | 1167 |
request, |
1165 | 1168 |
q, |
Also available in: Unified diff