def view_daily_list(request):
    u"""日報一覧
    日報の一覧を取得し、レンダリングを指示します

    dictionary:
        init:キーワード検索フォーム
        init:日付絞込みフォーム
        公開済みの全日報のクエリセット
        当日分のタスク一覧(フォーム形式)
        明日以降分のタスク一覧(フォーム形式)
    :param request: 関数が呼ばれたときにhtmlから送られてきた情報。ここでは使用しない。
    :return:日報一覧画面(全ユーザーの公開中日報一覧)
    """
    dictionary = init_dictionary(request=request)
    dictionary.update(pages=create_pagination(request, get_all_daily_list(request=request, release=True)))
    dictionary.update(dailys=dictionary['pages'].object_list)
    dictionary.update(is_paginated=True)
    if request.method == 'GET' and 'narrow' in request.GET:
        dictionary.update(date_form=DateForm(request.GET))
    else:
        dictionary.update(date_form=DateForm())
    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())
    ))

    return render_to_response('dailyreport/daily_list.html', dictionary, context_instance=RequestContext(request))
def view_daily_list(request):
    u"""日報一覧
    日報の一覧を取得し、レンダリングを指示します

    dictionary:
        init:キーワード検索フォーム
        init:日付絞込みフォーム
        公開済みの全日報のクエリセット
        当日分のタスク一覧(フォーム形式)
        明日以降分のタスク一覧(フォーム形式)
    :param request: 関数が呼ばれたときにhtmlから送られてきた情報。ここでは使用しない。
    :return:日報一覧画面(全ユーザーの公開中日報一覧)
    """
    dictionary = init_dictionary(request=request)
    dictionary.update(pages=create_pagination(
        request, get_all_daily_list(request=request, release=True)))
    dictionary.update(dailys=dictionary['pages'].object_list)
    dictionary.update(is_paginated=True)
    if request.method == 'GET' and 'narrow' in request.GET:
        dictionary.update(date_form=DateForm(request.GET))
    else:
        dictionary.update(date_form=DateForm())
    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())))

    return render_to_response('dailyreport/daily_list.html',
                              dictionary,
                              context_instance=RequestContext(request))
def view_user_of_daily(request, user_id):
    u"""ユーザー情報
    ユーザーごとの投稿情報を表示します
    表示対象:
        各ユーザーが投稿した日報
        (自分のページの場合)非公開状態の日報
    :param request: ユーザー情報の取得
    :param user_id: 表示対象ユーザーid
    :return: 指定ユーザーが投稿した日報の一覧
    """
    dictionary = init_dictionary(request=request)
    dictionary.update(daily_release_form=DailySearchForm(request.GET))
    dictionary.update(pages=create_pagination(
        request, get_user_daily_list(request=request, user_id=user_id)))
    dictionary.update(dailys=dictionary['pages'].object_list)
    dictionary.update(is_paginated=True)
    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())
    ))
    dictionary.update(userinfo=get_object_or_404(auth.get_user_model(), pk=user_id))

    return render_to_response('dailyreport/daily_list.html', dictionary, context_instance=RequestContext(request))
def view_user_of_daily(request, user_id):
    u"""ユーザー情報
    ユーザーごとの投稿情報を表示します
    表示対象:
        各ユーザーが投稿した日報
        (自分のページの場合)非公開状態の日報
    :param request: ユーザー情報の取得
    :param user_id: 表示対象ユーザーid
    :return: 指定ユーザーが投稿した日報の一覧
    """
    dictionary = init_dictionary(request=request)
    dictionary.update(daily_release_form=DailySearchForm(request.GET))
    dictionary.update(pages=create_pagination(
        request, get_user_daily_list(request=request, user_id=user_id)))
    dictionary.update(dailys=dictionary['pages'].object_list)
    dictionary.update(is_paginated=True)
    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())))
    dictionary.update(
        userinfo=get_object_or_404(auth.get_user_model(), pk=user_id))

    return render_to_response('dailyreport/daily_list.html',
                              dictionary,
                              context_instance=RequestContext(request))
