コード例 #1
0
ファイル: views.py プロジェクト: igorcoding/digrecog
def recognise(request):
    global nn
    try:
        if 'nn' in request.session:
            # nn = NetworkReader.readFrom('data/' + request.session['nn'] + '.nn')
            img = request.POST['img_data']
            img, img_data = _transform_img(img)
            print img_data
            print img_data.ravel().tolist()
            # activation = nn.activate(_img_data_to_vec(img_data))
            activation = nn.call(_img_data_to_vec(img_data))
            print activation
            return JsonResponse({
                'status': 'ok',
                'activation': activation.tolist()
            })
        else:
            resp = JsonResponse({
                'status': 'error',
                'msg': 'Run train first'
            })
            resp.status_code = 400
            return resp

    except Exception as e:
        print e
        resp = JsonResponse({
            'status': 'error',
            'msg': e
        })
        resp.status_code = 500
        return resp
コード例 #2
0
ファイル: views.py プロジェクト: igorcoding/digrecog
def retrain(request):
    dataset_name = request.POST['dataset_name']

    try:
        X = []
        y = []
        with open('data/' + dataset_name + '.csv', 'r') as f:
            csv_f = csv.reader(f, delimiter=',')
            for l in csv_f:
                X.append([float(ll) for ll in l[:-1]])
                y.append(_number_to_output_vector(int(float(l[-1]))))

        X = np.asarray(X)
        y = np.asarray(y)

        _train2(X, y, dataset_name, 1500)
        request.session['nn'] = dataset_name

        for im, l in zip(X, y):
            print l, nn.call(im)

        return JsonResponse({
            'status': 'ok'
        })
    except Exception as e:
        print e
        resp = JsonResponse({
            'status': 'error',
            'msg': e.message
        })
        resp.status_code = 500
        return resp
コード例 #3
0
ファイル: views.py プロジェクト: igorcoding/digrecog
def train_mnist(request):
    try:
        data = scipy.io.loadmat("mnist/ex4data1.mat")
        X = data["X"][:15000]
        y = data["y"][:15000]
        y[y == 10] = 0

        y = [_number_to_output_vector(yy) for yy in y]

        print len(X), len(y)

        f = uuid.uuid4().hex
        _train(X, y, f, 50)
        request.session['nn'] = f

        return JsonResponse({
            'status': 'ok'
        })
    except Exception as e:
        print e
        resp = JsonResponse({
            'status': 'error',
            'msg': e.message
        })
        resp.status_code = 500
        return resp
コード例 #4
0
 def get(self, request):
     response_data = {
         attr[:-4]: os.environ.get(getattr(self, attr))
         for attr in dir(self)
         if attr.endswith('_key') and getattr(self, attr)
     }
     response = JsonResponse(response_data)
     if not response_data['build_date'] or not response_data['commit_id']:
         response.status_code = 501
     return response
コード例 #5
0
    def get(self, request):
        from moj_irat.healthchecks import registry

        response_data = {}
        for response in registry.run_healthchecks():
            response = response.get_dict()
            check_name = response.pop('name')
            response_data[check_name] = response
        all_passed = all(response['status'] for response in response_data.values())
        response_data['*'] = dict(status=all_passed)

        response = JsonResponse(response_data)
        if not all_passed:
            response.status_code = 500
        return response
コード例 #6
0
ファイル: views.py プロジェクト: igorcoding/digrecog
def train(request):
    images = json.loads(request.POST['dataset'])
    random.shuffle(images)

    filename = str(int(time.time())) + "_" + str(uuid.uuid4().hex)
    try:
        images_data = []
        with open('data/' + filename + '.csv', 'w') as f:
            a = csv.writer(f, delimiter=',')
            for img, label in images:
                img_data = _img_data_to_vec(_transform_img(img)[1])
                img_data = np.append(img_data, [label])
                images_data.append(img_data)

            a.writerows(images_data)

        X = []
        y = []

        for d in images_data:
            X.append(d[:-1])
            y.append(_number_to_output_vector(int(d[-1])))

        _train2(X, y, filename, 10000)
        request.session['nn'] = filename

        for im in images_data:
            print im[-1], nn.call(im[:-1])

        return JsonResponse({
            'status': 'ok'
        })
    except Exception as e:
        print e
        resp = JsonResponse({
            'status': 'error',
            'msg': e.message
        })
        resp.status_code = 500
        return resp
コード例 #7
0
ファイル: views.py プロジェクト: unaxfromsibiria/bonuscardsys
    def post(self, request):
        result = {'ok': False}
        pub_key = request.POST.get('key')
        password = request.POST.get('password')
        if pub_key and password:

            sec_data = cache.get(pub_key)
            if isinstance(sec_data, dict):
                logger = logging.getLogger('system')
                try_count = sec_data.get('try_count', 0) + 1
                sec_data.update(try_count=try_count)
                cache.set(pub_key, sec_data, 300)
                if try_count < settings.AUTH_COUNT_LIMIT:
                    sec_data = '{}{}{}'.format(
                        pub_key, settings.IN_PASSWORD, sec_data.get('key'))
                    sha = hashlib.sha256(sec_data.encode())
                    result.update(ok=password == sha.hexdigest())
                else:
                    cache.delete(pub_key)
                    logger.warn(
                        'Auth count limit! From: {}'.format(
                            get_client_ip(request)))

        if result.get('ok'):
            rand = SysRand()
            key_part1, key_part2, value = rand.create_keys(count=3)
            result.update(msg=msg.AUTH_OK)
            result = JsonResponse(result)
            key = '{}{}'.format(key_part1, key_part2)
            time_limit = 3600 * settings.AUTH_TIME
            cache.set(
                key,
                {'value': value, 'open': datetime_now().isoformat()},
                time_limit)

            result.set_cookie(
                settings.AUTH_COOKIE_NAME,
                value='{}:{}'.format(key, value),
                max_age=time_limit)

            logger.info(
                'Manager login from {} new key: {}'.format(
                    get_client_ip(request), key))

        else:
            result.update(msg=msg.INCORECT_PASSWORD)
            result = JsonResponse(result)
        return result
