Ejemplo n.º 1
0
def store_product_list(request):
    grade = request.GET.get('grade')
    subject = request.GET.get('subject')    #商品子类,不是年级科目
    category = request.GET.get('category')
    orderby = request.GET.get('orderby', '-id') # 排序字段:id、guide_price、sales

    rows = Product.objects.filter().order_by(orderby).exclude(remove_time__isnull=False)

    if grade:
        rows = rows.filter(grade_id=grade)
    if subject:
        rows = rows.filter(subcategory_id=subject)
    if category:
        rows = rows.filter(category_id=category)

    rows, total = utils.get_page_data(request, rows)

    user = check_user(request)
    data = []
    for row in rows:
        item = row.to_api_dict()
        item['discount_price'] = row.get_discount_price(user)
        data.append(item)

    return JSONResponse({'data': data})
Ejemplo n.º 2
0
def teacher_data(request):
    """已登录幼儿园园长查看当前幼儿园所有教师信息"""
    q = request.POST.get('q')
    keyword = request.POST.get('keyword')
    rows = Teacher.objects.all()
    if request.user.type == User.KINDERGARTENOR:
        rows = rows.filter(classes__grade__kindergarten=request.user.
                           bind_kindergartenor.kindergarten).order_by('-id')
    if keyword and len(keyword) > 0:
        if q == 'username':
            rows = rows.filter(user__username__icontains=keyword)
        elif q == 'name':
            rows = rows.filter(user__name__icontains=keyword)
        elif q == 'is_active':
            rows = rows.filter(user__is_active=int(keyword))
        elif q == 'grade':
            rows = rows.filter(classes__grade_id=keyword)
        elif q == 'class':
            rows = rows.filter(classes_id=keyword)

    rows, total = utils.get_page_data(request, rows)

    data = []
    for row in rows:
        item = row.to_dict()
        data.append(item)

    dict = {"total": total, "rows": data}
    return JSONResponse(dict)
Ejemplo n.º 3
0
def kindergartenor_data(request):
    """幼儿园园长数据"""
    q = request.POST.get('q')
    keyword = request.POST.get('keyword')

    rows = KindergartenManager.objects.all().order_by("-id")

    if keyword and len(keyword) > 0:
        if q == 'name':
            rows = rows.filter(user__name__icontains=keyword)
        elif q == 'username':
            rows = rows.filter(user__username__icontains=keyword)
        elif q == 'is_active':
            rows = rows.filter(user__is_active=int(keyword))
        elif q == 'kindername':
            rows = rows.filter(kindergarten__id=keyword)
        elif q == 'gender':
            rows = rows.filter(user__gender=keyword)

    rows, total = utils.get_page_data(request, rows)

    data = []
    for row in rows:
        item = row.to_dict()
        groups = row.user.groups.all()
        item['groups'] = [group.id for group in groups]
        item['groups_name'] = ','.join(group.name for group in groups)
        data.append(item)  # item的key注意和模板table的field保持一致性,包括forms类的字段

    dict = {"total": total, "rows": data}
    return JSONResponse(dict)
Ejemplo n.º 4
0
def account_data(request):
    q = request.POST.get('q')  # js search()函数的参数,在这里用来作为搜索字段
    keyword = request.POST.get('keyword')  # 搜索的关键字

    type = request.GET.get('type', User.ADMINISTRATOR)

    rows = User.objects.filter(type=type).order_by("-id")
    if type == User.ADMINISTRATOR:
        rows = rows.exclude(username='******')

    if keyword and len(keyword) > 0:
        if q == 'name':
            rows = rows.filter(name__icontains=keyword)
        elif q == 'username':
            rows = rows.filter(username__icontains=keyword)
        elif q == 'is_active':
            rows = rows.filter(is_active=int(keyword))

    rows, total = utils.get_page_data(request, rows)

    data = []
    for row in rows:
        item = row.to_dict()
        # groups = row.groups.all()
        # item['groups'] = [group.id for group in groups]
        # item['groups_name'] = ','.join(group.name for group in groups)
        data.append(item)

    dict = {"total": total, "rows": data}
    return JSONResponse(dict)
Ejemplo n.º 5
0
def log_list(request):
    rows = BizLog.objects.filter()

    q = request.POST.get('q')
    keyword = request.POST.get('keyword')
    if keyword and len(keyword) > 0:
        if q == 'type':
            rows = rows.filter(type=int(keyword))
        elif q == 'name':
            rows = rows.filter(user__username__contains=keyword)
        elif q == 'description':
            rows = rows.filter(description__contains=keyword)

    date_begin = request.POST.get('date_begin')
    date_end = request.POST.get('date_end')
    if date_begin:
        rows = rows.filter(create_time__gte=date_begin)
    if date_end:
        rows = rows.filter(create_time__lte=date_end + " 23:59:59")

    rows, total = utils.get_page_data(request, rows)

    data = []
    for row in rows:
        data.append(row.to_dict())

    result = {
        'rows': data,
        'total': total,
    }
    return JSONResponse(result)
