Exemplo n.º 1
0
def advert_video(request):
    adv = Advert.objects.filter(location=Advert.VIDEO).exclude(
        remove_time__isnull=False).order_by('-id').first()

    if adv:
        return JSONResponse({'data': adv.to_api_dict()})
    else:
        return JSONResponse({})
Exemplo n.º 2
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})
Exemplo n.º 3
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)
Exemplo n.º 4
0
def feedback_mine(request, user):
    rows = Feedback.objects.filter(create_user_id=request.GET.get('user'))
    data = []
    for row in rows:
        data.append(row.to_dict())
    rows.filter(reply_content__isnull=False).update(reply_read=1)
    return JSONResponse({'data': data})
Exemplo n.º 5
0
def drawing_account_save(request):
    id = request.GET.get('id')
    if id == None:
        form = DrawingAccountForm(request.POST)
    else:
        m = get_object_or_404(DrawingAccount, pk=id)
        form = DrawingAccountForm(request.POST, instance=m)

    try:
        if form.is_valid():
            with transaction.atomic():
                instance = form.save(request=request)

                if id == None:
                    BizLog.objects.addnew(
                        request.user, BizLog.INSERT, u"添加提现账号[%s],id=%d" %
                        (instance.account_number, instance.id))
                else:
                    BizLog.objects.addnew(
                        request.user, BizLog.UPDATE, u"修改提现账号[%s],id=%d" %
                        (instance.account_number, instance.id))

            return JSONResponse({'id': instance.id})
        else:
            return JSONError(utils.dump_form_errors(form))
    except Exception, e:
        return JSONError(unicode(e))
Exemplo n.º 6
0
def grade_save(request):
    id = request.GET.get('id')

    if id == None:
        form = GradeForm(request.POST)
    else:
        m = get_object_or_404(Grade, pk=id)
        form = GradeForm(request.POST, instance=m)

    try:
        if form.is_valid():
            with transaction.atomic():
                if id == None:
                    instance = form.save(commit=False)
                    kindergarten = Kindergarten.objects.filter(
                        kinder_managers=request.user.bind_kindergartenor
                    ).first()
                    instance.kindergarten = kindergarten
                    instance.save()
                    BizLog.objects.addnew(
                        request.user, BizLog.INSERT,
                        u"添加年级[%s],id=%d" % (instance.name, instance.id))
                else:
                    instance = form.save()
                    BizLog.objects.addnew(
                        request.user, BizLog.UPDATE,
                        u"修改年级[%s],id=%d" % (instance.name, instance.id))

            return JSONResponse({'id': instance.id})
        else:
            return JSONError(utils.dump_form_errors(form))
    except Exception, e:
        return JSONError(unicode(e))
Exemplo n.º 7
0
def iap_finish(request, user):
    # 苹果内购验证
    try:
        p = json.loads(request.body)

        order_no = p['order_no']
        total_fee = float(p['total_fee'])
        product_identifier = p['product_identifier']
        receipt = p['receipt']

        orders = Order.objects.filter(no=order_no)
        if orders.count() != 1:
            return JSONError("有重复订单")

        order = orders[0]

        if total_fee != order.total_fee:
            return JSONError('金额有误!')

        iap = IAP.objects.create(order=order,
                                 product_identifier=product_identifier,
                                 receipt=receipt,
                                 totalfee=total_fee)
        iap.validate()

        return JSONResponse({})
    except Exception, e:
        traceback.print_exc()
        return JSONError(e.message)
Exemplo n.º 8
0
def commission_ratio_save(request):
    id = request.GET.get('id')

    try:
        if id == None:
            form = CommissionRatioForm(request.POST)
        else:
            instance = get_object_or_404(CommissionRatio, pk=id)
            form = CommissionRatioForm(request.POST, instance=instance)

        if form.is_valid():
            if id == None:
                CommissionRatio.objects.filter(
                    type=form.cleaned_data['type']).delete()

            cr = form.save()

            if id == None:
                BizLog.objects.addnew(
                    request.user, BizLog.INSERT,
                    u"添加分成比例[%s],id=%d" % (cr.get_type_display(), cr.id),
                    cr.to_dict())
            else:
                BizLog.objects.addnew(
                    request.user, BizLog.UPDATE,
                    u"修改分成比例[%s],id=%d" % (cr.get_type_display(), cr.id),
                    cr.to_dict())

            return JSONResponse({"data": cr.id})
        else:
            return JSONError(utils.dump_form_errors(form))
    except Exception, e:
        traceback.print_exc()
        return JSONError(u'保存失败!')
