Example #1
0
    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()
Example #2
0
    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
Example #4
0
    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')
Example #5
0
    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