def post(self): # -------------------------------------------------------------------- # Retrive and Validate Request # -------------------------------------------------------------------- # Default Values current_user = RoadMateUser.get_current_user() # -------------------------------------------------------------------- # Validate Sesson # -------------------------------------------------------------------- # if the current users in not logged in, then we redirect them through # a login page. if current_user is None: self.redirect(users.create_login_url(self.request.url)) return target_user = None # -------------------------------------------------------------------- # Retrieve user from GET Data, return the user # -------------------------------------------------------------------- target_user_id = self.get_request_parameter('user', converter=int, default=None) target_user = RoadMateUser.get_by_id(target_user_id) # -------------------------------------------------------------------- # Validate the user and POST Data # -------------------------------------------------------------------- # if the target user does not exist in the datastore, then redirect # the user back to an error page. if target_user is None: self.error(404) return # if the user is trying to edit someone elses profile page, # then present them with an error page (403: Forbidden). if target_user != current_user: logging.error("User '%s' attempted to modify the profile of"\ " user '%s'. Redirecting to error page." % (current_user.user.email, target_user.user.email)) self.error(403) return # -------------------------------------------------------------------- # Set the changed attribute and save the entity # -------------------------------------------------------------------- if self.request.POST.has_key('editorId') and self.request.POST.has_key('value'): # input text must not be "None" (the default NULL representation) # and must not try to set a private attribute (which all start with '_') if not self.request.POST['value'] == "" and not self.request.POST['value'] == "None" and not self.request.POST['editorId'].startswith('_'): setattr(target_user, self.request.POST['editorId'], self.request.POST['value'])# update that attribute target_user.save() # save the record self.response.out.write(escape(getattr(target_user, self.request.POST['editorId']))) # print that value to the page else: # input text is "None" or empty string, return "None" self.response.out.write("None") else: # values are missing self.error(403)
def get(self): ## -------------------------------------------------------------------- # Retrive Session Info and Request Data # -------------------------------------------------------------------- # Session Values current_user = RoadMateUser.get_current_user() # Request Values target_user_id = self.get_request_parameter("user", converter=int, default=None) # Datastore Values target_user = None if target_user_id > 0: target_user = RoadMateUser.get_by_id(target_user_id) # -------------------------------------------------------------------- # Validate Session and Request # -------------------------------------------------------------------- if target_user is None: if current_user is None: self.redirect(users.create_login_url(self.request.url)) return else: # if a target user has not be specified, but the user is # logged in, then redirect them to their profile page. logging.info("No target user specified. Redirecting to" " current user's profile page.") self.redirect("/profile?user=%s" % current_user.key().id()) return # -------------------------------------------------------------------- # Generate Template Values # -------------------------------------------------------------------- template_values = super(ProfilePageHandler, self).generate_template_values(self.request.url) # because this page requires the user to be logged in, if they logout # we redirect them back to the home page. template_values["logout_url"] = users.create_logout_url("/") template_values["my_rides"] = list(target_user.rides) template_values["target_user"] = target_user # only used if not current user # -------------------------------------------------------------------- # Render and Serve Template # -------------------------------------------------------------------- page_path = os.path.join(os.path.dirname(__file__), "profile.html") self.response.out.write(template.render(page_path, template_values))
def get(self): # -------------------------------------------------------------------- # Retrive Session Info and GET Data # -------------------------------------------------------------------- # Session Values current_user = RoadMateUser.get_current_user() # Request Values target_user_id = self.get_request_parameter('id', converter=int, default=None) # Datastore Values target_user = RoadMateUser.get_by_id(target_user_id) # -------------------------------------------------------------------- # Validate Request # -------------------------------------------------------------------- # if the target ride does not exist in the datastore, then redirect # the user back to the home page. if target_user is None: self.error(404) return # -------------------------------------------------------------------- # Generate and Store Template Values # -------------------------------------------------------------------- template_values = super(ViewFeedbackPageHandler, self ).generate_template_values(self.request.url) template_values['target_user'] = target_user template_values['feedback_list'] = list(target_user.feedback_received) template_values['count_positive'] = target_user.feedback_received.filter('value=', 1).count() template_values['count_neutral'] = target_user.feedback_received.filter('value=', 0).count() template_values['count_negative'] = target_user.feedback_received.filter('value=', -1).count() # -------------------------------------------------------------------- # Render and Serve Template # -------------------------------------------------------------------- page_path = os.path.join(os.path.dirname(__file__), "feedback.html") self.response.out.write(template.render(page_path, template_values))
def post(self): # -------------------------------------------------------------------- # Retrive Session Info and Request Data # -------------------------------------------------------------------- # Session Values current_user = RoadMateUser.get_current_user() # Request Values ride_id = self.get_request_parameter('ride', converter=int, default=None) target_user_id = self.get_request_parameter('on', converter=int, default=None) # Retrieve the instances ride = Ride.get_by_id(ride_id) target_user = RoadMateUser.get_by_id(target_user_id) feedback_form = FeedbackForm() target_user_role = '' # empty by default # -------------------------------------------------------------------- # Validate Session and Request # -------------------------------------------------------------------- # if the current users in not logged in, then we redirect them through # a login page. if current_user is None: self.redirect(users.create_login_url(self.request.url)) return # if the target user is not valid then error if target_user is None or ride is None: self.error(403) # forbidden return #if the current user has already placed feedback on the recipient for this ride if ride.feedbackmessages.filter('author =', current_user).filter('recipient =', target_user).count() >= 1: self.redirect("/feedback?id=%s" % target_user.key().id()) # redirect to the recipient's feedback page return # if the target user is not the driver, and the current user is not a passenger # or vice versa, then error if ride.is_passenger(current_user) and (target_user == ride.owner): target_user_role = 'passenger' elif ride.is_passenger(target_user) and (current_user == ride.owner): target_user_role = 'driver' else: # then the relationship is not valid self.error(403) # forbidden return ## not working ## # -------------------------------------------------------------------- ## # Retrive POST Data ## # and create a new instance of the form to validate the data ## # -------------------------------------------------------------------- ## feedback_data = { 'author': current_user, 'ride':ride, 'recipient':target_user, 'role': target_user_role} ## ## feedback_form = FeedbackForm( ## data=self.request.POST, ## initial=feedback_data ## ) # create the form to validate ## print(feedback_form['ride'].data) ## ## # -------------------------------------------------------------------- ## # Validate POST Data ## # -------------------------------------------------------------------- ## # if there are errors in the form, then re-serve the page with the ## # error values highlighted. ## if not feedback_form.is_valid(): ## # ---------------------------------------------------------------- ## # Generate Template Values ## # ---------------------------------------------------------------- ## template_values = BaseRequestHandler.generate_template_values(self, ## self.request.url) ## ## # because this page requires the user to be logged in, if they ## # logout we redirect them back to the home page. ## template_values['logout_url'] = users.create_logout_url("/") ## ## # -------------------------------------------------------------------- ## # Set up the page 'passenger' or 'driver' display ## # -------------------------------------------------------------------- ## target_user_role = 'driver' # by default ## if ride.is_passenger(target_user): ## target_user_role = 'passenger' ## ## # -------------------------------------------------------------------- ## # Generate Template Values ## # -------------------------------------------------------------------- ## template_values = super(CreateFeedbackPageHandler, self ## ).generate_template_values(self.request.url) ## ## # because this page requires the user to be logged in, if they logout ## # we redirect them back to the home page. ## template_values['logout_url'] = users.create_logout_url("/") ## template_values['owner'] = current_user ## template_values['target_user'] = target_user ## template_values['ride'] = ride ## template_values['feedback_form'] = feedback_form ## template_values['target_user_role'] = target_user_role ## ## # ---------------------------------------------------------------- ## # Render and Serve Template ## # ---------------------------------------------------------------- ## print(feedback_form.errors) ## page_path = os.path.join(os.path.dirname(__file__), "feedback_create.html") ## self.response.out.write(template.render(page_path, template_values)) ## return feedback_message = FeedbackMessage( ride=ride, author=current_user, recipient=target_user, role=target_user_role, value=int(self.request.POST['value']), text=escape(self.request.POST['text']) ) # not validated feedback_message.put() # save the new Message self.redirect("/feedback?id=%s" % target_user.key().id()) # redirect to the recipient's profile page or feedback page
def get(self): # -------------------------------------------------------------------- # Retrive Session Info and Request Data # -------------------------------------------------------------------- # Session Values current_user = RoadMateUser.get_current_user() # Request Values ride_id = self.get_request_parameter('ride', converter=int, default=None) target_user_id = self.get_request_parameter('on', converter=int, default=None) # Retrieve the instances ride = Ride.get_by_id(ride_id) target_user = RoadMateUser.get_by_id(target_user_id) feedback_form = FeedbackForm() target_user_role = '' # empty by default # -------------------------------------------------------------------- # Validate Session and Request # -------------------------------------------------------------------- # if the current users in not logged in, then we redirect them through # a login page. if current_user is None: self.redirect(users.create_login_url(self.request.url)) return # if the target user is not valid then error if target_user is None or ride is None: self.error(403) # forbidden return # if the target user is not the driver, and the current user is not a passenger # or vice versa, then error if ride.is_passenger(current_user) and (target_user == ride.owner): target_user_role = 'driver' elif ride.is_passenger(target_user) and (current_user == ride.owner): target_user_role = 'passenger' else: # then the relationship is not valid self.error(403) # forbidden return # -------------------------------------------------------------------- # Generate Template Values # -------------------------------------------------------------------- template_values = super(CreateFeedbackPageHandler, self ).generate_template_values(self.request.url) # because this page requires the user to be logged in, if they logout # we redirect them back to the home page. template_values['logout_url'] = users.create_logout_url("/") template_values['owner'] = current_user template_values['target_user'] = target_user template_values['ride'] = ride template_values['feedback_form'] = feedback_form template_values['target_user_role'] = target_user_role # -------------------------------------------------------------------- # Render and Serve Template # -------------------------------------------------------------------- page_path = os.path.join(os.path.dirname(__file__), "feedback_create.html") self.response.out.write(template.render(page_path, template_values))