def search_user_by_keyword(request): u"""ユーザー検索 ユーザーをキーワード検索 検索対象: username, first_name, last_name :param request:検索リクエスト :return:キーワードを含むユーザー一覧 """ dictionary = init_dictionary(request=request) if request.method == 'GET': form = SearchForm(request.GET) if form.is_valid(): dictionary.update(users=User.objects.all().filter( Q(username__contains=form.cleaned_data['keyword']) | Q(first_name__contains=form.cleaned_data['keyword']) | Q(last_name__contains=form.cleaned_data['keyword'])). order_by('first_name')) dictionary.update(user_search_form=form) return render_to_response('dailyreport/user_list.html', dictionary, context_instance=RequestContext(request)) else: return redirect('dailyreport:view_all_user_list') else: dictionary.update(users=User.objects.all().order_by('id')) dictionary.update(user_search_form=SearchForm()) return render_to_response('dailyreport/user_list.html', dictionary, context_instance=RequestContext(request))
def search_user_by_keyword(request): u"""ユーザー検索 ユーザーをキーワード検索 検索対象: username, first_name, last_name :param request:検索リクエスト :return:キーワードを含むユーザー一覧 """ dictionary = init_dictionary(request=request) if request.method == 'GET': form = SearchForm(request.GET) if form.is_valid(): dictionary.update(users=User.objects.all().filter( Q(username__contains=form.cleaned_data['keyword']) | Q(first_name__contains=form.cleaned_data['keyword']) | Q(last_name__contains=form.cleaned_data['keyword'])).order_by('first_name')) dictionary.update(user_search_form=form) return render_to_response( 'dailyreport/user_list.html', dictionary, context_instance=RequestContext(request)) else: return redirect('dailyreport:view_all_user_list') else: dictionary.update(users=User.objects.all().order_by('id')) dictionary.update(user_search_form=SearchForm()) return render_to_response('dailyreport/user_list.html', dictionary, context_instance=RequestContext(request))
def test_invalid(self): u""" 現行では、空文字での検索を許容しています 追記:最新ではスペースのみなどの検索キーワードを認めません :return: """ param = dict() form = SearchForm(param) self.assertFalse(form.is_valid())
def search_daily_by_keyword(request): u"""日報検索 日報をキーワードによって検索します 検索条件 ・キーワード数:1~(複数キーワードのand対応) ・検索対象:ユーザー名/日報タイトル/日報本文(y/w/t) :param request: 検索キーワードの取得 :return: キーワードをすべて含む日報の一覧 """ dictionary = init_dictionary(request=request) dictionary.update(task_form=create_task_form_in_queryset( get_task_from_implement_date(request.user, timezone.now().date()))) dictionary.update(task_form_next=create_task_form_in_queryset( get_next_task(request.user, timezone.now().date()))) if request.method == 'GET': form = SearchForm(request.GET) if form.is_valid() and form.cleaned_data['keyword'] is not '': queries = [ Q(user__first_name__contains=word) | Q(user__last_name__contains=word) | Q(title__contains=word) | Q(report_y__contains=word) | Q(report_w__contains=word) | Q(report_t__contains=word) for word in form.cleaned_data['keyword'].split() ] query = queries.pop() for item in queries: query |= item dictionary.update(dailys=Daily.objects.filter( release=True).filter(query).order_by('-create_date')) dictionary.update(search_form=form) dictionary.update(keyword=form.cleaned_data['keyword']) dictionary.update(is_paginated=False) return render_to_response('dailyreport/daily_list.html', dictionary, context_instance=RequestContext(request)) return redirect('dailyreport:view_daily_list')
def view_user_list(request): u"""ユーザー一覧 登録しているユーザー全員を表示 :param request:初期情報 :return:全ユーザーの一覧 """ dictionary = init_dictionary(request=request) dictionary.update(users=User.objects.all().order_by('first_name')) dictionary.update(user_search_form=SearchForm()) return render_to_response('dailyreport/user_list.html', dictionary, context_instance=RequestContext(request))
def search_daily_by_keyword(request): u"""日報検索 日報をキーワードによって検索します 検索条件 ・キーワード数:1~(複数キーワードのand対応) ・検索対象:ユーザー名/日報タイトル/日報本文(y/w/t) :param request: 検索キーワードの取得 :return: キーワードをすべて含む日報の一覧 """ dictionary = init_dictionary(request=request) dictionary.update(task_form=create_task_form_in_queryset( get_task_from_implement_date(request.user, timezone.now().date()) )) dictionary.update(task_form_next=create_task_form_in_queryset( get_next_task(request.user, timezone.now().date()) )) if request.method == 'GET': form = SearchForm(request.GET) if form.is_valid() and form.cleaned_data['keyword'] is not '': queries = [Q(user__first_name__contains=word) | Q(user__last_name__contains=word) | Q(title__contains=word) | Q(report_y__contains=word) | Q(report_w__contains=word) | Q(report_t__contains=word) for word in form.cleaned_data['keyword'].split()] query = queries.pop() for item in queries: query |= item dictionary.update(dailys=Daily.objects.filter(release=True).filter(query).order_by('-create_date')) dictionary.update(search_form=form) dictionary.update(keyword=form.cleaned_data['keyword']) dictionary.update(is_paginated=False) return render_to_response( 'dailyreport/daily_list.html', dictionary, context_instance=RequestContext(request)) return redirect('dailyreport:view_daily_list')
def init_dictionary(request=None, daily_id=None): u"""辞書型初期化メソッド テンプレートに送る情報を初期化します 本メソッド中で追加するのはbase.htmlやtaskbar.htmlで使用される共通データ部分です :param request: リクエスト情報 :param daily_id: 日報情報 :return: 初期情報を登録した辞書型 """ dictionary = dict(search_form=SearchForm()) dictionary.update(request=request) dictionary.update(daily_id=daily_id) dictionary.update(task_search_form=TaskSearchForm()) return dictionary
def test_invalid_space(self): param = dict(keyword=' ') form = SearchForm(param) self.assertFalse(form.is_valid())
def test_valid(self): param = dict(keyword='test_keyword') form = SearchForm(param) self.assertTrue(form.is_valid())