Пример #1
0
 def LoginClose(request, *args, **kwargs):
     if request.method == 'POST':
         log.i(globals(), '设置登录失效方式: get', request.POST.get('keepcheckbox'))
         if not request.POST.get('keepcheckbox'):
             request.session.set_expiry(0)
             log.i(globals(), '设置登录失效方式: 浏览器关闭失效')
     return func(request, *args, **kwargs)
Пример #2
0
    def get_UnitInfo(self):
        log.i(globals(), 'TOKEN', self.access_token)
        data = {'access_token': self.access_token}
        response = requests.post(url=self.unitinfo_url, data=data)

        log.i(globals(), 'get_UnitInfo ---- ', json.loads(response.text))

        return json.loads(response.text)
        pass
Пример #3
0
    def ip(request, *args, **kwargs):
        if 'HTTP_X_FORWARDED_FOR' in request.META:
            ip = request.META['HTTP_X_FORWARDED_FOR']
        else:
            ip = request.META['REMOTE_ADDR']

        log.i(globals(), 'IP: ', ip)

        return func(request, *args, **kwargs)
Пример #4
0
    def __init__(self, usercode, orderid):
        self.ApiUrl = 'http://mall-api.zycg.gov.cn'
        self.priKey = '''-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQCsAiCNz0SMIhMoQtxmgphUqxYSW+wXz9Ub9EuRKXrFVPUc0Dm9
6Mn/zwNkmsiqfjw1UOVhnm6lKERSXUZ/1y+Xfhn16zsj6uBVtRa+G4g+S/sDNBvM
GjHxqba7AtihEVslmrNfEmb0T6T0QbV80gqnb9idCCFpsMroGJtDCMXFrQIDAQAB
AoGAS0avCoCfxhgPfDoujGow0jUBds1luFILOK2j+IZHpV512sNB0duzs1DcckXO
9dZC8S5TBHK6h2rk44rQlJgOyi0GvIpaIKKPDii7PcOIm8ortmuKvDb/9iNonSsX
QqAVr/aSHstE2TWgx5r1rVQC3UDqSNAKJJZvyWMq13o16wECQQDT6jmY7rnDxiex
lB7HQiLhe+6PAuR1bqyu6rAsuNJ1yCv1sMJOAh/kLU83gn5Bu46urOoZtF1nBMmZ
vhaL8IpBAkEAz8qg3XH+BRR6i4/q19z3snFLQmmfbXUGYURf2RxNQJvbG3IMHyCk
O/bqR4RHX7388+itgrE8O3Qg6jQGUhDobQJASc7opLVxChj4NkdquOf2EicCHdla
DPSxPHMNTWZKFy/S783SvyzKQsTtNF5E70wOFBSxrKY/aeQm+19TpwXugQJBAIfY
I7TCGlx91+O3scNvzWuWT6paXQT1FbevOK46p3KOsf7OX4hWEai2MtGQdAzuqxlW
S2D+t67yq7YRTvSF4z0CQALqqK/SArm3qsAc4XcAhoIPzgELzcqBF2Xsqlp0pEx2
IivDCEwCkCL6CXwa5qoEHXrskarZuhDe3yZhRnuKj80=
-----END RSA PRIVATE KEY-----'''
        self.time = datetimenowS()
        self.username = '******'
        self.passwd = '6i2hvvpvv2wmrvt9'
        self.passwd = '{}{}'.format(self.passwd,
                                    self.time).encode(encoding="utf-8")
        self.datatime = str(datetimenow()).split('.')[0]
        self.headers = {'Content-Type': 'application/json;charset=utf-8'}
        self.usercode = usercode
        self.orderid = orderid  # 订单ID
        '''
        订单基本信息
        :return:
        '''
        try:
            self.orderModel = Order.objects.get(orderid=self.orderid)
            self.total = float(self.orderModel.total)  # '总订单 成交总价'
            self.province = self.orderModel.province  # '北京'
            self.city = self.orderModel.city  # '北京'
            self.deliveryaddress = self.orderModel.deliveryaddress  # '详细地址'
            self.name = self.orderModel.linkman  # '名字'
            self.phone = self.orderModel.linkmobile  # '电话号'
            self.remark = self.orderModel.remark  # '订单备注'
            self.paymethod = int(self.orderModel.paymethod)  # 付款方式
            self.ispaid = int(self.orderModel.ispaid)  # 是否完成支付、结清账期
            self.ordispaid = int(self.orderModel.ordispaid)
            self.suborder = Suborderlist.objects.get(key=self.orderModel)
            self.subtotal = float(self.suborder.total)  # '子订单总金额 不可大于总订单金额'
            '''
            子订单基本信息
            '''
            self.good = Goodslist.objects.filter(key=self.suborder)
            '''物流订单信息'''
            self.istics = Logistics.objects.filter(key=self.orderModel)
        except:
            log.i(globals(), '没有获取到Order订单信息,跳过')
            pass
