예제 #1
0
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
예제 #2
0
 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)
예제 #3
0
    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)
예제 #4
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')
예제 #5
0
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'系统错误!'
예제 #6
0
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'系统错误!'
예제 #7
0
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'系统错误!'
예제 #8
0
    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')
예제 #9
0
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"),
    }
예제 #10
0
    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
예제 #11
0
    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
예제 #12
0
 def get_user_by_code(self, code):
     cache_obj = cache.Cache()
     return cache_obj.get(code)
예제 #13
0
#!/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
예제 #14
0
        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(
예제 #15
0
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'
    ) 
예제 #16
0
 def __init__(self):
     self.cache = cache.Cache()
예제 #17
0
def get_delay_count(key):
    cache_obj = cache.Cache(cache.CACHE_WORKER)
    return cache_obj.llen(key)
예제 #18
0
 def __init__(self, session_key=None):
     self._cache = cache.Cache(cache.CACHE_SESSION)
     super(SessionStore, self).__init__(session_key)
예제 #19
0
 def __init__(self):
     self.cache_obj = cache.Cache(config=cache.CACHE_TMP)
예제 #20
0
        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",