Exemple #1
0
    def post(self, request, category_id):
        """记录分类商品访问量"""
        try:
            category = models.GoodsCategory.objects.get(id=category_id)
        except models.GoodsCategory.DoesNotExist:
            return http.HttpResponseForbidden('缺少必传参数')

        # 获取今天的日期
        t = timezone.localtime()
        today_str = '%d-%02d-%02d' % (t.year, t.month, t.day)
        today_date = datetime.datetime.strptime(today_str, '%Y-%m-%d')
        try:
            # 查询今天该类别的商品的访问量
            counts_data = category.goodsvisitcount_set.get(date=today_date)
        except models.GoodsVisitCount.DoesNotExist:
            # 如果该类别的商品在今天没有过访问记录,就新建一个访问记录
            counts_data = models.GoodsVisitCount()

        try:
            counts_data.category = category
            counts_data.count += 1
            counts_data.save()
        except Exception as e:
            logger.error(e)
            return http.HttpResponseServerError('服务器异常')

        return http.JsonResponse({'code': RETCODE.OK, 'errmsg': 'OK'})
Exemple #2
0
 def setex(self, key, time, value):
     # setting expired
     try:
         return self.__redis.setex(key, time, value)
     except Exception as e:
         logger.error("redis setex:%s failed!" % e)
         return ""
Exemple #3
0
    def _daemonize(self):
        try:
            pid = os.fork()  # 第一次fork,生成子进程,脱离父进程
            if pid > 0:
                sys.exit(0)  # 退出主进程
        except OSError as e:
            logger.error('fork #1 failed: %d (%s)\n' % (e.errno, e.strerror))
            sys.exit(1)

        os.chdir("/")  # 修改工作目录
        os.setsid()  # 设置新的会话连接
        os.umask(0)  # 重新设置文件创建权限

        try:
            pid = os.fork()  # 第二次fork,禁止进程打开终端
            if pid > 0:
                sys.exit(0)
        except OSError as e:
            logger.error('fork #2 failed: %d (%s)\n' % (e.errno, e.strerror))
            sys.exit(1)

        # 重定向文件描述符
        sys.stdout.flush()
        sys.stderr.flush()
        si = open(self.stdin, 'r')
        so = open(self.stdout, 'a+')
        se = open(self.stderr, 'a+')
        os.dup2(si.fileno(), sys.stdin.fileno())
        os.dup2(so.fileno(), sys.stdout.fileno())
        os.dup2(se.fileno(), sys.stderr.fileno())

        # 注册退出函数,根据文件pid判断是否存在进程
        atexit.register(self.delpid)
        pid = str(os.getpid())
        open(self.pidfile, 'w+').write('%s\n' % pid)
Exemple #4
0
    def collect(self):
        try:
            power_request = requests.get(f"http://{url}/{pv_path}",
                                         timeout=timeout).json()
            self.__stored_data['power_request'] = power_request
        except Exception:
            logger.error("Exception during PVs' data request")
            power_request = self.__stored_data.get('power_request', {})
        power_data, timestamp = self.get_data_and_timestamp(power_request)
        site = power_data.get('Site', {})
        inverters = power_data.get('Inverters', {})
        for id_, inverter in inverters.items():
            yield self.__inverter_output(id_, inverter, timestamp, prefix)
        yield self.__overall_pvs(site, timestamp, prefix)
        yield self.__overall_grid(site, timestamp, prefix)
        yield self.__overall_accumulator(site, timestamp, prefix)
        yield self.__E_Year(site, timestamp, prefix)
        yield self.__E_Day(site, timestamp, prefix)

        try:
            sensors_request = requests.get(f"http://{url}/{sensors_path}",
                                           timeout=timeout).json()
            self.__stored_data['sensors_request'] = sensors_request
        except Exception:
            logger.error("Exception during sensors' data request")
            sensors_request = self.__stored_data.get('sensors_request', {})

        sensor_data, timestamp = self.get_data_and_timestamp(sensors_request)
        yield self.__temperature_top(sensor_data, timestamp, prefix)
        yield self.__temperature_bottom(sensor_data, timestamp, prefix)
        yield self.__watts_per_sqm(sensor_data, timestamp, prefix)
        yield self.__wind_speed(sensor_data, timestamp, prefix)