Пример #5
0
    def order_PaymentCompletion(self):
        '''
        更新订单-更新支付信息 以完成支付
        0 没付款
        1 款结了
        :return:
        '''
        if not self.usercode or self.usercode == '':
            log.i(globals(), '非国采用户,跳过更新订单-更新支付信息 以完成支付')
            return False

        if self.ispaid == 0:
            # 没付款
            data = {
                'user': {
                    'username': self.username,
                    'code': self.sign()
                },
                'param': {
                    'orderid': self.orderid,
                    'type': 2,  # 更新支付信息,需附带paymethod、ispaid参数
                    'paymethod': self.paymethod,
                    'ispaid': 1  # 款结了
                }
            }
            html = requests.post(url='{}/api/order_update'.format(self.ApiUrl),
                                 data=json.dumps(data),
                                 headers=self.headers)

            if html:
                self.orderModel.ispaid = 1
                self.orderModel.save()
                pass

            dicts = json.loads(html.text)

            if dicts['returnmessage']['code'] == 1:
                log.i(globals(), '国采用户,更新订单-更新支付信息 以完成支付',
                      json.loads(html.text))
            else:
                # 验收单创建失败
                # 后续处理
                models.Error_Order(
                    info=1,
                    mess='[orderid={}],[total={}],[return={}]'.format(
                        self.orderid, self.total, dicts),
                    key=self.orderModel,
                    time=datetimenow()).save()
                log.i(globals(), '【失败】国采用户,更新订单-更新支付信息 以完成支付 ',
                      json.loads(html.text))
                pass
            return dicts
            pass
        else:
            # 以付款
            log.i(globals(), '国采用户,以付款,不更新订单信息', self.ispaid)
            pass
        return False
        pass
Пример #6
0
    def order_delete(self, stype=0):
        '''
        取消整个订单(生成验收单之前)
        根据验收单是否生成 而采取 取消验收单还是作废验收单操作
        :return:
        '''
        if not self.usercode or self.usercode == '':
            log.i(globals(), '非国采用户,跳过取消整个订单(生成验收单之前)')
            return False

        if self.ordispaid == 0:
            data = {
                'user': {
                    'username': self.username,
                    'code': self.sign()
                },
                'param': {
                    'orderid': self.orderid,
                    'type': stype  # '请求类型'
                }
            }
            html = requests.post(url='{}/api/order_update'.format(self.ApiUrl),
                                 data=json.dumps(data),
                                 headers=self.headers)
            dicts = json.loads(html.text)
            log.i(globals(), '国采用户,取消整个订单(生成验收单之前)', json.loads(html.text))
        elif self.ordispaid == 2:
            data = {
                'user': {
                    'username': self.username,
                    'code': self.sign()
                },
                'param': {
                    'orderid': self.orderid,
                    'type': 7  # 作废整个订单(退货,生成验收单之后)
                }
            }
            html = requests.post(url='{}/api/order_update'.format(self.ApiUrl),
                                 data=json.dumps(data),
                                 headers=self.headers)
            dicts = json.loads(html.text)

        if dicts['returnmessage']['code'] == 1:
            log.i(globals(), '国采用户,取消整个订单(生成验收单之前)', json.loads(html.text))

        else:
            # 验收单创建失败
            # 后续处理
            models.Error_Order(
                info=1,
                mess='[orderid={}],[total={}],[return={}]'.format(
                    self.orderid, self.total, json.loads(html.text)),
                key=self.orderModel,
                time=datetimenow()).save()
            log.i(globals(), '【失败】国采用户,取消整个订单(生成验收单之前) ',
                  json.loads(html.text))
            pass
        return dicts
        pass
Пример #7
0
    def AuthToken(self, code):

        data = {
            'type': 'cgr',
            'grant_type': 'authorization_code',
            'code': code,
            'redirect_uri': self.redirect_uri,
        }

        RegisterState.objects.get(code=code)

        html = self.service.get_raw_access_token(data=data)
        log.i(globals(), 'AuthToken_POST', html.text)

        if 'refresh' in html.text:
            html = self.service.get_raw_access_token(data=data)
            log.i(globals(), 'AuthToken_POST', html.text, '刷新页面')
            pass

        jso = json.loads(html.text)

        try:
            self.access_token = jso['access_token']
        except:
            from managestage.utli.datetimenow import datetime_unix
            error = jso['error']
            if error == 'invalid_grant':
                state = str(datetime_unix()).split('.')[0]
                params = {
                    'redirect_uri': self.redirect_uri,
                    'response_type': 'code',
                    'scope': 'read',
                    'state': str(state),
                    'type': 'cgr',
                }
                response = requests.post(url=self.userinfo_url, data=params)
                print(response.text)
                pass

            print(jso)
            print(
                '-------------------------------------------------------------'
            )
            print('KeyError 错误,重新登录')
            return None

        print('GET获取')

        return self.access_token