def edit_daily(request, daily_id=None):
    u"""日報編集(U)
    日報を編集し、編集後の日報詳細を表示する
    表示対象は以下の通り
        日報
        日報の作成日または当日(新規作成時)に実施されたタスク
        日報の作成日または当日(新規作成時)に作成されたタスク
    dictionary:
        日報
        日報編集用フォーム
            idが指定されている場合は日報を取得後、フォームとする
            idが未指定の場合には、新規日報のインスタンスを作成し、フォームとする
        日報の作成日または当日(新規作成時)に実施されたタスク(implement_date)
        日報の作成日または当日(新規作成時)に作成されたタスク(create_date)
    :param request: ユーザー情報の取得
    :param daily_id: 編集対象の日報id(未指定の場合新規作成と判断)
    :return: 日報詳細画面(成功時かつプレビュー/公開の場合)、タスク管理画面(成功時かつタスク編集へ移動する場合)
    """
    dictionary = init_dictionary(request=request, daily_id=daily_id)
    dictionary.update(
        daily=get_or_create_daily(user=request.user, daily_id=daily_id))
    if request.user != dictionary['daily'].user:
        return redirect('login')
    flag, dictionary['report_form'] = edit_daily_record(
        request=request, daily=dictionary['daily'])
    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 daily_id:
        dictionary.update(implement_task=get_task_from_implement_date(
            dictionary['daily'].user, dictionary['daily'].create_date))
        dictionary.update(create_task=get_task_from_create_date(
            dictionary['daily'].user, dictionary['daily'].create_date))
    else:
        dictionary.update(implement_task=get_task_from_implement_date(
            request.user,
            timezone.now().date()))
        dictionary.update(
            create_task=get_task_from_create_date(request.user,
                                                  timezone.now().date()))

    if request.method == 'POST':
        if 'gototask' in request.POST and flag:
            return redirect('dailyreport:edit_task')
        elif flag:
            return redirect('dailyreport:view_daily_detail',
                            daily_id=dictionary['report_form'].id)
        else:
            return render_to_response('dailyreport/daily_edit.html',
                                      dictionary,
                                      context_instance=RequestContext(request))

    return render_to_response('dailyreport/daily_edit.html',
                              dictionary,
                              context_instance=RequestContext(request))
Exemple #6
0
def view_daily_detail(request, daily_id):
    u"""日報詳細(R)
    日報の詳細を取得し、レンダリングを指示します
    表示対象は以下の通り
        ある日報のレコード
        日報の作成日に実施されたタスク
        日報の作成日に作成されたタスク
    dictionary:
        日報
        日報の作成日に実施されたタスク(implement_date)
        日報の作成日に作成されたタスク(create_date)
        日報に紐付けられたコメント一覧
        コメント入力フォーム
        当日分のタスク一覧(フォーム形式)
        明日以降分のタスク一覧(フォーム形式)
    :param request: ユーザー情報の取得
    :param daily_id: 表示対象の日報取得
    :return: 日報詳細画面
    """
    dictionary = init_dictionary(request=request, daily_id=daily_id)
    dictionary.update(daily=get_or_create_daily(daily_id=daily_id))
    dictionary.update(comments=get_comments_from_daily(dictionary['daily']))
    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())))
    dictionary.update(implement_task=get_task_from_implement_date(
        user=dictionary['daily'].user, date=dictionary['daily'].create_date))
    dictionary.update(create_task=get_task_from_create_date(
        user=dictionary['daily'].user, date=dictionary['daily'].create_date))
    flag, dictionary['comment_form'] = edit_comment_record(
        request=request,
        daily=dictionary['daily'],
        comment=get_or_create_comment(request.user))

    #2016/10/18 川崎追加。JubatusのQiita記事推薦結果をrcに保存。
    #ここにごちゃごちゃと書くべき処理ではないため、リファクタした方がよい
    temp = dictionary["daily"]
    yuba_title = temp.title
    yuba_content = temp.report_y + temp.report_w + temp.report_t
    rc = recommend_Qiita(yuba_title, yuba_content)
    dictionary.update(recommend=rc)
    print("-----------------------")
    from pprint import pprint
    pprint(rc)

    return render_to_response('dailyreport/daily_detail.html',
                              dictionary,
                              context_instance=RequestContext(request))