コード例 #8
0
def json_lista_evento(request, id_usuario):
    usuario = User.objects.get(id=id_usuario)
    evento = Evento.objects.filter(usuario=usuario).values('id', 'titulo')
    return JsonResponse(list(evento), safe=False)
コード例 #9
0
ファイル: views.py プロジェクト: nathan-cruz77/foodnator
def fetch_restaurant(request, slug=''):
    if slug == 'not-found':
        return JsonResponse({}, status=404)
    return JsonResponse(restaurant_svc.fetch(slug))
コード例 #10
0
ファイル: views.py プロジェクト: nathan-cruz77/foodnator
def list_groups(request):
    return JsonResponse({'data': group_svc.list_groups(request.user)})
コード例 #11
0
def actualizarTarea(request, tareid):
    try:

        with transaction.atomic():

            estado = 0
            tarea = models.Task.objects.get(pk=tareid)

            restriction = models.TaskRestriction.objects.get(
                pk=request.POST.get('task_restriction_id'))
            restriction.start_time = request.POST.get('tarfechainicio')
            restriction.task_end_date = request.POST.get('tarfechacierre')
            restriction.start_time = request.POST.get('HoraInicio')
            restriction.end_time = request.POST.get('HoraCierre')
            restriction.save()

            taskpriority = models.TaskPriority.objects.get(
                pk=request.POST.get('task_priority_id'))

            tasktipe = models.TaskType.objects.get(
                pk=request.POST.get('task_type_id'))

            projecto = models.Project.objects.get(
                pk=request.POST.get('project_id'))
            tarea.task_name = request.POST.get('task_name')
            tarea.task_type = tasktipe
            tarea.task_quantity = request.POST.get('task_quantity')
            tarea.project = projecto
            tarea.task_description = request.POST.get('task_description')
            tarea.task_priority = taskpriority
            tarea.task_restriction = restriction
            tarea.save()
            """
            if estado == 2 and tarea.tareestado != 2:

                if validarTarea(tarea):

                    tarea.tareestado = estado
                    tarea.save()

            else:

                tarea.tareestado = estado
                tarea.save()

            # Verificando que el recurso haya sido llamado desde Gestión de Cambios
            if request.POST.get('gestionCambio', None) is not None:

                # Obtener los usuarios que hacen del proyecto
                usuarios = obtenerEmailsEquipo(tarea.proyid)

                # Detalle del Cambio
                detalle = "Encuestas Objetivo: {}".format(tarea.tarerestriccant)

                # Enviar Notificaciones
                gestionCambios(usuarios, 'tarea', tarea.task_name, 1, detalle)"""

            response = {
                'code': 200,
                'tarea': serializers.serialize('python', [tarea])[0],
                'status': 'success'
            }

    except ObjectDoesNotExist as e:
        response = {'code': 404, 'message': str(e), 'status': 'error' + str(e)}

    except ValidationError as e:

        try:
            errors = dict(e)
        except ValueError:
            errors = list(e)[0]

        response = {'code': 400, 'errors': errors, 'status': 'error'}

    except IntegrityError as e:
        response = {'code': 500, 'message': str(e), 'status': 'error'}

    return JsonResponse(response, safe=False, status=response['code'])
コード例 #12
0
def lista(request):
    usuario = request.user
    evento = Envento.objects.all().values('id', 'titulo')

    return JsonResponse(list(evento), safe=False)
コード例 #13
0
ファイル: views.py プロジェクト: danialzinolla/Web-dev
def category_detail(request , category_id):
    try:
        category = Category.objects.get(id=category_id)
    except Category.DoesNotExist as e:
        return JsonResponse({'error': str(e)})
    return JsonResponse(category.to_json())
コード例 #14
0
ファイル: views.py プロジェクト: danialzinolla/Web-dev
def product_detail(request, product_id):
    try:
        product = Product.objects.get(id=product_id)
    except Product.DoesNotExist as e:
        return JsonResponse({'error': str(e)})
    return JsonResponse(product.to_json())
コード例 #15
0
def get_alerts(request, userid):
    alerts = Alert.objects.filter(user=userid)
    serializer = serialize("json", alerts)
    return JsonResponse({'alerts': serializer},
                        safe=False,
                        status=status.HTTP_200_OK)
コード例 #16
0
    }
    file = request.FILES.get('file')
    if not file:
        res['code'] = -2
        res['res_msg'] = u'请先选择文件!'
    else:
        try:
            res['list'] = handle_uploaded_file(file)
        except Exception, e:
            logger.info(e)
            res['code'] = -3
            res['res_msg'] = u'文件格式有误!'
        else:
            res['code'] = 0

    return JsonResponse(res)


def handle_uploaded_file(f):
    ret = []
    with open('./name', 'wb+') as destination:
        for chunk in f.chunks():
            destination.write(chunk)
    with open('./name', 'r') as file:
        for line in file:
            line = line.decode('gbk')
            #             line = unicode(line, errors='ignore')
            ret.append(line.strip())
    return ret

