Exemplo n.º 1
0
 def update_values(self, values):
     values["user_email"] = users.get_current_user().email().lower()
     url_route_key = self.request.get('route')
     if url_route_key != "":
         route_key = ndb.Key(urlsafe=url_route_key)
         # Next two lines are so that the recent routes list populates correctly.
         route = route_key.get()
         route.put()
         stops_query = Stop.query(ancestor=route_key).order(
             Stop.order_number).fetch()
         stop1 = stops_query[0]
         values["stop1"] = stop1.stop_name
         if stop1.ordered:
             values["stop1_checkbox"] = "on"
         else:
             values["stop1_checkbox"] = "off"
         if (len(stops_query) > 1):
             stop2 = stops_query[1]
             values["stop2"] = stop2.stop_name
             if stop2.ordered:
                 values["stop2_checkbox"] = "on"
             else:
                 values["stop2_checkbox"] = "off"
         if (len(stops_query) > 2):
             stop3 = stops_query[2]
             values["stop3"] = stop3.stop_name
             if stop3.ordered:
                 values["stop3_checkbox"] = "on"
             else:
                 values["stop3_checkbox"] = "off"
         if (len(stops_query) > 3):
             stop4 = stops_query[3]
             values["stop4"] = stop4.stop_name
             if stop4.ordered:
                 values["stop4_checkbox"] = "on"
             else:
                 values["stop4_checkbox"] = "off"
         if (len(stops_query) > 4):
             stop5 = stops_query[4]
             values["stop5"] = stop5.stop_name
             if stop5.ordered:
                 values["stop5_checkbox"] = "on"
             else:
                 values["stop5_checkbox"] = "off"
         values["entity_key"] = url_route_key
     else:
         route_key = ""
     recent_routes_query = Route.query(
         ancestor=utils.get_parent_key_for_email(users.get_current_user(
         ).email())).order(-Route.last_touch_date_time)
     values["recent_routes"] = recent_routes_query.fetch(5)
     my_routes_query = Route.query(ancestor=utils.get_parent_key_for_email(
         users.get_current_user().email())).filter(Route.type == 1).order(
             Route.name)
     values["my_routes"] = my_routes_query.fetch()
     my_notifications_query = Notification.query(
         ancestor=utils.get_parent_key_for_email(users.get_current_user(
         ).email())).filter(Notification.type != 2)
     values["my_notifications"] = my_notifications_query.fetch()
 def handle_post(self, email, account_info):
     if self.request.get("project_entity_key"):
         project_key = ndb.Key(urlsafe=self.request.get("project_entity_key"))
         project = project_key.get()
     else:
         project = Project(parent=utils.get_parent_key_for_email(email))
         project_key = project.key
     
     #add all users we find to the project.users, likewise add the project to the User entity
     users = [ndb.Key(urlsafe=self.request.get("user_entity_key"))]    
     potential_users_list = self.request.get_all("project_collaborator")
     for potential_user in potential_users_list:
         if potential_user and potential_user != utils.get_profile_for_email(email).name:
             profile_query = Profile.query(Profile.name == potential_user)
             for profile in profile_query:
                 user_key = profile.key.parent()
                 users.append(user_key)
     
     administrators = [ndb.Key(urlsafe=self.request.get("user_entity_key"))]
     
     project.title = self.request.get("project_title")
     project.description = self.request.get("project_description")
     project.administrators = administrators
     project.users = users
     project.put()
     
     for user_key in users:
         user = user_key.get()
         if not user.projects:
             user.projects = [project.key]
         else:
             user.projects.append(project.key)
         user.put()
         
     self.redirect(self.request.referer)
Exemplo n.º 3
0
 def handle_post(self, email):
     if self.request.get("password_entity_key"):
         password_key = ndb.Key(urlsafe=self.request.get("password_entity_key"))
         password = password_key.get()
     else:
         password = Password(parent=utils.get_parent_key_for_email(email))
 
     password.service = self.request.get("service")
     password.username = self.request.get("username")
     password.password = self.request.get("password")
     password.put()
     self.redirect(self.request.referer)
 def handle_post(self, email, account_info):
     if self.request.get("project_entity_key"):
         project_key = ndb.Key(urlsafe=self.request.get("project_entity_key"))
         project = project_key.get()
     else:
         project = Project(parent=utils.get_parent_key_for_email(email))
         project_key = project.key
     
     #add all users we find to the project.users, likewise add the project to the User entity
     updated_users_list = project.users
     user_list = self.request.get_all("user_selected")  
     for user_key_str in user_list:
         user_key = ndb.Key(urlsafe=user_key_str).parent()
         updated_users_list.remove(user_key)
     project.users = updated_users_list
     project.put()
     
     self.redirect(self.request.referer)
 def handle_post(self, email, account_info):
     if self.request.get("project_entity_key"):
         project_key = ndb.Key(urlsafe=self.request.get("project_entity_key"))
         project = project_key.get()
     else:
         project = Project(parent=utils.get_parent_key_for_email(email))
         project_key = project.key
     
     #add all users we find to the project.users, likewise add the project to the User entity
     admin_key_list = []
     admin_list = self.request.get_all("admin_selected")   
     for admin_str in admin_list:
         admin_key = ndb.Key(urlsafe=admin_str)
         admin_key_list.append(admin_key.parent())
     project.administrators = admin_key_list
     project.put()
     
     self.redirect(self.request.referer)
 def handle_post(self, email, account_info):
     if self.request.get("project_entity_key"):
         project_key = ndb.Key(urlsafe=self.request.get("project_entity_key"))
         project = project_key.get()
     else:
         project = Project(parent=utils.get_parent_key_for_email(email))
         project_key = project.key
     
     archive = self.request.get("archive-project")
     complete = self.request.get("complete-project")
     
     if archive:
         project.status = project.ProjectStatus.ARCHIVED
     elif complete:
         project.status = project.ProjectStatus.COMPLETED
     
     project.put()
     
     self.redirect(self.request.referer)
