def add_user(data): user = User(id=data["email"]) user.password = data["password"] user.name = data["name"] user.email = data["email"] user.contacts = data["contacts"] user.permissions = data["permissions"] user.put() return user
def get(self): username = self.request.get('username') self.response.headers['Content-Type'] = 'application/json' try: user = User.get_by_username(username) #logging.warning('DEBUG: %s %s' % (str(dir(user)), str(type(user)))) returndict = {} newuser = False if user is None: newuser = True user = User() user.username = username user.active = False url = 'https://tom-schneider.appspot.com/api/randstring?case=all&length=128' result = urlfetch.fetch(url) if result.status_code == 200: user.notes = json.loads(result.content)['randstring'] if not mail.is_email_valid(self.request.get('email')): raise urllib2.URLError('El email del usuario no es valido.') else: sender_address = 'Organization Management Tool Team <*****@*****.**>' subject = 'Organization Management Tool - Confirm your registration' body = """ Gracias por registrerse! De click en la URL siguiente para confirmar su direccion de correo: %s%s/api/user/confirm?email=%s&cc=%s """ % (config,PROTOCOL, config.APP_HOSTNAME, self.request.get('email'), user.notes) logging.warning('DEBUG UserSet - Registration confirmation email: sender=%s, to=%s, subject=%s, body=%s' % (sender_address, self.request.get('email'), subject, body)) mail.send_mail(sender=sender_address, to=self.request.get('email'), subject=subject, body=body) else: raise urllib2.URLError('Un error ocurrio. No se pudo generar codigo de seguridad.') returndict['message'] = 'Usuario creado.' else: returndict['message'] = 'Usuario modificado.' try: if not newuser and user.active is False: raise ValueError('Los datos de un usuario no verificado no pueden ser modificados.') if newuser and len(self.request.get('email')) == 0: raise ValueError('Campo email faltando para nuevo usuario.') elif len(self.request.get('email')) > 0: user.email = self.request.get('email') if newuser and len(self.request.get('first_name')) == 0: raise ValueError('Campo first_name faltando para nuevo usuario.') elif len(self.request.get('first_name')) > 0: user.first_name = self.request.get('first_name') if newuser and len(self.request.get('last_name')) == 0: raise ValueError('Campo last_name faltando para nuevo usuario.') elif len(self.request.get('last_name')) > 0: user.last_name = self.request.get('last_name') if len(self.request.get('active')) > 0: if self.request.get('active') == 'false': user.active = False elif self.request.get('active') == 'true': user.active = True # {'reader': 0, 'professor': 0, 'administrator': 0} permissions_type = ['reader', 'professor', 'administrator'] if user.permissions is None: permissions = {'reader': False, 'professor': False, 'administrator': False} else: permissions = json.loads(user.permissions) for permission in permissions_type: if self.request.get('permissions_' + permission) == 'true': permissions[permission] = True elif self.request.get('permissions_' + permission) == 'false': permissions[permission] = False user.permissions = json.dumps(permissions) user.put() returndict['status'] = 0 returndict ['user'] = {'username': username, 'email': user.email, 'first_name': user.first_name, 'last_name': user.last_name, 'permissions': user.permissions, 'active': str(user.active)} logging.warning('DEBUG: %s' % str(returndict)) self.response.write(json.dumps(returndict)) except ValueError, e: self.response.write(json.dumps(str(e))) except urllib2.URLError, e: self.response.write(json.dumps(str(e)))