def _update_page(self, title, **post_data): with h.notifications_disabled(c.project): if not self.page: require_access(c.app, 'create') if WM.Page.is_limit_exceeded(c.app.config, user=c.user): log.warn('Page create/edit rate limit exceeded. %s', c.app.config.url()) raise forge_exc.HTTPTooManyRequests() self.page = WM.Page.upsert(title) self.page.viewable_by = ['all'] else: require_access(self.page, 'edit') self.page.text = post_data['text'] if 'labels' in post_data: self.page.labels = post_data['labels'].split(',') self.page.commit() return {}
def _update_post(self, **post_data): require_access(self.post, 'write') if BM.BlogPost.is_limit_exceeded(c.app.config, user=c.user): log.warn('Create/edit rate limit exceeded. %s', c.app.config.url()) raise forge_exc.HTTPTooManyRequests() if 'delete' in post_data: self.post.delete() return {} if 'title' in post_data: self.post.title = post_data['title'] if 'text' in post_data: self.post.text = post_data['text'] if 'state' in post_data: self.post.state = post_data['state'] if 'labels' in post_data: self.post.labels = post_data['labels'].split(',') self.post.commit() return self.post.__json__(posts_limit=10)
def index(self, title='', text='', state='draft', labels='', limit=10, page=0, **kw): if request.method == 'POST': require_access(c.app, 'write') if BM.BlogPost.is_limit_exceeded(c.app.config, user=c.user): log.warn('Create/edit rate limit exceeded. %s', c.app.config.url()) raise forge_exc.HTTPTooManyRequests() post = BM.BlogPost.new( title=title, state=state, text=text, labels=labels.split(','), **kw) return exc.HTTPCreated(headers=dict(Location=str(h.absurl('/rest' + post.url()).encode('utf-8')))) else: result = RootController().index(limit=limit, page=page) posts = result['posts'] post_titles = [] for post in posts: if has_access(post, 'read')(): post_titles.append( {'title': post.title, 'url': h.absurl('/rest' + post.url())}) return dict(posts=post_titles, count=result['count'], limit=result['limit'], page=result['page'])