Пример #8
0
    def order_delete_on(self):
        '''
        作废整个订单(生成验收单之后)
        :return:
        '''
        # if not self.usercode or self.usercode == '':
        # 	log.i(globals(), '非国采用户,跳过作废整个订单(生成验收单之后)')
        # 	return False

        data = {
            'user': {
                'username': self.username,
                'code': self.sign()
            },
            'param': {
                'orderid': self.orderid,
                'type': 7  # 作废整个订单(退货,生成验收单之后)
            }
        }
        html = requests.post(url='{}/api/order_update'.format(self.ApiUrl),
                             data=json.dumps(data),
                             headers=self.headers)
        dicts = json.loads(html.text)

        if dicts['returnmessage']['code'] == 1:
            log.i(globals(), '国采用户,作废整个订单(生成验收单之前)', json.loads(html.text))
            acc = Acceptance.objects.get(orderid=self.orderid)
            acc.state = -1
            acc.save()
            # 订单中的验收单状态
            self.orderModel.ordispaid = -1
            self.orderModel.save()
        else:
            # 验收单创建失败
            # 后续处理
            models.Error_Order(
                info=1,
                mess='[orderid={}],[total={}],[return={}]'.format(
                    self.orderid, self.total, json.loads(html.text)),
                key=self.orderModel,
                time=datetimenow()).save()
            log.i(globals(), '【失败】国采用户,作废整个订单(生成验收单之前) ',
                  json.loads(html.text))
            return False
            pass
        return dicts
        pass
Пример #9
0
    def order_knot(self):
        '''
        更新订单-如果数据库ispaid为1 则申请生成验收单
        0 没付款
        1 款结了
        :return:
        '''
        if not self.usercode or self.usercode == '':
            log.i(globals(), '非国采用户,跳过更新订单-如果数据库ispaid为1 则申请生成验收单')
            return False

        if self.ispaid == 1:
            # 款结了 申请生成验收单
            data = {
                'user': {
                    'username': self.username,
                    'code': self.sign()
                },
                'param': {
                    'orderid': self.orderid,
                    'type': 1,  # 已验收完成(申请生成验收单)
                    'paymethod': self.paymethod,
                    'ispaid': self.ispaid
                }
            }
            html = requests.post(url='{}/api/order_update'.format(self.ApiUrl),
                                 data=json.dumps(data),
                                 headers=self.headers)
            dicts = json.loads(html.text)

            if dicts['returnmessage']['code'] == 1:
                log.i(globals(), '国采用户,款结了 申请生成验收单', dicts,
                      dicts['returnmessage']['ysd_code'])
                acc = Acceptance.objects.get(orderid=self.orderid)
                acc.state = 0
                acc.ysd_code = dicts['returnmessage']['ysd_code']
                acc.save()
            else:
                # 验收单创建失败
                # 后续处理
                models.Error_Order(
                    info=1,
                    mess='[orderid={}],[total={}],[return={}]'.format(
                        self.orderid, self.total, dicts),
                    key=self.orderModel,
                    time=datetimenow()).save()
                log.i(globals(), '【失败】国采用户,款结了 申请生成验收单 ',
                      json.loads(html.text))
                pass
            return json.loads(html.text)
            pass
        else:
            # 没付款
            log.i(globals(), '国采用户,没付款,不更新订单信息', self.ispaid)
            pass
        return False
        pass
Пример #10
0
    def dirHead(self, dirc, disUrl, path_image):
        '''
        商品展示图
        :param url:
        :param dirc:
        :return:
        '''

        name = ''
        for i in '{}-{}.{}'.format(
                str(datetimenow.datetimenow()).split('.')[0],
                random.randint(1000, 9000),
                str(dirc).split('.')[1]).split(':'):
            name += i
            pass

        a = self.get_absloute_url(BASE_DIR, self.url, dirc)
        b = self.get_absloute_url(disUrl, 'head', name)

        path_image_b = self.get_absloute_url(path_image, 'head', name)

        log.i(globals(), '商品展示图:  ', dirc.split('.')[0], '->', path_image_b)

        if not self.images:
            self.images = self.get_absloute_url('/', path_image_b)
            print('商品展示图 self.images', self.images)

        self.HeadList.append(
            (dirc.split('.')[0], self.get_absloute_url('/', path_image_b)))

        self.HeadList.sort(key=lambda k: k[0])
        log.i(globals(), 'HeadList', self.HeadList)

        b = self.get_absloute_url(BASE_DIR, b)

        shutil.copyfile(a, b)

        pass
