def exchange(self): params = self.request.params page1 = Page.get_by_id(params.get('page1'), parent=self.master_key) page2 = Page.get_by_id(params.get('page2'), parent=self.master_key) page1.order, page2.order = page2.order, page1.order page1.put() page2.put()
def exchange(self): params = self.request.params page1 = Page.get_by_id(params.get('page1'), parent=self.master_key) page2 = Page.get_by_id(params.get('page2'), parent=self.master_key) page1.order, page2.order = page2.order, page1.order page1.put() page2.put()
def get_file(self, file_id): page = Page.get_by_id(file_id, parent=self.master_key) if page and page.file_content: self.response.headers['Content-Type'] = str(page.file_type) self.response.write(page.file_content) else: self.error(404)
def get_file(self, file_id): page = Page.get_by_id(file_id, parent=self.master_key) if page and page.file_content: self.response.headers['Content-Type'] = str(page.file_type) self.response.write(page.file_content) else: self.error(404)
def getPageParent(self,page):#get parent from its page if page: my_key = page.parent; if my_key: PID = my_key.id(); parent = Page.get_by_id(PID); return parent; return;
def delete_page(self, page_id): page = Page.get_by_id(page_id, parent=self.master_key) if page: Page.dec_order_number(self.master_key, page.order) page.key.delete() self.redirect(self._redirect_url()) else: self.error(404)
def delete_page(self, page_id): page = Page.get_by_id(page_id, parent=self.master_key) if page: Page.dec_order_number(self.master_key, page.order) page.key.delete() self.redirect(self._redirect_url()) else: self.error(404)
def get(self, page_id=''): if page_id: page = Page.get_by_id(page_id, parent=self.master_key) else: page = Page.get_first_child(self.master_key, False) if page: return self._get_page(page) else: self.redirect('/_add?type=post')
def get(self, page_id=''): if page_id: page = Page.get_by_id(page_id, parent=self.master_key) else: page = Page.get_first_child(self.master_key, False) if page: return self._get_page(page) else: self.redirect('/_add?type=post')
def linkNodeDelete(ID): link = None; if ID: link = Page.get_by_id(ID); myKey = None; if link: myKey = link.key; for m in Page.query(Page.parent == myKey): linkDelete(m.key.id()); for m in Post.query(Post.parent == myKey): m.key.delete(); return link;
def delete(self, id): if not self.user: raise PermissionDenied("Public cannot delete.") logging.info(u'Api.delete(id={})'.format(id)) entity = Model.get_by_id(id) if self.user.is_admin: allowed = True elif isinstance(entity, (Book, Page)): allowed = self.user.uid in entity.authors elif isinstance(entity, Chapter): books = Book.get_by_id(entity.books) or [] allowed = all(self.user.uid in b.authors for b in books) else: allowed = entity.key.parent() == self.user.key if not allowed: raise PermissionDenied( "{} does not own {} and may not delete it.".format( self.user, entity)) entity.deleted = True # We're about to take it out of the index, so don't bother updating # it with the new value of the deleted property. # See model.Model._post_put_hook() entity.forbid_post_put_hook = True entity.put() if isinstance(entity, (Book, Page)): logging.info("Removing soft-deleted content from search.") search.Index(config.content_index).delete(entity.uid) entity_kind = Model.get_kind(entity) # If User object, need to remove unique properties from unique model if entity_kind is 'User': entity.remove_unique_properties(entity) # If vote, need to decrement vote on subject object if entity_kind is 'Vote': if entity.page_id: page_id = entity.page_id page = Page.get_by_id(page_id) if page is not None: page.votes_for = max(page.votes_for - 1, 0) page.put() if entity.book_id: book_id = entity.book_id book = Book.get_by_id(book_id) if book is not None: book.votes_for = max(book.votes_for - 1, 0) book.put() if entity_kind is 'Comment': if entity.page_id: page_id = entity.page_id page = Page.get_by_id(page_id) if page is not None: page.num_comments = max(page.num_comments - 1, 0) page.put() if entity.book_id: book_id = entity.book_id book = Book.get_by_id(book_id) if book is not None: book.num_comments = max(book.num_comments - 1, 0) book.put()
def getParent(self): parent = None; if self.ID: parent = Page.get_by_id(self.ID); return parent;
def get(self, page_id): # Add info to dicts that assist templates with displaying correct UI elements. # Takes data param (page data) and a property_dict, the flat dictionary # that contains metadata for the content fields to display in this view. def process_property_dicts(data, property_dict): val = getattr(data, property_dict['data_prop']) if (val == property_dict['default_value']): property_dict['is_empty'] = True # set display value even though it will be hidden property_dict['display_value'] = property_dict['default_value'] else: property_dict['is_empty'] = False has_suffix = property_dict['value_suffix'] is not None property_dict['display_value'] = u'{} {}'.format( val, property_dict['value_suffix']) if has_suffix else val id = Page.get_long_uid(page_id) page = self.api.get_by_id(id) authors = [] if not page: # 404 if theme cannot be found return self.http_not_found() # These lists of dictionaries are used to store metadata about the # page's display fields. # - data_prop and scope_prop are used to help map angular values with # their respective data values. # - value_suffix can be given a value to add a simple string to the end # of the display value. # - Note: before being passed to the template, these dicts can/are # expected to be further processed by adding data (such as the final # display value) ui_props = page.ui_props.copy() first_section_keys = ( 'time_required', 'required_materials', 'preconditions_for_success', 'advances_equity', 'evidence_of_effectiveness', ) first_section_props = [ui_props[k] for k in first_section_keys] second_section_keys = ( 'associated_measures', 'acknowledgements', 'preferred_citation', ) second_section_props = [ui_props[k] for k in second_section_keys] # Increment view counts on the practice view_counter.increment(id) # TODO: Refactor this. Not sure what kind of author data we want to display/send to template yet. if page.authors: authors_data = User.get_by_id(page.authors) for a in authors_data: authors.append(a.to_client_dict()) display_first_section_heading = False for property_dict in first_section_props: process_property_dicts(page, property_dict) if not property_dict['is_empty']: display_first_section_heading = True for property_dict in second_section_props: process_property_dicts(page, property_dict) relatedPages = [] if len(page.related_pages) > 0: relatedPages = Page.get_by_id(page.related_pages) creator = authors[0] last_editor = User.get_by_id( page.last_edited_by) if page.last_edited_by else None user = self.get_current_user() is_author = user.uid in page.authors if user is not None else False additional_authors = authors[1:].remove( last_editor ) if last_editor and last_editor in authors[1:] else authors[1:] self.write( 'page.html', page=page, page_json=json.dumps(page.to_client_dict()), related_pages=relatedPages, authors=authors, authors_json=json.dumps(authors), first_author=creator, creator=creator, additional_authors=additional_authors, last_editor=last_editor, tags=page.tags, license=page.use_license, first_section_props=first_section_props, second_section_props=second_section_props, display_first_section_heading=display_first_section_heading, breadcrumb_title=None, is_author=is_author or (user and user.is_admin), is_admin=user and user.is_admin, entity_type='page', )