def text_list(request): paginate_by = get_int(request.GET,'paginate',TEXT_PAGINATION) tag_selected = request.GET.get('tag_selected', 0) order_by = get_among(request.GET,'order',('title','author','modified','-title','-author','-modified'),'-modified') if request.method == 'POST': action = request.POST.get('action',None) text_keys = get_keys_from_dict(request.POST, 'check-').keys() if action == 'delete': for text_key in text_keys: text = Text.objects.get(key=text_key) if has_perm(request, 'can_delete_text', text=text): text.delete() else: raise UnauthorizedException('No perm can_delete_text on comment') display_message(request, _(u'%(nb_texts)i text(s) deleted') %{'nb_texts':len(text_keys)}) return HttpResponseRedirect(reverse('text')) texts = get_texts_with_perm(request, 'can_view_text').order_by(order_by) try: tag_list = Tag.objects.usage_for_queryset(TextVersion.objects.filter(id__in = [t.last_text_version_id for t in get_texts_with_perm(request, 'can_view_text')])) except EmptyResultSet: tag_list = [] context = { 'tag_list' : tag_list, 'tag_selected': tag_selected, } if tag_selected: tag_ids = Tag.objects.filter(name=tag_selected) if tag_ids: content_type_id = ContentType.objects.get_for_model(TextVersion).pk # table cm_userprofile is not present if display_suspended_users: fix this texts = texts.extra(where=['tagging_taggeditem.object_id = cm_text.last_text_version_id', 'tagging_taggeditem.content_type_id = %i' %content_type_id, 'tagging_taggeditem.tag_id = %i' %tag_ids[0].id], tables=['tagging_taggeditem'], ) return object_list(request, texts, template_name = 'site/text_list.html', paginate_by = paginate_by, extra_context=context, )
def text_share(request, key): display_suspended_users = get_int(request.GET, 'display', 0) tag_selected = request.GET.get('tag_selected', 0) paginate_by = get_int(request.GET, 'paginate', USER_PAGINATION) text = get_text_by_keys_or_404(key) order_by = get_among(request.GET,'order',('user__username', 'user__email', '-user__username', '-user__email', 'role__name', '-role__name', ), 'user__username') UserRole.objects.create_userroles_text(text) if request.method == 'POST': if 'save' in request.POST: user_profile_keys_roles = get_keys_from_dict(request.POST, 'user-role-') count = 0 for user_profile_key in user_profile_keys_roles: role_id = user_profile_keys_roles[user_profile_key] if not user_profile_key: user_role = UserRole.objects.get(user = None, text = text) else: user_role = UserRole.objects.get(user__userprofile__key = user_profile_key, text = text) if (role_id != u'' or user_role.role_id!=None) and role_id!=unicode(user_role.role_id): if role_id: user_role.role_id = int(role_id) else: user_role.role_id = None user_role.save() count += 1 display_message(request, _(u'%(count)i user(s) role modified') %{'count':count}) return HttpResponseRedirect(reverse('text-share', args=[text.key])) anon_role = UserRole.objects.get(user = None, text = text).role global_anon_role = UserRole.objects.get(user = None, text = None).role context = { 'anon_role' : anon_role, 'global_anon_role' : global_anon_role, 'all_roles' : Role.objects.all(), 'anon_roles' : Role.objects.filter(anon = True), 'text' : text, 'display_suspended_users' : display_suspended_users, 'tag_list' : Tag.objects.usage_for_model(UserProfile), 'tag_selected': tag_selected, } query = UserRole.objects.filter(text=text).filter(~Q(user=None)).order_by(order_by) if not display_suspended_users: query = query.exclude(Q(user__userprofile__is_suspended=True) & Q(user__is_active=True)) else: # trick to include userprofile table anyway (to filter by tags) query = query.filter(Q(user__userprofile__is_suspended=True) | Q(user__userprofile__is_suspended=False)) if tag_selected: tag_ids = Tag.objects.filter(name=tag_selected) if tag_ids: content_type_id = ContentType.objects.get_for_model(UserProfile).pk query = query.extra(where=['tagging_taggeditem.object_id = cm_userprofile.id', 'tagging_taggeditem.content_type_id = %i' %content_type_id, 'tagging_taggeditem.tag_id = %i' %tag_ids[0].id], tables=['tagging_taggeditem'], ) return object_list(request, query, template_name = 'site/text_share.html', paginate_by = paginate_by, extra_context = context, )
def user_list(request): display_suspended_users = get_int(request.GET, 'display', 0) tag_selected = request.GET.get('tag_selected', 0) paginate_by = get_int(request.GET, 'paginate', USER_PAGINATION) order_by = get_among(request.GET, 'order', ('user__username', 'user__email', '-user__username', '-user__email', 'role__name', '-role__name', 'user__date_joined', '-user__date_joined', ), 'user__username') UserRole.objects.create_userroles_text(None) if request.method == 'POST': # bulk apply if 'apply' in request.POST and not 'save' in request.POST: action = request.POST.get('action', None) user_profile_keys = get_keys_from_dict(request.POST, 'check-').keys() if action == 'disable': for user_profile_key in user_profile_keys: profile = UserProfile.objects.get(key=user_profile_key) if profile != request.user.get_profile(): profile.is_suspended = True profile.save() display_message(request, _(u"%(count)i User's access suspended") % {'count':len(user_profile_keys)}) if action == 'enable': for user_profile_key in user_profile_keys: profile = UserProfile.objects.get(key=user_profile_key) profile.is_suspended = False profile.save() display_message(request, _(u"%(count)i User's access enabled") % {'count':len(user_profile_keys)}) ROLE_RE = re.compile('role_(\d*)') match = ROLE_RE.match(action) if match: role_id = match.group(1) for user_profile_key in user_profile_keys: user_role = UserRole.objects.get(user__userprofile__key=user_profile_key, text=None) user_role.role_id = role_id user_role.save() display_message(request, _(u"%(count)i user(s) role modified") % {'count':len(user_profile_keys)}) return HttpResponseRedirect(reverse('user')) if 'save' in request.POST: user_profile_keys_roles = get_keys_from_dict(request.POST, 'user-role-') count = 0 for user_profile_key in user_profile_keys_roles: role_id = user_profile_keys_roles[user_profile_key] if not user_profile_key: user_role = UserRole.objects.get(user=None, text=None) else: user_role = UserRole.objects.get(user__userprofile__key=user_profile_key, text=None) if (role_id != u'' or user_role.role_id != None) and role_id != unicode(user_role.role_id): if role_id: user_role.role_id = int(role_id) else: user_role.role_id = None user_role.save() count += 1 display_message(request, _(u"%(count)i user(s) role modified") % {'count':count}) return HttpResponseRedirect(reverse('user')) try: anon_role = UserRole.objects.get(user=None, text=None).role except UserRole.DoesNotExist: anon_role = None context = { 'anon_role' : anon_role, 'all_roles' : Role.objects.all(), 'anon_roles' : Role.objects.filter(anon=True), 'display_suspended_users' : display_suspended_users, 'tag_list' : Tag.objects.usage_for_model(UserProfile), 'tag_selected': tag_selected, 'SHOW_EMAILS_IN_ADMIN': SHOW_EMAILS_IN_ADMIN, } query = UserRole.objects.select_related().filter(text=None).filter(~Q(user=None)).order_by(order_by) if not display_suspended_users: query = query.exclude(Q(user__userprofile__is_suspended=True) & Q(user__is_active=True)) else: # trick to include userprofile table anyway (to filter by tags) query = query.filter(Q(user__userprofile__is_suspended=True) | Q(user__userprofile__is_suspended=False)) if tag_selected: tag_ids = Tag.objects.filter(name=tag_selected) if tag_ids: content_type_id = ContentType.objects.get_for_model(UserProfile).pk query = query.extra(where=['tagging_taggeditem.object_id = cm_userprofile.id', 'tagging_taggeditem.content_type_id = %i' %content_type_id, 'tagging_taggeditem.tag_id = %i' %tag_ids[0].id], tables=['tagging_taggeditem'], ) return object_list(request, query, template_name='site/user_list.html', paginate_by=paginate_by, extra_context=context, )
def user_list(request): display_suspended_users = get_int(request.GET, 'display', 0) tag_selected = request.GET.get('tag_selected', 0) paginate_by = get_int(request.GET, 'paginate', USER_PAGINATION) order_by = get_among(request.GET, 'order', ( 'user__username', 'user__email', '-user__username', '-user__email', 'role__name', '-role__name', 'user__date_joined', '-user__date_joined', ), 'user__username') UserRole.objects.create_userroles_text(None) if request.method == 'POST': # bulk apply if 'apply' in request.POST and not 'save' in request.POST: action = request.POST.get('action', None) user_profile_keys = get_keys_from_dict(request.POST, 'check-').keys() if action == 'disable': for user_profile_key in user_profile_keys: profile = UserProfile.objects.get(key=user_profile_key) if profile != request.user.get_profile(): profile.is_suspended = True profile.save() display_message( request, _(u"%(count)i User's access suspended") % {'count': len(user_profile_keys)}) if action == 'enable': for user_profile_key in user_profile_keys: profile = UserProfile.objects.get(key=user_profile_key) profile.is_suspended = False profile.save() display_message( request, _(u"%(count)i User's access enabled") % {'count': len(user_profile_keys)}) ROLE_RE = re.compile('role_(\d*)') match = ROLE_RE.match(action) if match: role_id = match.group(1) for user_profile_key in user_profile_keys: user_role = UserRole.objects.get( user__userprofile__key=user_profile_key, text=None) user_role.role_id = role_id user_role.save() display_message( request, _(u"%(count)i user(s) role modified") % {'count': len(user_profile_keys)}) return HttpResponseRedirect(reverse('user')) if 'save' in request.POST: user_profile_keys_roles = get_keys_from_dict( request.POST, 'user-role-') count = 0 for user_profile_key in user_profile_keys_roles: role_id = user_profile_keys_roles[user_profile_key] if not user_profile_key: user_role = UserRole.objects.get(user=None, text=None) else: user_role = UserRole.objects.get( user__userprofile__key=user_profile_key, text=None) if (role_id != u'' or user_role.role_id != None ) and role_id != unicode(user_role.role_id): if role_id: user_role.role_id = int(role_id) else: user_role.role_id = None user_role.save() count += 1 display_message( request, _(u"%(count)i user(s) role modified") % {'count': count}) return HttpResponseRedirect(reverse('user')) try: anon_role = UserRole.objects.get(user=None, text=None).role except UserRole.DoesNotExist: anon_role = None context = { 'anon_role': anon_role, 'all_roles': Role.objects.all(), 'anon_roles': Role.objects.filter(anon=True), 'display_suspended_users': display_suspended_users, 'tag_list': Tag.objects.usage_for_model(UserProfile), 'tag_selected': tag_selected, 'SHOW_EMAILS_IN_ADMIN': SHOW_EMAILS_IN_ADMIN, } query = UserRole.objects.select_related().filter( text=None).filter(~Q(user=None)).order_by(order_by) if not display_suspended_users: query = query.exclude( Q(user__userprofile__is_suspended=True) & Q(user__is_active=True)) else: # trick to include userprofile table anyway (to filter by tags) query = query.filter( Q(user__userprofile__is_suspended=True) | Q(user__userprofile__is_suspended=False)) if tag_selected: tag_ids = Tag.objects.filter(name=tag_selected) if tag_ids: content_type_id = ContentType.objects.get_for_model(UserProfile).pk query = query.extra( where=[ 'tagging_taggeditem.object_id = cm_userprofile.id', 'tagging_taggeditem.content_type_id = %i' % content_type_id, 'tagging_taggeditem.tag_id = %i' % tag_ids[0].id ], tables=['tagging_taggeditem'], ) return object_list( request, query, template_name='site/user_list.html', paginate_by=paginate_by, extra_context=context, )