src/cm/views/user.py
changeset 42 82f6e2879e0a
parent 38 be1807d390d4
child 44 c27132146767
equal deleted inserted replaced
41:7d258f14cd7b 42:82f6e2879e0a
   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,