Ejemplo n.º 6
0
def refund_data(request):
    if not request.user.has_perm(
            'account.manage_teacher') and not request.user.has_perm(
                'account.manage_company'):
        raise PermissionDenied()
    q = request.POST.get('q')
    keyword = request.POST.get('keyword')
    date_begin = request.POST.get('date_begin')
    date_end = request.POST.get('date_end')
    export = request.POST.get('export')
    stuname = request.POST.get('stuname')
    user = request.user
    if user.type == User.TEACHER:
        rows = Absence.objects.filter(
            student__classes=user.bind_teacher.classes).order_by('-date')
    elif user.type == User.COMPANY:  # 园企具有查看所有幼儿园的学生的缺勤退费申请
        rows = Absence.objects.all().order_by('-date')
    if keyword and len(keyword) > 0:
        if q == 'kinder':
            rows = rows.filter(student__classes__grade__kindergarten=keyword)
        elif q == 'status':
            rows = rows.filter(status=keyword)
        elif q == 'name':
            rows = rows.filter(student__name=keyword)
    if date_begin:
        rows = rows.filter(date__gte=date_begin)
    if date_end:
        rows = rows.filter(date__lte=date_end)
    if stuname:
        rows = rows.filter(student__name=keyword)
    rows, total = utils.get_page_data(request, rows)
    data = []
    for row in rows:
        data.append(row.to_dict())
    return JSONResponse({'rows': data, 'total': total})
Ejemplo n.º 7
0
def activity_data(request):
    if not request.user.has_perm(
            'account.manage_kindergardenor') and not request.user.has_perm(
                'account.manage_investors'):
        raise PermissionDenied()
    q = request.POST.get('q')
    keyword = request.POST.get('keyword')
    rows = Activity.objects.all().order_by('-create_time')
    if q == 'status':
        rows = rows.filter(status=keyword)
    elif q == 'name':
        rows = rows.filter(name__icontains=keyword)
    elif q == 'title':
        rows = rows.filter(title__icontains=keyword)
    elif q == 'user':
        rows = rows.filter(create_user__name__icontains=keyword)
    rows, total = utils.get_page_data(request, rows)

    data = []
    for row in rows:
        item = row.to_dict()
        data.append(item)

    dict = {"total": total, "rows": data}
    return JSONResponse(dict)
Ejemplo n.º 8
0
def class_data(request):
    """班级"""
    grder_id = request.GET.get('grade_id')
    rows = Classes.objects.filter(grade__id=grder_id)
    rows, total = utils.get_page_data(request, rows)
    data = []
    for row in rows:
        data.append(row.to_dict())
    dict = {"total": total, "rows": data}
    return JSONResponse(dict)
Ejemplo n.º 9
0
def journals_list(request, user):
    rows = Journals.objects.filter(create_user=user)
    rows, total = utils.get_page_data(request, rows)

    data = []
    for row in rows:
        item = row.to_dict()
        data.append(item)

    return JSONResponse({'data': data})
Ejemplo n.º 10
0
def news_list(request):
    rows = News.objects.filter(type=News.TYPE_NOTICE)
    rows, total = utils.get_page_data(request, rows)

    data = []
    for row in rows:
        item = row.to_api_dict()
        del item['content']
        data.append(item)

    return JSONResponse({'data': data})
Ejemplo n.º 11
0
def store_product_sub_category_list(request,id):
    rows = Category.objects.filter(level=Category.LEVEL_0)

    rows, total = utils.get_page_data(request, rows)

    data = []
    for row in rows:
        item = row.to_dict()
        data.append(item)

    return JSONResponse({'data': data})
Ejemplo n.º 12
0
def member_footmark_list(request, user):
    type = request.GET.get('type')
    rows = MemberFootMark.objects.filter(create_user=user, type=type)

    rows, total = utils.get_page_data(request, rows)

    data = []
    for row in rows:
        item = row.to_dict(user)
        data.append(item)

    return JSONResponse({'data': data})