コード例 #17
0
ファイル: views.py プロジェクト: ChenJhua/dailyfresh
    def post(self, request):
        """支付"""
        if not request.user.is_authenticated():
            return JsonResponse({'code': 1, 'errmsg': '请先登录'})
        # 获取请求参数
        order_id = request.POST.get('order_id')
        # 判断参数合法性
        if not order_id:
            return JsonResponse({'code': 2, 'errmsg': '订单id不能为空'})
        # 查询订单对象
        try:
            order = OrderInfo.objects.get(
                order_id=order_id,
                status=1,  # 1表示订单是未支付
                user=request.user  # 指定为该用户的订单
            )

        except OrderInfo.DoesNotExist:
            return JsonResponse({'code': 3, 'errmsg': '无效订单,无法支付'})
        # 1. 初始化
        from alipay import AliPay
        app_private_key_string = open("apps/orders/app_private_key.pem").read()
        alipay_public_key_string = open(
            "apps/orders/alipay_public_key.pem").read()

        alipay = AliPay(
            appid="2016091500514094",  # 指定沙箱应用id,后期指定为自己创建应用的id
            app_notify_url=None,  # 默认回调url
            app_private_key_string=app_private_key_string,
            alipay_public_key_string=alipay_public_key_string,
            # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,
            sign_type="RSA2",  # RSA 或者 RSA2   # 使用RSA测试会有问题
            debug=True  # 默认False, 如果是True表示使用沙箱环境
        )

        # todo:调用第三方sdk查询支付结果

        while True:
            dict_data = alipay.api_alipay_trade_query(out_trade_no=order_id)
            code = dict_data.get('code')
            trade_status = dict_data.get('trade_status')
            trade_no = dict_data.get('trade_no')  # 支付交易号,保存到生鲜项目订单信息表中

            # 10000接口调用成功
            if code == '10000' and trade_status == 'TRADE_SUCCESS':
                # 订单支付成功,修改订单状态为已支付
                order.status = 4
                order.trade_no = trade_no
                order.save()  # 修改订单信息表
                return JsonResponse({'code': 0, 'message': '支付成功'})
            elif (code == '10000'
                  and trade_status == 'WAIT_BUYER_PAY') or code == '40004':
                # 40004暂时查询失败,等一会查询,可能就成功
                # WAIT_BUYER_PAY等待买家付款
                sleep(2)
                print(code, trade_status)
                continue
            else:
                # 支付失败
                print(code, trade_status)
                return JsonResponse({
                    'code': 1,
                    'errmsg': '支付失败:code=%s' % code
                })
コード例 #18
0
def all4cats_list_published(request):
    all4cats = All4Cats.objects.filter(published=True)

    if request.method == 'GET':
        all4cats_serializer = All4CatsSerializer(all4cats, many=True)
        return JsonResponse(all4cats_serializer.data, safe=False)
コード例 #19
0
ファイル: views.py プロジェクト: ChenJhua/dailyfresh
    def post(self, request):
        # 登录判断
        if not request.user.is_authenticated():
            return JsonResponse({'code': 1, 'errmsg': '请先登录'})

        # 获取请求参数:address_id, pay_method, sku_ids_str
        address_id = request.POST.get('address_id')
        pay_method = request.POST.get('pay_method')
        sku_ids_str = request.POST.get('sku_ids_str')

        # 校验参数不能为空
        if not all([address_id, pay_method, sku_ids_str]):
            return JsonResponse({'code': 2, 'errmsg': '参数不能为空'})
        # 判断地址是否存在
        try:
            address = Address.objects.get(id=address_id)
        except Address.DoesNotExist:
            return JsonResponse({'code': 3, 'errmsg': '该地址不存在'})

        # 新增保存点
        point = transaction.savepoint()

        try:
            # todo: 修改订单信息表: 保存订单数据到订单信息表中(新增一条数据)
            total_count = 0
            total_amount = 0
            trans_cost = 10

            # 当前时间+用户id
            order_id = datetime.now().strftime('%Y%m%d%H%M%S') + str(
                request.user.id)
            order = OrderInfo.objects.create(
                order_id=order_id,
                total_count=total_count,
                total_amount=total_amount,
                trans_cost=trans_cost,
                pay_method=pay_method,
                user=request.user,
                address=address,
            )

            # 从Redis查询出购物车数据
            # 注意: 返回的是字典, 键值都为bytes类型
            # cart_1 = {1: 2, 2: 2}
            strict_redis = get_redis_connection()  # type:StrictRedis
            key = 'cart_%s' % request.user.id

            sku_ids = sku_ids_str.split(',')  # str->list
            # todo: 核心业务: 遍历每一个商品, 并保存到订单商品表
            for sku_id in sku_ids:
                # 查询订单中的每一个商品
                try:
                    sku = GoodsSKU.objects.get(id=sku_id)
                except GoodsSKU.DoesNotExist:
                    # 回滚到保存点,撤销所有的sql操作
                    transaction.savepoint_rollback(point)
                    return JsonResponse({'code': 4, 'errmsg': '商品不存在'})
                # 获取商品数量,并判断库存
                count = strict_redis.hget(key, sku_id)
                count = int(count)
                if count > sku.stock:
                    # 回滚到保存点,撤销所有的sql操作
                    transaction.savepoint_rollback(point)
                    return JsonResponse({'code': 5, 'errmsg': '库存不足'})

                # todo: 修改订单商品表: 保存订单商品到订单商品表(新增多条数据)
                OrderGoods.objects.create(
                    count=count,
                    price=sku.price,
                    order=order,
                    sku=sku,
                )

                # todo: 修改商品sku表: 减少商品库存, 增加商品销量
                sku.stock -= count
                sku.sales += count
                sku.save()

                # 累加商品数量和总金额
                total_count += count
                total_amount += (sku.price * count)

            # todo: 修改订单信息表: 修改商品总数量和总金额
            order.total_count = total_count
            order.total_amount = total_amount
            order.save()
        except:
            # 回滚到保存点,撤销所有的sql操作
            transaction.savepoint_rollback(point)
            return JsonResponse({'code': 6, 'errmsg': '创建订单失败'})
        transaction.savepoint_commit(point)
        # 从Redis中删除购物车中的商品
        # cart_1 = {1: 2, 2: 2}
        # redis命令: hdel cart_1 1 2
        # 列表 -> 位置参数
        strict_redis.hdel(key, *sku_ids)
        # 订单创建成功, 响应请求,返回json
        return JsonResponse({'code': 0, 'message': '创建订单成功'})