Exemplo n.º 9
0
def news_detail_by_id(request, id):
    try:
        row = News.objects.get(pk=id)
        data = row.to_api_dict()
        return JSONResponse({'data': data})
    except Exception, e:
        print e
Exemplo n.º 10
0
def drawing_record_accept(request):
    pk = request.GET.get('id')
    status = int(request.GET.get('status'))
    notes = request.GET.get('notes')

    try:
        with transaction.atomic():
            drawing = get_object_or_404(Drawing, pk=int(pk))
            drawing.status = status
            drawing.notes = notes

            DrawingStatus.objects.create(main=drawing,
                                         status=status,
                                         create_user=request.user)

            if status == Drawing.PENDING:
                status_text = u'提现中'
            elif status == Drawing.FINISHED:
                status_text = u'已完成'
                if drawing.total_fee > drawing.create_user.balance:
                    raise Exception(u'余额不足,无法完成操作!')

                drawing.create_user.balance -= drawing.total_fee
                drawing.create_user.save()
                drawing.balance_after = drawing.create_user.balance
            else:
                status_text = u'拒绝'
            drawing.save()
            BizLog.objects.addnew(
                request.user, BizLog.UPDATE,
                u"%s[%s],id=%d" % (status_text, drawing.no, drawing.id))
        return JSONResponse({})
    except Exception, e:
        return JSONError(unicode(e))
Exemplo n.º 11
0
def drawing_account_data(request):
    if not request.user.is_teacher():
        raise PermissionDenied()

    rows = DrawingAccount.objects.all()

    q = request.POST.get('q')
    keyword = request.POST.get('keyword')
    type = request.GET.get('type')

    if q == "username":
        rows = rows.filter(create_user__username=keyword)
    elif q == 'type_text':
        rows = rows.filter(type=keyword)

    if type and len(type) > 0:
        rows = rows.filter(type=type)

    if request.user.is_teacher():
        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)
Exemplo n.º 12
0
def attendance_save(request):
    id = request.GET.get('id')
    if id == None:
        # 多个学生考勤信息
        try:
            with transaction.atomic():
                classes = request.user.bind_teacher.classes
                att = Attendance.objects.filter(classes=classes,
                                                date=utils.strfdate(
                                                    timezone.now()))
                if att.exists():
                    return JSONError(u'今日考勤已生成,请勿重复操作')
                stu_dict = dict(request.POST)
                for i in range(len(stu_dict['student'])):
                    stu = Student.objects.get(id=stu_dict['student'][i])
                    Attendance.objects.create(student=stu,
                                              classes=classes,
                                              submitter=request.user,
                                              status=stu_dict['status'][i],
                                              notes=stu_dict['notes'][i])
                    BizLog.objects.addnew(
                        request.user, BizLog.UPDATE,
                        u"添加学生[%s]考勤,id=%d" % (stu.name, stu.id))
                return JSONResponse({})
        except Exception, e:
            return JSONError(str(e))
Exemplo n.º 13
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)
Exemplo n.º 14
0
def balance_pay(request, user):
    # 权限判断
    try:
        p = json.loads(request.body)

        out_trade_no = p['out_trade_no']
        total_fee = float(p['total_fee'])

        orders = Order.objects.filter(no=out_trade_no)
        if orders.count() != 1:
            return JSONError("有重复订单")

        balance = user.balance
        order = orders[0]

        if total_fee != order.total_fee:
            return JSONError('金额有误!')
        if balance < order.total_fee:
            return JSONError('余额不足!')

        order.pay_mode = Order.BALANCE
        handle_pay(order, Order.BALANCE, total_fee)
        return JSONResponse({})
    except Exception, e:
        traceback.print_exc()
        return JSONError(e.message)