Пример #11
0
def mail(email_user, email_title=None, email_body=None):
    '''
	发送邮件
	:param email_user:
	:param code:
	:param args:
	:return:
	'''

    send_status = False
    try:
        if email_user:

            send_status = send_mail(email_title, email_body,
                                    settings.EMAIL_HOST_USER, [email_user])
            if send_status:
                log.i(globals(), '发送邮件成功')
                pass
    except Exception as e:
        log.i(globals(), '发送邮件失败,抛出异常', e.args)
        pass

    return send_status
Пример #12
0
    def addModelsObjects(self):
        c = self.content
        for i in c:
            head = i['a']
            cont = i['b']
            name = i['n']
            money = i['m']
            unix = i['u']

            text = ''
            for i in cont:
                text += '''
				<p>
				    <img src="{}"/>
				</p>
				'''.format(i[1])
                log.i(globals(), '类型cont', i, i[1], unix, text)
                pass

            t = datetimenow.datetimenow()
            ware = models.WareApp(name=name,
                                  money=money,
                                  connet=text,
                                  image=self.images,
                                  unix=unix,
                                  time_add=t,
                                  time_now=t)
            ware.save()

            for image in head:
                log.i(globals(), '类型head', image, image[1])
                models.images(image=image[1], key=ware).save()

            models.parameter(model=name, key=ware).save()

        pass
Пример #13
0
    def dirList(self):

        dirHeadList = []
        dirContentList = []
        log.i(
            globals(),
            '--------------------------------Start--------------------------------'
        )
        if os.path.exists(self.url):
            dirs = os.listdir(self.url)
            print('sort', dirs.sort())

            for dis in dirs:
                url = self.get_absloute_url(self.url, dis)
                disUrl = self.get_absloute_url('media', 'images',
                                               ''.join(self.unix))

                path_image = self.get_absloute_url('images',
                                                   ''.join(self.unix))

                Urls = self.get_absloute_url(BASE_DIR, disUrl)
                if not 'Thumbs.db' in dis:
                    h, c = None, None

                    if not pathlib.Path(Urls).exists():
                        os.makedirs(Urls)

                    if not pathlib.Path(self.get_absloute_url(
                            Urls, 'head')).exists():
                        os.makedirs(self.get_absloute_url(Urls, 'head'))

                    if os.path.isfile(url):
                        self.dirHead(dis, disUrl, path_image)  # 商品展示图

                    elif os.path.isdir(url):
                        self.dirContent(dis, disUrl)  # 商品详情页
                        self.name = dis
                    else:
                        log.i(globals(), '导入商品失败', url)
                        self.log_ware.append({'url': url, 'name': self.name})
                        pass

                    self.log_ware.append({'name': '商品导入成功    {}'.format(Urls)})

                    pass

            self.content.append({
                'a': self.HeadList,
                'b': self.ConList,
                'u': self.unix,
                'n': self.name,
                'm': 0
            })

            log.i(globals(), self.content)
Пример #14
0
    def order_logistics(self):
        '''
        物流推送接口, 全量推送
        只推送数据库里面的物流信息
        :return:
        '''
        if not self.usercode or self.usercode == '':
            log.i(globals(), '非国采用户,跳过物流推送接口, 全量推送')
            return False

        logisticslist = []
        for i in self.istics:
            logisticslist.append({
                'time': str(i.time.astimezone()).split('+')[0],
                'info': i.info,
                'username': i.username
            })
            pass

        data = {
            'user': {
                'username': self.username,
                'code': self.sign()
            },
            'param': {
                'orderid': self.orderid,
                'suborderid': self.orderid,  # '子订单号(卖场)',
                'logisticslist': logisticslist
            }
        }

        html = requests.post(url='{}/api/order_logistics'.format(self.ApiUrl),
                             data=json.dumps(data),
                             headers=self.headers)
        dicts = json.loads(html.text)

        if dicts['returnmessage']['code'] == 1:
            log.i(globals(), '国采用户,物流推送接口, 全量推送', json.loads(html.text))
        else:
            # 验收单创建失败
            # 后续处理
            models.Error_Order(
                info=1,
                mess='[orderid={}],[total={}],[return={}]'.format(
                    self.orderid, self.total, json.loads(html.text)),
                key=self.orderModel,
                time=datetimenow()).save()
            log.i(globals(), '【失败】国采用户,物流推送接口, 全量推送 ', json.loads(html.text))
            pass
        return json.loads(html.text)
        pass
