def list_suggested_tags(request): """moderators and administrators can list tags that are in the moderation queue, apply suggested tag to questions or cancel the moderation reuest.""" if openode_settings.ENABLE_TAG_MODERATION == False: raise Http404 tags = Tag.objects.filter(status=Tag.STATUS_SUGGESTED) tags = tags.order_by('-used_count', 'name') #paginate moderated tags paginator = Paginator(tags, 20) page_no = request.GET.get('page', '1') try: page = paginator.page(page_no) except (EmptyPage, InvalidPage): page = paginator.page(paginator.num_pages) paginator_context = functions.setup_paginator({ 'is_paginated': True, 'pages': paginator.num_pages, 'page': page_no, 'has_previous': page.has_previous(), 'has_next': page.has_next(), 'previous': page.previous_page_number(), 'next': page.next_page_number(), 'base_url': request.path }) data = { 'tags': page.object_list, 'active_tab': 'tags', 'tab_id': 'suggested', 'page_class': 'moderate-tags-page', 'page_title': _('Suggested tags'), 'paginator_context': paginator_context, } return render_into_skin('list_suggested_tags.html', data, request)
def list_suggested_tags(request): """moderators and administrators can list tags that are in the moderation queue, apply suggested tag to questions or cancel the moderation reuest.""" if openode_settings.ENABLE_TAG_MODERATION == False: raise Http404 tags = Tag.objects.filter(status = Tag.STATUS_SUGGESTED) tags = tags.order_by('-used_count', 'name') #paginate moderated tags paginator = Paginator(tags, 20) page_no = request.GET.get('page', '1') try: page = paginator.page(page_no) except (EmptyPage, InvalidPage): page = paginator.page(paginator.num_pages) paginator_context = functions.setup_paginator({ 'is_paginated' : True, 'pages': paginator.num_pages, 'page': page_no, 'has_previous': page.has_previous(), 'has_next': page.has_next(), 'previous': page.previous_page_number(), 'next': page.next_page_number(), 'base_url' : request.path }) data = { 'tags': page.object_list, 'active_tab': 'tags', 'tab_id': 'suggested', 'page_class': 'moderate-tags-page', 'page_title': _('Suggested tags'), 'paginator_context' : paginator_context, } return render_into_skin('list_suggested_tags.html', data, request)
def organization_detail(request, organization_id, organization_slug): if not request.user.is_authenticated(): return render_forbidden(request) user_acceptance_level = 'closed' user_membership_level = 'none' try: organization = models.Organization.objects.get(id=organization_id) user_acceptance_level = organization.get_openness_level_for_user( request.user ) except models.Organization.DoesNotExist: raise Http404 ################################################################ # upload organization logo logo_form = OrganizationLogoForm(instance=organization) if request.method == "POST": logo_form = OrganizationLogoForm(request.POST, request.FILES, instance=organization) if logo_form.is_valid(): logo_form.save() return HttpResponseRedirect(request.path) ################################################################ if organization_slug == slugify(organization.title): users = models.User.objects.exclude(status='b') #filter users by full organization memberships #todo: refactor as Organization.get_full_members() full_level = models.OrganizationMembership.FULL memberships = models.OrganizationMembership.objects.filter( organization=organization, level=full_level ) user_ids = memberships.values_list('user__id', flat=True) users = users.filter(id__in=user_ids) if request.user.is_authenticated(): membership = request.user.get_organization_membership(organization) if membership: user_membership_level = membership.get_level_display() else: organization_page_url = reverse( 'organization_detail', kwargs={ 'organization_id': organization.id, 'organization_slug': slugify(organization.title) } ) return HttpResponseRedirect(organization_page_url) sortby = request.GET.get('sort', 'last_name') try: page = int(request.GET.get('page', '1')) except ValueError: page = 1 search_query = request.REQUEST.get('query', "") if search_query == "": if sortby == "newest": order_by_parameter = ('-date_joined',) elif sortby == "last": order_by_parameter = ('date_joined',) elif sortby == "user": order_by_parameter = ('last_name', 'first_name') else: # default order_by_parameter = ('last_name', 'first_name') objects_list = Paginator( users.order_by(*order_by_parameter), const.USERS_PAGE_SIZE ) base_url = request.path + '?sort=%s&' % sortby else: sortby = "last_name" matching_users = models.get_users_by_text_query(search_query, users) objects_list = Paginator( matching_users.order_by(*('last_name', 'first_name')), const.USERS_PAGE_SIZE ) base_url = request.path + '?name=%s&sort=%s&' % (search_query, sortby) try: users_page = objects_list.page(page) except (EmptyPage, InvalidPage): users_page = objects_list.page(objects_list.num_pages) paginator_data = { 'is_paginated': bool(objects_list.count > const.USERS_PAGE_SIZE), 'pages': objects_list.num_pages, 'page': page, 'has_previous': users_page.has_previous(), 'has_next': users_page.has_next(), 'previous': users_page.previous_page_number(), 'next': users_page.next_page_number(), 'base_url': base_url } paginator_context = functions.setup_paginator(paginator_data) #todo: cleanup this branched code after organizations are migrated to auth_organization user_organizations = get_organizations().all() if len(user_organizations) <= 1: user_organizations = None organization_openness_choices = models.Organization().get_openness_choices() data = { 'active_tab': 'users', 'page_class': 'users-page', 'users': users_page, 'organization': organization, 'search_query': search_query, 'tab_id': sortby, 'paginator_context': paginator_context, 'user_acceptance_level': user_acceptance_level, 'user_membership_level': user_membership_level, 'user_organizations': user_organizations, 'organization_openness_choices': organization_openness_choices, "logo_form": logo_form, } return render_into_skin('organization_detail.html', data, request)
def show_users(request): """Users view, including listing of users by organization""" if not request.user.is_authenticated(): return render_forbidden(request) users = models.User.objects.filter(is_active=True, is_hidden=False).exclude(status='b') organization = None logo_form = None sortby = request.GET.get('sort', 'last_name') try: page = int(request.GET.get('page', '1')) except ValueError: page = 1 search_query = request.REQUEST.get('query', "") if search_query == "": if sortby == "newest": order_by_parameter = ('-date_joined',) elif sortby == "last": order_by_parameter = ('date_joined',) elif sortby == "last_name": order_by_parameter = ('last_name', 'first_name') else: # default order_by_parameter = ('last_name', 'first_name') objects_list = Paginator( users.order_by(*order_by_parameter), const.USERS_PAGE_SIZE ) base_url = request.path + '?sort=%s&' % sortby else: sortby = "last_name" matching_users = models.get_users_by_text_query(search_query, users) objects_list = Paginator( matching_users.order_by(*('last_name', 'first_name')), const.USERS_PAGE_SIZE ) base_url = request.path + '?name=%s&sort=%s&' % (search_query, sortby) try: users_page = objects_list.page(page) except (EmptyPage, InvalidPage): users_page = objects_list.page(objects_list.num_pages) paginator_data = { 'is_paginated': bool(objects_list.count > const.USERS_PAGE_SIZE), 'pages': objects_list.num_pages, 'page': page, 'has_previous': users_page.has_previous(), 'has_next': users_page.has_next(), 'previous': users_page.previous_page_number(), 'next': users_page.next_page_number(), 'base_url': base_url } paginator_context = functions.setup_paginator(paginator_data) data = { 'active_tab': 'users', 'page_class': 'users-page', 'users': users_page, 'organization': organization, 'search_query': search_query, 'tab_id': sortby, 'paginator_context': paginator_context, "logo_form": logo_form, } return render_into_skin('user_list.html', data, request)
base_url = "%sauthors=%s&" % ( base_url, ",".join([str(pk) for pk in authors.values_list("pk", flat=True)]) ) paginator_data = { 'is_paginated': (objects_list.count > per_page), 'pages': objects_list.num_pages, 'page': show_page, 'has_previous': page_objects.has_previous(), 'has_next': page_objects.has_next(), 'previous': page_objects.previous_page_number(), 'next': page_objects.next_page_number(), 'base_url': base_url, } paginator_context = functions.setup_paginator(paginator_data) ################################### initial = { 'email_notify': thread.is_subscribed_by(request.user) } #maybe load draft if request.user.is_authenticated(): #todo: refactor into methor on thread drafts = models.DraftAnswer.objects.filter( author=request.user, thread=thread ) if drafts.count() > 0:
def tag_list(request): # view showing a listing of available tags - plain list tag_list_type = openode_settings.TAG_LIST_FORMAT if tag_list_type == 'list': stag = "" sortby = request.GET.get('sort', 'used') try: page = int(request.GET.get('page', '1')) except ValueError: page = 1 stag = request.GET.get("query", "").strip() if stag != '': objects_list = Paginator( Tag.objects.valid_tags().filter(deleted=False, name__icontains=stag).exclude(used_count=0), DEFAULT_PAGE_SIZE ) else: if sortby == "name": objects_list = Paginator(Tag.objects.valid_tags().filter(deleted=False).exclude(used_count=0).order_by("name"), DEFAULT_PAGE_SIZE) else: objects_list = Paginator(Tag.objects.valid_tags().filter(deleted=False).exclude(used_count=0).order_by("-used_count"), DEFAULT_PAGE_SIZE) try: tags = objects_list.page(page) except (EmptyPage, InvalidPage): tags = objects_list.page(objects_list.num_pages) paginator_data = { 'is_paginated': bool(objects_list.count > DEFAULT_PAGE_SIZE), 'pages': objects_list.num_pages, 'page': page, 'has_previous': tags.has_previous(), 'has_next': tags.has_next(), 'previous': tags.previous_page_number(), 'next': tags.next_page_number(), 'base_url': reverse('tags') + '?sort=%s&' % sortby } paginator_context = setup_paginator(paginator_data) data = { 'active_tab': 'tags', 'page_class': 'tags-page', 'tags': tags, 'tag_list_type': tag_list_type, 'stag': stag, 'tab_id': sortby, 'keywords': stag, 'paginator_context': paginator_context, } else: stag = "" sortby = request.GET.get('sort', 'name') if request.method == "GET": stag = request.GET.get("query", "").strip() if stag != '': tags = Tag.objects.filter(deleted=False, name__icontains=stag).exclude(used_count=0) else: if sortby == "name": tags = Tag.objects.all().filter(deleted=False).exclude(used_count=0).order_by("name") else: tags = Tag.objects.all().filter(deleted=False).exclude(used_count=0).order_by("-used_count") font_size = extra_tags.get_tag_font_size(tags) data = { 'active_tab': 'tags', 'page_class': 'tags-page', 'tags': tags, 'tag_list_type': tag_list_type, 'font_size': font_size, 'stag': stag, 'tab_id': sortby, 'keywords': stag, 'search_state': SearchState(*[None for x in range(7)]) } return render_into_skin('tag_list.html', data, request)
def tag_list(request): # view showing a listing of available tags - plain list tag_list_type = openode_settings.TAG_LIST_FORMAT if tag_list_type == 'list': stag = "" sortby = request.GET.get('sort', 'used') try: page = int(request.GET.get('page', '1')) except ValueError: page = 1 stag = request.GET.get("query", "").strip() if stag != '': objects_list = Paginator( Tag.objects.valid_tags().filter( deleted=False, name__icontains=stag).exclude(used_count=0), DEFAULT_PAGE_SIZE) else: if sortby == "name": objects_list = Paginator( Tag.objects.valid_tags().filter(deleted=False).exclude( used_count=0).order_by("name"), DEFAULT_PAGE_SIZE) else: objects_list = Paginator( Tag.objects.valid_tags().filter(deleted=False).exclude( used_count=0).order_by("-used_count"), DEFAULT_PAGE_SIZE) try: tags = objects_list.page(page) except (EmptyPage, InvalidPage): tags = objects_list.page(objects_list.num_pages) paginator_data = { 'is_paginated': bool(objects_list.count > DEFAULT_PAGE_SIZE), 'pages': objects_list.num_pages, 'page': page, 'has_previous': tags.has_previous(), 'has_next': tags.has_next(), 'previous': tags.previous_page_number(), 'next': tags.next_page_number(), 'base_url': reverse('tags') + '?sort=%s&' % sortby } paginator_context = setup_paginator(paginator_data) data = { 'active_tab': 'tags', 'page_class': 'tags-page', 'tags': tags, 'tag_list_type': tag_list_type, 'stag': stag, 'tab_id': sortby, 'keywords': stag, 'paginator_context': paginator_context, } else: stag = "" sortby = request.GET.get('sort', 'name') if request.method == "GET": stag = request.GET.get("query", "").strip() if stag != '': tags = Tag.objects.filter( deleted=False, name__icontains=stag).exclude(used_count=0) else: if sortby == "name": tags = Tag.objects.all().filter(deleted=False).exclude( used_count=0).order_by("name") else: tags = Tag.objects.all().filter(deleted=False).exclude( used_count=0).order_by("-used_count") font_size = extra_tags.get_tag_font_size(tags) data = { 'active_tab': 'tags', 'page_class': 'tags-page', 'tags': tags, 'tag_list_type': tag_list_type, 'font_size': font_size, 'stag': stag, 'tab_id': sortby, 'keywords': stag, 'search_state': SearchState(*[None for x in range(7)]) } return render_into_skin('tag_list.html', data, request)
base_url = request.path + '?sort=%s&' % answer_sort_method if authors: base_url = "%sauthors=%s&" % (base_url, ",".join( [str(pk) for pk in authors.values_list("pk", flat=True)])) paginator_data = { 'is_paginated': (objects_list.count > per_page), 'pages': objects_list.num_pages, 'page': show_page, 'has_previous': page_objects.has_previous(), 'has_next': page_objects.has_next(), 'previous': page_objects.previous_page_number(), 'next': page_objects.next_page_number(), 'base_url': base_url, } paginator_context = functions.setup_paginator(paginator_data) ################################### initial = {'email_notify': thread.is_subscribed_by(request.user)} # maybe load draft if request.user.is_authenticated(): # todo: refactor into methor on thread drafts = models.DraftAnswer.objects.filter(author=request.user, thread=thread) if drafts.count() > 0: initial['text'] = drafts[0].text # answer form if request.method == "POST":