Example #1
0
def single(request, username, year, month, day, comment_form=None):
    """View a diary page of the user with username.

    Finds a diary entry by using the year month and day of it.
    If those fields are not specified, uses the current date.

    """
    user = get_object_or_404(User, username=username)

    if user != request.user and not request.user.is_active:
        next_url = urlparams(reverse('users.inactive'), next=request.path)
        return HttpResponseRedirect(next_url)

    get_users_and_visits(user, request.user)

    c_year, c_month = clean_diary_date(year, month)
    c_day = smart_int(day)
    entries = user.diaries.get_for_month(visitor=request.user,
                                         creator=user,
                                         year=c_year, month=c_month)
    calendar_data = get_diary_calendar(entries, c_year, c_month)
    if c_day not in calendar_data['days_with_entries']:
        url = reverse('diary.list_all', args=[user.username])
        return HttpResponseRedirect(url)
    entry = calendar_data['days_with_entries'][c_day]

    if not comment_form:
        comment_form = CommentForm(creator=request.user, diary=entry)

    data = {'entry': entry,
            'calendar_data': calendar_data,
            'comments': entry.comments.order_by('created'),
            'diary': DiaryForm(creator=entry.creator, instance=entry),
            'comment_form': comment_form, 'creator': user}
    return jingo.render(request, 'diary/single.html', data)
Example #2
0
def list_personal(request, username, year=None, month=None):
    """Lists the diaries belonging to username.

    If the username is the name of the logged in user,
    it will display drafts and private.
    If it is another user's page it only displays non-draft,
    non-private entries.

    """
    if username == 'me':
        return HttpResponseRedirect(
            reverse('diary.list_all', args=[request.user.username]))

    user = get_object_or_404(User, username=username)

    if user != request.user and not request.user.is_active:
        next_url = urlparams(reverse('users.inactive'), next=request.path)
        return HttpResponseRedirect(next_url)

    get_users_and_visits(user, request.user)

    c_year, c_month = clean_diary_date(year, month)
    today = datetime.datetime.today()
    current_year_month = True if (c_month == today.month and
                                  c_year == today.year) else False
    if year and month:
        entries = user.diaries.get_for_month(visitor=request.user,
                                             creator=user,
                                             year=c_year, month=c_month)
    else:
        entries = user.diaries.get_all(visitor=request.user,
                                       creator=user)

    entry_today_exists = diary_today_exists(entries)
    data = {'entries': entries, 'creator': user,
            'calendar_data': get_diary_calendar(entries, c_year, c_month),
            'entry_today_exists': entry_today_exists}
    # Do we display a new diary entry form or draft form?
    if (request.user == user and not entry_today_exists and
        current_year_month):
        if draft_today_exists(entries):
            form = DiaryForm(creator=entries[0].creator, instance=entries[0])
            data['draft_exists'] = True
        else:
            form = DiaryForm(creator=request.user)
        data['diary_form'] = form

    return jingo.render(request, 'diary/list.html', data)
Example #3
0
 def get_category_url(self, base=None, absolute=False):
     if not base:
         base = url('lets', absolute=absolute)
     return urlparams(base, category=self.category)
Example #4
0
 def get_absolute_url(self):
     url_ = self.diary.get_absolute_url()
     return urlparams(url_, hash='comment-%s' % self.id)