Пример #15
0
    def order_create(self):
        '''
        创建订单
        :return:
        '''
        if not self.usercode or self.usercode == '':
            log.i(globals(), '非国采用户,跳过创建订单')
            return False

        url = settings.HTTP_HOST
        goodslist = []
        for i in self.good:
            goodslist.append({
                'goodsname': i.goodsname,
                'goodsid': i.goodsid,
                'spu': i.spu,
                'sku': i.sku,
                'model': i.model,
                'goodsclassguid': int(i.goodsclassguid),
                'goodsclassname': i.goodsclassname,
                'goodsbrandname': i.goodsbrandname,
                'qty': int(i.qty),
                'total': float(i.total),
                'price': float(i.price),
                'originalprice': float(i.originalprice),
                'imgurl': i.get_image_url(),
                'goodsurl': '{}{}'.format(url, i.goodsurl)
            })
        pass

        data = {
            'user': {
                'username': self.username,
                'code': self.sign()
            },
            'param': {
                'orderid':
                self.orderid,
                'province':
                self.province,
                'city':
                self.city,
                'total':
                float(self.total),
                'linkman':
                self.name,
                'linkmobile':
                self.phone,
                'deliveryaddress':
                self.deliveryaddress,
                'paymethod':
                self.paymethod,
                'ispaid':
                self.ispaid,
                'remark':
                self.remark,
                'usercode':
                self.usercode,
                'createtime':
                self.datatime,
                'suborderlist': [{
                    'suborderid': self.orderid,  # 后期可能需要修改
                    'total': float(self.subtotal),
                    'goodslist': goodslist
                }]
            }
        }

        log.i(globals(), 'DATE ', data)

        html = requests.post(url='{}/api/order_create'.format(self.ApiUrl),
                             data=json.dumps(data),
                             headers=self.headers)

        dicts = json.loads(html.text)

        if dicts['returnmessage']['code'] == 1:
            log.i(globals(), '国采用户,创建订单', json.loads(html.text))

            Acceptance(orderid=self.orderid,
                       usercode=self.usercode,
                       time=datetimenow()).save()
        else:
            # 验收单创建失败
            # 后续处理
            models.Error_Order(
                info=1,
                mess='[orderid={}],[total={}],[return={}]'.format(
                    self.orderid, self.total, dicts),
                key=self.orderModel,
                time=datetimenow()).save()
            log.i(globals(), '【失败】国采用户,创建订单 ', json.loads(html.text))
            pass

        return dicts
        pass
Пример #16
0
    def post(self, request):
        '''
        增加数量,减少数量,批量删除,单个删除
        :param request:
        :return:
        '''
        id = request.POST.get('id')
        stype = request.POST.get('type')
        self.data = []

        wcart = WareCartJson.cart(self.request)

        if stype == '-' or stype == '+':
            carts = models.Cart.objects.get(id=id)
            '''商品数量增加或减少'''

            if stype == '-':
                carts.numb -= 1
                pass

            if stype == '+':
                carts.numb += 1
                pass

            carts.money = carts.numb * carts.price
            carts.save()

            wcart.cancelCartTotal(carts)

            # 计算商品优惠率等信息,将其写入购物车商品信息
            wcart.setListRate(carts)

            ca = cart(request)
            self.data = ca.getPrice(raw=carts)
            pass

        if stype == 'del':
            list_id = str(id).split('&')
            try:
                for i in list_id:
                    ''' 
                    添加被删除商品ID到list 
                    : 用于前端Js删除商品DIV块
                    '''
                    ids = i.split('=')[1]
                    self.data.append(ids)
                    del_cart = models.Cart.objects.get(id=ids).delete()
                    wcart.setListRate(del_cart, request=request)
                    pass
            except:
                ''' 
                添加被删除商品ID到list 
                : 用于前端Js删除商品DIV块
                '''
                del_cart = models.Cart.objects.get(id=id).delete()
                wcart.setListRate(del_cart, request=request)
                self.data.append(id)
                pass
            pass

        try:
            content = {
                'state': 'success',
                'data': json.loads(json.dumps(self.data)),
                'code': 200
            }
        except:
            content = {'state': 'success', 'data': self.data, 'code': 200}

        log.i(globals(), json.dumps(content))
        return HttpResponse(json.dumps(content))
        pass
