コード例 #1
0
ファイル: views.py プロジェクト: ccarlos/code-samples
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)
コード例 #2
0
ファイル: utils.py プロジェクト: ccarlos/code-samples
def get_relevant_lets(user, category=None, page=1, per_page=lcs.LETS_PER_PAGE):
    lc = LetsClient()
    page = smart_int(page, 1)

    # Continue with search
    filters = []

    category = clean_category(category)
    if category:
        filters.append({
            'filter': 'category',
            'value': [category],
        })

    gender = user.profile.looking_sex
    if gender == LOOKING_SEX_3:
        gender = None

    if gender:
        filters.append({
            'filter': 'gender',
            'value': [gender],
        })

    filters.append({
        'filter': 'country',
        'value': [lc.str_to_int('US')],
    })
    filters.append({
        'filter': 'state',
        'value': [lc.str_to_int('CA')],
    })
    filters.append({
        'filter': 'creator_id',
        'value': get_blocked_uids(user),
        'exclude': True,
    })

    try:
        lc.set_sort_mode(scs.S_LETS_SPH[0], scs.S_LETS_SPH[1])
        lets = lc.query('', filters)
    except SearchError:
        lets = Lets.objects.exclude(creator=user)
        if category:
            lets = lets.filter(category=category)
        return {'results': lets, 'ids': lets}
    lets_ids = []
    offset = (page - 1) * per_page
    for i in range(offset, offset + lcs.LETS_PER_PAGE):
        try:
            lets_ids.append(lets[i]['id'])
        except IndexError:
            break

    results = Lets.objects.select_related('creator').filter(pk__in=lets_ids)
    return {'results': sorted(results, key=lambda r: lets_ids.index(r.pk)),
            'ids': lets}
コード例 #3
0
ファイル: utils.py プロジェクト: ccarlos/code-samples
def clean_diary_date(year=None, month=None):
    """For a year and a month, return valid year/month."""
    today = datetime.today()
    year = smart_int(year) or today.year
    month = smart_int(month) or today.month
    return year, max(min(month, 12), 1)
コード例 #4
0
ファイル: utils.py プロジェクト: ccarlos/code-samples
def clean_category(category):
    category = smart_int(category)
    if category not in lcs.CATEGORIES.keys():
        return None
    return category