def user_profile(request, id=None, **kwargs): """ Show user's full profile. If this user is logged on and she's asking about her own profile, show private profile info and request drafts. Otherwise display public profile (name, when joined), lists of requests made by user so far, and annotations made by user. """ if request.method == "POST": raise Http404 user_message = request.session.pop("user_message", {}) template = kwargs.get("template", "user.html") profile = kwargs.get("profile", False) if id is None: raise Http404 user = get_object_or_404(User, pk=int(id)) if profile: try: user_profile, created = UserProfile.objects.get_or_create(user=user) except Exception as e: pass # TO-DO: Log it! else: user_profile = {} # Fill requests list. initial, query, urlparams = process_filter_request(request, PIA_REQUEST_STATUS) query.update({"user": user}) if query: pia_requests = PIARequest.objects.filter(**query) pia_drafts = PIARequestDraft.objects.filter(user=user).order_by("-lastchanged") else: pia_requests, pia_drafts = list(), list() paginator = Paginator(pia_requests, PAGINATE_BY) try: page = int(request.GET.get("page", "1")) except ValueError: page = 1 try: results = paginator.page(page) except (EmptyPage, InvalidPage): results = paginator.page(paginator.num_pages) return render_to_response( template, { "usr": user, "user_profile": user_profile, "user_message": user_message, "page": results, "pia_drafts": pia_drafts, "urlparams": urlparams, "form": PIAFilterForm(initial=initial), "page_title": user.get_full_name(), }, context_instance=RequestContext(request), )
def get_authority_info(request, slug, **kwargs): """ Display the details on the selected authority: * Authority info (contacts, description, etc.) * Authority requests * Fill the Breadcrumb by category. """ template = kwargs.get('template', 'authority.html') user_message = request.session.pop('user_message', {}) if request.method == 'POST': raise Http404 authority = get_authority(slug) if authority is None: raise Http404 # Fill categories for breadcrumbs. category, categories = None, [] try: category = authority.category except: category = None if category: try: categories = list(category.get_ancestors()) except: categories = [] categories.append(category) # Check if the user is following the authority. following = False if not request.user.is_anonymous(): content_type_id = ContentType.objects.get_for_model(authority.__class__).id try: item = TaggedItem.objects.get(object_id=authority.id, content_type_id=content_type_id) except TaggedItem.DoesNotExist: pass else: following = item.is_followed_by(request.user) # Fill requests list. initial, query, urlparams = process_filter_request( request, PIA_REQUEST_STATUS) query.update({'authority': authority}) try: # Query db. pia_requests = PIARequest.objects.filter(**query) except Exception as e: pia_requests = list() paginator = Paginator(pia_requests, settings.PAGINATE_BY) try: page = int(request.GET.get('page', '1')) except ValueError: page = 1 try: results = paginator.page(page) except (EmptyPage, InvalidPage): results = paginator.page(paginator.num_pages) return render_to_response(template, {'authority': authority, 'following': following, 'page': results, 'categories': categories, 'form': PIAFilterForm(initial=initial), 'user_message': user_message, 'page_title': authority.name, 'urlparams': urlparams}, context_instance=RequestContext(request))