Exemplo n.º 7
0
    def handle_post(self, email):
        if self.request.get("trip_entity_key"):
            trip_key = ndb.Key(urlsafe=self.request.get("trip_entity_key"))
            trip = trip_key.get()
        else:
            trip = Trip(parent=utils.get_parent_key_for_email(email))
        
        trip.state = self.request.get("state")
        trip.city = self.request.get("city")
        trip.start_date = self.request.get("arrival-date")
        trip.end_date = self.request.get("departure-date")
        trip.description = self.request.get("description")
        # last touch modified time update? or nah?
        
        # image
        if self.get_uploads() and len(self.get_uploads()) == 1:
            logging.info("Received an image blob with this trip.")
            media_blob = self.get_uploads()[0]
            trip.media_blob_key = media_blob.key()
        else:
            logging.info("This is a trip without an image attachment.")

        trip.put()
        self.redirect(self.request.referer)
 def handle_post(self, email, account_info):
     if self.request.get("project_entity_key"):
         project_key = ndb.Key(urlsafe=self.request.get("project_entity_key"))
         project = project_key.get()
     else:
         project = Project(parent=utils.get_parent_key_for_email(email))
         project_key = project.key
     
     title = self.request.get("title")
     description = self.request.get("description")
     project.title = title
     project.description = description
     
     admin_key_list = []
     admin_list = self.request.get_all("admin_selected")   
     for admin_str in admin_list:
         admin_key = ndb.Key(urlsafe=admin_str)
         admin_key_list.append(admin_key.parent())
     project.administrators = admin_key_list
     
     if self.get_uploads() and len(self.get_uploads()) == 1:
         logging.info("Received an image blob with this profile update.")
         media_blob = self.get_uploads()[0]
         project.picture = media_blob.key()
     else:
         # There is a chance this is an edit in which case we should check for an existing blob key.
         original_blob_key = self.request.get("original_blob_key")
         if original_blob_key:
             logging.info("Attaching original blob key (this must have been an edit or duplicate)")
             project.picture = BlobKey(original_blob_key)
     
     potential_invitees = self.request.get_all("project_collaborator")
     for potential_user in potential_invitees:
         if potential_user and potential_user != utils.get_profile_for_email(email).name:
             profile_query = Profile.query(Profile.name == potential_user)
             for profile in profile_query:
                 user_key = profile.key.parent()
             user = user_key.get()
             if user_key not in project.users:
                 notification_count = Notification.query(Notification.project_key == project_key, 
                                                         ndb.OR(Notification.sender == user_key, 
                                                                Notification.receiver == user_key)).count()
                 if notification_count == 0:
                     notification = Notification(parent=user_key)
                     notification.sender = account_info.key
                     notification.receiver = user_key
                     notification.project_key = project_key
                     notification.message = utils.get_profile_for_email(email).name + " would like you to join " + project.title
                     notification.type = Notification.NotificationTypes.COLLABORATE
                     notification.put()
     
     project_status_str = self.request.get("status")
     if project_status_str == 'ACTIVE':   
         project.status = Project.ProjectStatus.ACTIVE
     elif project_status_str == 'ARCHIVED':
         project.status = Project.ProjectStatus.ARCHIVED
     elif project.status == 'COMPLETED':
         project.status = Project.ProjectStatus.COMPLETED
     
     project.put()
     
     self.redirect(self.request.referer)