Exemple #5
0
    def stop(self):
        # 从pid文件中获取pid
        try:
            pf = open(self.pidfile, 'r')
            pid = int(pf.read().strip())
            pf.close()
        except IOError:
            pid = None

        if not pid:  # 重启不报错
            message = 'pidfile %s does not exist. Daemon not running!\n'
            logger.error(message % self.pidfile)
            return

        # 杀死进程
        try:
            while 1:
                os.kill(pid, SIGTERM)
                time.sleep(0.1)
        except OSError as err:
            err = str(err)
            if err.find('No such process') > 0:
                if os.path.exists(self.pidfile):
                    os.remove(self.pidfile)
            else:
                sys.exit(str(err))
Exemple #6
0
    def post(self, request):
        old_password = request.POST.get('old_password')
        new_password = request.POST.get('new_password')
        new_password2 = request.POST.get('new_password2')
        # if not all([old_password, new_password, new_password2]):
        #     return http.HttpResponseForbidden('缺少必要参数')
        try:
            request.user.check_password(old_password)
        except Exception as e:
            logger.error(e)
            return render(request, 'user_center_pass.html', {'origin_pwd_errmsg': '原始密码错误'})

        if not re.match(r'^[0-9A-Za-z]{8,20}$', new_password2):
            return http.HttpResponseForbidden('密码最少8位,最长20位')
        if new_password2 != new_password:
            return http.HttpResponseForbidden('两次输入的密码不一致')

        try:
            request.user.set_password(new_password)
            request.user.save()
        except Exception as e:
            logger.error(e)
            return render(request, 'user_center_pass.html', {'change_pwd_errmsg': '修改密码失败'})

        logout(request)
        response = redirect(reverse('users:login'))
        response.delete_cookie('username')

        return response
def insert_data(data, url):
    try:
        conn = pymysql.connect(url,
                               user=rds_user_name,
                               passwd=rds_password,
                               db=db_name,
                               connect_timeout=5)
        rows = []
        for entry in data:
            row = ()
            values = []
            for attribute, value in entry.items():
                values.append(value)
            row = tuple(values)
            rows.append(row)

        cursor = conn.cursor()

        query = "INSERT INTO airquality (date, time,co, tin_oxide, metanic_hydro, benzene_conc, titania, nox," \
                "tungsten_oxide_nox,average_no2, tungsten_oxide_no2, indium_oxide, temp, relative_humidity," \
                "absolute_humidity) VALUES " + ",".join(
          "(%s, %s, %s,%s, %s, %s,%s, %s, %s,%s, %s, %s,%s, %s, %s)" for _ in rows)
        flattened_values = [item for sublist in rows for item in sublist]
        cursor.execute(query, flattened_values)

        conn.commit()
    except Exception as e:
        logger.error(
            "ERROR: Unexpected error: Could not connect to MySql instance.")
        logger.error(e)
        sys.exit()

    logger.info("SUCCESS: Connection to RDS mysql instance succeeded")
Exemple #8
0
 def __init__(self, db=1, host=HOST, port=PORT, redis_password=REDIS_PASSWORD, max_connections=MAX_CONNECTIONS):
     try:
         pool = redis.ConnectionPool(host=host, port=port, db=db, password=redis_password,
                                     max_connections=max_connections, decode_responses=True)
         self.__redis = redis.StrictRedis(connection_pool=pool)
     except Exception as e:
         logger.error("redis 连接失败:%s" % e)
