def message_list(request, message_flag, template='message/message_list.html', extra_context=None):
    receive_messages = []
    send_messages = []
    trash_messages = []

    if message_flag == 'outbox':
        send_messages = Message.objects.filter(sender=request.user, sender_deleted_at__isnull=True)
    elif message_flag == 'trash':
        trash_messages = Message.objects.filter(
            Q(recipient=request.user, recipient_deleted_at__isnull=False) | Q(sender=request.user,
                                                                              sender_deleted_at__isnull=False))
    else:
        receive_messages = Message.objects.filter(recipient=request.user, recipient_deleted_at__isnull=True)

    receive_paginator = get_page(request, receive_messages, 10)
    send_paginator = get_page(request, send_messages, 10)
    trash_paginator = get_page(request, trash_messages, 10)

    context = {
        'receive_paginator': receive_paginator,
        'send_paginator': send_paginator,
        'trash_paginator': trash_paginator,
        'message_flag': message_flag,
    }

    if extra_context:
        context.update(extra_context)
    return render_to_response(template, context, context_instance=RequestContext(request))
Exemplo n.º 2
0
def get_admin_log(request):
    """获取管理员操作日志

    **示例URL**

    .. code-block:: html

        http://localhost/api/v1/admin/backstage/log-management/get-admin-log/

    **传入参数/方法**

    ============== ==== ====================
    参数           方法 说明
    ============== ==== ====================
    admin_username GET  筛选参数:管理员名称
    filters        GET  筛选参数:查询项
    page           GET  当前页码
    page_limit     GET  每页最大显示数量
    ============== ==== ====================

    **返回值**

    HTTP200

    .. code-block:: javascript

        {
            count: 2,                                               // 总条目数
            page: 1,                                                // 当前页码
            num_pages: 2,                                           // 总页码数
            content: [
                {
                    admin_log_id: 1,                                // 日志ID
                    created_at: '2018-08-31 16:46:44.794596+00:00', // 创建日期
                    admin_username: '******',                        // 管理员名称
                    message: '...'                                  // 日志内容
                },
                ...
            ]
        }

    """

    admin_username = request.GET.get('admin_username', '')
    start_timestamp = request.GET.get('start_timestamp', round(time.time()))
    end_timestamp = request.GET.get('end_timestamp', round(time.time()))
    filters = request.GET.getlist('filters', [])

    start_date_time = datetime.fromtimestamp(int(start_timestamp), tz=pytz.utc)
    end_date_time = datetime.fromtimestamp(int(end_timestamp), tz=pytz.utc)

    admin_logs = AdminLog.objects.filter(
        admin_user__username__contains=admin_username,
        created_at__gte=start_date_time,
        created_at__lte=end_date_time,
        action_type__in=filters).order_by('-created_at')

    return get_page(request, admin_logs)
def research_list(request, study_type="all", template="participant/research_list.html", extra_context=None):
    if request.method == "POST":
        q = request.POST.get("q", "")

        research_list = RelatedSearchQuerySet().filter(context=AutoQuery(q)).load_all()

        if study_type == "ol":
            research_list = research_list.load_all_queryset(
                Research,
                Research.objects.filter(is_on_web=True, is_publish=True, is_complete=False)
                .exclude(participantresearch__participant=request.user)
                .exclude(scientistresearch__scientist=request.user),
            )
        elif study_type == "nol" or study_type == "nol_map":
            research_list = research_list.load_all_queryset(
                Research,
                Research.objects.filter(is_on_web=False, is_publish=True, is_complete=False)
                .exclude(participantresearch__participant=request.user)
                .exclude(scientistresearch__scientist=request.user),
            )
        elif study_type == "all":
            research_list = research_list.load_all_queryset(
                Research,
                Research.objects.filter(is_publish=True, is_complete=False)
                .exclude(participantresearch__participant=request.user)
                .exclude(scientistresearch__scientist=request.user),
            )

        paginator = get_page(request, research_list, 15)

        context = {"study_type": study_type, "paginator": paginator, "research_list": research_list, "q": q}
    else:
        research_list = research_randomize(request, study_type)
        paginator = get_page(request, research_list, 15)

        context = {"study_type": study_type, "paginator": paginator, "research_list": research_list, "q": ""}

    if extra_context:
        context.update(extra_context)
    return render_to_response(template, context, context_instance=RequestContext(request))
