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())
def process_request(self, request): ''' リクエストごとにDjangoがどのビューを実行するか決定する前に呼び出されます.''' if request.user.username != '': create_identicon(request.user.username)