From a8b440f404da7ccd52329a7d69b0982b1736e2bf Mon Sep 17 00:00:00 2001 From: Bryan Newbold Date: Thu, 13 Jun 2019 12:45:39 -0700 Subject: editgroup selection as drop-down --- python/fatcat_web/editing_routes.py | 39 +++++++++++-------- python/fatcat_web/templates/container_edit.html | 5 ++- python/fatcat_web/templates/edit_macros.html | 50 ++++++++++++++++--------- 3 files changed, 59 insertions(+), 35 deletions(-) diff --git a/python/fatcat_web/editing_routes.py b/python/fatcat_web/editing_routes.py index 88fb4557..fb45ca7b 100644 --- a/python/fatcat_web/editing_routes.py +++ b/python/fatcat_web/editing_routes.py @@ -50,7 +50,7 @@ def form_editgroup_get_or_create(api, edit_form): ### Views ################################################################### -def generic_entity_edit(entity_type, edit_template, existing_ident, editgroup_id): +def generic_entity_edit(editgroup_id, entity_type, existing_ident, edit_template): """ existing (entity) @@ -83,6 +83,11 @@ def generic_entity_edit(entity_type, edit_template, existing_ident, editgroup_id except ApiException as ae: abort(ae.status) + # check that editgroup is edit-able + if editgroup.changelog_index != None: + flash("Editgroup already merged") + abort(400) + # fetch entity (if set) or 404 existing = None existing_edit = None @@ -106,10 +111,6 @@ def generic_entity_edit(entity_type, edit_template, existing_ident, editgroup_id editgroup = form_editgroup_get_or_create(user_api, form) if editgroup: - # check that editgroup is edit-able - if editgroup.changelog_index != None: - flash("Editgroup already merged") - abort(400) if not existing_ident: # it's a create entity = form.to_entity() @@ -170,10 +171,14 @@ def generic_entity_edit(entity_type, edit_template, existing_ident, editgroup_id if not editgroup_id: form.editgroup_id.data = session.get('active_editgroup_id', None) + editor_editgroups = api.get_editor_editgroups(session['editor']['editor_id'], limit=20) + potential_editgroups = [e for e in editor_editgroups if e.changelog_index == None and e.submitted == None] + return render_template(edit_template, form=form, - existing_ident=existing_ident, editgroup=editgroup), status + existing_ident=existing_ident, editgroup=editgroup, + potential_editgroups=potential_editgroups), status -def generic_edit_delete(entity_type, editgroup_id, edit_id): +def generic_edit_delete(editgroup_id, entity_type, edit_id): # fetch editgroup (if set) or 404 editgroup = None if editgroup_id: @@ -182,6 +187,11 @@ def generic_edit_delete(entity_type, editgroup_id, edit_id): except ApiException as ae: abort(ae.status) + # check that editgroup is edit-able + if editgroup.changelog_index != None: + flash("Editgroup already merged") + abort(400) + # API on behalf of user user_api = auth_api(session['api_token']) @@ -192,32 +202,29 @@ def generic_edit_delete(entity_type, editgroup_id, edit_id): else: raise NotImplementedError except ApiException as ae: - if ae.status == 404: - pass - else: - abort(ae.status) + abort(ae.status) return redirect("/editgroup/{}".format(editgroup_id)) @app.route('/container/create', methods=['GET', 'POST']) @login_required def container_create(): - return generic_entity_edit('container', 'container_create.html', None, None) + return generic_entity_edit(None, 'container', None, 'container_create.html') @app.route('/container//edit', methods=['GET', 'POST']) @login_required def container_edit(ident): - return generic_entity_edit('container', 'container_edit.html', ident, None) + return generic_entity_edit(None, 'container', ident, 'container_edit.html') @app.route('/editgroup//container//edit', methods=['GET', 'POST']) @login_required def container_editgroup_edit(editgroup_id, ident): - return generic_entity_edit('container', 'container_edit.html', ident, editgroup_id) + return generic_entity_edit(editgroup_id, 'container', ident, 'container_edit.html') -@app.route('/editgroup//container/edit//delete', methods=['POST', 'DELETE']) +@app.route('/editgroup//container/edit//delete', methods=['POST']) @login_required def container_edit_delete(editgroup_id, edit_id): - return generic_edit_delete('container', editgroup_id, edit_id) + return generic_edit_delete(editgroup_id, 'container', edit_id) @app.route('/creator//edit', methods=['GET']) def creator_edit(ident): diff --git a/python/fatcat_web/templates/container_edit.html b/python/fatcat_web/templates/container_edit.html index 6a08b1ae..91432d5e 100644 --- a/python/fatcat_web/templates/container_edit.html +++ b/python/fatcat_web/templates/container_edit.html @@ -10,8 +10,8 @@ {% endblock %} {{ form.hidden_tag() }} -
- {{ edit_macros.editgroup_dropdown(form, editgroup) }} +

Editgroup

+ {{ edit_macros.editgroup_dropdown(form, editgroup, potential_editgroups) }}

The Basics


@@ -71,6 +71,7 @@ $(document).ready(function() { $('.ui.accordion').accordion(); + $('.ui.dropdown') .dropdown(); var fixup_url_numbering = function(group_item) { items = Array.from(group_item.querySelectorAll(".list-group-item")) diff --git a/python/fatcat_web/templates/edit_macros.html b/python/fatcat_web/templates/edit_macros.html index 66da04e7..a207e51e 100644 --- a/python/fatcat_web/templates/edit_macros.html +++ b/python/fatcat_web/templates/edit_macros.html @@ -35,22 +35,38 @@ {%- endmacro %} -{% macro editgroup_dropdown(form, editgroup=None) -%} -
-
-

Editgroup Meta

-
-
- {% if editgroup %} -

You have an editgroup in progress, and this edit will be included by - default. You can override this below. - {% else %} -

No existing editgroup is in progress (or at least, not is selected). - An existing ID can be pasted in, or if you leave that blank but give a - description, a new editgroup will be created for this edit. - {% endif %} - {{ form_field_inline(form.editgroup_id) }} +{% macro editgroup_dropdown(form, editgroup=None, potential_editgroups=None) -%} + {% if editgroup %} +

You are updating an existing un-merged editgroup: {{ editgroup.editgroup_id }}. +

Description: {{ editgroup.description }} + {% else %} + {% if not potential_editgroups %} +

You have no un-submitted editgroups in progress; a new one will be + created. You can add a description for the whole group of edits: {{ form_field_inline(form.editgroup_description) }} -

-
+ {% else %} +

Select an in-progress editgroup for this change to be part of (or start a new one): + +

+ +

If starting a new editgroup, you can add a description for the whole group: + {{ form_field_inline(form.editgroup_description) }} + {% endif %} + {% endif %} {%- endmacro %} -- cgit v1.2.3