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)
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)
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)
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()))