コード例 #20
0
    def post(self, request):
        """订单创建"""
        # 判断用户是否登录
        user = request.user
        if not user.is_authenticated:
            # 用户未登录
            return JsonResponse({'res': 0, 'errmsg': '用户未登录'})

        # 获取参数
        addr_id = request.POST.get('addr_id')
        pay_method = request.POST.get('pay_method')
        sku_ids = request.POST.get('sku_ids')

        # 校验参数
        if not all([addr_id, pay_method, sku_ids]):
            return JsonResponse({'res': 1, 'errmsg': '参数不完整'})
        # 校验支付方式
        if pay_method not in OrderInfo.PAY_METHOD.keys():
            return JsonResponse({'res': 2, 'errmsg': '非法的支付方式'})
        # 校验地址
        try:
            addr = Address.objects.get(id=addr_id)
        except Address.DoesNotExist:
            #地址不存在
            return JsonResponse({'res': 3, 'errmsg': '地址非法'})

        # todo: 创建订单核心业务
        # 用户每下一个订单,就需要向df_order_info表中加入一条记录;用户有几个商品,就需要向df_order_goods表中加入几条记录

        # 组织参数
        # 订单id:20171122181639+用户id
        order_id = datetime.now().strftime('%Y%m%d%H%M%S') + str(user.id)
        # 运费
        transit_price = 10

        # 总数目和总金额
        total_count = 0
        total_price = 0

        # 设置django事务点
        save_id = transaction.savepoint()
        try:
            # todo: 向df_order_info表中加入一条记录
            order = OrderInfo.objects.create(order_id=order_id,
                                             user=user,
                                             addr=addr,
                                             pay_method=pay_method,
                                             total_count=total_count,
                                             total_price=total_price,
                                             transit_price=transit_price)

            # todo: 用户有几个商品,就需要向df_order_goods表中加入几条记录
            conn = get_redis_connection('default')
            cart_key = 'cart_%d' % user.id

            sku_ids = sku_ids.split(',')
            for sku_id in sku_ids:
                # 获取商品的信息
                try:
                    # select * from fd_goods_sku where id = sku_id for update;   悲观锁
                    sku = GoodsSKU.objects.select_for_update().get(id=sku_id)
                except GoodsSKU.DoesNotExist:
                    transaction.savepoint_rollback(save_id)
                    return JsonResponse({'res': 4, 'errmsg': '商品不存在'})

                # 从redis中获取用户所要购买的商品的数量
                count = conn.hget(cart_key, sku_id)
                # todo: 判断商品的库存
                if int(count) > sku.stock:
                    transaction.savepoint_rollback(save_id)
                    return JsonResponse({'res': 6, 'errmsg': '库存不足'})
                # todo: 向df_order_goods表中加入几条记录
                OrderGoods.objects.create(order=order,
                                          sku=sku,
                                          count=count,
                                          price=sku.price)
                # todo: 更新商品的库存和销量
                sku.stock -= int(count)
                sku.sales += int(count)
                sku.save()
                # todo: 累加计算商品的总数和总价格
                amount = sku.price * int(count)
                total_count += int(count)
                total_price += amount
            # todo: 更新商品表中的商品的总数量和总价格
            order.total_count = total_count
            order.total_price = total_price
            order.save()
        except Exception as e:
            transaction.savepoint_rollback(save_id)
            return JsonResponse({'res': 7, 'errmsg': '下单失败'})
        # 提交事务
        transaction.savepoint_commit(save_id)

        # todo: 清除用户购物车(redis)中的商品信息
        conn.hdel(cart_key, *sku_ids)
        # 返回应答
        return JsonResponse({'res': 5, 'message': '订单创建成功'})
コード例 #21
0
 def form_invalid(self, form):
     # Get initial response
     response = super(EditObjectModalView, self).form_invalid(form)
     data = {'is_valid': False, 'responseText': response.rendered_content}
     return JsonResponse(data)
コード例 #22
0
 def post(self, request, *args, **kwargs):
     cart = self.get_object()
     cart.deleted = True
     cart.save()
     return JsonResponse({"status": "success"}, status=200)