Ejemplo n.º 13
0
def grade_data(request):
    """年级管理(登录的幼儿园校长的幼儿园年级)"""
    rows = Grade.objects.all()
    if request.user.type == User.KINDERGARTENOR:
        rows = rows.filter(
            kindergarten=request.user.bind_kindergartenor.kindergarten)
    rows, total = utils.get_page_data(request, rows)
    data = []
    for row in rows:
        data.append(row.to_dict())
    dict = {"total": total, "rows": data}
    return JSONResponse(dict)
Ejemplo n.º 14
0
def feedback_data(request):
    rows = Feedback.objects.filter()
    if not request.user.is_superuser:
        rows = rows.filter(create_user=request.user)

    rows, total = utils.get_page_data(request, rows)

    data = []
    for row in rows:
        data.append(row.to_dict())

    dict = {"total": total, "rows": data}
    return JSONResponse(dict)
Ejemplo n.º 15
0
def advert_list(request):
    loction = int(request.GET.get("loc", Advert.APP_HOME))
    rows = Advert.objects.filter(location=loction).exclude(
        remove_time__isnull=False).order_by('-position', '-id')

    rows, total = utils.get_page_data(request, rows)

    data = []
    for row in rows:
        item = row.to_api_dict()
        data.append(item)

    return JSONResponse({'data': data})
Ejemplo n.º 16
0
def feedback_mine_data(request):
    # 修改读取状态
    Feedback.objects.filter(create_user=request.user).update(reply_read=True)

    # 显示相关数据
    rows = Feedback.objects.filter(create_user=request.user)

    rows, total = utils.get_page_data(request, rows)

    data = []
    for row in rows:
        data.append(row.to_dict())

    dict = {"total": total, "rows": data}
    return JSONResponse(dict)
Ejemplo n.º 17
0
def collection_list(request, user):
    type = request.GET.get('type')
    rows = MemberCollection.objects.filter(create_user=user, type=type)

    rows, total = utils.get_page_data(request, rows)

    data = []
    for row in rows:
        item = row.to_dict(user)
        if item['object'] == None:
            row.delete()
            continue
        data.append(item)

    return JSONResponse({'data': data})
Ejemplo n.º 18
0
def store_product_category_list(request):
    id = request.GET.get('id',0)
    rows = Category.objects.filter(level=Category.LEVEL_0)
    # 如果客户端上传了父id,则返回二级类型
    if int(id) > 0:
        rows = Category.objects.filter(parent=id)

    rows, total = utils.get_page_data(request, rows)

    data = []
    for row in rows:
        item = row.to_dict()
        data.append(item)

    return JSONResponse({'data': data})
Ejemplo n.º 19
0
def member_promoting_list(request, user):
    rows = UserPromoting.objects.filter(src_user=user)

    rows, total = utils.get_page_data(request, rows)

    data = []
    for row in rows:
        item = row.to_api_dict()
        if row.dest_user.bind_member and row.dest_user.bind_member.level and row.dest_user.bind_member.level.name:
            item['dest_user_level_text'] = row.dest_user.bind_member.level.name
        else:
            item['dest_user_level_text'] = "未购买会员"

        data.append(item)

    return JSONResponse({'data': data})
Ejemplo n.º 20
0
def version_data(request):
    rows = Version.objects.all()
    rows, total = utils.get_page_data(request, rows)

    data = []
    for row in rows:
        item = {
            'id': row.id,
            'platform': row.get_platform_display(),
            'version': row.version,
            'title': row.title,
            'content': row.content,
            'created': row.created_formated,
            'username': row.user.username
        }
        data.append(item)

    dict = {"total": total, "rows": data}
    return JSONResponse(dict)
Ejemplo n.º 21
0
def vistor_data(request):
    """来访记录数据"""
    start_time = request.POST.get("start_time")
    end_time = request.POST.get("end_time")
    username = request.POST.get("username")

    rows = Visitor.objects.all()
    # 组合搜索条件
    if start_time != None and start_time != "":
        rows = rows.filter(start_time__gte=start_time)

    if end_time != None and end_time != "":
        rows = rows.filter(end_time__lte=end_time)

    if username != None and username != "":
        rows = rows.filter(user__username__contains=username)

    if request.POST.get('export') == None:
        rows, total = utils.get_page_data(request, rows)

        # 组合json数据
        data = []
        for row in rows:
            data.append(row.to_dict())
        dict = {"total": total, "rows": data}
        return JSONResponse(dict)
    else:
        data = []
        for row in rows:
            data.append(row.to_export_data())
        data = tablib.Dataset(*data, headers=Visitor.get_export_headers())

        filename = settings.TMP_ROOT + "/export.csv"
        open(filename, 'wb').write(data.xls)

        response = HttpResponse(utils.read_file(filename),
                                content_type='application/vnd.ms-excel')
        response['Content-Disposition'] = 'attachment; filename=export.xls'

        BizLog.objects.addnew(request.user, BizLog.EXPORT, u"导出客户端访问记录数据")

        return response
