Exemplo n.º 1
0
Arquivo: views.py Projeto: CCLab/sezam
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),
    )
Exemplo n.º 2
0
Arquivo: views.py Projeto: CCLab/sezam
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))