Пример #17
0
    def dirContent(self, dirc, disUrl):
        '''
        商品详情页
        :param url:
        :param dirc:
        :return:
        '''
        urls = self.get_absloute_url(self.url, dirc)
        if os.path.exists(urls):
            for dircs in os.listdir(urls):
                if not 'Thumbs.db' in dircs:
                    a = self.get_absloute_url(BASE_DIR, self.url, dirc, dircs)
                    if os.path.isdir(a):
                        for root, dirnames, filenames in os.walk(a):
                            for filepath in filenames:

                                name = ''
                                for i in '{}-{}.{}'.format(
                                        str(datetimenow.datetimenow()).split(
                                            '.')[0],
                                        random.randint(1000, 9000),
                                        str(filepath).split('.')[1]).split(
                                            ':'):
                                    name += i
                                    pass

                                b = self.get_absloute_url(disUrl, name)

                                self.ConList.append(
                                    (filepath.split('.')[0],
                                     self.get_absloute_url('/', b)))
                                self.ConList.sort(key=lambda k: k[0])
                                log.i(globals(), 'ConList', self.ConList)

                                b = self.get_absloute_url(BASE_DIR, b)
                                shutil.copyfile(
                                    self.get_absloute_url(a, filepath), b)

                            # log.i(globals(), '商品详情页:  ', os.path.join(a, filepath), '->', b)
                            pass
                        pass
                    else:
                        name = ''
                        for i in '{}-{}.{}'.format(
                                str(datetimenow.datetimenow()).split('.')[0],
                                random.randint(1000, 9000),
                                str(dircs).split('.')[1]).split(':'):
                            name += i
                            pass

                        b = self.get_absloute_url(disUrl, name)
                        self.ConList.append((dircs.split('.')[0],
                                             self.get_absloute_url('/', b)))
                        self.ConList.sort(key=lambda k: k[0])
                        log.i(globals(), 'ConList', self.ConList)
                        b = self.get_absloute_url(BASE_DIR, b)
                        shutil.copyfile(a, b)
                        log.i(globals(), '商品详情页:  ', a, '->', b)
                    pass
                pass
            pass
        pass