Ejemplo n.º 22
0
def attendance_data(request):
    q = request.POST.get('q')
    keyword = request.POST.get('keyword')
    status = request.POST.get('status')
    stuname = request.POST.get('stuname')
    export = request.POST.get('export')
    date_begin = request.POST.get('date_begin')
    date_end = request.POST.get('date_end')
    today = request.POST.get('today')
    user = request.user
    if not any(
        [q, keyword, status, stuname, export, date_begin, date_end, today]):
        # 默认展示当天考勤
        rows = Attendance.objects.filter(
            date=strfdate(timezone.now())).order_by('-date')
    else:
        rows = Attendance.objects.all().order_by('-date')
    classes = Classes.objects.all().values("id")
    if request.user.type == User.KINDERGARTENOR:
        classes = classes.filter(
            grade__kindergarten=request.user.bind_kindergartenor.kindergarten)
    if request.user.type == User.TEACHER:  # 教师
        classes = classes.filter(pk=request.user.bind_teacher.classes.id)
    rows = rows.filter(classes__in=classes)
    if today:
        rows = rows.filter(date=today)
    if status:
        rows = rows.filter(status=status)
    if stuname:
        rows = rows.filter(student__name__icontains=stuname)
    if keyword and len(keyword) > 0:
        if q == 'name':
            rows = rows.filter(student__name__icontains=keyword)
        if q == 'type':
            rows = rows.filter(status=keyword)
    if date_begin:
        rows = rows.filter(date__gte=date_begin)
    if date_end:
        rows = rows.filter(date__lte=date_end)
    if export:  # 进行考勤导出时(复合查询结果,由js的变量进行控制)
        headers = (
            u'姓名',
            u'班级',
            u'年级',
            u'考勤',
            u'时间',
            u'备注',
        )

        rows = rows.values('student__name', 'classes__name',
                           'classes__grade__name', 'status', 'date', 'notes')

        data = []
        for row in rows:  # 使导出的xlsx文件格式规范不出现编号,null等字符串
            if row['student__name'] is None:
                row['student__name'] = u'无'
            if row['classes__name'] is None:
                row['classes__name'] = u'无'
            if row['classes__grade__name'] is None:
                row['classes__grade__name'] = u'无'
            if row['status'] is None:
                row['status'] = Attendance.STATUS_CHOICES[row['status']][1]
            if row['date'] is None:
                row['date'] = u'无'
            if row['notes'] is None:
                row['notes'] = u''
            row['status'] = Attendance.STATUS_CHOICES[row['status']][1]
            data.append((
                row['student__name'] + ' ',
                row['classes__name'],
                row['classes__grade__name'],
                row['status'],
                row['date'],
                row['notes'],
            ))

        data = tablib.Dataset(*data, headers=headers, title=u"数据")

        filename = settings.TMP_ROOT + "/export_member.xlsx"
        open(filename, 'wb').write(data.xlsx)

        response = HttpResponse(utils.read_file(filename),
                                content_type='application/vnd.ms-excel')
        response['Content-Disposition'] = 'attachment; filename=考勤表.xlsx'
        BizLog.objects.addnew(request.user, BizLog.EXPORT, u"导出考勤数据")
        return response
    else:
        rows, total = utils.get_page_data(request, rows)

        data = []
        for row in rows:
            item = {}
            item = row.to_dict()
            data.append(item)
        dict = {"total": total, "rows": data}
        return JSONResponse(dict)
