Пример #1
0
def send_admin_email(*args, **kwargs):
    
    @cache(key='subject', time=1200)
    def task(subject=None, message=None, admins=None, 
    user=None, user_agent=None, ip=None, attachments=None, url=None):
        if not user_agent:
            user_agent = os.environ.get('HTTP_USER_AGENT', 'Unknown User Agent')
        if not url:
            url = GetUrl()
        if not ip:
            ip = IPAddress()
        from backend.mail.base import EmailMessage
        if not admins:
            admins = ['*****@*****.**']
        for admin in admins:
            email_msg = EmailMessage(
                duplicate_check=False,
                subject=subject, 
                to=admin, 
                context={
                    'message': message,
                    'url': url,
                    'ip': ip,
                    'user_agent': user_agent,
                    'user': user
                }, 
                template="admin_report.html",
                attachments=attachments,
                mixpanel=False)
            email_msg.send()  
        
    defer.execute_task(task, *args, **kwargs)        
Пример #2
0
def _run_method_on_entities(*args, **kwargs):
    def task(cls, method, fetch_count=500, key_offset = None, task_args=None):
        
        count = 0
        if cls.__class__.__name__ == 'Query': query = cls.order('__key__')
        else: query = cls.all().order('__key__')
        if key_offset: 
          logging.info('key offset is %s' % key_offset)
          query = query.filter('__key__ > ', db.Key(key_offset))

        while count % fetch_count == 0:
            entities = query.fetch(fetch_count)
            method(entities)
          
            current_count = len(entities)
            if current_count == 0:
               break
            count += current_count

            if current_count >= fetch_count:          
                last_key = query.fetch(1, fetch_count-1)[0].key()
                query = query.filter('__key__ > ', last_key)
                logging.info("count for class %s:  %d with last_key %s" % (cls.__name__, count, str(last_key)))
        return count
        
    defer.execute_task(task, *args, **kwargs)  
Пример #3
0
def _run_method_on_entities(*args, **kwargs):
    def task(cls, method, fetch_count=500, key_offset=None, task_args=None):

        count = 0
        if cls.__class__.__name__ == 'Query': query = cls.order('__key__')
        else: query = cls.all().order('__key__')
        if key_offset:
            logging.info('key offset is %s' % key_offset)
            query = query.filter('__key__ > ', db.Key(key_offset))

        while count % fetch_count == 0:
            entities = query.fetch(fetch_count)
            method(entities)

            current_count = len(entities)
            if current_count == 0:
                break
            count += current_count

            if current_count >= fetch_count:
                last_key = query.fetch(1, fetch_count - 1)[0].key()
                query = query.filter('__key__ > ', last_key)
                logging.info("count for class %s:  %d with last_key %s" %
                             (cls.__name__, count, str(last_key)))
        return count

    defer.execute_task(task, *args, **kwargs)