Exemple #9
0
    def post(self,request):
        data = json.loads(request.body.decode())
        receiver=data.get('receiver')
        province_id=data.get('province_id')
        city_id=data.get('city_id')
        district_id=data.get('district_id')
        place=data.get('place')
        mobile=data.get('mobile')
        tel=data.get('tel')
        email=data.get('email')
        user = request.user
        if not all([receiver, province_id, city_id, district_id, place, mobile]):
            return HttpResponseBadRequest('缺少必传参数')
        if not re.match(r'^1[3-9]\d{9}$', mobile):
            return HttpResponseBadRequest('参数mobile有误')
        if tel:
            if not re.match(r'^(0[0-9]{2,3}-)?([2-9][0-9]{6,7})+(-[0-9]{1,4})?$', tel):
                return HttpResponseBadRequest('参数tel有误')
        if email:
            if not re.match(r'^[a-z0-9][\w\\.\-]*@[a-z0-9\-]+(\.[a-z]{2,5}){1,2}$', email):
                return HttpResponseBadRequest('参数email有误')
        try:
            address = Address.objects.create(
                user=request.user,
                title=receiver,
                receiver=receiver,
                province_id=province_id,
                city_id=city_id,
                district_id=district_id,
                place=place,
                mobile=mobile,
                tel=tel,
                email=email
            )

            # 设置默认地址
            if not request.user.default_address:
                request.user.default_address = address
                request.user.save()
        except Exception as e:
            logger.error(e)
            return JsonResponse({'code': 400, 'errmsg': '新增地址失败'})


        # 新增地址成功,将新增的地址响应给前端实现局部刷新
        address_dict = {
            "id": address.id,
            "title": address.title,
            "receiver": address.receiver,
            "province": address.province.name,
            "city": address.city.name,
            "district": address.district.name,
            "place": address.place,
            "mobile": address.mobile,
            "tel": address.tel,
            "email": address.email
        }

        # 响应保存结果
        return JsonResponse({'code': 0, 'errmsg': '新增地址成功', 'address': address_dict})