コード例 #23
0
def admin_coupon(request):
    admin_user = request.user
    if request.method == "GET":
        if not (admin_user.is_authenticated() and admin_user.is_staff):
            return redirect(
                reverse('admin:login') + "?next=" + reverse('admin_coupon'))
        return render(request, "admin_coupon.html")
    if request.method == "POST":
        res = {}
        if not request.is_ajax():
            raise Http404
        if not (admin_user.is_authenticated() and admin_user.is_staff):
            res['code'] = -1
            res['url'] = reverse('admin:login') + "?next=" + reverse(
                'admin_coupon')
            return JsonResponse(res)
        if not admin_user.has_admin_perms('002'):
            res['code'] = -5
            res['res_msg'] = u'您没有操作权限!'
            return JsonResponse(res)
        event_id = request.POST.get('id', None)
        cash = request.POST.get('cash', None)
        score = request.POST.get('score', None)
        type = request.POST.get('type', None)
        reason = request.POST.get('reason', None)
        type = int(type)
        if not event_id or type == 1 and not (
                cash and
                score) or type == 2 and not reason or type != 1 and type != 2:
            res['code'] = -2
            res['res_msg'] = u'传入参数不足,请联系技术人员!'
            return JsonResponse(res)
        event = UserEvent.objects.get(id=event_id)
        event_user = event.user
        log = AuditLog(user=admin_user, item=event)
        translist = None
        scoretranslist = None
        if type == 1:
            try:
                cash = float(cash) * 100
                cash = int(cash)
                score = int(score)
            except:
                res['code'] = -2
                res['res_msg'] = u"操作失败,输入不合法!"
                return JsonResponse(res)
            if cash < 0 or score < 0:
                res['code'] = -2
                res['res_msg'] = u"操作失败,输入不合法!"
                return JsonResponse(res)
            if event.audit_state != '1':
                res['code'] = -3
                res['res_msg'] = u'该项目已审核过,不要重复审核!'
                return JsonResponse(res)
            if event.translist.exists():
                logger.critical("Returning cash is repetitive!!!")
                res['code'] = -3
                res['res_msg'] = u"操作失败,返现重复!"
            else:
                log.audit_result = True
                translist = charge_money(event_user, '0', cash, u'优惠券兑换')
                scoretranslist = charge_score(event_user, '0', score, u'优惠券兑换')
                if translist and scoretranslist:
                    event.audit_state = '0'
                    translist.user_event = event
                    translist.save(update_fields=['user_event'])
                    scoretranslist.user_event = event
                    scoretranslist.save(update_fields=['user_event'])
                    res['code'] = 0

                    project = event.content_object.project
                    msg_content = u'您提交的"' + project.title + u'"兑换申请已审核通过。'
                    Message.objects.create(user=event_user,
                                           content=msg_content,
                                           title=u"优惠券兑换审核")
                else:
                    res['code'] = -4
                    res['res_msg'] = "注意,重复提交时只提交失败项目,成功的可以输入0。\n"
                    if not translist:
                        logger.error(u"Charging cash is failed!!!")
                        res['res_msg'] += u"现金记账失败,请检查输入合法性后再次提交!"
                    if not scoretranslist:
                        logger.error(u"Charging score is failed!!!")
                        res['res_msg'] += u"积分记账失败,请检查输入合法性后再次提交!"
        else:
            event.audit_state = '2'
            log.audit_result = False
            log.reason = reason
            res['code'] = 0

            project = event.content_object.project
            msg_content = u'您提交的"' + project.title + u'"兑换申请审核未通过,原因:' + reason
            Message.objects.create(user=event_user,
                                   content=msg_content,
                                   title=u"优惠券兑换审核")

        if res['code'] == 0:
            admin_event = AdminEvent.objects.create(admin_user=admin_user,
                                                    custom_user=event_user,
                                                    event_type='10')
            if translist:
                translist.admin_event = admin_event
                translist.save(update_fields=['admin_event'])
            if scoretranslist:
                scoretranslist.admin_event = admin_event
                scoretranslist.save(update_fields=['admin_event'])
            log.admin_item = admin_event
            log.save()
            event.audit_time = log.time
            event.save(update_fields=['audit_state', 'audit_time'])
        return JsonResponse(res)
コード例 #24
0
ファイル: views.py プロジェクト: danialzinolla/Web-dev
def category_list(request):
    categories = Category.objects.all()
    categories_json = [category.to_json() for category in categories]
    return JsonResponse(categories_json, safe=False)
コード例 #25
0
def deliver_coupon(request):
    admin_user = request.user
    if request.method == 'GET':
        if not (admin_user.is_authenticated() and admin_user.is_staff):
            return redirect(
                reverse('admin:login') + "?next=" + reverse('admin_index'))
        else:
            return render(request, 'deliver_coupon.html',
                          {'type_list': COUPON_TYPE})
    elif request.method == 'POST':
        result = {'code': 0}
        if not (admin_user.is_authenticated() and admin_user.is_staff):
            result['code'] = -4
            result['res_msg'] = u'请登录!'
            return JsonResponse(result)
        if not admin_user.has_admin_perms('006'):
            result['code'] = -5
            result['res_msg'] = u'您没有操作权限!'
            return JsonResponse(result)
        coupon_type = request.POST.get('selecttype')
        project_id = request.POST.get('selectproject')
        if coupon_type is None or project_id is None:
            raise Http404
        else:
            project_id = int(project_id)
            coupon_type = str(coupon_type)
        project = CouponProject.objects.get(id=project_id)
        success_count = 0
        fail_list = []
        if coupon_type == '0' or coupon_type == '1':
            select_user = request.POST.get('selectuser')
            if select_user is None:
                raise Http404
            else:
                select_user = str(select_user)
            if select_user == '1':
                for user in MyUser.objects.all():
                    Coupon.objects.create(user=user, project=project)
                    msg_content = u'您收到一张优惠券:' + project.title + u',到期日为' + \
                        project.endtime.strftime("%Y-%m-%d") + u",请及时使用。"
                    Message.objects.create(user=user,
                                           content=msg_content,
                                           title=u"新的优惠券")
                    success_count += 1
            elif select_user == '2':
                select_list_str = request.POST.get('users')
                if select_list_str is None:
                    raise Http404
                else:
                    select_list_str = str(select_list_str)
                select_list = select_list_str.strip().split('\n')
                user_set = set([])
                for user in select_list:
                    if user:
                        user_set.add(user)
                for username in user_set:
                    try:
                        user = MyUser.objects.get(username=username)
                        Coupon.objects.create(user=user, project=project)
                        msg_content = u'您收到一张优惠券:' + project.title + u',到期日为' + \
                            project.endtime.strftime("%Y-%m-%d") + u",请及时使用。"
                        Message.objects.create(user=user,
                                               content=msg_content,
                                               title=u"新的优惠券")
                    except:
                        fail_list.append(username)
                    else:
                        success_count += 1
        elif coupon_type == '2':
            select_list_str = request.POST.get('codes')
            if select_list_str is None:
                raise Http404
            else:
                select_list_str = str(select_list_str)
            select_list = select_list_str.strip().split('\n')
            code_set = set([])
            for code in select_list:
                if code:
                    code_set.add(code)
            for code in code_set:
                Coupon.objects.create(project=project, exchange_code=code)
                success_count += 1
        result.update({'succ_num': success_count, 'fail_list': fail_list})
        return JsonResponse(result)
コード例 #26
0
ファイル: views.py プロジェクト: danialzinolla/Web-dev
def product_list(request):
    products = Product.objects.all()
    products_json = [product.to_json() for product in products]
    return JsonResponse(products_json, safe=False)
