112 } |
112 } |
113 |
113 |
114 query = UserRole.objects.select_related().filter(text=None).filter(~Q(user=None)).order_by(order_by) |
114 query = UserRole.objects.select_related().filter(text=None).filter(~Q(user=None)).order_by(order_by) |
115 if not display_suspended_users: |
115 if not display_suspended_users: |
116 query = query.exclude(Q(user__userprofile__is_suspended=True) & Q(user__is_active=True)) |
116 query = query.exclude(Q(user__userprofile__is_suspended=True) & Q(user__is_active=True)) |
|
117 else: |
|
118 # trick to include userprofile table anyway (to filter by tags) |
|
119 query = query.filter(Q(user__userprofile__is_suspended=True) | Q(user__userprofile__is_suspended=False)) |
117 |
120 |
118 if tag_selected: |
121 if tag_selected: |
119 tag_ids = Tag.objects.filter(name=tag_selected) |
122 tag_ids = Tag.objects.filter(name=tag_selected) |
120 if tag_ids: |
123 if tag_ids: |
121 content_type_id = ContentType.objects.get_for_model(UserProfile).pk |
124 content_type_id = ContentType.objects.get_for_model(UserProfile).pk |
122 # table cm_userprofile is not present if display_suspended_users: fix this |
|
123 tables = ['tagging_taggeditem', 'cm_userprofile'] if display_suspended_users else ['tagging_taggeditem'] |
|
124 query = query.extra(where=['tagging_taggeditem.object_id = cm_userprofile.id', |
125 query = query.extra(where=['tagging_taggeditem.object_id = cm_userprofile.id', |
125 'tagging_taggeditem.content_type_id = %i' %content_type_id, |
126 'tagging_taggeditem.content_type_id = %i' %content_type_id, |
126 'tagging_taggeditem.tag_id = %i' %tag_ids[0].id], |
127 'tagging_taggeditem.tag_id = %i' %tag_ids[0].id], |
127 tables=tables, |
128 tables=['tagging_taggeditem'], |
128 ) |
129 ) |
129 |
130 |
130 return object_list(request, query, |
131 return object_list(request, query, |
131 template_name='site/user_list.html', |
132 template_name='site/user_list.html', |
132 paginate_by=paginate_by, |
133 paginate_by=paginate_by, |