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({})
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})
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)
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})
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))
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))
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)
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'保存失败!')
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
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))
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)
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))
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)
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)
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)
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)
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)
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)
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})
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': {}})
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))
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': {}})
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("身份有误!")
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({})
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({})
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
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})
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))
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)
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({})