Example #1
0
def home(request):
    ''' Homeページを表示する. '''
    types = request.GET.get('types')

    if types == 'sort':
        sort_item = request.GET.get('sort_item')
        if sort_item is not '' and request.GET.get('sort_op') == 'desc':
            sort_item = '-' + sort_item

        sort_tag_id = request.GET.get('sort_tag_id')
        all_memo = Memo.objects.all() if sort_tag_id is '' else Tag.objects.get(id = sort_tag_id).memo_set.all()

        sort_user_id = request.GET.get('sort_user_id')
        if sort_user_id is not '':
            all_memo = all_memo.filter(user = usermodels.User.objects.get(id = sort_user_id))

        if sort_item is '':
            all_memo = all_memo.order_by('-pub_date')
        else:
            all_memo = all_memo.order_by(sort_item)

    elif types == 'search':
        search_title = request.GET.get('search_title')
        search_content = request.GET.get('search_content')
        search_tag_id = request.GET.get('search_tag_id')
        search_user_id = request.GET.get('search_user_id')

        if search_tag_id is '':
            all_memo = Memo.objects.all()
        else:
            try:
                all_memo = Tag.objects.get(id = search_tag_id).memo_set.all()
            except ObjectDoesNotExist:
                all_memo = Memo.objects.filter(title = '')

        if search_user_id is not '':
            try:
                user = usermodels.User.objects.get(id = search_user_id)
                all_memo = all_memo.filter(user = user)
            except ObjectDoesNotExist:
                all_memo = Memo.objects.filter(title = '')

        if search_title is not '' and search_content is not '':
            all_memo = all_memo.filter(title__icontains = search_title, content__icontains = search_content)
        elif search_title is not '':
            all_memo = all_memo.filter(title__icontains = search_title)
        elif search_content is not '':
            all_memo = all_memo.filter(content__icontains = search_content)
        else:
            pass

        all_memo = all_memo.order_by('-pub_date')

    elif types == 'tags':
        tids = request.GET.getlist('select_tag')
        if tids == []:
            all_memo = Memo.objects.all().filter(tags__isnull = True).order_by('-pub_date')
        else:
            memos = set()
            for tid in tids:
                tag = Tag.objects.get(id = tid)
                for memo in tag.memo_set.all():
                    memos.add(memo)
            all_memo = sorted(memos, key = lambda x: x.pub_date, reverse = True)

    else:
         all_memo = Memo.objects.all().order_by('-pub_date')

    paginator = Paginator(all_memo, 50)
    page = request.GET.get('page')

    try:
        all_memo = paginator.page(page)
    except PageNotAnInteger:
        all_memo = paginator.page(1)
    except EmptyPage:
        all_memo = paginator.page(paginator.num_pages)

    for item in all_memo:
        create_identicon(item.user.username)

    all_users = usermodels.User.objects.annotate(count_memos = Count('memo')).order_by('-count_memos')
    all_tags = Tag.objects.annotate(count_memos = Count('memo')).order_by('-count_memos', '-pub_date')
    top_tags = all_tags[:72]
    now_str = "{0:%Y-%m-%d %H:%M:%S}".format(datetime.now())

    return render(request, 'index.html', locals())
Example #2
0
    def process_request(self, request):
        ''' リクエストごとにDjangoがどのビューを実行するか決定する前に呼び出されます.'''

        if request.user.username != '':
            create_identicon(request.user.username)