예제 #1
0
def notification_list(request):
    """User Detail change on Customer UI

    **Attributes**:

        * ``form`` - UserChangeDetailForm, UserChangeDetailExtendForm,
                        PasswordChangeForm, CheckPhoneNumberForm
        * ``template`` - 'frontend/frontend_notification/user_notification.html'

    **Logic Description**:

        * User is able to change his/her detail.
    """
    sort_col_field_list = ['description', 'verb', 'level', 'timestamp']
    coltitle = {
        'description': _("Description"),
        'verb': _("Verb"),
        'level': _("Level"),
        'timestamp': _("Date"),
    }
    pag_vars = get_pagination_vars(request,
                                   sort_col_field_list,
                                   default_sort_field='id')
    form = NotificationForm(request.POST or None,
                            initial={'notification_list': NOTICE_TYPE.ALL})

    # TODO: rename notification_list to type_filter
    notification_list = NOTICE_TYPE.ALL
    post_var_with_page = 0
    if form.is_valid():
        request.session['session_notification_list'] = ''
        post_var_with_page = 1

        if request.POST.get('notification_list'):
            notification_list = request.POST.get('notification_list')
            request.session['session_notification_list'] = notification_list

    if request.GET.get('page') or request.GET.get('sort_by'):
        post_var_with_page = 1
        notification_list = request.session.get('session_notification_list')
        form = NotificationForm(
            initial={'notification_list': notification_list})

    notification_list = int(notification_list)

    if post_var_with_page == 0:
        # unset session var
        request.session['session_notification_list'] = ''

    kwargs = {}
    # kwargs['sender'] = request.user
    if notification_list == NOTICE_TYPE.UNREAD:
        kwargs['unread'] = True

    if notification_list == NOTICE_TYPE.READ:
        kwargs['unread'] = False

    user_notification = Notification.objects.filter(recipient=request.user)
    if kwargs:
        user_notification = user_notification.filter(**kwargs)

    all_user_notification = user_notification.order_by(pag_vars['sort_order'])
    user_notification = all_user_notification[
        pag_vars['start_page']:pag_vars['end_page']]
    user_notification_count = all_user_notification.count()

    msg_note = ''
    if request.GET.get('msg_note') == 'true':
        msg_note = request.session['msg_note']

    # Mark all notification as read
    if request.GET.get('notification') == 'mark_read_all':
        notification_list = Notification.objects.filter(unread=True,
                                                        recipient=request.user)
        notification_list.update(unread=False)
        msg_note = _('all notifications are marked as read.')

    data = {
        'coltitle': coltitle,
        'form': form,
        'msg_note': msg_note,
        'all_user_notification': all_user_notification,
        'user_notification': user_notification,
        'user_notification_count': user_notification_count,
        'col_name_with_order': pag_vars['col_name_with_order'],
    }
    return render_to_response(
        'frontend/frontend_notification/user_notification.html',
        data,
        context_instance=RequestContext(request))
예제 #2
0
def notification_list(request):
    """User Detail change on Customer UI

    **Attributes**:

        * ``form`` - UserChangeDetailForm, UserChangeDetailExtendForm,
                        PasswordChangeForm, CheckPhoneNumberForm
        * ``template`` - 'frontend/frontend_notification/user_notification.html'

    **Logic Description**:

        * User is able to change his/her detail.
    """
    sort_col_field_list = ['description', 'verb', 'level', 'timestamp']
    coltitle = {
        'description': _("Description"),
        'verb': _("Verb"),
        'level': _("Level"),
        'timestamp': _("Date"),
    }
    pag_vars = get_pagination_vars(request, sort_col_field_list, default_sort_field='id')
    form = NotificationForm(request.POST or None, initial={'notification_list': NOTICE_TYPE.ALL})

    # TODO: rename notification_list to type_filter
    notification_list = NOTICE_TYPE.ALL
    post_var_with_page = 0
    if form.is_valid():
        request.session['session_notification_list'] = ''
        post_var_with_page = 1

        if request.POST.get('notification_list'):
            notification_list = request.POST.get('notification_list')
            request.session['session_notification_list'] = notification_list

    if request.GET.get('page') or request.GET.get('sort_by'):
        post_var_with_page = 1
        notification_list = request.session.get('session_notification_list')
        form = NotificationForm(initial={'notification_list': notification_list})

    notification_list = int(notification_list)

    if post_var_with_page == 0:
        # unset session var
        request.session['session_notification_list'] = ''

    kwargs = {}
    # kwargs['sender'] = request.user
    if notification_list == NOTICE_TYPE.UNREAD:
        kwargs['unread'] = True

    if notification_list == NOTICE_TYPE.READ:
        kwargs['unread'] = False

    user_notification = Notification.objects.filter(recipient=request.user)
    if kwargs:
        user_notification = user_notification.filter(**kwargs)

    all_user_notification = user_notification.order_by(pag_vars['sort_order'])
    user_notification = all_user_notification[pag_vars['start_page']:pag_vars['end_page']]
    user_notification_count = all_user_notification.count()

    msg_note = ''
    if request.GET.get('msg_note') == 'true':
        msg_note = request.session['msg_note']

    # Mark all notification as read
    if request.GET.get('notification') == 'mark_read_all':
        notification_list = Notification.objects.filter(unread=True, recipient=request.user)
        notification_list.update(unread=False)
        msg_note = _('all notifications are marked as read.')

    data = {
        'coltitle': coltitle,
        'form': form,
        'msg_note': msg_note,
        'all_user_notification': all_user_notification,
        'user_notification': user_notification,
        'user_notification_count': user_notification_count,
        'col_name_with_order': pag_vars['col_name_with_order'],
    }
    return render_to_response(
        'frontend/frontend_notification/user_notification.html', data, context_instance=RequestContext(request))