Example #1
0
    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)
Example #2
0
    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()
Example #3
0
    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')
Example #6
0
    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)
Example #7
0
 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
Example #8
0
    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))
Example #9
0
    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()
Example #10
0
    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
Example #11
0
    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'}