Ejemplo n.º 23
0
def student_data(request):
    """学生信息"""
    if not request.user.has_perm(
            'account.manage_kindergardenor') and not request.user.has_perm(
                'account.manage_teacher'):
        raise PermissionDenied()
    q = request.POST.get('q')
    keyword = request.POST.get('keyword')
    export = request.POST.get('export')
    rows = Student.objects.all()
    if request.user.type == User.TEACHER:  # 教师
        rows = rows.filter(classes=request.user.bind_teacher.classes)
    if request.user.type == User.KINDERGARTENOR:  # 园长查看所属幼儿园的所有学生
        rows = rows.filter(classes__grade__kindergarten=request.user.
                           bind_kindergartenor.kindergarten)
    if keyword and len(keyword) > 0:
        if q == 'student_name':
            rows = rows.filter(name__icontains=keyword)
        elif q == 'gender':
            rows = rows.filter(gender=keyword)
        elif q == 'class':
            rows = rows.filter(classes_id=keyword)
        elif q == 'grade':
            rows = rows.filter(classes__grade_id=keyword)

    if export:
        headers = (u'姓名', u'性别', u'年龄', u'班级', u'年级', u'备注')

        rows = rows.values('name', 'gender', 'age', 'classes__name',
                           'classes__grade__name', 'notes')

        data = []
        for row in rows:  #使导出的xlsx文件格式规范不出现编号,null等字符串
            if row['name'] is None:
                row['name'] = u'无'
            if row['gender'] is None:
                row['gender'] = u'无'
            if row['age'] is None:
                row['age'] = u'无'
            if row['classes__name'] is None:
                row['classes__name'] = u'无'
            if row['classes__grade__name'] is None:
                row['classes__grade__name'] = u'无'
            if row['notes'] is None:
                row['notes'] = u'无'
            row['gender'] = Student.GENDER_CHOICES[row['gender']][1]
            data.append((
                row['name'] + ' ',
                row['gender'],
                row['age'],
                row['classes__name'],
                row['classes__grade__name'],
                row['notes'],
            ))

        data = tablib.Dataset(*data, headers=headers, title=u"数据")

        filename = settings.TMP_ROOT + "/export_member.xlsx"
        open(filename, 'wb').write(data.xlsx)

        response = HttpResponse(utils.read_file(filename),
                                content_type='application/vnd.ms-excel')
        response['Content-Disposition'] = 'attachment; filename=学生表.xlsx'
        BizLog.objects.addnew(request.user, BizLog.EXPORT, u"导出学生列表数据")
        return response
    else:
        rows, total = utils.get_page_data(request, rows)

        data = []
        for row in rows:
            item = row.to_dict()
            data.append(item)

        dict = {"total": total, "rows": data}
        return JSONResponse(dict)
Ejemplo n.º 24
0
def student_attendance(request):
    """个人考勤"""
    if not request.user.has_perm(
            'account.manage_kindergardenor') and not request.user.has_perm(
                'account.manage_teacher'):
        raise PermissionDenied()

    q = request.POST.get('q')
    keyword = request.POST.get('keyword')
    date_begin = request.POST.get('date_begin')
    date_end = request.POST.get('date_end')
    export = request.POST.get('export')
    name = request.POST.get('stuname')
    user = request.user
    attendance = Attendance.objects.all()
    students = Student.objects.all()
    if user.type == User.TEACHER:
        attendance = attendance.filter(
            classes=request.user.bind_teacher.classes)
        students = students.filter(classes__class_teacher=user.bind_teacher)
    elif user.type == User.KINDERGARTENOR:
        attendance = attendance.filter(
            classes__grade__kindergarten=user.bind_kindergartenor.kindergarten)
        students = students.filter(
            classes__grade__kindergarten=user.bind_kindergartenor.kindergarten)
    if date_begin:
        attendance = attendance.filter(date__gte=date_begin)
    if date_end:
        attendance = attendance.filter(date__lte=date_end)

    if keyword and len(keyword) > 0:
        if q == 'name':
            students = students.filter(name__icontains=keyword)
        elif q == 'class':
            students = students.filter(classes_id=keyword)
        elif q == 'grade':
            students = students.filter(classes__grade_id=keyword)
    if name:
        students = students.filter(name__icontains=name)
    if keyword and len(keyword) > 0:
        if q == 'name':
            students = students.filter(name__icontains=keyword)
    students, total = utils.get_page_data(request, students)
    data = []
    for stu in students:
        info = {}
        att = attendance.filter(student=stu)
        abs = Absence.objects.filter(student=stu).exclude(
            status=Absence.REFUSE)  # 待审核和审核通过的申请
        if date_begin:
            abs = abs.filter(date__gte=date_begin)
        if date_end:
            abs = abs.filter(date__lte=date_end)
        info['unrefund_count'] = 0
        if abs.exists():
            for row in abs:
                info['unrefund_count'] += row.days
        info['count'] = att.count()  # 考勤总次数
        info['normal_count'] = att.filter(
            status=Attendance.NORMAL).count()  # 正常考勤次数
        info['absence_count'] = info['count'] - info['normal_count']  # 缺勤
        info['refund_count'] = info['absence_count'] - info[
            'unrefund_count']  # 未申请退费的考勤
        info['class'] = stu.classes and stu.classes.name or ""
        info['grade'] = stu.classes and stu.classes.grade.name or ""
        info['student'] = stu.name
        data.append(info)
    return JSONResponse({'rows': data, 'total': total})