def show(self, id, format='html'): """GET /pages/id: Show a specific item""" # url('page', id=ID) page = get_page(id) # for html format, show page even if it does not exist: if format=='html': c.page = page return render('/pages/show.mako') # otherwise, if page does not exist, it is a 404: if not page.exists() and not session.get('user', ''): abort(404) if format=='js': response.content_type = 'text/javascript' script = page.get_javascript() return script elif format=='json': response.content_type = 'application/json' json = page.get_json_content() return json elif format=='play': c.page = page c.text = request.GET.get('text', '') return render('/pages/play.mako') elif format=='txt': response.content_type = 'text/plain' return page.get_raw_content() elif format=='words-js': response.content_type = 'text/javascript' json = page.get_words_js() return json elif format=='yaml': response.content_type = 'text/plain' json = page.get_json_content() return json
def edit(self, id, format='html'): """GET /pages/id/edit: Form to edit an existing item""" # url('edit_page', id=ID) self._authorize() c.page = get_page(id) c.timestamp = c.page.get_timestamp() return render('/pages/edit.mako')
def new(self, format='html', id=''): """GET /pages/new: Form to create a new item""" # url('new_page') self._authorize() c.page = get_page(id) return render('/pages/new.mako')
def update(self, id, *args, **kwargs): """PUT /pages/id: Update an existing item""" # Forms posted to this method should contain a hidden field: # <input type="hidden" name="_method" value="PUT" /> # Or using helpers: # h.form(url('page', id=ID), # method='put') # url('page', id=ID) self._authorize() schema = PageUpdateForm() try: form_result = schema.to_python(dict(request.params)) except formencode.Invalid, error: error_message = unicode(error) return error_message page = get_page(id) page.content = form_result.get('content') preview = form_result.get('preview') if page.get_timestamp() and form_result.get('timestamp') != page.get_timestamp(): c.errors.append('This page was modified while you were editing it: your changes cannot be saved.') preview = True if preview: c.page = page c.timestamp = form_result.get('timestamp') return render('/pages/edit.mako') else: page.save() redirect(url(controller='pages', action='show', id=id)) def delete(self, id): """DELETE /pages/id: Delete an existing item"""