Exemple #1
0
 def delete_cache(self, id):
     for key, result in self.search_results.iteritems():
         result = loads(result) if isinstance(result, str) else result
         new_result = []
         for item in result:
             if str(item.get('pk')) != str(id):
                 self.delete_result(key)
                 new_result.append(item)
         cache.hset(self.CACHE_RESULT_TAG, key, dumps(new_result))
Exemple #2
0
 def delete_cache(self, id):
     for key, result in self.search_results.iteritems():
         result = loads(result) if isinstance(result, str) else result
         new_result = []
         for item in result:
             if str(item.get('pk')) != str(id):
                 self.delete_result(key)
                 new_result.append(item)
         cache.hset(self.CACHE_RESULT_TAG, key, dumps(new_result))
Exemple #3
0
 def insert_cache(self, id):
     for key, result in self.search_results.iteritems():
         result = loads(result) if isinstance(result, str) else result
         try:
             commercial = Commercial.objects.get(pk=id)
             self.delete_result(key)
             commercial = self.get_commercial_data(commercial)
             result.append(commercial)
             cache.hset(self.CACHE_RESULT_TAG, key, dumps(result))
         except:
             pass
Exemple #4
0
 def insert_cache(self, id):
     for key, result in self.search_results.iteritems():
         result = loads(result) if isinstance(result, str) else result
         try:
             commercial = Commercial.objects.get(pk=id)
             self.delete_result(key)
             commercial = self.get_commercial_data(commercial)
             result.append(commercial)
             cache.hset(self.CACHE_RESULT_TAG, key, dumps(result))
         except:
             pass
Exemple #5
0
 def update_cache(self, id):
     for key, result in self.search_results.iteritems():
         result = loads(result) if isinstance(result, str) else result
         new_result = []
         for item in result:
             if str(item.get('pk')) == str(id):
                 self.delete_result(key)
                 if self.MODEL == Commercial:
                     commercial = Commercial.objects.get(pk=item.get('pk'))
                     item = self.get_commercial_data(commercial)
             new_result.append(item)
         cache.hset(self.CACHE_RESULT_TAG, key, dumps(new_result))
Exemple #6
0
 def update_cache(self, id):
     for key, result in self.search_results.iteritems():
         result = loads(result) if isinstance(result, str) else result
         new_result = []
         for item in result:
             if str(item.get('pk')) == str(id):
                 self.delete_result(key)
                 if self.MODEL == Commercial:
                     commercial = Commercial.objects.get(pk=item.get('pk'))
                     item = self.get_commercial_data(commercial)
             new_result.append(item)
         cache.hset(self.CACHE_RESULT_TAG, key, dumps(new_result))
Exemple #7
0
 def get_queryset(self):
     options = {
         'active': True,
     }
     if settings.APPLICATION_CACHE:
         tag = Commercial.get_commercial_tag()
         if cache.hexists(tag, options):
             data = json.loads(cache.hget(tag, options))
         else:
             data = self.get_list()
             cache.hset(Commercial.get_commercial_tag(), options, json.dumps(data))
     else:
         data = self.get_list()
     return data
Exemple #8
0
    def get_queryset(self):
        options = {
            'brand_id': self.request.GET.get('brand_id', ''),
            'brand__entry': self.request.GET.get('brand__entry', ''),
            'name': self.request.GET.get('name__icontains', ''),
            'page': self.request.GET.get('page', '')
        }
        if settings.APPLICATION_CACHE and self.cache_status:
            str(self.request.GET.get('brand__entry', ''))

            if cache.hexists(Commercial.get_commercial_tag(), options):
                data = json.loads(cache.hget('commercial_list', options))
            else:
                qs = super(CommercialListView, self).get_queryset()
                data = self.get_list(qs)
                cache.hset(Commercial.get_commercial_tag(), options, json.dumps(data))
        else:
            qs = super(CommercialListView, self).get_queryset()
            data = self.get_list(qs)
        return data
Exemple #9
0
def AppSendSms(request, account):
    SENDCOUNT = 'sendcount'
    #     phone = redis_pool.hget(account, G_PHONE)
    adict = redis_pool.hgetall(account)
    #     print "all key is",adict

    if G_PHONE not in adict:
        return HttpReturn(UnAuth)

#     redis_pool.hdel(account, G_PHONE)
#     print "phone number ", phone

### 同一号24小时只能发送三次短信. ###
    sendnum = redis_pool.hget(adict[G_PHONE], SENDCOUNT)
    #     print "gettxt from redis", sendnum
    if sendnum and int(sendnum) == 3:
        return HttpReturn(SmsOverError)

    sendtime = redis_pool.hget(adict[G_PHONE], 'lastime')

    if sendtime and (time.time() -
                     int(sendtime)) < settings.SESSION_COOKIE_AGE / 10:
        return HttpReturn(SmsIntervalError)


#     ipaddr = request.META.get('REMOTE_ADDR')
    ipobj, ok = IpAddress.objects.get_or_create(
        ipaddr=request.META.get(G_REMOTE_ADDR))
    oldaddr = redis_pool.hget(account, G_IPADDR)
    if cmp(ipobj.ipaddr, oldaddr):
        return HttpReturn(IpAddrError)

    try:
        (sms, state) = sendsms.SendSMS(adict[G_PHONE])
    except HTTPError:
        return HttpReturn(InternalError)
    except IndexError:
        SmsErrorLog.objects.create(-100, ipobj, timezone.now, adict[G_PHONE])
        return HttpReturn(InternalError)
    if state == 0:
        redis_pool.expire(adict[G_PHONE], settings.SESSION_COOKIE_AGE)
        redis_pool.hset(adict[G_PHONE], 'lastime', int(time.time()))
        #         redis_pool.expire(phone,settings.SESSION_COOKIE_AGE)
        if redis_pool.hget(adict[G_PHONE], SENDCOUNT):
            redis_pool.hincrby(adict[G_PHONE], SENDCOUNT, 1)
        else:
            redis_pool.hset(adict[G_PHONE], SENDCOUNT, 1)
        resetcode = hashlib.md5(adict[G_PHONE] +
                                str(time.time())).hexdigest().upper()
        if G_REGISTER in adict:
            for (k, v) in adict.items():
                redis_pool.hset(resetcode, k, v)

        redis_pool.hmset(resetcode, {G_PHONE: adict[G_PHONE], 'sms': sms})
        #         print "reset code dict is",redis_pool.hgetall(resetcode)
        redis_pool.expire(resetcode, settings.SESSION_COOKIE_AGE)
        redis_pool.hdel(account, G_PHONE)  # 删除这个键,一次有效
        return HttpReturn(json.dumps({G_OK: True, 'rescode': resetcode}))
    else:
        if state in ErrDict:
            errobj, ok = SmsErrorTable.objects.get_or_create(errcode=state,
                                                             msg=ErrDict.get(
                                                                 state,
                                                                 u"未知错误"))
            SmsErrorLog.objects.create(errcode=errobj,
                                       ipaddr=ipobj,
                                       addtime=timezone.now(),
                                       phone=adict[G_PHONE])
        if state in [10006, 10007, 10005]:
            return HttpReturn(
                json.dumps({
                    G_ERR: "OtherError",
                    G_MSG: ErrDict[state]
                }))
        else:
            return HttpReturn(InternalError)