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