Exemple #10
0
def send_sms_code(self, mobile, sms_code):
    """
    异步发送短信
    :param self:
    :param mobile:
    :param sms_code:
    :return:
    """

    try:
        # 调用CCP() 发送短信,并传递相关参数
        result = CCP().send_template_sms(mobile,
                                         [sms_code, const.IMAGE_COOE_REDIS_EXPIRES // 60], 1)

    except Exception as e:
        # 如果发送过程出错,打印错误日志
        logger.error(e)

        # 有异常自动重试三次
        raise self.retry(exc=e, max_retries=3)

        # 如果发送成功,rend_ret 为0
    if result != 0:
        raise self.retry(exc=Exception('发送短信失败', max_retries=3))

    return result
Exemple #11
0
    def get(self, request):

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

        try:
            OrderInfo.objects.get(order_id=order_id, user=request.user)
        except OrderInfo.DoesNotExist:
            return http.HttpResponseForbidden('订单不存在')

        try:
            uncomment_goods = OrderGoods.objects.filter(order_id=order_id, is_commented=False)
        except Exception as e:
            logger.error(e)
            return http.HttpResponseServerError('订单商品出错')

        uncomment_goods_list = []
        for goods in uncomment_goods:
            uncomment_goods_list.append({
                'order_id': goods.order.order_id,
                'sku_id': goods.sku.id,
                'name': goods.sku.name,
                'price': str(goods.price),
                'default_image_url': goods.sku.default_image.url,
                'comment': goods.comment,
                'score': goods.score,
                'is_anonymous': str(goods.is_anonymous),
            })

        context = {
            'uncomment_goods_list': uncomment_goods_list
        }

        return render(request, 'goods_judge.html', context)
Exemple #12
0
 def delete(self, requset, address_id):
     try:
         address = Address.objects.get(id=address_id)
         address.is_deleted = True
     except Exception as e:
         logger.error(e)
         return http.JsonResponse({'code': RETCODE.DBERR, 'errmsg': '删除地址失败'})
     return http.JsonResponse({'code': RETCODE.OK, 'errmsg': '删除地址成功'})
Exemple #13
0
 def put(self, request, address_id):
     try:
         address = Address.objects.get(id=address_id)
         request.user.default_address = address
         request.user.save()
     except Exception as e:
         logger.error(e)
         return http.JsonResponse({'code': RETCODE.DBERR, 'errmsg': '设置默认地址失败'})
     return http.JsonResponse({'code': RETCODE.OK, 'errmsg': '设置默认地址成功'})
Exemple #14
0
    def get(self, request):
        """oauth2.0认证"""
        # 接收Authorization Code
        code = request.GET.get('code')
        if not code:
            return http.HttpResponseForbidden('缺少code')

        # 创建工具对象
        oauth = OAuthQQ(client_id=settings.QQ_CLIENT_ID,
                        client_secret=settings.QQ_CLIENT_SECRET,
                        redirect_uri=settings.QQ_REDIRECT_URI)

        try:
            # 携带 code 向 QQ服务器 请求 access_token(code)
            access_token = oauth.get_access_token(code)

            # 携带 access_token 向 QQ服务器 请求 openid
            openid = oauth.get_open_id(access_token)

        except Exception as e:
            # 如果上面获取 openid 出错,则验证失败
            logger.error(e)
            # 返回结果
            return http.HttpResponseServerError('OAuth2.0认证失败')
        # 判断 openid 是否绑定过用户
        try:
            oauth_user = OAuthQQUser.objects.get(openid=openid)

        except OAuthQQUser.DoesNotExist:
            # 如果 openid 没绑定美多商城用户, 进入这里
            # 调用我们封装号的方法, 对openid 进行加密, 生成 access_token 字符串
            access_token = generate_access_token(openid)
            # 返回响应, 重新渲染
            context = {
                'access_token': access_token
            }
            return render(request, 'oauth_callback.html', context)

        else:
            # 如果 openid 已绑定美多商城用户
            # 根据 user 外键, 获取对应的 QQ用户
            qq_user = oauth_user.user
            # 实现状态保持
            login(request, qq_user)

            # 创建重定向到主页的对象
            response = redirect(reverse("contents:index"))

            # 将用户信息写入到 cookie 中, 有效期15天
            response.set_cookie('username', qq_user.username, max_age=3600 * 24 * 15)

            # 合并购物车
            response = merge_cart_cookie_to_redis(request, qq_user, response)
            # 返回响应
            return response
Exemple #15
0
    def put(self, request, address_id):
        json_dict = json.loads(request.body.decode())
        receiver = json_dict.get('receiver')
        province_id = json_dict.get('province_id')
        city_id = json_dict.get('city_id')
        district_id = json_dict.get('district_id')
        place = json_dict.get('place')
        mobile = json_dict.get('mobile')
        tel = json_dict.get('tel')
        email = json_dict.get('email')

        if not all([receiver, province_id, city_id, district_id,
                    place, mobile]):
            return http.HttpResponseForbidden('缺少必传参数')
        if not re.match(r'^1[3-9]\d{9}$', mobile):
            return http.HttpResponseForbidden('参数mobile有误')
        if tel:
            if not re.match(r'^(0[0-9]{2,3}-)?([2-9][0-9]{6,7}(-[0-9]{1,4})?$)', tel):
                return http.HttpResponseForbidden('参数tel有误')
            if email:
                if not re.match(r'^[a-z0-9][\w\.\-]*@[a-z0-9\-]+(\.[a-z]{2,5}){1,2}$', email):
                    return http.HttpResponseForbidden('参数email有误')
        try:
            Address.objects.filter(id=address_id).update(
                user=request.user,
                title=receiver,
                receiver=receiver,
                province_id=province_id,
                city_id=city_id,
                district_id=district_id,
                place=place,
                mobile=mobile,
                tel=tel,
                email=email
            )
        except Exception as e:
            logger.error(e)
            return http.JsonResponse({'code': RETCODE.DBERR, 'errmsg': '修改地址失败'})

        address = Address.objects.get(id=address_id)
        address_dict = {
            "id": address.id,
            "tetiel": address.title,
            "receiver": address.receiver,
            "province": address.province.name,
            "city": address.city.name,
            "district": address.district.name,
            "place": address.place,
            "mobile": address.mobile,
            "tel": address.tel,
            "email": address.email
        }
        return http.JsonResponse({'code': RETCODE.OK, 'errmsg': '修改地址成功', 'address': address_dict})
def file_load_stream(wav_name, mono=False):
    try:
        sr = librosa.get_samplerate(wav_name)
        frameSize = sr
        hoplength = frameSize // 2
        stream = librosa.stream(wav_name,
                                block_length=1,
                                frame_length=frameSize,
                                hop_length=hoplength,
                                mono=mono)
    except:
        logger.error("file_broken or not exists!! : {}".format(wav_name))
    return stream
Exemple #17
0
 def insert(self, table, cols):
     metadata = MetaData()
     conn = self.engine.connect()
     table = Table(table, metadata, autoload=True, autoload_with=self.engine)
     while True:
         try:
             ins = table.insert().values(cols)
             conn.execute(ins)
             break
         except IntegrityError as e:
             # print("Integrity Error - Value Probably Already Exists")
             logger.error("IntegrityError: {}".format(e))
             break
         except OperationalError as e:
             logger.error("Operation Error: {} - trying Again".format(e))
         except Exception as e:
             if type(e).__name__ == "IntegrityError":
                 break
             elif type(e).__name__ == "IntegrityError":
                 logger.error("Operation Error: {} - trying Again".format(e))
                 pass
             else:
                 ex = "{}:{}".format(type(e).__name__, e)
                 logger.error(ex)
                 pass
Exemple #18
0
    def put(self,request,address_id):
        try:
            # 接收参数,查询地址
            address = Address.objects.get(id=address_id)

            # 设置地址为默认地址
            request.user.default_address = address
            request.user.save()
        except Exception as e:
            logger.error(e)
            return JsonResponse({'code': 400, 'errmsg': '设置默认地址失败'})

            # 响应设置默认地址结果
        return JsonResponse({'code': 0, 'errmsg': '设置默认地址成功'})
Exemple #19
0
    def delete(self, request, address_id):
        try:
            # 查询要删除的地址
            address = Address.objects.get(id=address_id)

            # 将地址逻辑删除设置为True
            address.is_deleted = True
            address.save()
        except Exception as e:
            logger.error(e)
            return JsonResponse({'code':400, 'errmsg': '删除地址失败'})

            # 响应删除地址结果
        return JsonResponse({'code':0, 'errmsg': '删除地址成功'})
Exemple #20
0
 def write(self):
     with open(self.file, self.mode, newline=self.newline,
               encoding="utf-8") as csvfile:
         self.csvwriter = csv.writer(csvfile,
                                     delimiter=self.delimiter,
                                     quotechar=self.quotechar,
                                     quoting=self.quoting,
                                     escapechar='\\')
         for row in self.rows:
             try:
                 self.csvwriter.writerow(row)
             except Exception as e:
                 logger.error("Error: {}".format(str(e)))
                 logger.error(row)
Exemple #21
0
    def get(self, request):
        token = request.GET.get('token')
        if not token:
            return http.HttpResponseBadRequest('缺少token')
        user = chick_verify_email_token(token)
        if not user:
            return http.HttpResponseForbidden('无效的token')
        try:
            user.email_active = True
            user.save()
        except Exception as e:
            logger.error(e)
            return http.HttpResponseServerError('激活邮箱失败')

        return redirect(reverse('users:info'))
def get_tweets_from_db():
    try:
        dynamodb = boto3.resource('dynamodb', region_name=AWS_REGION)
        table = dynamodb.Table('twitter-images')
    except Exception as e:
        logger.error('Error connecting to database table: ' +
                     (e.fmt if hasattr(e, 'fmt') else '') + ','.join(e.args))
        return None

    response = table.scan(ReturnConsumedCapacity='TOTAL', )

    if response['ResponseMetadata']['HTTPStatusCode'] == 200:
        return response['Items']
    logger.error('Unknown error retrieving items from database.')
    return None
Exemple #23
0
 def retry(self, request, reason, spider):
     try:
         p = request.meta['proxy_object']
         p.available = True
         p.rating = p.rating + reason
         p.get_proxy_state()
     except AttributeError:
         logger.error('There is no proxy_object in request')
         pass
     retryreq = request.copy()
     proxy_object = self.proxy_storage.get_proxy()
     retryreq.meta['proxy_object'] = proxy_object
     retryreq.meta['proxy'] = proxy_object.address
     logger.info('Request fails, retrying')
     return retryreq
Exemple #24
0
    def put(self, request, address_id):
        json_dict = json.loads(request.body.decode())
        title = json_dict.get('title')

        if not title:
            return http.HttpResponseForbidden('缺少title')

        try:
            address = Address.objects.get(id=address_id)
            address.title = title
            address.save()
        except Exception as e:
            logger.error(e)
            return http.JsonResponse({'code': RETCODE.DBERR, 'errmsg': '更新标题失败'})
        return http.JsonResponse({'code': RETCODE.OK, 'errmsg': '更新标题成功'})
def file_load(wav_name, mono=False):
    """
    load .wav file.

    wav_name : str
        target .wav file
    sampling_rate : int
        audio file sampling_rate
    mono : boolean
        When load a multi channels file and this param True, the returned data will be merged for mono data

    return : numpy.array( float )
    """
    try:
        return librosa.load(wav_name, sr=None, mono=mono)
    except:
        logger.error("file_broken or not exists!! : {}".format(wav_name))
Exemple #26
0
    def _compile(code, funcName):
        ns = {}
        try:
            exec(code, ns)
        except Exception as e:
            logger.error("code: `{0}` 编译时出错,exception: {1}".format(code, e))
            raise e

        func = None
        may_be_function = ns[funcName]
        if isfunction(may_be_function):
            func = may_be_function
        if not func:
            logger.error("code: `{0}` 没有找到可用的函数".format(code))
            raise ValueError("Code Error , function not found")

        return func
def create_table(url):
    try:
        conn = pymysql.connect(url,
                               user=rds_user_name,
                               passwd=rds_password,
                               db=db_name,
                               connect_timeout=5)
        cursor = conn.cursor()
        cursor.execute(
            "create table airquality (id int auto_increment primary key, date varchar(255) not null, time varchar(255) not null, co varchar(255) not null, tin_oxide varchar(255) not null, metanic_hydro varchar(255) not null, benzene_conc varchar(255) not null, titania varchar(255) not null, nox varchar(255) not null, tungsten_oxide_nox varchar(255) not null, average_no2 varchar(255) not null, tungsten_oxide_no2 varchar(255) not null, indium_oxide varchar(255) not null, temp varchar(255) not null, relative_humidity varchar(255) not null, absolute_humidity varchar(255) not null);"
        )
        conn.commit()
    except Exception as e:
        logger.error(
            "ERROR: Unexpected error: Could not connect to MySql instance.")
        logger.error(e)
        sys.exit()
Exemple #28
0
    def put(self,request,address_id):
        data = json.loads(request.body.decode())
        receiver = data.get('receiver')
        province_id = data.get('province_id')
        city_id = data.get('city_id')
        district_id = data.get('district_id')
        place = data.get('place')
        mobile = data.get('mobile')
        tel = data.get('tel')
        email = data.get('email')

        # 校验参数
        if not all([receiver, province_id, city_id, district_id, place, mobile]):
            return JsonResponse({'code': 400,
                                      'errmsg': '缺少必传参数'})

        if not re.match(r'^1[3-9]\d{9}$', mobile):
            return JsonResponse({'code': 400,
                                      'errmsg': '参数mobile有误'})

        if tel:
            if not re.match(r'^(0[0-9]{2,3}-)?([2-9][0-9]{6,7})+(-[0-9]{1,4})?$', tel):
                return JsonResponse({'code': 400,
                                          'errmsg': '参数tel有误'})
        if email:
            if not re.match(r'^[a-z0-9][\w\\.\-]*@[a-z0-9\-]+(\.[a-z]{2,5}){1,2}$', email):
                return JsonResponse({'code': 400,
                                          'errmsg': '参数email有误'})
        # 判断地址是否存在,并更新地址信息
        try:
            Address.objects.filter(id=address_id).update(
                user=request.user,
                title=receiver,
                receiver=receiver,
                province_id=province_id,
                city_id=city_id,
                district_id=district_id,
                place=place,
                mobile=mobile,
                tel=tel,
                email=email
            )
        except Exception as e:
            logger.error(e)
            return JsonResponse({'code': 400, 'errmsg': '更新地址失败'})
Exemple #29
0
def Pj_UploadExcel(request):
    id = request.POST.get('id')
    if request.method == 'POST':
        f = request.FILES.get('file')
        excel_type = f.name.split('.')[1]
        if excel_type in ['xlsx', 'xls']:  # 判断格式
            # 开始解析上传的excel表格
            wb = xlrd.open_workbook(filename=None,
                                    file_contents=f.read())  # 打开指定路径下的excel
            table = wb.sheets()[0]  # 获取表中第一个sheet页
            rows = table.nrows  # 总行数
            data_list = []  # 获取表中数据
            try:
                for i in range(rows):  # 遍历每一行数据,将这些数据存储到Interface_Data数据库表中
                    if i != 0:
                        data_list.append(table.row_values(i))
                        in_id = data_list[i - 1][0]
                        in_mname = data_list[i - 1][1]
                        in_type = data_list[i - 1][2]
                        in_url = data_list[i - 1][3]
                        in_data_type = data_list[i - 1][4]
                        in_data = data_list[i - 1][5]
                        in_tname = data_list[i - 1][6]
                        in_expected_result = data_list[i - 1][7]
                        in_actual_result = data_list[i - 1][8]
                        add_interface = Interface_Data(
                            in_id=in_id,
                            in_mname=in_mname,
                            in_type=in_type,
                            in_url=in_url,
                            in_data_type=in_data_type,
                            in_data=in_data,
                            in_tname=in_tname,
                            in_expected_result=in_expected_result,
                            in_actual_result=in_actual_result,
                            status=id)
                        add_interface.save()

            except:
                logger.error('解析excel文件或者数据插入错误')
            return HttpResponse(json.dumps(data_list), {'message': '导入成功'})
        else:
            logger.error('上传文件类型错误!')
            return render(request, 'Page/Interface_List.html',
                          {'message': '导入失败'})
Exemple #30
0
    def put(self, request, address_id):
        """设置地址标题"""
        # 接收参数:地址标题
        json_dict = json.loads(request.body.decode())
        title = json_dict.get('title')

        try:
            # 查询地址
            address = Address.objects.get(id=address_id)

            # 设置新的地址标题
            address.title = title
            address.save()
        except Exception as e:
            logger.error(e)
            return JsonResponse({'code': 400, 'errmsg': '设置地址标题失败'})

        # 4.响应删除地址结果
        return JsonResponse({'code': 0, 'errmsg': '设置地址标题成功'})
Exemple #31
0
 def runsql(self, conn, sql):
     cursor = conn.cursor()
     while True:
         try:
             cursor.execute(sql)
             conn.commit()
             break
         except IntegrityError as e:
             # print("Integrity Error - Value Probably Already Exists")
             logger.error("IntegrityError: {}".format(e))
             logger.error(sql)
             break
         except OperationalError as e:
             logger.error("Operation Error: {} - trying Again".format(e))
         except Exception as e:
             pass
             ex = "{}:{}".format(type(e).__name__, e)
             logger.error(ex)
Exemple #32
0
    def post(self, request):
        json_dict = json.loads(request.body.decode())
        sku_id = json_dict.get('sku_id')
        count = json_dict.get('count')
        selected = json_dict.get('selected', True)

        if not all([sku_id, count]):
            return http.HttpResponseForbidden('缺少必要参数')
        try:
            models.SKU.objects.get(id=sku_id)
        except Exception as e:
            logger.error(e)
            return http.HttpResponseForbidden('商品不存在')
        try:
            count = int(count)
        except Exception as e:
            return http.HttpResponseForbidden('参数count有误')

        if selected:
            if not isinstance(selected, bool):
                return http.HttpResponseForbidden('参数selected有误')

            # 判断用户是否登录
        user = request.user
        if user.is_authenticated:
            # 用户已登录,操作redis购物车
            redis_conn = get_redis_connection('carts')
            pl = redis_conn.pipeline()
            # 新增购物车数据
            pl.hincrby('carts_%s' % user.id, sku_id, count)
            # 新增选中的状态
            if selected:
                pl.sadd('selected_%s' % user.id, sku_id)
            # 执行管道
            pl.execute()
            # 响应结果
            return http.JsonResponse({'code': RETCODE.OK, 'errmsg': '添加购物车成功'})
        else:
            # 用户未登录,操作cookie购物车
            cart_str = request.COOKIES.get('carts')
            # 如果用户操作过cookie购物车
            if cart_str:
                # 将cart_str转成bytes,再将bytes转成base64的bytes,最后将bytes转字典
                cart_dict = pickle.loads(base64.b64decode(cart_str.encode()))
            else:  # 用户从没有操作过cookie购物车
                cart_dict = {}

            # 判断要加入购物车的商品是否已经在购物车中,如有相同商品,累加求和,反之,直接赋值
            if sku_id in cart_dict:
                # 累加求和
                origin_count = cart_dict[sku_id]['count']
                count += origin_count
            cart_dict[sku_id] = {'count': count, 'selected': selected}
            # 将字典转成bytes,再将bytes转成base64的bytes,最后将bytes转字符串
            cookie_cart_str = base64.b64encode(
                pickle.dumps(cart_dict)).decode()

            # 创建响应对象
            response = http.JsonResponse({
                'code': RETCODE.OK,
                'errmsg': '添加购物车成功'
            })
            # 响应结果并将购物车数据写入到cookie
            response.set_cookie('carts',
                                cookie_cart_str,
                                max_age=constants.CARTS_COOKIE_EXPIRES)
            return response
Exemple #33
0
    def get(self, request, mobile):
        """

        :param request:
        :param mobile: 手机号码
        :return: JSON
        """
        # 3.创建连接到redis的对象
        redis_conn = get_redis_connection('verify_code')

        send_flag = redis_conn.get('send_flag_%s' % mobile)

        if send_flag:
            return http.JsonResponse({'code': RETCODE.THROTTLINGERR,
                                      'errmsg': '发送短信验证码过快'})
        # 1.接收参数
        image_code_client = request.GET.get('image_code')
        uuid = request.GET.get('image_code_id')

        # 2.校验参数
        if not all([image_code_client, uuid]):
            return http.JsonResponse({'code': RETCODE.NECESSARYPARAMERR,
                                      'errmsg': '缺少必传参数'})

        # 4.提取图形验证码
        image_code_server = redis_conn.get('img_%s' % uuid)
        if image_code_server is None:
            # 图形验证码过期或者不存在
            return http.JsonResponse({'code': RETCODE.IMAGECODEERR,
                                      'errmsg': '图形验证码失效'})

        # 5.删除图形验证码,避免恶意侧视图形验证码
        try:
            redis_conn.delete('img_%s' % uuid)
        except Exception as e:
            logger.error(e)

        # 6.对比图形验证码
        image_code_server = image_code_server.decode()  # bytes转字符串
        if image_code_client.lower() != image_code_server.lower():  # 转小写后比较
            return http.JsonResponse({'code': RETCODE.IMAGECODEERR,
                                      'errmsg': '输入图形验证码错误'})

        # 7. 生成短信验证码:生成6位数验证码
        sms_code = '%06d' % random.randint(0, 999999)
        logger.info(sms_code)
        print(sms_code)

        # 8.保存短信验证码,保存到redis中
        # 短信验证码有效期, 单位:秒
        # SMS_CODE_REDIS_EXPIRES = 300
        # 创建管道
        pl = redis_conn.pipeline()
        # 保存到redis中
        pl.setex('sms_code_%s' % mobile, const.SEND_SMS_TEPLATE_ID, sms_code)
        pl.setex('send_flag_%s' % mobile, 60, 1)
        # 执行管道
        pl.execute()
        # 9.发送短信验证码
        # 短信模板
        # SMS_CODE_REDIS_EXPIRES // 60 = 5min
        # SEND_SMS_TEMPLATE_ID = 1
        # CCP().send_template_sms(mobile, [sms_code, 5], 1)
        # 导入异步的包
        # from celery_tasks.sms.email import send_sms_code
        # send_sms_code.delay(mobile, sms_code)

        # 10.响应结果
        return http.JsonResponse({'code': RETCODE.OK,
                                  'errmsg': '发送短信成功'})