コード例 #27
0
ファイル: views.py プロジェクト: nathan-cruz77/foodnator
def search_users(request):
    data = user_svc.search(request.user, request.GET.get('query'))
    return JsonResponse({'data': data})
コード例 #28
0
def listadoTareas(request):

    try:
        # Obtener usuario autenticado
        usuario = usuarioAutenticado(request)
        person = models.Person.objects.get(user__userid=usuario.userid)
        tareasUsuario = []
        proyectosUsuario = []
        n = ""
        # Superadministrador
        if str(person.role_id) == ROL_SUPER_ADMIN:
            tareasUsuario = []
            n = "select tk.* from opx.task as tk order by tk.task_creation_date DESC;"

        # Consulta de proyectos para un usuario proyectista
        elif str(person.role_id) == ROL_PROYECTISTA:
            n = "select tk.*, restric.* \
                from opx.person as persona  \
                inner join opx.project as proyecto on proyecto.proj_owner_id = persona.pers_id  \
                inner join opx.task as tk on tk.project_id = proyecto.proj_id \
                inner join opx.task_restriction as restric on tk.task_restriction_id = restric.restriction_id  \
                where persona.pers_id = '" + str(
                person.pers_id) + "' order by tk.task_creation_date DESC;"

        # Consulta de proyectos para un usuario voluntario o validador
        elif str(person.role_id) == ROL_VOLUNTARIO or str(
                person.pers_id) == ROL_VALIDADOR:
            n = "select distinct tk.*, restric.* \
                from opx.person as person \
                inner join opx.team_person as tp on person.pers_id = tp.person_id \
                inner join opx.project_team as pt on tp.team_id = pt.team_id \
                inner join opx.task as tk on tk.project_id = pt.project_id \
                inner join opx.task_restriction as restric on tk.task_restriction_id = restric.restriction_id \
                where person.pers_id = '" + str(
                person.pers_id) + "' order by tk.task_creation_date DESC;"

    # ================ Obtener página validación de la misma ========================
        page = request.GET.get('page')

        if (page is None):
            page = 1

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

        with connection.cursor() as cursor:
            cursor.execute(n)

            # formatear respuesta de base de datos
            tareas = dictfetchall(cursor)

        # Progreso de las Tareas
        for t in tareas:
            t['task_type_name'] = (models.TaskType.objects.get(
                pk=t['task_type_id'])).task_type_name
            t['instrument_name'] = (models.Instrument.objects.get(
                pk=t['instrument_id'])).instrument_name
            t['proj_name'] = (models.Project.objects.get(
                pk=t['project_id'])).proj_name
            t['priority_name'] = (models.TaskPriority.objects.get(
                pk=t['task_priority_id'])).priority_name
            t['task_completness'] = t['task_completness'] * 100

        # Obtener Búsqueda y validación de la misma
        search = request.GET.get('search')

        if search is not None:
            tareas = models.Task.objects.filter(task_name__icontains=search)
            tareas = list(tareas.values())
        if all is not None and all == "1":
            data = {'code': 200, 'tareas': tareas, 'status': 'success'}
        else:
            # Obtener Página
            paginator = Paginator(tareas, 10)
            # Obtener lista de tareas
            tareas = paginator.page(page).object_list
            data = {
                'code': 200,
                'paginator': {
                    'currentPage': page,
                    'perPage': paginator.per_page,
                    'lastPage': paginator.num_pages,
                    'total': paginator.count
                },
                'tareas': tareas,
                'status': 'success'
            }  # Obtener Búsqueda y validación de la misma

    except EmptyPage:

        data = {
            'code': 400,
            'message': 'Página inexistente',
            'status': 'error'
        }

    return JsonResponse(data, safe=False, status=data['code'])
コード例 #29
0
    def process_view(self, request, view_func, view_args, view_kwargs):
        """
        Validate only the token introspect.
        :param request: django request
        :param view_func:
        :param view_args: view args
        :param view_kwargs: view kwargs
        :return:
        """

        print ('DEBUG:', request)

        # do not block the access to root!
        if request.path_info == '/':
            logger.debug('** exclude path found, skipping')
            return None
        
        # CONTINGENCY SOLUTION!!! review API to avoid this
        # if request.path_info[-7:] == '/series':
        #     return None

        whitelist = [
             '/api/v1/api',
             '/api/v1/alive',
             '/api/v1/ready',
             '/oformat/WORD/documentation',
             '/oformat/EXCEL/documentation', 
             '/export_download'
        ]
        for iwhite in whitelist:
            if request.path_info.endswith(iwhite):
                print ('skipped:', request.path_info)
                return None

        if hasattr(settings, 'KEYCLOAK_BEARER_AUTHENTICATION_EXEMPT_PATHS'):
            path = request.path_info.lstrip('/')

            if any(re.match(m, path) for m in
                   settings.KEYCLOAK_BEARER_AUTHENTICATION_EXEMPT_PATHS):
                logger.debug('** exclude path found, skipping')
                return None

        try:
            roles = view_func.cls.roles
        except AttributeError as e:
            return JsonResponse({"detail": NotAuthenticated.default_detail}, status=NotAuthenticated.status_code)

        if 'HTTP_AUTHORIZATION' not in request.META:
            return JsonResponse({"detail": NotAuthenticated.default_detail}, status=NotAuthenticated.status_code)

        auth_header = request.META.get('HTTP_AUTHORIZATION').split()
        token = auth_header[1] if len(auth_header) == 2 else auth_header[0]

        try:
            userinfo = self.keycloak.userinfo(token)
        except KeycloakError as e:
            return JsonResponse({"detail": AuthenticationFailed.default_detail}, status=AuthenticationFailed.status_code)

        has_role = True
        for role in roles:
            if role not in userinfo['groups']:
                has_role = False

        # In case we need to verify token. But since we verify it by using userinfo call, it is not necessary atm.
        # KEYCLOAK_PUBLIC_KEY = self.client_public_key
        # options = {"verify_signature": True, "verify_aud": True, "verify_exp": True}
        # token_info = self.keycloak.decode_token(token, key=KEYCLOAK_PUBLIC_KEY, options=options)

        # if token_info['realm_access'] and token_info['realm_access']['roles']:
        #     print(token_info['realm_access']['roles'])

        if has_role:
            return None

        # User Permission Denied
        return JsonResponse({"detail": PermissionDenied.default_detail}, status=PermissionDenied.status_code)