Exemplo n.º 15
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)
Exemplo n.º 16
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)
Exemplo n.º 17
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)
Exemplo n.º 18
0
def drawing_record_data(request):
    check_perm(request.user)

    rows = Drawing.objects.all()
    if request.user.is_teacher():
        rows = rows.filter(create_user=request.user)

    q = request.POST.get('q')
    keyword = request.POST.get('keyword')

    if q == "order_no":
        rows = rows.filter(no=keyword)

    elif q == 'status':
        rows = rows.filter(status=keyword)

    elif q == 'username':
        rows = rows.filter(create_user__username=keyword)
    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)
Exemplo n.º 19
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})
Exemplo n.º 20
0
def register_check(request):
    mobile = request.GET.get('mobile')
    vcode = request.GET.get("vcode")
    referee = request.GET.get("referee")
    if mobile == '' or vcode == '':
        return JSONError('参数无效!')
    if referee != '':
        try:
            referee_user = User.objects.get(username=referee)
        except User.DoesNotExist:
            return JSONError("推荐人不存在,请检查")

    vcs = VCode.objects.filter(mobile=mobile).order_by('-id')
    if vcs.count() > 0:
        vc = vcs[0]
    else:
        return JSONError('请获取验证码!')

    if (timezone.now() - vc.add_time).seconds > 1800:
        return JSONError('验证码已过期,请重新获取!')

    if vcode != vc.vcode:
        return JSONError("验证码错误!")

    rows = Member.objects.filter(user__username=mobile)
    if rows:
        return JSONError("此手机号码已经注册!")

    return JSONResponse({'data': {}})
Exemplo n.º 21
0
def class_save(request):
    id = request.GET.get('id')
    if id == None:
        form = ClassForm(request.POST)
    else:
        m = get_object_or_404(Classes, pk=id)
        form = ClassForm(request.POST, instance=m)
    try:
        if form.is_valid():
            with transaction.atomic():
                instance = form.save()
                if id == None:
                    BizLog.objects.addnew(
                        request.user, BizLog.INSERT,
                        u"添加班级[%s],id=%d" % (instance.name, instance.id))
                else:
                    instance = form.save()
                    BizLog.objects.addnew(
                        request.user, BizLog.UPDATE,
                        u"修改班级[%s],id=%d" % (instance.name, instance.id))

            return JSONResponse({'id': instance.id})
        else:
            return JSONError(utils.dump_form_errors(form))
    except Exception, e:
        return JSONError(unicode(e))
Exemplo n.º 22
0
def collection_add(request, user):
    type = request.GET.get('type')
    object_id = request.GET.get('object')

    MemberCollection.objects.get_or_create(type=type,
                                           object_id=object_id,
                                           create_user=user)
    return JSONResponse({'data': {}})
Exemplo n.º 23
0
def member_blanace(request, user):
    if user.type == User.MEMBER:
        member = user.member_user
        balance = member.balance
        data = {'balance': balance}
        return JSONResponse({'data': data})
    else:
        return JSONError("身份有误!")
Exemplo n.º 24
0
def drawing_account_delete(request):
    id = request.GET.get('id')
    instance = get_object_or_404(DrawingAccount, pk=id)
    with transaction.atomic():
        BizLog.objects.addnew(
            request.user, BizLog.INSERT,
            u"删除提现账号[%s],id=%d" % (instance.account_number, instance.id))
        instance.delete()
    return JSONResponse({})
Exemplo n.º 25
0
def change_password(request):
    """修改密码"""
    id = request.POST.get('id')
    user = get_object_or_404(User, pk=id)
    user.set_password(request.POST.get('password'))
    user.save()
    BizLog.objects.addnew(request.user, BizLog.UPDATE,
                          u"修改密码[%s],id=%d" % (user.username, user.id))
    return JSONResponse({})
Exemplo n.º 26
0
def news_detail_by_title(request):
    try:
        p = json.loads(request.body)
        title = p['title']
        row = News.objects.get(type=News.TYPE_SIGNLE, title=title)
        data = row.to_api_dict()
        return JSONResponse({'data': data})
    except Exception, e:
        print e
