def _gen_analytics(self): log.info('Hourly Analytic Generator Stated') hours = int(self.request.get('hours', 1)) for h in reversed(xrange(hours)): log.info('Generation for hour %s', h) start = datetime.now().replace(minute=0, second=0, microsecond=0) - timedelta(hours=h) log.info('Start Time: %s', start) ana_count = 0 orgs = Organization.query() for org in orgs.iter(keys_only=True, limit=3): log.info('Generating Analytics for %s', org.id()) users = User.query(User.organization == org).order( User.first_name) for usr in users.iter(keys_only=True, limit=3): ana_count += self._create_analytic(start=start, org=org, usr=usr) ana_count += self._create_analytic(start=start) log.info( 'Hourly Analytic Generator Finished: %s Analytics created', ana_count)
def get(self): email = self.request.get('email') if email == '': raise HttpErrorException.bad_request('no email given') user = User.query(User.email == email).get() if not user: raise HttpErrorException.bad_request('invalid email given') user.send_username_email()
def get(self, *args, **kwargs): members = {} for rank in self.rankmodel.hierarchy(): query = User.query(User.rankkey == rank.key) members[rank.name] = {} members[rank.name]['results'] = query members[rank.name]['hasmembers'] = query.count(1) > 0 context = { 'members': members, 'hierarchy': self.rankmodel.hierarchy(), } self.response.out.write(self.loadtemplate(context))
def add_post_for(username, img_url, thumb_url): """ posts表增加数据 :param username: :param img_url: :param thumb_url: :return: """ user = User.query(username) post = Post(img_url=img_url, user=user, thumb_url=thumb_url) session.add(post) session.commit() return post
def run(): gc = GlobalConfig.get_configs() users = User.query() for user in users.iter(): log.info('Check ' + user.username + ' account status') if runtime.is_shutting_down(): break if user.account_status == payment.TRIAL or user.account_status == payment.TRIAL_EXPIRED: expire_date = user.account_expire_date + timedelta(days=gc.trial_expiring_grace_period) days_till_expire = (expire_date - datetime.now()).days log.info(user.username + ' account expires in ' + str(days_till_expire)) if days_till_expire in gc.trial_expiring_email_intervales: log.info(user.username + '\'s trial expires in ' + str(days_till_expire) + ' days') mail.send_trial_ending_email(days_till_expire, user, gc) elif days_till_expire == 0: log.info(user.username + '\'s trial has expired') user.account_statue = payment.TRIAL_EXPIRED user.put() mail.send_trial_ended_email(user, gc) elif days_till_expire * -1 in gc.trial_expired_email_intervales: user.account_statue = payment.TRIAL_EXPIRED user.put() mail.send_after_trial_ended_email(days_till_expire * -1, user, gc) elif user.account_status != payment.ORG and user.account_status != payment.SUB: expire_date = user.account_expire_date + timedelta(days=gc.acct_expiring_grace_period) days_till_expire = (expire_date - datetime.now()).days log.info(user.username + ' account expires in ' + str(days_till_expire)) if days_till_expire in gc.acct_expiring_email_intervales and user.account_status != payment.SUB: log.info(user.username + '\'s account expires in ' + str(days_till_expire) + ' days') mail.send_account_expiring_email(days_till_expire, user, gc) elif days_till_expire == 0: log.info(user.username + '\'s account has expired') user.account_statue = payment.EXPIRED user.put() mail.send_account_expired_email(user, gc) elif days_till_expire * -1 in gc.acct_expired_email_intervales: user.account_statue = payment.EXPIRED user.put() mail.send_after_account_expired_email(days_till_expire * -1, user, gc) else: log.info('Nothing to check') if runtime.is_shutting_down(): log.warning('Had to stop notifing users, backend receaved shut donw request')
def _distribute_spectra_points(self): q = User.query() users = [] for user in q.iter(): print user.username, user.spectra_count user.spectra_count += 100 users.append(user) if len(users) > 1000: ndb.put_multi(users) users = [] ndb.put_multi(users)
def is_active(self): if self.end_date: if datetime.datetime.now() > self.end_date: return False if self.start_date: if datetime.datetime.now() < self.start_date: return False if self.activation_limit: if self.activation_limit != 0: from models.account import User count = User.query(User.coupon == self.key).count() if self.activation_limit <= count: return False return True
def get(self, secret=None): if not secret: raise HttpErrorException.bad_request('no password secret given') user = User.query(User.password_reset_secret == secret).get() if not user: raise HttpErrorException.bad_request('could not find user for password reset') reset_url = ('/account/password/reset/' + user.password_reset_secret) template_data = { 'title': 'Password Reset', 'reset_url': reset_url, } template_index = JINJA_ENVIRONMENT.get_template('password_reset.html') self.response.write(template_index.render(template_data))
def post(self, secret=None): if not secret: raise HttpErrorException.bad_request('no reset code given') user = User.query(User.password_reset_secret == secret).get() if not user: raise HttpErrorException.bad_request('could not find user for password reset') creds = GenericCredentials(user.username, self.json_request.get('password')) user.password = Password(creds.password) lr = tt_logging.construct_log( msg_short='User has changed their password', log_type=tt_logging.USER, affected_user=user, request=self.request ) log.info(lr['dict_msg']['msg'], extra=lr) user.put()
def getuser(self): if hasattr(self, '_user'): user = self._user else: user = users.get_current_user() if user: from models.account import User query = User.query(User.userid == user.user_id()) user_obj = query.get() if user_obj: user = user_obj else: # Don't bother to save to the database until they change # some settings. user = User(userid=user.user_id(), email=user.email()) self._user = user return user
def get(self, user_id=None): # TODO: This handler needs broken down into smaller methods. No point cleaning # this up until that is complete. if self.request.get('user_info') is not '': if self.request.get('user_info') == self.user.username or self.user.is_admin: user = User.get_by_id(self.request.get('user_info')) if not user: raise HttpErrorException.bad_request('invalid user id') self.write_json_response(user.to_dict(user=self.user)) elif self.request.get('user_perms') is not '': user = User.get_by_id(self.request.get('user_perms')) if not user: raise HttpErrorException.bad_request('invalid username') if not user.is_admin and not self.user == user: lr = tt_logging.construct_log(msg_short='Non-Admin User Try Accessing Another User', msg='User (%s) attemped to access user\'s (%s) data ' % (self.user.key.id(), user.key.id()), log_type=tt_logging.SECURITY, request_user=self.user, affected_user=user, request=self.request) log.warning(lr['dict_msg']['msg'], extra=lr) raise HttpErrorException.forbidden() user_perms_dict = {} for group_key in user.groups: group = group_key.get() if group is None: user.groups.remove(group_key) user.put() lr = tt_logging.construct_log(msg_short='Broken Group Key in User Group List', msg='Found a broken group key (%s) in the user\'s group list\n' 'Key has been removed' % str(group_key), log_type=tt_logging.USER, request_user=self.user, affected_user=user, request=self.request) log.error(lr['dict_msg']['msg'], extra=lr) elif (group.has_permission(self.user, 'set_user_perms') or group.has_permission(self.user, 'remove_user_perms') or user.key == self.user.key): perms = user.get_group_perms_dict(group) if perms is not None: user_perms_dict[group.key.id()] = perms self.write_json_response(user_perms_dict) elif self.request.get('organization_users') is not '': if self.request.get('organization_users') == 'all': organization = Organization.get_by_id(self.request.get('organization_id')) if organization.is_admin(self.user) or Group.get_by_id('super_admin').key in self.user.groups: user_array = User.get_all_users(organization, request_user=self.user) self.write_json_response(user_array) else: lr = tt_logging.construct_log(msg_short='Non-Admin User Try Accessing Org Users', msg='User (%s) attemped to access all Organization\'s users' % (self.user.key.id()), log_type=tt_logging.SECURITY, request_user=self.user, request=self.request, artifact=organization) log.warning(lr['dict_msg']['msg'], extra=lr) raise HttpErrorException.forbidden() elif self.request.get('non_org') is not '': if not self.user.is_super_admin: lr = tt_logging.construct_log(msg_short='Non-Admin User Try Accessing Org Users', msg='User (%s) attemped to access all Organization\'s users' % (self.user.key.id()), log_type=tt_logging.SECURITY, request_user=self.user, request=self.request) log.warning(lr['dict_msg']['msg'], extra=lr) raise HttpErrorException.forbidden() else: users = User.query(User.organization == None).fetch() users_dicts = [] for user in users: users_dicts.append(user.to_dict()) self.write_json_response(users_dicts)
def get_user_info(username): user_info = User.query(username) if user_info: return user_info else: return {'msg': 'register first'}