Пример #18
0
def app_Search(request, lend):
	from managestage.models import SearchStatistics

	search = request.GET.get('search')
	if not search:
		search = ''

	Newsearch = request.GET.get('searback')

	classify = models.Classification.objects.filter()  # 全部分类
	nav = models.Navigation.objects.filter()  # 导航
	navtwo = models.Navigation_Two.objects.filter()  # 子导航


	t1 = request.GET.get('t1')  # 品牌
	t2 = request.GET.get('t2')  # 类型
	t3 = request.GET.get('t3')  # 技术类型
	t4 = request.GET.get('t4')  # 使用场景
	t5 = request.GET.get('t5')  # 价钱

	if t1:
		t1 = str(t1).split('.')[1]  # 品牌
	else:
		t1 = ''
	if t2:
		t2 = str(t2).split('.')[1]  # 类型
	else:
		t2 = ''
	if t3:
		t3 = str(t3).split('.')[1]  # 技术类型
	else:
		t3 = ''
	if t4:
		t4 = str(t4).split('.')[1]  # 使用场景
	else:
		t4 = ''
	if t5:
		t5 = str(t5).split('.')[1]  # 价钱
	else:
		t5 = ''




	Qst = Q()

	Qst.connector = 'AND'
	Qst.children.append(('brand_key__name__icontains', t1))
	Qst.children.append(('producttype_key__name__icontains', t2))
	Qst.children.append(('technology_key__name__icontains', t3))
	Qst.children.append(('scene_key__name__icontains', t4))
	Qst.children.append(('pricerange_key__name__icontains', t5))

	'''搜索商品'''
	qs = Q()
	qs.children.append(('wareApp_key__name__icontains', search))
	A = models.WareAppPrefix.objects.filter(Q(qs))
	B = []
	C = []
	Ds = None
	if not A:
		'''通过商品搜索器搜索商品'''
		qs = Q()
		qs.connector = 'OR'
		qs.children.append(('classifythere_key__name__icontains', search))
		B = models.WareAppPrefix.objects.filter(Q(qs, ))

		if not B:
			'''通过商品的详细配置参数搜索商品'''
			qs = Q()
			qs.connector = 'OR'
			qs.children.append(('brand__name__icontains', search))
			qs.children.append(('model__icontains', search))
			qs.children.append(('brands__icontains', search))
			qs.children.append(('brands__icontains', search))
			C = models.parameter.objects.filter(qs)
			if C:
				Ds = models.WareAppPrefix.objects.filter(Qst, wareApp_key=C[0].key)

	D = []

	for i in A:
		try:
			ware = i.wareApp_key
			if ware.release == True:
				try:
					image = models.images.objects.filter(key=ware)[:1].get().image
				except:
					image = '/static/images/ware/404.png'
				log.i(globals(), 'A', image)
				D.append({
					'id': ware.id,
					'name': ware.name,
					'money': ware.money,
					'connet': ware.connet,
					'characteristic': ware.characteristic,
					'commodity_description': ware.commodity_description,
					'unix': ware.unix,
					'image': '{}{}'.format(settings.HTTP_HOST, image)
				})
				pass
			log.i(globals(), 'A', i.wareApp_key.name)
		except:
			log.i(globals(), 'A', '通过商品的详细配置参数没有搜索商品')
			pass
		pass
	for i in B:
		try:
			ware = i.wareApp_key
			if ware.release == True:
				try:
					image = models.images.objects.filter(key=ware)[:1].get().image
				except:
					image = '/static/images/ware/404.png'
				log.i(globals(), 'B', image)
				D.append({
					'id': ware.id,
					'name': ware.name,
					'money': ware.money,
					'connet': ware.connet,
					'characteristic': ware.characteristic,
					'commodity_description': ware.commodity_description,
					'unix': ware.unix,
					'image': '{}{}'.format(settings.HTTP_HOST, image)
				})
				pass
			log.i(globals(), 'B', i.wareApp_key.name)
		except:
			log.i(globals(), 'B', '通过商品的详细配置参数没有搜索商品')
			pass
		pass
	for i in C:
		try:
			ware = i.key
			if ware.release == True:
				try:
					image = models.images.objects.filter(key=ware)[:1].get().image
				except:
					image = '/static/images/ware/404.png'

				log.i(globals(), 'C', image)
				D.append({
					'id': ware.id,
					'name': ware.name,
					'money': ware.money,
					'connet': ware.connet,
					'characteristic': ware.characteristic,
					'commodity_description': ware.commodity_description,
					'unix': ware.unix,
					'image': '{}{}'.format(settings.HTTP_HOST, image)
				})
				pass
			log.i(globals(), 'C', i.key.name)
		except:
			log.i(globals(), 'C', '通过商品的详细配置参数没有搜索商品')
			pass

		pass

	log.i(globals(), 'ASD  ', t1, t2, t3, t4, t5)
	ts1, ts2, ts3, ts4, ts5 = None, None, None, None, None
	WarePrefix = None

	''' 获取第一个商品的 搜索筛选器 '''
	filter_error = {}
	if A:
		A1 = A[0]
		WarePrefix = WareSetupPrefix.objects.filter(key=A1.classifythere_key)
		log.i(globals(), 'A1', WarePrefix, A1.classifythere_key.id)
	elif B:
		B1 = B[0]
		WarePrefix = WareSetupPrefix.objects.filter(key=B1.classifythere_key)
		log.i(globals(), 'B1', WarePrefix, B1.wareApp_key.id)
	elif Ds:
		C1 = Ds[0]
		WarePrefix = WareSetupPrefix.objects.filter(key=C1.classifythere_key)
		log.i(globals(), 'C1', WarePrefix, C1.wareApp_key.id)
		pass
	else:
		'''未搜索到商品'''
		WarePrefix = WareSetupPrefix.objects.filter()
		filter_error = {
			'error': '没有搜索到商品'
		}
		pass

	if WarePrefix:
		ts1 = WarePrefix.filter(filter_id='0')[:1].get()
		ts2 = WarePrefix.filter(filter_id='1')[:1].get()
		ts3 = WarePrefix.filter(filter_id='2')[:1].get()
		ts4 = WarePrefix.filter(filter_id='3')[:1].get()
		ts5 = WarePrefix.filter(filter_id='4')[:1].get()

	E = []

	log.i(globals(), 'AAAAAAAAAA ', WarePrefix)
	brand = []
	if ts1: # Q(('name__icontains', t1)) ,
		for i in models.Brand.objects.filter(PrefixKey=ts1):
			brand.append({
				'id': i.id,
				'name': i.name
			})
			pass
		E.append(
			{
				'name': ts1.t1,
				'data': brand
			}
		)
	producttype = []
	if ts2: # Q(('name__icontains', t2)),
		for i in models.ProductType.objects.filter(PrefixKey=ts2):
			producttype.append({
				'id': i.id,
				'name': i.name
			})
			pass
		E.append(
			{
				'name': ts1.t1,
				'data': brand
			}
		)
	technology = []
	if ts3: # Q(('name__icontains', t3)),
		for i in models.Technology.objects.filter(PrefixKey=ts3):
			technology.append({
				'id': i.id,
				'name': i.name
			})
			pass
		E.append(
			{
				'name': ts1.t1,
				'data': brand
			}
		)
	scene = []
	if ts4: # Q(('name__icontains', t4)),
		for i in models.Scene.objects.filter(PrefixKey=ts4):
			scene.append({
				'id': i.id,
				'name': i.name
			})
			pass
		E.append(
			{
				'name': ts1.t1,
				'data': brand
			}
		)
	pricerange = []
	if ts5: # Q(('name__icontains', t5)),
		for i in models.PriceRange.objects.filter(PrefixKey=ts5):
			pricerange.append({
				'id': i.id,
				'name': i.name
			})
			pass
		E.append(
			{
				'name': ts1.t1,
				'data': brand
			}
		)






	try:
		filters = {
			't1': ts1.t1,
			't2': ts2.t2,
			't3': ts3.t3,
			't4': ts4.t4,
			't5': ts5.t5
		}
	except:
		filters = {
		}


	content = {
		'search_ok': Newsearch,
		'search': search,
		'wareapp': D,
		'auth_search': '',
		'E': E,
		'brand': brand,
		'productType': producttype,
		'technology': technology,
		'scene': scene,
		'priceRange': pricerange,
		'Classifications': classify,
		'navigation': nav,
		'navigation_two': navtwo,

		'filter': filters,
		'filter_error': filter_error
	}

	# log.i(globals(), content)
	return render(request, 'defaule/app/search.html', content)
