Exemplo n.º 1
0
    def post(self):
        """
        Validates token from authorization header

        If the token is valid, checks user id

        Adds user if not already in datastore
        """
        if 'application/json' not in self.request.accept:
            self.response.status = 400
            self.response.write("Cannot complete request, API only supports application/json type")
            return
        if 'authorization' not in self.request.headers:
            self.response.status = 400
            self.response.write("Cannot complete request, token must be sent in Authorization header")
            return
        tokenString = self.request.headers['authorization']
        token = tokenString.split()
        if len(token) == 2:
            userID = verifyToken.verifyIDToken(token[1])
            if userID is not None:
                thisUser = ndb.Key('User', userID).get()
                if thisUser is None:
                    newUser = db_models.User(id=userID)
                    newUser.put()
                    self.response.write(json.dumps(newUser.to_dict()))
                    return
                else:
                    self.response.write(json.dumps(thisUser.to_dict()))
                    return
        self.response.status = 400
        self.response.write("Cannot complete request, token is invalid")
Exemplo n.º 2
0
    def post(self):
        if 'application/json' not in self.request.accept:
            self.response.status = 406
            self.response.write("JSON format support only.")
            return

        add_user = db_models.User()
        username = self.request.get('username', default_value=None)

        if username:
            #check if name already exists
            d = db_models.User.query(db_models.User.username == username)
            match_u = d.fetch()
            if match_u:
                self.response.status = 400
                self.response.write("That username already exists.\n")
                return
            add_user.username = username

            key = add_user.put()
            out = add_user.to_dict()
            self.response.write(json.dumps(out))
            return

        else:
            self.response.status = 400
            self.response.write("Unique username is required.\n")
            return
Exemplo n.º 3
0
    def post(self):
        #create a new user - must be json format
        #Post Body:
        #name - required
        #email - required

        #check for proper data format
        if 'application/json' not in self.request.accept:
            self.response.set_status(
                415,
                "Unsupported. API only supports application/json MIME type.")
            self.response.write(self.response.status)
            return

        #create a new user record
        name = self.request.get('name', default_value=None)
        email = self.request.get('email', default_value=None)
        new_user = db_models.User()

        #check that name and email are supplied
        if name:
            new_user.name = name

        else:
            self.response.set_status(
                400, "Invalid Request. Name of user required.")
            self.response.write(self.response.status)
            return

        if email:
            new_user.email = email

        else:
            self.response.set_status(
                400, "Invalid Request. Email of user required.")
            self.response.write(self.response.status)
            return

        #check if unique name and email
        #http://stackoverflow.com/questions/25728615/distinct-usernames-in-python-ndb
        #chk_key = ndb.Key('db_models.UserProj', name)
        #chk_use = chk_key.get()
        #if not chk_use:
        #	self.response.set_status(409,'User name exists.')
        #	self.response.write(self.response.status)
        #	return

        #all is good add to database
        key = new_user.put()
        out = new_user.to_dict()
        self.response.set_status(201, "New user created.")
        #self.response.write(self.response.status)
        self.response.write(json.dumps(out))
        return
Exemplo n.º 4
0
	def post(self):  #add user
		if 'application/json' not in self.request.accept:
			self.response.status = 406
			self.response.status_message = "Not acceptable, API only supports application/json"
			return
		new_user = db_models.User()
		#, default_value=None
		
		fName = self.request.get('fName')
		logging.info(fName)
		email = self.request.get('email')
		password = self.request.get('password')
		#email = self.request.get('email', default_value=None)
		upRates = 0
		dnRates = 0
		#age = self.request.get('age')
		gender = self.request.get('gender')
		city = self.request.get('city')
		state = self.request.get('state')
		#groups = self.request.get('groups[]', default_value=None)
		#image = self.request.get('image', default_value = None)
		"""
		if not fName or not email or not age or not gender or not city or not state:
			self.response.status = 400
			self.response.status_message = "Invalid request"
			return
		 """   
		#else:
		new_user.fName = fName
		new_user.email = email
		new_user.password = password
			#new_user.lName = lName
		new_user.upRates = upRates
		new_user.dnRates = dnRates
		new_user.gender = gender
		new_user.city = city
		new_user.state = state
		#new_user.age = age
			#new_user.image = image
		
		#if groups:
			#for group in groups:
				#new_user.groups.append(ndb.Key(db_models.Group, int(group)))
				
		key = new_user.put()
		out = new_user.to_dict()
		self.response.write(json.dumps(out))
Exemplo n.º 5
0
 def post(self):
     self.username = self.form.username.data
     if db_models.User.query.filter_by(username=self.username).first():
         flash('This username is taken!', 'danger')
         return redirect(request.url)
     if self.form.password.data == self.form.confirm_password.data:
         self.hashed_password = bcrypt.generate_password_hash(
             self.form.password.data).decode('utf-8')
         user = db_models.User(username=self.username,
                               password=self.hashed_password)
         db_models.db.session.add(user)
         db_models.db.session.commit()
         login_user(user)
         return redirect(url_for('documents'))
     else:
         flash('Passwords do not match!', 'danger')
         return redirect(request.url)
Exemplo n.º 6
0
    def post(self):

        if 'application/json' not in self.request.accept:
            self.response.status = 406
            self.response.status_message = "Not acceptable, API only supports json calls"
            return
        new_user = db_models.User()
        fname = self.request.get('fname', default_value=None)
        lname = self.request.get('lname', default_value=None)
        email = self.request.get('email', default_value=None)
        password = self.request.get('password', default_value=None)
        offers = self.request.get_all('offers[]', default_value=None)

        if email:
            new_user.email = email
        else:
            self.response.status = 400
            self.response.status_message = "Invalud request"

        if password:
            new_user.password = password
        else:
            self.response.status = 400
            self.response.status_message = "Invalud request"

        if fname:
            new_user.fname = fname
        else:
            self.response.status = 400
            self.response.status_message = "Invalud request"

        if lname:
            new_user.lname = lname
        else:
            self.response.status = 400
            self.response.status_message = "Invalud request"

        if offers:
            for offer in offers:
                new_user.offers.append(ndb.Key(db_models.Off, int(offer)))

        key = new_user.put()
        out = new_user.to_dict()
        print out
        self.response.write(json.dumps(out))
        return
Exemplo n.º 7
0
    def post(self):
        """Creates a User entity
		
		POST Body Variables:
		username - Required. Username
		email - Required. Email
		name - Real name
		lists[] - Lists user has authored
		"""
        if 'application/json' not in self.request.accept:
            self.response.status = 406
            self.response.status_message = "Not Acceptable, API only supports application/json MIME type"
            return
        new_user = db_models.User()
        username = self.request.get('username', default_value=None)
        email = self.request.get('email', default_value=None)
        name = self.request.get('name', default_value=None)
        lists = self.request.get_all('lists[]', default_value=None)
        if username:
            new_user.username = username
        else:
            self.response.status = 400
            self.response.status_message = "Invalid request, username is Required"
        if email:
            new_user.email = email
        else:
            self.response.status = 400
            self.response.status_message = "Invalid request, email is Required"
        if name:
            new_user.name = name
        if lists:
            for list in lists:
                new_user.lists.append(ndb.Key(db_models.List, int(list)))
        key = new_user.put()
        out = new_user.to_dict()
        self.response.write(json.dumps(out))
        return