Mercurial > piecrust2
changeset 951:c50ff76e0596
admin: Fix old API calls and bugs when editing pages.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Thu, 05 Oct 2017 00:28:34 -0700 |
parents | 18d6ac20a132 |
children | 94fd4f07da83 |
files | piecrust/admin/views/edit.py |
diffstat | 1 files changed, 31 insertions(+), 31 deletions(-) [+] |
line wrap: on
line diff
--- a/piecrust/admin/views/edit.py Thu Oct 05 00:27:57 2017 -0700 +++ b/piecrust/admin/views/edit.py Thu Oct 05 00:28:34 2017 -0700 @@ -13,15 +13,14 @@ logger = logging.getLogger(__name__) -@foodtruck_bp.route('/edit/', defaults={'slug': ''}, methods=['GET', 'POST']) -@foodtruck_bp.route('/edit/<path:slug>', methods=['GET', 'POST']) +@foodtruck_bp.route('/edit/', defaults={'url': ''}, methods=['GET', 'POST']) +@foodtruck_bp.route('/edit/<path:url>', methods=['GET', 'POST']) @login_required -def edit_page(slug): +def edit_page(url): site = g.site site_app = site.piecrust_app - rp = get_requested_page(site_app, - '/site/%s/%s' % (g.sites.current_site, slug)) - page = rp.qualified_page + rp = get_requested_page(site_app, site.make_url('/preview/%s' % url)) + page = rp.page if page is None: abort(404) @@ -30,47 +29,47 @@ if request.form['is_dos_nl'] == '0': page_text = page_text.replace('\r\n', '\n') + page_spec = page.content_spec + if 'do_save' in request.form or 'do_save_and_commit' in request.form: - logger.debug("Writing page: %s" % page.path) - with open(page.path, 'w', encoding='utf8', newline='') as fp: + logger.debug("Writing page: %s" % page_spec) + with page.source.openItem(page.content_item, 'w', + encoding='utf8', newline='') as fp: fp.write(page_text) - flash("%s was saved." % os.path.relpath( - page.path, site_app.root_dir)) + flash("%s was saved." % page_spec) if 'do_save_and_commit' in request.form: message = request.form.get('commit_msg') if not message: - message = "Edit %s" % os.path.relpath( - page.path, site_app.root_dir) + message = "Edit %s" % page_spec if site.scm: - commit_paths = [page.path] - assets_dir = os.path.splitext(page.path)[0] + '-assets' + commit_paths = [page_spec] + assets_dir = os.path.splitext(page_spec)[0] + '-assets' if os.path.isdir(assets_dir): commit_paths += list(os.listdir(assets_dir)) site.scm.commit(commit_paths, message) if 'do_save' in request.form or 'do_save_and_commit' in request.form: - return _edit_page_form(page, slug, site.name) + return _edit_page_form(page, url) abort(400) - return _edit_page_form(page, slug, site.name) + return _edit_page_form(page, url) -@foodtruck_bp.route('/upload/<path:slug>', methods=['POST']) -def upload_page_asset(slug): +@foodtruck_bp.route('/upload/<path:url>', methods=['POST']) +def upload_page_asset(url): if 'ft-asset-file' not in request.files: - return redirect(url_for('.edit_page', slug=slug)) + return redirect(url_for('.edit_page', url=url)) asset_file = request.files['ft-asset-file'] if asset_file.filename == '': - return redirect(url_for('.edit_page', slug=slug)) + return redirect(url_for('.edit_page', url=url)) site = g.site site_app = site.piecrust_app - rp = get_requested_page(site_app, - '/site/%s/%s' % (g.sites.current_site, slug)) - page = rp.qualified_page + rp = get_requested_page(site_app, site.make_url('/preview/%s' % url)) + page = rp.page if page is None: abort(404) @@ -87,26 +86,27 @@ asset_path = os.path.join(dirname, filename) logger.info("Uploading file to: %s" % asset_path) asset_file.save(asset_path) - return redirect(url_for('.edit_page', slug=slug)) + return redirect(url_for('.edit_page', url=url)) -def _edit_page_form(page, slug, sitename): +def _edit_page_form(page, url): data = {} data['is_new_page'] = False - data['url_postback'] = url_for('.edit_page', slug=slug) - data['url_upload_asset'] = url_for('.upload_page_asset', slug=slug) - data['url_preview'] = page.getUri() + data['url_postback'] = url_for('.edit_page', url=url) + data['url_upload_asset'] = url_for('.upload_page_asset', url=url) + data['url_preview'] = url_for('.preview_page', url=url) data['url_cancel'] = url_for( '.list_source', source_name=page.source.name) - with open(page.path, 'r', encoding='utf8', newline='') as fp: + with page.source.openItem(page.content_item, 'r', + encoding='utf8', newline='') as fp: data['page_text'] = fp.read() data['is_dos_nl'] = "1" if '\r\n' in data['page_text'] else "0" page.app.env.base_asset_url_format = \ page.app.config.get('site/root') + '_asset/%path%' - assetor = Assetor(page, 'blah') + assetor = Assetor(page) assets_data = [] - for n in assetor.allNames(): + for n in assetor._getAssetNames(): assets_data.append({'name': n, 'url': assetor[n]}) data['assets'] = assets_data