Exemplo n.º 27
0
def store_cart(request, user):
    rows = Cart.objects.filter(create_user=user)

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

    return JSONResponse({'data': data})
Exemplo n.º 28
0
def refund_save(request):
    # if not request.user.has_perm('account.manage_teacher') and not request.user.has_perm('account.manage_company'):
    #     raise PermissionDenied()
    id = request.GET.get('id')
    # 对发起退费申请的学生进行是否可进行缺勤退费的申请  (暂不开放修改功能)
    stu_id = request.POST.get('student')
    try:
        days = int(request.POST.get('days'))
    except ValueError:
        return JSONError(u'无效的缺勤天数')
    if days <= 0:
        return JSONError(u'无效的缺勤天数')
    rows = Attendance.objects.filter(student_id=stu_id)
    total_count = rows.count()  # 学生考勤总数
    normal_count = rows.filter(status=Attendance.NORMAL).count()  # 该学生正常考勤总数
    absence_count = total_count - normal_count  # 缺勤数
    unrefund_count = 0

    rows = Absence.objects.filter(student_id=stu_id).exclude(
        status=Absence.REFUSE)  # 新申请退费时,查询出已经通过的和待审核的申请退费

    if rows.exists():
        for row in rows:
            unrefund_count += row.days  # 计算出该学生的已经申请的总退费数
    refund_count = absence_count - unrefund_count  # 可申请退费的缺勤次数
    if refund_count <= 0:
        return JSONError(u'该学生可申请退费的天数为0')
    if days > refund_count:  # 前端输入的天数进行判断
        return JSONError(u'申请退费的天数超过可退费天数')

    if id == None:
        form = RefundSubForm(
            request.POST,
            request=request)  # 注意构建form对象时传入request,否则modelform报错
    else:
        m = get_object_or_404(Absence, pk=id)
        form = RefundSubForm(request.POST, instance=m, request=request)
    try:
        if form.is_valid():
            with transaction.atomic():
                instance = form.save(commit=False)
                instance.student = form.cleaned_data['student']
                instance.save()
                if id == None:
                    BizLog.objects.addnew(
                        request.user, BizLog.INSERT, u"添加考勤退费申请[%s],id=%d" %
                        (instance.student.name, instance.id))
                else:
                    BizLog.objects.addnew(
                        request.user, BizLog.INSERT, u"修改考勤退费申请[%s],id=%d" %
                        (instance.student.name, instance.id))

            return JSONResponse({'id': instance.id})
        else:
            return JSONError(utils.dump_form_errors(form))
    except Exception, e:
        return JSONError(unicode(e))
Exemplo n.º 29
0
def journal_data(request):
    rows = Journals.objects.all()

    q = request.POST.get('q')
    keyword = request.POST.get('keyword')
    date_begin = request.POST.get('date_begin')
    date_end = request.POST.get('date_end')
    type = request.POST.get('type')
    export = request.POST.get('export')

    if keyword and len(keyword):
        if q == "username":
            rows = rows.filter(create_user__username__icontains=keyword)
        elif q == "order_no":
            rows = rows.filter(order__no__icontains=keyword)

    if type and len(type):
        rows = rows.filter(type=type)
    if date_begin and len(date_begin):
        rows = rows.filter(create_time__gte=date_begin)
    if date_end and len(date_end):
        rows = rows.filter(create_time__lte=date_end + ' 23:59:59')

    if export:
        headers = (u'用户', u'类别', u'金额', u'余额', u'描述', u'备注', u'时间')
        data = []
        for row in rows:
            d = row.to_dict()
            data.append((
                d['create_user_text'],
                d['type_text'],
                d['total_fee'],
                d['balance'],
                d['description'],
                d['notes'],
                d['create_time'],
            ))

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

        filename = settings.TMP_ROOT + "/export.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:
            data.append(row.to_dict())
        dict = {"total": total, "rows": data}
        return JSONResponse(dict)
Exemplo n.º 30
0
def feedback_reply(request):
    id = request.POST.get('id')
    content = request.POST.get('content')

    instance = get_object_or_404(Feedback, pk=id)
    instance.reply_content = content
    instance.reply_time = timezone.now()
    instance.save()

    return JSONResponse({})