Ejemplo n.º 1
0
 def _to_python(self, value, state):
     # we don't support multiple values, so we run a quick check here (we got a webapp where this was a problem)
     if type(value) != type(u""):
         raise fv.Invalid('You must supply a valid email.', value, state)
     
     handler = data.get_handler('email', value)
     
     P = profiles.Profile
     DP = data.DataPoint
     user = Session.query(users.User).filter(sa.func.lower(users.User.email)==handler.normalized).first()
     profile = Session.query(P).join(DP).filter(P.user!=None).filter(DP.key==u'email').filter(DP.value==handler.normalized).first()
     
     # if this user is the same as the logged in one then don't throw the error -
     # allows keeping old email address when editing contact info
     if (user and user != self.user) or (profile and profile.user != self.user):
         raise fv.Invalid('That user already exists. Please choose another.', value, state)
     return value
Ejemplo n.º 2
0
def get(real_user, user, profile=None, email=None):
    
    if profile: return profile
    
    P = profiles.Profile
    DP = data.DataPoint
    
    #fetch all
    if not profile and not email:
        return user.profile.fetch_teathers()
    
    # for email
    handler = data.get_handler('email', email)
    profile = Session.query(P).join(DP).filter(DP.key==u'email').filter(DP.value==handler.normalized).first()
    return profile
Ejemplo n.º 3
0
def create(**params):
    """
    Creates a user.
    
    DO NOT EXPOSE THIS to the web api. Please.
    """
    numusers = len(Session.query(users.User).all())
    
    scrubbed = validate(RegisterForm, **params)
    
    user = users.User()
    Session.add(user)
    
    user.email = scrubbed.email
    user.username = '******' in scrubbed and scrubbed.username or scrubbed.email
    user.password = scrubbed.password
    user.set_timezone_int(scrubbed.default_timezone)
    
    if scrubbed.get('name'):
        name = scrubbed.get('name').split(' ', 1)
        user.first_name = name[0].strip()
        user.last_name = len(name) == 2 and name[1].strip() or u''
    else:
        user.first_name = scrubbed.get('first_name')
        user.last_name = scrubbed.get('last_name')
    
    #first user is an admin. 
    if numusers == 0:
        user.role = users.ROLE_ADMIN
    
    #this will need some thought. We should have some kind of verification.
    profile = profiles.Profile.find_unclaimed(user.email)
    if profile:
        profile.user = user
    else:
        from tethr import api
        profile = api.profile.create(user)
    
    if user.first_name or user.last_name:
        profile.add_data(user, 'name', u'%s %s' % (user.first_name, user.last_name))
    
    profile.add_data(user, 'email', user.email)
    
    Session.flush()
    
    return user