def edit_daily(request, daily_id=None):
    u"""日報編集(U)
    日報を編集し、編集後の日報詳細を表示する
    表示対象は以下の通り
        日報
        日報の作成日または当日(新規作成時)に実施されたタスク
        日報の作成日または当日(新規作成時)に作成されたタスク
    dictionary:
        日報
        日報編集用フォーム
            idが指定されている場合は日報を取得後、フォームとする
            idが未指定の場合には、新規日報のインスタンスを作成し、フォームとする
        日報の作成日または当日(新規作成時)に実施されたタスク(implement_date)
        日報の作成日または当日(新規作成時)に作成されたタスク(create_date)
    :param request: ユーザー情報の取得
    :param daily_id: 編集対象の日報id(未指定の場合新規作成と判断)
    :return: 日報詳細画面(成功時かつプレビュー/公開の場合)、タスク管理画面(成功時かつタスク編集へ移動する場合)
    """
    dictionary = init_dictionary(request=request, daily_id=daily_id)
    dictionary.update(daily=get_or_create_daily(user=request.user, daily_id=daily_id))
    if request.user != dictionary['daily'].user:
        return redirect('login')
    flag, dictionary['report_form'] = edit_daily_record(request=request, daily=dictionary['daily'])
    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 daily_id:
        dictionary.update(implement_task=get_task_from_implement_date(
            dictionary['daily'].user, dictionary['daily'].create_date))
        dictionary.update(create_task=get_task_from_create_date(
            dictionary['daily'].user, dictionary['daily'].create_date))
    else:
        dictionary.update(implement_task=get_task_from_implement_date(request.user, timezone.now().date()))
        dictionary.update(create_task=get_task_from_create_date(request.user, timezone.now().date()))

    if request.method == 'POST':
        if 'gototask' in request.POST and flag:
            return redirect('dailyreport:edit_task')
        elif flag:
            return redirect('dailyreport:view_daily_detail', daily_id=dictionary['report_form'].id)
        else:
            return render_to_response('dailyreport/daily_edit.html', dictionary, context_instance=RequestContext(request))

    return render_to_response('dailyreport/daily_edit.html', dictionary, context_instance=RequestContext(request))
def view_daily_detail(request, daily_id):
    u"""日報詳細(R)
    日報の詳細を取得し、レンダリングを指示します
    表示対象は以下の通り
        ある日報のレコード
        日報の作成日に実施されたタスク
        日報の作成日に作成されたタスク
    dictionary:
        日報
        日報の作成日に実施されたタスク(implement_date)
        日報の作成日に作成されたタスク(create_date)
        日報に紐付けられたコメント一覧
        コメント入力フォーム
        当日分のタスク一覧(フォーム形式)
        明日以降分のタスク一覧(フォーム形式)
    :param request: ユーザー情報の取得
    :param daily_id: 表示対象の日報取得
    :return: 日報詳細画面
    """
    dictionary = init_dictionary(request=request, daily_id=daily_id)
    dictionary.update(daily=get_or_create_daily(daily_id=daily_id))
    dictionary.update(comments=get_comments_from_daily(dictionary['daily']))
    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())))
    dictionary.update(implement_task=get_task_from_implement_date(
        user=dictionary['daily'].user, date=dictionary['daily'].create_date))
    dictionary.update(create_task=get_task_from_create_date(
        user=dictionary['daily'].user, date=dictionary['daily'].create_date))
    flag, dictionary['comment_form'] = edit_comment_record(
        request=request,
        daily=dictionary['daily'],
        comment=get_or_create_comment(request.user))

    return render_to_response('dailyreport/daily_detail.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 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_daily_detail(request, daily_id):
    u"""日報詳細(R)
    日報の詳細を取得し、レンダリングを指示します
    表示対象は以下の通り
        ある日報のレコード
        日報の作成日に実施されたタスク
        日報の作成日に作成されたタスク
    dictionary:
        日報
        日報の作成日に実施されたタスク(implement_date)
        日報の作成日に作成されたタスク(create_date)
        日報に紐付けられたコメント一覧
        コメント入力フォーム
        当日分のタスク一覧(フォーム形式)
        明日以降分のタスク一覧(フォーム形式)
    :param request: ユーザー情報の取得
    :param daily_id: 表示対象の日報取得
    :return: 日報詳細画面
    """
    dictionary = init_dictionary(request=request, daily_id=daily_id)
    dictionary.update(daily=get_or_create_daily(daily_id=daily_id))
    dictionary.update(comments=get_comments_from_daily(dictionary['daily']))
    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())
    ))
    dictionary.update(implement_task=get_task_from_implement_date(
        user=dictionary['daily'].user, date=dictionary['daily'].create_date))
    dictionary.update(create_task=get_task_from_create_date(
        user=dictionary['daily'].user, date=dictionary['daily'].create_date))
    flag, dictionary['comment_form'] = edit_comment_record(
        request=request, daily=dictionary['daily'],  comment=get_or_create_comment(request.user))

    return render_to_response('dailyreport/daily_detail.html', dictionary, context_instance=RequestContext(request))