Пример #19
0
def app_Searchs(request, lend):
	from managestage.models import SearchStatistics

	searchs = request.GET.get('search')
	search_ok = request.GET.get('searback')

	evp = request.GET.get('evp')  # 品牌
	evs = request.GET.get('evs')  # 类型
	evj = request.GET.get('evj')  # 技术类型
	evf = request.GET.get('evf')  # 使用场景
	evq = request.GET.get('evq')  # 价钱

	classifications = models.Classification.objects.filter()  # 全部分类
	navigation_two = models.Navigation_Two.objects.filter()  # 子导航
	navigation = models.Navigation.objects.filter()  # 导航

	wareapp = search(searchs, search_ok, lend, evp, evs, evj, evf, evq)
	search_new, warePrefix = wareapp.getOjbectsModels()
	auth_search = False  # 搜索到结果为 True
	key = None

	if len(search_new) > 0 and classifications[0]:
		print('用户搜索到商品', warePrefix.filter()[:1].get())
		auth_search = True

		search_filter = warePrefix.filter()[:1].get()
		aaa = search_filter.classifythere_key
		print('aaa ------ ', aaa)

		key = models.Classification_There.objects.filter(id=search_filter.classifythere_key_id)[0]
		print('key-----------------', key)
		'''
		统计用户搜索关键字习惯
		'''
		if searchs:
			try:
				Statistics = SearchStatistics.objects.get(name__icontains=searchs)
				Statistics.number += 1
				Statistics.save()
			except:
				SearchStatistics(
					name=searchs,
					number=1
				).save()
		pass

	print('SEARCH ---- ', search_ok, search_new, key)
	if search_ok:
		keys = models.Classification_There.objects.filter(name=search_ok)
		print('name--------', keys[0].id)
		if keys:
			key = keys[0]
		pass
	else:
		if key:
			search_ok = key.name
		else:
			search_ok = models.Classification_There.objects.filter()[:1]
			if search_ok:
				search_ok = search_ok.get()
			else:
				search_ok = ''
				pass
		pass



	WarePrefix = models.WareSetupPrefix.objects.filter(key=key)

	log.i(globals(), WarePrefix)


	pricerange = models.PriceRange.objects.filter(key=WarePrefix.get(filter_id='4'))  # 价格范围
	producttype = models.ProductType.objects.filter(key=WarePrefix.get(filter_id='1')[:1].get())  # 产品类型
	technology = models.Technology.objects.filter(key=WarePrefix.get(filter_id='2')[:1].get())  # 技术类型
	scene = models.Scene.objects.filter(key=WarePrefix.get(filter_id='3')[:1].get())  # 使用场景
	brand = models.Brand.objects.filter(key=WarePrefix.get(filter_id='0')[:1].get())  # 品牌





	content = {
		'search_ok': search_ok,
		'search': searchs,
		'wareapp': search_new,
		'auth_search': auth_search,
		'brand': brand,
		'productType': producttype,
		'technology': technology,
		'scene': scene,
		'priceRange': pricerange,
		'Classifications': classifications,
		'navigation': navigation,
		'navigation_two': navigation_two
	}

	log.i(globals(), content)
	return render(request, 'defaule/app/search.html', content)