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,
|