コード例 #30
0
def get_data(request):
    data = {
        "sales": 100,
        "customers": 10,
    }
    return JsonResponse(data)
コード例 #31
0
def complete_transfer(request, stripe_id):
    t = Transfer.objects.get(stripe_id=stripe_id)
    t.metadata['completed'] = not t.metadata.get('completed', None)
    t.save()
    return JsonResponse({'completed': t.metadata['completed']})
コード例 #32
0
def play_game(request, game_id):
    # return HttpResponse("play_game")
    game = get_object_or_404(Game, id=game_id)
    whether_owned = request.user.user_profile._ownedGames.filter(
        id=game_id).exists()
    if not whether_owned:
        messages.error(request, "Sorry, you don't own the game.")
        return HttpResponseRedirect(reverse("game_list"))

    if request.method == 'GET':
        high_scores = Game_Score.objects.filter(
            played_game=game).order_by("-score")[0:10]
        ranking = [s.to_json() for s in high_scores]
        if Game_Score.objects.filter(
                played_game=game, _player=request.user.user_profile).exists():
            player_highest_score = Game_Score.objects.filter(
                played_game=game,
                _player=request.user.user_profile).order_by("-score")[0]
        else:
            player_highest_score = 0
        context = {
            'game': game.to_json(),
            'game_url': game.url,
            'ranking': ranking,
            "player_highest_score": player_highest_score
        }
        return render(request, "game/play_game.html", context)

    elif request.method == 'POST':
        response = {"error": None, "result": None}
        if request.POST.get('messageType') == 'SCORE':
            scoreForm = ScoreForm(request.POST)
            if scoreForm.is_valid():
                Game_Score.objects.create(
                    played_game=game,
                    score=scoreForm.cleaned_data['score'],
                    played_time=timezone.now(),
                    _player=request.user.user_profile)
            else:
                response['error'] = scoreForm.errors
            return JsonResponse(response)

        elif request.POST.get('messageType') == 'SAVE':
            saveForm = SaveForm(request.POST)
            if saveForm.is_valid():
                saved_game = Saved_Game.objects.update_or_create(
                    played_game=game, _player=request.user.user_profile)[0]
                saved_game.saved_time = timezone.now()
                saved_game.state = saveForm.cleaned_data['gameState']
                saved_game.save()
            else:
                response['error'] = saveForm.errors

            return JsonResponse(response)

        elif request.POST.get('messageType') == 'LOAD_REQUEST':
            saved_game = Saved_Game.objects.filter(
                played_game=game,
                _player=request.user.user_profile).order_by("-saved_time")
            if saved_game.exists():
                response['result'] = saved_game[0].state
            else:
                response['error'] = "No saved game state."

            return JsonResponse(response)

        else:
            response['error'] = "Invalid message type."
            return JsonResponse(response)
    else:
        return HttpResponse("Invalid request method")
コード例 #33
0
def new_dog(request):

    if request.method == 'GET':
        user = request.user
        dog_dict = {}
        count = 0
        user_profile = UserProfile.objects.get(user=user)
        dogs = Dog.objects.filter(owner=user_profile)

        for dog in dogs:
            add = {
                'name': dog.dog_name,
                'age': dog.age,
                'sex': dog.sex,
                'size': dog.size,
                'temperment': dog.temperment,
                'crate_trained': dog.crate_trained,
                'details': dog.details,
                'id': dog.id
            }

            dog_dict.update({count: add})
            count += 1

        return JsonResponse(dog_dict)

    data = request.body
    data = str(data, 'utf-8')
    form = json.loads(data)

    dog_name = form.get('dog_name').title()
    age = form.get('age')
    sex = form.get('sex')
    size = form.get('size')
    temperment = form.get('temperment')
    crate_trained = bool(form.get('crate_trained'))
    details = form.get('details')
    user_profile = UserProfile.objects.get_or_create(user=request.user)[0]

    if not age.isdigit(
    ) or sex not in 'MF' or size not in 'SML' or dog_name == '':
        return JsonResponse({'message': 'Invalid Input'})

    added = Dog.objects.filter(owner=user_profile, dog_name=dog_name).exists()
    added2 = Dog.objects.filter(owner=user_profile, dog_name=dog_name)

    if added:
        return update_dog(request)

    new_pupp = Dog(owner=user_profile,
                   dog_name=dog_name,
                   age=age,
                   sex=sex,
                   size=size,
                   temperment=temperment,
                   crate_trained=crate_trained,
                   details=details)

    new_pupp.save()

    return JsonResponse({'message': 'New Dog Added'})
コード例 #34
0
ファイル: views.py プロジェクト: nathan-cruz77/foodnator
def find_restaurant(request):
    return JsonResponse(
        {'data': restaurant_svc.find(request.user, request.GET)})
