Exemple #1
0
 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()
Exemple #2
0
 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()
Exemple #3
0
 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)
Exemple #4
0
 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)
Exemple #5
0
	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; 
Exemple #6
0
 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)
Exemple #7
0
 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)
Exemple #8
0
 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')
Exemple #9
0
 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')
Exemple #10
0
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;
Exemple #11
0
    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()
Exemple #12
0
	def getParent(self):
		parent = None;
		if self.ID:
			parent = Page.get_by_id(self.ID);

		return parent;
Exemple #13
0
    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',
        )