def post(self): self.response.write(cgi.escape(self.request.get('gcmtoken'))) self.response.write(cgi.escape(self.request.get('name'))) jsonobject = json.loads(self.request.body) # Check if the uid is unique curr_uid = RegisteredUser.all(keys_only=True).filter( 'uid', jsonobject["uid"] ).get() if curr_uid: raise Exception('UID must have a unique value!') # Add user to datastore u = RegisteredUser( uid=jsonobject["uid"], name=jsonobject["name"], gender=jsonobject["gender"] if "gender" in jsonobject else None, phone_number=db.PhoneNumber(jsonobject["phone_number"]) if "phone_number" in jsonobject else None, email=db.EmailProperty(jsonobject["email"]) if "email" in jsonobject else None, lat = float(jsonobject["lat"]), lon = float(jsonobject["lon"]), rank=0, count_reviews=0, role=jsonobject["role"] ) u.put()
def post(self): jsonobject = json.loads(self.request.body) users = RegisteredUser.all() curr_user = filter( lambda x: x, [u if u.uid == jsonobject["uid"] else None for u in users] ) if len(curr_user) != 1: raise Exception("User not in DB!") curr_user = curr_user[0] curr_user.lat = float(jsonobject["lat"]) curr_user.lon = float(jsonobject["lon"]) curr_user.put()
def register(self): #Function that takes info to create a registered user account; then adds the info into the user file.It returns a registered user. Name = input("Name:\n") FamilyName = input("family name:\n") model = input("car model:\n") model = self.remove_spaces(model) platenumber = input("plate number:\n") car1 = Car(model, platenumber, Name, FamilyName) Username = input("username:\n") while (self.already_existing_username(Username) == True): # ---checks if username is already taken--- print("Username already exists, please choose a different username:\n") Username = input("username:\n") Password = input("password:\n") BankAccountNumber = input("Bank account number:\n") print("Welcome " + Name + ", you have been registered as a user!") p1 = RegisteredUser(Name, FamilyName, car1, Username, Password, BankAccountNumber, self,self.CarRotationManager,0) # ---initialize ResgisteredUser--- self.add_user_to_file(p1) # Adds the user (his information) to the file return p1
def post(self): RADIUS = 100 jsonobject = json.loads(self.request.body) # XXX: Super ultra mega hack because GQL doesn't allow for multiple # filters that use <, >, <= or >= registered_users = RegisteredUser.all().filter("role =", "helper") registered_users = filter( lambda u: (u.lat >= float(jsonobject["lat"]) - RADIUS and u.lat <= float(jsonobject["lat"]) + RADIUS and u.lon >= float(jsonobject["lon"]) - RADIUS and u.lon <= float(jsonobject["lon"]) + RADIUS), registered_users) if not registered_users: return ng = NotificationGroup(victim=jsonobject["uid"]) for u in registered_users: ng.uids.append(u.uid) ng.put() self.response.write("Registered users:\n") request_types = ['helprequest', 'acceptrequest'] for request_type in request_types: for u in registered_users: if u.uid == jsonobject["uid"]: continue url = 'http://gcm-http.googleapis.com/gcm/send' data = { "data": { "type": request_type, "uid": jsonobject["uid"], "name": jsonobject["name"], "lat": jsonobject["lat"], "lng": jsonobject["lon"] }, "to": u.uid } headers = { "Content-Type":"application/json", "Authorization":"key=AIzaSyBk3-v9AaKz8s2KYLuImlsIBSl1GF6XGlM" } req = urllib2.Request(url, json.dumps(data), headers) response = urllib2.urlopen(req) self.response.write(str(u)+'\n')
def post(self): jsonobject = json.loads(self.request.body) users = RegisteredUser.all() volunteer = filter( lambda x: x, [u if u.uid == jsonobject["volunteer_uid"] else None for u in users] ) if len(volunteer) != 1: raise Exception("User not in DB!") volunteer = volunteer[0] self.response.write("Am gasit voluntar "+str(volunteer)+'\n') volunteer.count_reviews = volunteer.count_reviews + 1 volunteer.rank = int(jsonobject["rank"]) \ if volunteer.rank == 0 \ else int((volunteer.rank + jsonobject["rank"])/volunteer.count_reviews) volunteer.put() level = 1 if volunteer.rank > 4: if volunteer.count_reviews == 1: level = 2 elif volunteer.count_reviews == 3: level = 3 elif volunteer.count_reviews == 5: level = 4 url = 'http://gcm-http.googleapis.com/gcm/send' data = { "data": { "type": "updatelevel", "rank": str(volunteer.rank), "level": str(level) }, "to": jsonobject["volunteer_uid"] } headers = { "Content-Type":"application/json", "Authorization":"key=AIzaSyBk3-v9AaKz8s2KYLuImlsIBSl1GF6XGlM" } req = urllib2.Request(url, json.dumps(data), headers) response = urllib2.urlopen(req) credly_url = "api.credly.com/v1.1/member_badges?access_token=5fe22b295f727611a32f341a6cbea18698605858f26f6a084458122531003a79ddaa23f8e85e2c33f4ed952620d564ec04e3859f43dc92ae6a4262a7ae41b075"
def login(self): # For users who were previously registered, we just log them in using this function. Returns an already registered user. username = input("Input the username\n") password = input("Input the password\n") (userbool, passbool, creds) = self.check_user(username, password) # ---function to check the username and password--- # Userbool is related to the correctness of the username, passbool is related to the correctness of the password, and creds are the information from the file while (userbool != True or passbool != True): if (userbool == True and passbool == False): # ---correct username and wrong password--- print("Invalid password, Please type the correct password\n") password = input("password:\n") (userbool, passbool, creds) = self.check_user(username, password) elif (userbool == False): # ---wrong username only--- print("Incorrect username, please type the correct username and password\n") username = input("username:\n") password = input("password:\n") (userbool, passbool, creds) = self.check_user(username, password) print("Login sucessful!\n") c1 = Car(creds[2], creds[3], creds[0], creds[1]) # ---CARNB,PLTNB,NAME,FNAME--- AlreadyRegisteredUser = RegisteredUser(creds[0], creds[1], c1, creds[4], creds[5], creds[6], self, self.CarRotationManager, creds[7],creds[8]) return AlreadyRegisteredUser