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)
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)
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)