Exemplo n.º 9
0
    def post(self):
        if self.request.get('edit-route-entity-key'):
            route_key = ndb.Key(
                urlsafe=str(self.request.get('edit-route-entity-key')))
            new_route = route_key.get()
            routeStops = Stop.query(ancestor=route_key).order(
                Stop.order_number).fetch()

            dictionary = {}
            Stop1 = self.request.get('stop1')
            if self.request.get('stop1-checkbox') == 'on':
                Checkbox1 = True
            else:
                Checkbox1 = False
            dictionary["Stop1"] = Stop1
            dictionary["Checkbox-Stop1"] = Checkbox1
            lastStop = self.request.get('stop2')
            Stop2 = lastStop
            if self.request.get('stop2-checkbox') == 'on':
                Checkbox2 = True
            else:
                Checkbox2 = False
            dictionary["Stop2"] = Stop2
            dictionary["Checkbox-Stop2"] = Checkbox2
            Stop3 = ""
            Stop4 = ""
            Stop5 = ""

            if self.request.get('stop3'):
                lastStop = self.request.get('stop3')
                Stop3 = lastStop
                if self.request.get('stop3-checkbox') == 'on':
                    Checkbox3 = True
                else:
                    Checkbox3 = False
                dictionary["Stop3"] = Stop3
                dictionary["Checkbox-Stop3"] = Checkbox3

            if self.request.get('stop4'):
                lastStop = self.request.get('stop4')
                Stop4 = lastStop
                if self.request.get('stop4-checkbox') == 'on':
                    Checkbox4 = True
                else:
                    Checkbox4 = False
                dictionary["Stop4"] = Stop4
                dictionary["Checkbox-Stop4"] = Checkbox4

            if self.request.get('stop5'):
                lastStop = self.request.get('stop5')
                Stop5 = lastStop
                if self.request.get('stop5-checkbox') == 'on':
                    Checkbox5 = True
                else:
                    Checkbox5 = False
                dictionary["Stop5"] = Stop5
                dictionary["Checkbox-Stop5"] = Checkbox5

            new_route.name = Stop1 + " to " + lastStop

            for i in range(1, (len(dictionary.keys()) / 2) + 1):
                if i < len(routeStops) + 1:
                    routeStops[i - 1].ordered = dictionary["Checkbox-Stop" +
                                                           str(i)]
                    routeStops[i - 1].stop_name = dictionary["Stop" + str(i)]
                    routeStops[i - 1].put()
                else:
                    new_stop = Stop(parent=new_route.key,
                                    route_key=new_route.key,
                                    order_number=i,
                                    stop_name=dictionary["Stop" + str(i)],
                                    ordered=dictionary["Checkbox-Stop" +
                                                       str(i)])
                    new_stop.put()

            new_route.put()
        else:
            firstStop = self.request.get('stop1')
            if self.request.get('stop1-checkbox') == 'on':
                firstCheckbox = True
            else:
                firstCheckbox = False
            lastStop = self.request.get('stop2')
            secondStop = lastStop
            if self.request.get('stop2-checkbox') == 'on':
                secondCheckbox = True
            else:
                secondCheckbox = False
            thirdStop = ""
            fourthStop = ""
            fifthStop = ""

            if self.request.get('stop3'):
                lastStop = self.request.get('stop3')
                thirdStop = lastStop
                if self.request.get('stop3-checkbox') == 'on':
                    thirdCheckbox = True
                else:
                    thirdCheckbox = False
            if self.request.get('stop4'):
                lastStop = self.request.get('stop4')
                fourthStop = lastStop
                if self.request.get('stop4-checkbox') == 'on':
                    fourthCheckbox = True
                else:
                    fourthCheckbox = False

            if self.request.get('stop5'):
                lastStop = self.request.get('stop5')
                fifthStop = lastStop
                if self.request.get('stop5-checkbox') == 'on':
                    fifthCheckbox = True
                else:
                    fifthCheckbox = False

            user = users.get_current_user()
            email = user.email().lower()
            # TODO: Name will change when modal has dynamic number of routes
            # NOTE: Created routes start with type = 0 (not saved)
            # NOTE: Created routes start with daily = 0 (non-recurring)
            new_route = Route(parent=utils.get_parent_key_for_email(email),
                              created_by=email,
                              name=firstStop + " to " + lastStop,
                              type=0,
                              daily=0,
                              start_time=datetime.datetime.now())
            new_route.put()

            new_stop1 = Stop(parent=new_route.key,
                             route_key=new_route.key,
                             order_number=1,
                             stop_name=self.request.get('stop1'),
                             ordered=firstCheckbox)
            new_stop1.put()
            new_stop2 = Stop(parent=new_route.key,
                             route_key=new_route.key,
                             order_number=2,
                             stop_name=self.request.get('stop2'),
                             ordered=secondCheckbox)
            new_stop2.put()
            if thirdStop != "":
                new_stop3 = Stop(parent=new_route.key,
                                 route_key=new_route.key,
                                 order_number=3,
                                 stop_name=self.request.get('stop3'),
                                 ordered=thirdCheckbox)
                new_stop3.put()
            if fourthStop != "":
                new_stop4 = Stop(parent=new_route.key,
                                 route_key=new_route.key,
                                 order_number=4,
                                 stop_name=self.request.get('stop4'),
                                 ordered=fourthCheckbox)
                new_stop4.put()
            if fifthStop != "":
                new_stop5 = Stop(parent=new_route.key,
                                 route_key=new_route.key,
                                 order_number=5,
                                 stop_name=self.request.get('stop5'),
                                 ordered=fifthCheckbox)
                new_stop5.put()

        self.redirect('/'.join(self.request.referer.split("/")[:3]) +
                      "?route=" + str(new_route.key.urlsafe()))