Exemplo n.º 4
0
def get_order_logs(request):
    """获取用户订单记录列表

    **示例URL**

    .. code-block:: html

        http://localhost/api/v1/customers/forestage/personal-center/get-order-logs/

    **传入参数**

    ========== ==== ================
    参数       方法 说明
    ========== ==== ================
    page       GET  当前页码
    page_limit GET  每页最大显示数量
    ========== ==== ================

    **返回值**

    HTTP200

    .. code-block:: javascript

        {
            count: 2,                                                 // 总条数
            page: 2,                                                  // 当前页码
            num_pages: 1,                                             // 总页数
            content: [
                {
                    order_no: '8acf2530-ad40-11e8-83f6-7c11cb55a985', // 订单号
                    course_codename: 'SOFT001',                       // 课程代码
                    course_title: 'Data Structure',                   // 课程名
                    customer_username: '******',                        // 用户名
                    created_at: '2018-08-31 16:46:44.794596+00:00',   // 创建时间
                    money: '100.00',                                  // 成交金额
                    is_refunded: false                                // 是否已退款
                },
                ...
            ]
        }

    """

    order_logs = OrderLog.objects.filter(
        customer=request.user
    ).order_by('-created_at')
    return get_page(request, order_logs)
Exemplo n.º 5
0
def get_learning_logs(request):
    """获取用户学习记录列表

    **示例URL**

    .. code-block:: html

        http://localhost/api/v1/customers/forestage/personal-center/get-learning-logs/

    **传入参数**

    ========== ==== ================
    参数       方法 说明
    ========== ==== ================
    page       GET  当前页码
    page_limit GET  每页最大显示数量
    ========== ==== ================

    **返回值**

    HTTP200

    .. code-block:: javascript

        {
            count: 2,                                                 // 总条数
            page: 2,                                                  // 当前页码
            num_pages: 1,                                             // 总页数
            content: [
                {
                    course_codename: 'SOFT001',                       // 课程代码
                    course_title: 'Data Structure',                   // 课程名
                    customer_username: '******',                        // 用户名
                    latest_learn: '2018-08-31 16:46:44.794596+00:00', // 最后学习时间
                    expire_time: '2018-09-01 16:46:44.794596+00:00'   // 课程失效时间
                },
                ...
            ]
        }

    """

    learning_logs = LearningLog.objects.filter(
        customer=request.user
    ).order_by('-latest_learn')
    return get_page(request, learning_logs)
Exemplo n.º 6
0
def get_course_list(request):
    """获取课程列表

    **示例URL**

    .. code-block:: html

        http://localhost/api/v1/courses/forestage/course/get-course-list/

    **传入参数**

    =========== ==== ================
    参数        方法 说明
    =========== ==== ================
    course_type GET  课程类型
    page        GET  当前页码
    page_limit  GET  每页最大显示数量
    =========== ==== ================

    **返回值**

    HTTP200

    .. code-block:: javascript

        {
            count: 2,                           // 总条数
            page: 2,                            // 当前页码
            num_pages: 1,                       // 总页数
            content: [
                {
                    course_id: 1,               // 课程ID
                    thumbnail: 'uploads/1.png', // 缩略图
                    title: 'Data Structure',    // 课程名
                    description: '...'          // 简介
                },
                ...
            ]
        }

    """

    course_type = request.GET.get('course_type')

    courses = utils.get_courses(course_type).order_by('-updated_at')
    return get_page(request, courses)