コード例 #35
0
def update_user(request):

    if request.method == 'GET':
        user = request.user
        user_dict = {}

        profile_exists = UserProfile.objects.filter(user=user).count()

        if profile_exists == 1:

            user_profile = UserProfile.objects.get(user=user)

            user_dict = {
                'phone_number': user_profile.phone_number,
                'first_name': user_profile.first_name,
                'last_name': user_profile.last_name,
                'address': user_profile.address,
                'city': user_profile.city,
                'zipcode': user_profile.zipcode,
                'share_pupps': user_profile.share_pupps
            }

        return JsonResponse(user_dict)

    data = request.body
    data = str(data, 'utf-8')
    form = json.loads(data)
    count = 0
    message = 'User Profile Updated!'
    user = request.user
    user_dict = {
        'phone_number': form.get('phone_number'),
        'first_name': form.get('first_name'),
        'last_name': form.get('last_name'),
        'address': form.get('address'),
        'city': form.get('city'),
        'zipcode': form.get('zipcode'),
        'share_pupps': form.get('share_pupps')
    }
    user_profile = UserProfile.objects.get_or_create(user=user)[0]

    updated_user = UserProfile.objects.filter(user=user).values()

    for item in updated_user:
        for thing in item:

            if thing in user_dict:
                if not user_dict[thing]:
                    user_dict[thing] = item[thing]

                    count += 1

    if count == 7:
        message = 'No Data Input'

    updated_user = UserProfile.objects.filter(user=user).update(
        user=user,
        phone_number=user_dict['phone_number'],
        first_name=user_dict['first_name'],
        last_name=user_dict['last_name'],
        address=user_dict['address'],
        city=user_dict['city'],
        zipcode=user_dict['zipcode'],
        share_pupps=user_dict['share_pupps'])

    # updated_user.save()

    return JsonResponse({'message': message, 'user_info': user_dict})
コード例 #36
0
def get_admin_coupon_page(request):
    res = {
        'code': 0,
    }
    user = request.user
    if not (user.is_authenticated() and user.is_staff):
        res['code'] = -1
        res['url'] = reverse('admin:login') + "?next=" + reverse(
            'admin_coupon')
        return JsonResponse(res)
    page = request.GET.get("page", None)
    size = request.GET.get("size", 10)
    state = request.GET.get("state", '1')
    projecttype = request.GET.get("projecttype", '0')
    try:
        size = int(size)
    except ValueError:
        size = 10

    if not page or size <= 0 or not state:
        raise Http404
    item_list = []

    item_list = UserEvent.objects
    startTime = request.GET.get("startTime", None)
    endTime = request.GET.get("endTime", None)
    startTime2 = request.GET.get("startTime2", None)
    endTime2 = request.GET.get("endTime2", None)
    if startTime and endTime:
        s = datetime.datetime.strptime(startTime, '%Y-%m-%dT%H:%M')
        e = datetime.datetime.strptime(endTime, '%Y-%m-%dT%H:%M')
        item_list = item_list.filter(time__range=(s, e))
    if startTime2 and endTime2:
        s = datetime.datetime.strptime(startTime2, '%Y-%m-%dT%H:%M')
        e = datetime.datetime.strptime(endTime2, '%Y-%m-%dT%H:%M')
        item_list = item_list.filter(audit_time__range=(s, e))

    username = request.GET.get("username", None)
    if username:
        item_list = item_list.filter(user__username=username)

    mobile = request.GET.get("mobile", None)
    if mobile:
        item_list = item_list.filter(user__mobile=mobile)

    companyname = request.GET.get("companyname", None)
    if companyname:
        item_list = item_list.filter(
            coupon__project__provider__contains=companyname)

    projectname = request.GET.get("projectname", None)
    if projectname:
        item_list = item_list.filter(
            coupon__project__title__contains=projectname)

    adminname = request.GET.get("adminname", None)
    if adminname:
        item_list = item_list.filter(audited_logs__user__username=adminname)
    if projecttype == '1':
        item_list = item_list.filter(coupon__type='0')
    if projecttype == '2':
        item_list = item_list.filter(coupon__type='1')
    item_list = item_list.filter(
        event_type='4',
        audit_state=state).select_related('user').order_by('time')

    paginator = Paginator(item_list, size)
    try:
        contacts = paginator.page(page)
    except PageNotAnInteger:
        # If page is not an integer, deliver first page.
        contacts = paginator.page(1)
    except EmptyPage:
        # If page is out of range (e.g. 9999), deliver last page of results.
        contacts = paginator.page(paginator.num_pages)
    data = []
    for con in contacts:
        coupon = con.content_object
        i = {
            "username":
            con.user.username,
            "mobile":
            con.user.mobile,
            "type":
            coupon.project.get_ctype_display(),
            "company":
            coupon.project.provider,
            "project":
            coupon.project.title,
            "mobile_sub":
            con.invest_account,
            "remark_sub":
            con.remark,
            "time_sub":
            con.time.strftime("%Y-%m-%d %H:%M"),
            "state":
            con.get_audit_state_display(),
            "admin":
            u'无' if con.audit_state == '1' or not con.audited_logs.exists()
            else con.audited_logs.first().user.username,
            "time_admin":
            u'无' if con.audit_state == '1' or not con.audit_time else
            con.audit_time.strftime("%Y-%m-%d %H:%M"),
            "amount":
            coupon.project.amount,
            "invest_amount":
            con.invest_amount,
            "invest_term":
            con.invest_term,
            "return_amount":
            u"无" if con.audit_state != '0' or not con.translist.exists() else
            con.translist.first().transAmount,
            "score":
            u'无' if con.audit_state != '0' or not con.score_translist.exists()
            else con.score_translist.first().transAmount,
            "id":
            con.id,
            "remark":
            con.remark or u'无' if con.audit_state != '2' or
            not con.audited_logs.exists() else con.audited_logs.first().reason,
        }
        data.append(i)
    if data:
        res['code'] = 1
    res["pageCount"] = paginator.num_pages
    res["recordCount"] = item_list.count()
    res["data"] = data
    return JsonResponse(res)
コード例 #37
0
def customer_list_age(request, age):
    customers = Customer.objects.filter(age=age)

    if request.method == 'GET':
        customers_serializer = CustomerSerializer(customers, many=True)
        return JsonResponse(customers_serializer.data, safe=False)