def get(self, profile_email): """ GET request handler that renders a profile overview page. @param profile_email: The email address of the user whose profile's overview page should be rendered. @type profile_email: str """ cur_user = users.get_current_user() if not account_facade.viewer_has_access(cur_user, profile_email): self.redirect(constants.HOME_URL) section_statuses = account_facade.get_updated_sections( cur_user, profile_email) sections = constants.PORTFOLIO_SECTIONS account_facade.set_viewed(cur_user, profile_email, None) template = jinja_environment.get_template("portfolio_overview.html") template_vals = get_standard_template_dict() owner_name = util.get_full_name_from_email(profile_email) template_vals["profile_safe_email"] = util.sanitize_email(profile_email) template_vals["cur_section"] = "overview" template_vals["owner_name"] = " ".join(owner_name) template_vals["owner_first_name"] = owner_name[0] template_vals["owner_last_name"] = owner_name[1] template_vals["sections"] = sections template_vals["section_statuses"] = section_statuses content = template.render(template_vals) self.response.out.write(content)
def test_get_updated_sections(self): """Test listing of unread comments / updated portfolio sections.""" user_1 = FakeUser("*****@*****.**") user_2 = FakeUser("*****@*****.**") profile_email = "safe_email" section_1_name = "section1" section_2_name = "section2" contents_1 = "test contents 1" contents_2 = "test contents 2" test_timestamp_1 = datetime.datetime(2000, 1, 2) test_timestamp_2 = datetime.datetime(2003, 4, 5) viewing_timestamp = datetime.datetime(2001, 4, 5) test_comment_1 = models.Comment() test_comment_1.author_email = user_1.email() test_comment_1.profile_email = profile_email test_comment_1.section_name = section_1_name test_comment_1.contents = contents_1 test_comment_1.timestamp = test_timestamp_1 test_comment_1.put() test_comment_2 = models.Comment() test_comment_2.author_email = user_2.email() test_comment_2.profile_email = profile_email test_comment_2.section_name = section_2_name test_comment_2.contents = contents_2 test_comment_2.timestamp = test_timestamp_2 test_comment_2.put() viewing_profile = models.ViewingProfile() viewing_profile.viewer_email = user_1.email() viewing_profile.profile_email = profile_email viewing_profile.section_name = section_1_name viewing_profile.last_visited = viewing_timestamp viewing_profile.put() updated_listing = account_facade.get_updated_sections(user_1, profile_email) self.assertIn(section_2_name, updated_listing) self.assertEqual(updated_listing[section_2_name], 1)
def get(self, profile_email, section_name): """ GET request handler that renders the private comments for a section. @param profile_email: The email address of the user whose portfolio's comments should be displayed. @type profile_email: str @param section_name: The name of the portfolio section to render comments for. @type section_name: str """ cur_user = users.get_current_user() if not account_facade.viewer_has_access(cur_user, profile_email): self.redirect(constants.HOME_URL) new_comments = account_facade.get_new_comments( cur_user, profile_email, section_name) old_comments = account_facade.get_old_comments( cur_user, profile_email, section_name) section_statuses = account_facade.get_updated_sections( cur_user, profile_email) sections = constants.PORTFOLIO_SECTIONS account_facade.set_viewed(cur_user, profile_email, section_name) template = jinja_environment.get_template("portfolio_section.html") template_vals = get_standard_template_dict() owner_name = util.get_full_name_from_email(profile_email) template_vals["profile_safe_email"] = util.sanitize_email(profile_email) template_vals["cur_section"] = section_name template_vals["owner_name"] = " ".join(owner_name) template_vals["owner_first_name"] = owner_name[0] template_vals["owner_last_name"] = owner_name[1] template_vals["sections"] = sections template_vals["section_statuses"] = section_statuses template_vals["new_comments"] = new_comments template_vals["old_comments"] = old_comments content = template.render(template_vals) self.response.out.write(content)