def global_statistic(context): """ @note: 全站统计信息展现 """ from www.question.models import Question, Answer from www.account.models import User from www.stock.models import StockFeed from common import cache key = 'global_statistic' cache_obj = cache.Cache(config=cache.CACHE_STATIC) gs = cache_obj.get(key) if not gs: answer_count = Answer.objects.filter(state=True).count() question_count = Question.objects.filter(state=True).count() account_count = User.objects.all().count() stock_feed_count = StockFeed.objects.all().count() now = datetime.datetime.now() stock_feed_latest_time = now.strftime('%Y-%m-%d %H:%M:%S') sfs = StockFeed.objects.all().order_by("-create_time")[:1] if sfs: stock_feed_latest_time = sfs[0].create_time gs = dict(answer_count=answer_count, question_count=question_count, account_count=account_count, update_time=now.strftime('%Y-%m-%d %H:%M:%S'), stock_feed_count=stock_feed_count, stock_feed_latest_time=stock_feed_latest_time, ) cache_obj.set(key, gs, time_out=3600 * 2) return render_to_response('include/_global_statistic.html', locals(), context_instance=context).content
def update_user_last_active_time(self, user_id, ip=None, last_active_source=0): ''' @note: 更新用户最后活跃时间 ''' cache_obj = cache.Cache() # 一小时更新一次 if not cache_obj.get_time_is_locked( key=u'last_active_time_%s' % user_id, time_out=3600): try: la = LastActive.objects.get(user_id=user_id) la.ip = ip la.last_active_source = last_active_source la.last_active_time = datetime.datetime.now() la.save() except LastActive.DoesNotExist: LastActive.objects.create( user_id=user_id, last_active_time=datetime.datetime.now(), ip=ip, last_active_source=last_active_source) now_date = datetime.datetime.now().date() try: ActiveDay.objects.get(user_id=user_id, active_day=now_date) except ActiveDay.DoesNotExist: ActiveDay.objects.create(user_id=user_id, active_day=now_date)
def send_forget_password_email(self, email): ''' @note: 发送密码找回邮件 ''' if not email: return 99800, dict_err.get(99800) user = self.get_user_by_email(email) if not user: return 10111, dict_err.get(10111) cache_obj = cache.Cache() key = u'forget_password_email_code_%s' % email code = cache_obj.get(key) if not code: code = utils.uuid_without_dash() cache_obj.set(key, code, time_out=1800) cache_obj.set(code, user, time_out=1800) if not cache_obj.get_time_is_locked(key, 60): context = { 'reset_url': '%s/reset_password?code=%s' % (settings.MAIN_DOMAIN, code), } async_send_email( email, u'智选找回密码', utils.render_email_template('email/reset_password.html', context), 'html') return 0, dict_err.get(0)
def get_weixin_login_state(request): ''' @note: 微信扫码登陆 ''' from common import cache ticket = request.REQUEST.get('ticket', '').strip() cache_obj = cache.Cache() key = u'weixin_login_state_%s' % ticket datas = cache_obj.get(key) if datas: errcode, errmsg, user_id = datas else: errcode, errmsg, user_id = -2, u"等待登陆中", "" next_url = "" if errcode == 0: user = ub.get_user_by_id(user_id) user.backend = 'www.middleware.user_backend.AuthBackend' auth.login(request, user) next_url = request.session.get('next_url') or '/' request.session.update(dict(next_url='')) # cache_obj.delete(key) return HttpResponse(json.dumps( dict(errcode=errcode, errmsg=errmsg, next_url=next_url)), mimetype='application/json')
def remove_cache(request): index = request.REQUEST.get('index') key = request.REQUEST.get('key_name') try: c = cache.Cache(cache.CACHE_INDEX[index][1]) c.delete(key) return 0, u'删除成功!' except Exception, e: debug.get_debug_detail(e) return 1, u'系统错误!'
def get_cache(request): index = request.REQUEST.get('index') key = request.REQUEST.get('key_name') try: c = cache.Cache(cache.CACHE_INDEX[index][1]) return 0, [c.get(key) or '', c.ttl(key) or 0] except Exception, e: debug.get_debug_detail(e) return 1, u'系统错误!'
def modify_cache(request): index = request.REQUEST.get('index') key = request.REQUEST.get('key_name') value = request.REQUEST.get('key_value', '') expire = request.REQUEST.get('key_expire', 3600) try: c = cache.Cache(cache.CACHE_INDEX[index][1]) c.set(key, value, expire) return 0, u'修改成功!' except Exception, e: debug.get_debug_detail(e) return 1, u'系统错误!'
def send_confirm_email(self, user): ''' @note: 发送验证邮件 ''' cache_obj = cache.Cache() key = u'confirm_email_code_%s' % user.id code = cache_obj.get(key) if not code: code = utils.uuid_without_dash() cache_obj.set(key, code, time_out=1800) if not cache_obj.get_time_is_locked(key, 60): context = {'verify_url': '%s/account/user_settings/verify_email?code=%s' % (settings.MAIN_DOMAIN, code), } async_send_email(user.email, u'且行户外邮箱验证', utils.render_email_template('email/verify_email.html', context), 'html')
def config(request): """ @attention: Adds settings-related context variables to the context. """ import datetime from django.conf import settings from common import cache return { 'DEBUG': settings.DEBUG, 'LOCAL_FLAG': settings.LOCAL_FLAG, 'MEDIA_VERSION': cache.Cache(cache.CACHE_STATIC).get('media_version') or '000', # 从缓存中取版本号 'SERVER_DOMAIN': settings.SERVER_DOMAIN, 'MAIN_DOMAIN': settings.MAIN_DOMAIN, 'IMG0_DOMAIN': settings.IMG0_DOMAIN, "YEAR": datetime.datetime.now().strftime("%Y"), }
def login_by_weixin_qr_code(self, ticket, openid, app_key): """ @note: 通过微信二维码扫码登陆 """ assert ticket and openid and app_key from www.weixin.interface import dict_weixin_app from www.tasks import async_change_profile_from_weixin user_info = dict(nick=u"weixin_%s" % int(time.time() * 1000), url="", gender=0) flag, result = self.get_user_by_external_info( source='weixin', access_token="access_token_%s" % openid, external_user_id=openid, refresh_token=None, nick=user_info['nick'], ip=None, expire_time=0, user_url=user_info['url'], gender=user_info['gender'], app_id=dict_weixin_app[app_key]["app_id"]) if flag: user = result UserBase().update_user_last_login_time(user.id, last_active_source=2) # 更新用户资料 if settings.LOCAL_FLAG: async_change_profile_from_weixin(user, app_key, openid) else: async_change_profile_from_weixin.delay(user, app_key, openid) errcode, errmsg = 0, u"扫码登陆网站成功" else: errcode, errmsg = -1, result # 设置缓存 cache_obj = cache.Cache() key = u'weixin_login_state_%s' % ticket user_id = user.id if errcode == 0 else "" cache_obj.set(key, [errcode, errmsg, user_id], time_out=300) return errcode, errmsg
def check_email_confim_code(self, user, code): ''' @note: 确认邮箱 ''' if not code: return 99800, dict_err.get(99800) cache_obj = cache.Cache() key = u'confirm_email_code_%s' % user.id cache_code = cache_obj.get(key) if cache_code != code: return 10110, dict_err.get(10110) user.email_verified = True user.save() # 更新缓存 self.get_user_by_id(user.id, must_update_cache=True) return 0, user
def get_user_by_code(self, code): cache_obj = cache.Cache() return cache_obj.get(code)
#!/usr/bin/env python3.6 # -*- coding:Utf-8 -*- import logging from logging.handlers import RotatingFileHandler import hug import time import common.objects as obj import common.cache as cache cache_store = cache.Cache() ## LOGGER ## class _AnsiColorStreamHandler(logging.StreamHandler): DEFAULT = '\x1b[0m' RED = '\x1b[31m' GREEN = '\x1b[32m' YELLOW = '\x1b[33m' CYAN = '\x1b[36m' CRITICAL = RED ERROR = RED WARNING = YELLOW INFO = GREEN DEBUG = CYAN @classmethod
if new_password_1 != new_password_2: return 10105, dict_err.get(10105) try: validators.vpassword(new_password_1) except Exception, e: return 99900, smart_unicode(e) user_login = self.get_user_login_by_id(user.id) user_login.password = self.set_password(new_password_1) user_login.save() # 更新缓存 self.get_user_by_id(user.id, must_update_cache=True) cache_obj = cache.Cache() key = u'forget_password_email_code_%s' % user.email cache_obj.delete(key) cache_obj.delete(code) return 0, user_login def update_user_last_active_time(self, user_id, ip=None, last_active_source=0): ''' @note: 更新用户最后活跃时间 ''' cache_obj = cache.Cache() # 一小时更新一次 if not cache_obj.get_time_is_locked(
def get_chart_data(request): from account.interface import UserBase from car_wash.interface import OrderBase #=================== 获取总注册用户数的数据 register_x_data = [] register_y_data = [] data_length = 360 register_count_data = dict(UserBase().get_count_group_by_create_time(data_length)) for i in range(data_length): temp_date = datetime.datetime.now().date() - datetime.timedelta(data_length-i) temp_date = temp_date.strftime('%Y-%m-%d') register_x_data.append(temp_date) register_y_data.append(register_count_data.get(temp_date, 0)) #=================== 获取今日注册用户数的数据 today_register_x_data = [] today_register_y_data = [] today_register_data = dict(UserBase().get_toady_count_group_by_create_time()) for i in range(24): temp_hour = '%02d' % i today_register_x_data.append(temp_hour) today_register_y_data.append(today_register_data.get(temp_hour, 0)) #=================== 获取今日订单数的数据 today_order_x_data = [] today_order_y_data = [] today_order_data = dict(OrderBase().get_toady_count_group_by_create_time()) for i in range(24): temp_hour = '%02d' % i today_order_x_data.append(temp_hour) today_order_y_data.append(today_order_data.get(temp_hour, 0)) #=================== 获取今日订单总额的数据 today_balance_x_data = [] today_balance_y_data = [] today_balance_data = dict(OrderBase().get_toady_balance_group_by_create_time()) for i in range(24): temp_hour = '%02d' % i today_balance_x_data.append(temp_hour) today_balance_y_data.append(float(today_balance_data.get(temp_hour, 0))) #=================== 获取缓存增量 cache_obj = cache.Cache(cache.CACHE_STATIC) cache_str = cache_obj.get('statistics_chart') or '0,0,0,0' cache_str = cache_str.split(',') register_cache = int(cache_str[0].strip()) today_register_cache = int(cache_str[1].strip()) today_order_cache = int(cache_str[2].strip()) today_balance_cache = float(cache_str[3].strip()) return HttpResponse( json.dumps({ 'register_count': UserBase().get_all_users().count() + register_cache, 'register_count_chart_data': [register_x_data, register_y_data], 'today_register_count': sum(today_register_data.values()) + today_register_cache, 'today_register_count_chart_data': [today_register_x_data, today_register_y_data], 'today_order_count': sum(today_order_data.values()) + today_order_cache, 'today_order_count_chart_data': [today_order_x_data, today_order_y_data], 'today_balance': float(sum(today_balance_data.values())) + today_balance_cache, 'today_balance_chart_data': [today_balance_x_data, today_balance_y_data] }), mimetype='application/json' )
def __init__(self): self.cache = cache.Cache()
def get_delay_count(key): cache_obj = cache.Cache(cache.CACHE_WORKER) return cache_obj.llen(key)
def __init__(self, session_key=None): self._cache = cache.Cache(cache.CACHE_SESSION) super(SessionStore, self).__init__(session_key)
def __init__(self): self.cache_obj = cache.Cache(config=cache.CACHE_TMP)
passwd = mysql.passwd, charset = mysql.charset, port = mysql.port) template = Environment(loader=FileSystemLoader('templates'), cache_size=-1, trim_blocks=True) template.filters["timediff_format"] = tpl_filter.timediff_format template.globals.update(_=tpl_filter.trans) template.globals.update(_timediff=tpl_filter.trans_time) # queue conf exchange = Exchange(rabbitmq.exchange, "direct", durable=True) cron_queue = Queue("cron", exchange=exchange, routing_key="cron") message_queue = Queue("message", exchange=exchange, routing_key="message") queue_conn = Connection("amqp://%s:%s@%s:%s/%s" % (rabbitmq.user, rabbitmq.password, rabbitmq.host, rabbitmq.port, rabbitmq.vhost)) # queue end # cache cache = libcache.Cache() all_languages = ("Chinese", "Japanese", "Korean", "French", "Spanish") pl = ("Java", "C", "C++", "C#", "Python", "PHP", "Javascript", "Ruby", "Perl", "Visual Basic .NET", "Delphi/Object Pascal", "Assembly language", "Visual Basic", "Objective-C", "Swift", "R", "Groovy", "MATLAB", "PL/SQL", "D", "Schema", "Dart", "Lisp", "Fortan", "Lua", "Scala", "Haskell", "Golang", "Erlang", "Rust", "Ada") all_skills = ("Tomcat","Zeus","Lighttpd","IIS","Blackberry", "Symbian","Windows phone","Android","Linux", "Mac OS","Apache HTTP Server","Nginx","Mtk", "IOS ","Windows","Websphere Application Server", "Weblogic Server","Apusic Application Server", "Jetty","Resin","Geronimo","Jboss Application Server",