def get(self): # Check the request parameters. if not self.params.id: return self.error(404, 'No person id was specified.') try: person = Person.get(self.repo, self.params.id) except ValueError: return self.error(404, _("This person's entry does not exist or has been deleted.")) if not person: return self.error(404, _("This person's entry does not exist or has been deleted.")) standalone = self.request.get('standalone') # Check if private info should be revealed. content_id = 'view:' + self.params.id reveal_url = reveal.make_reveal_url(self, content_id) show_private_info = reveal.verify(content_id, self.params.signature) # Compute the local times for the date fields on the person. person.source_date_local_string = self.to_formatted_local_date( person.source_date) person.source_time_local_string = self.to_formatted_local_time( person.source_date) person.expiry_date_local_string = self.to_formatted_local_date( person.get_effective_expiry_date()) person.expiry_time_local_string = self.to_formatted_local_time( person.get_effective_expiry_date()) person.should_show_inline_photo = ( self.should_show_inline_photo(person.photo_url)) # Get the notes and duplicate links. try: notes = person.get_notes() except datastore_errors.NeedIndexError: notes = [] person.sex_text = get_person_sex_text(person) for note in notes: self.__add_fields_to_note(note) try: linked_persons = person.get_all_linked_persons() except datastore_errors.NeedIndexError: linked_persons = [] linked_person_info = [] for linked_person in linked_persons: try: linked_notes = linked_person.get_notes() except datastore_errors.NeedIndexError: linked_notes = [] for note in linked_notes: self.__add_fields_to_note(note) linked_person_info.append(dict( id=linked_person.record_id, name=linked_person.primary_full_name, view_url=self.get_url('/view', id=linked_person.record_id), notes=linked_notes)) # Render the page. dupe_notes_url = self.get_url( '/view', id=self.params.id, dupe_notes='yes') results_url = self.get_url( '/results', role=self.params.role, query_name=self.params.query_name, query_location=self.params.query_location, given_name=self.params.given_name, family_name=self.params.family_name) feed_url = self.get_url( '/feeds/note', person_record_id=self.params.id, repo=self.repo) subscribe_url = self.get_url('/subscribe', id=self.params.id) delete_url = self.get_url('/delete', id=self.params.id) disable_notes_url = self.get_url('/disable_notes', id=self.params.id) enable_notes_url = self.get_url('/enable_notes', id=self.params.id) extend_url = None extension_days = 0 expiration_days = None expiry_date = person.get_effective_expiry_date() if expiry_date and not person.is_clone(): expiration_delta = expiry_date - get_utcnow() extend_url = self.get_url('/extend', id=self.params.id) extension_days = extend.get_extension_days(self) if expiration_delta.days < EXPIRY_WARNING_THRESHOLD: # round 0 up to 1, to make the msg read better. expiration_days = expiration_delta.days + 1 if person.is_clone(): person.provider_name = person.get_original_domain() sanitize_urls(person) for note in notes: sanitize_urls(note) if person.profile_urls: person.profile_pages = get_profile_pages(person.profile_urls, self) self.render('view.html', person=person, notes=notes, linked_person_info=linked_person_info, standalone=standalone, onload_function='view_page_loaded()', show_private_info=show_private_info, admin=users.is_current_user_admin(), dupe_notes_url=dupe_notes_url, results_url=results_url, reveal_url=reveal_url, feed_url=feed_url, subscribe_url=subscribe_url, delete_url=delete_url, disable_notes_url=disable_notes_url, enable_notes_url=enable_notes_url, extend_url=extend_url, extension_days=extension_days, expiration_days=expiration_days)
def get(self): # Check the request parameters. if not self.params.id: return self.error(404, 'No person id was specified.') try: person = Person.get(self.repo, self.params.id) except ValueError: return self.error(404, _("This person's entry does not exist or has been deleted.")) if not person: return self.error(404, _("This person's entry does not exist or has been deleted.")) standalone = self.request.get('standalone') # Check if private info should be revealed. content_id = 'view:' + self.params.id reveal_url = reveal.make_reveal_url(self, content_id) show_private_info = reveal.verify(content_id, self.params.signature) # Compute the local times for the date fields on the person. person.source_date_local_string = self.to_formatted_local_time( person.source_date) person.expiry_date_local_string = self.to_formatted_local_time( person.get_effective_expiry_date()) person.should_show_inline_photo = ( self.should_show_inline_photo(person.photo_url)) # Get the notes and duplicate links. try: notes = person.get_notes() except datastore_errors.NeedIndexError: notes = [] person.sex_text = get_person_sex_text(person) for note in notes: self.__add_fields_to_note(note) try: linked_persons = person.get_all_linked_persons() except datastore_errors.NeedIndexError: linked_persons = [] linked_person_info = [] for linked_person in linked_persons: try: linked_notes = linked_person.get_notes() except datastore_errors.NeedIndexError: linked_notes = [] for note in linked_notes: self.__add_fields_to_note(note) linked_person_info.append(dict( id=linked_person.record_id, name=linked_person.primary_full_name, view_url=self.get_url('/view', id=linked_person.record_id), notes=linked_notes)) # Render the page. dupe_notes_url = self.get_url( '/view', id=self.params.id, dupe_notes='yes') results_url = self.get_url( '/results', role=self.params.role, query=self.params.query, given_name=self.params.given_name, family_name=self.params.family_name) feed_url = self.get_url( '/feeds/note', person_record_id=self.params.id, repo=self.repo) subscribe_url = self.get_url('/subscribe', id=self.params.id) delete_url = self.get_url('/delete', id=self.params.id) disable_notes_url = self.get_url('/disable_notes', id=self.params.id) enable_notes_url = self.get_url('/enable_notes', id=self.params.id) extend_url = None extension_days = 0 expiration_days = None expiry_date = person.get_effective_expiry_date() if expiry_date and not person.is_clone(): expiration_delta = expiry_date - get_utcnow() extend_url = self.get_url('/extend', id=self.params.id) extension_days = extend.get_extension_days(self) if expiration_delta.days < EXPIRY_WARNING_THRESHOLD: # round 0 up to 1, to make the msg read better. expiration_days = expiration_delta.days + 1 if person.is_clone(): person.provider_name = person.get_original_domain() sanitize_urls(person) for note in notes: sanitize_urls(note) if person.profile_urls: person.profile_pages = get_profile_pages(person.profile_urls, self) self.render('view.html', person=person, notes=notes, linked_person_info=linked_person_info, standalone=standalone, onload_function='view_page_loaded()', show_private_info=show_private_info, admin=users.is_current_user_admin(), dupe_notes_url=dupe_notes_url, results_url=results_url, reveal_url=reveal_url, feed_url=feed_url, subscribe_url=subscribe_url, delete_url=delete_url, disable_notes_url=disable_notes_url, enable_notes_url=enable_notes_url, extend_url=extend_url, extension_days=extension_days, expiration_days=expiration_days)