diff options
Diffstat (limited to 'python/fatcat_web')
| -rw-r--r-- | python/fatcat_web/entity_helpers.py | 27 | ||||
| -rw-r--r-- | python/fatcat_web/routes.py | 2 | ||||
| -rw-r--r-- | python/fatcat_web/templates/deleted_entity.html | 2 | ||||
| -rw-r--r-- | python/fatcat_web/templates/entity_macros.html | 12 | 
4 files changed, 35 insertions, 8 deletions
| diff --git a/python/fatcat_web/entity_helpers.py b/python/fatcat_web/entity_helpers.py index c9a57290..7156b9be 100644 --- a/python/fatcat_web/entity_helpers.py +++ b/python/fatcat_web/entity_helpers.py @@ -1,5 +1,6 @@  from flask import abort +from fatcat_openapi_client import *  from fatcat_openapi_client.rest import ApiException, ApiValueError  from fatcat_tools.transforms import *  from fatcat_web import api @@ -148,6 +149,26 @@ def generic_get_entity_revision(entity_type, revision_id):      except ApiValueError:          abort(400) +def generic_deleted_entity(entity_type, ident): +    if entity_type == 'container': +        entity = ContainerEntity() +    elif entity_type == 'creator': +        entity = CreatorEntity() +    elif entity_type == 'file': +        entity = FileEntity() +    elif entity_type == 'fileset': +        entity = FilesetEntity() +    elif entity_type == 'webcapture': +        entity = WebcaptureEntity() +    elif entity_type == 'release': +        entity = ReleaseEntity() +    elif entity_type == 'work': +        entity = WorkEntity() +    else: +        raise NotImplementedError +    entity.ident = ident +    return entity +  def generic_get_editgroup_entity(editgroup, entity_type, ident):      if entity_type == 'container':          edits = editgroup.edits.containers @@ -166,14 +187,18 @@ def generic_get_editgroup_entity(editgroup, entity_type, ident):      else:          raise NotImplementedError      revision_id = None +    edit = None      for e in edits:          if e.ident == ident:              revision_id = e.revision              edit = e              break -    if not revision_id: +    if not edit:          # couldn't find relevant edit in this editgroup          abort(404) +    if not revision_id: +        # deletion, presumably +        return generic_deleted_entity(entity_type, ident), edit      try:          entity = generic_get_entity_revision(entity_type, revision_id) diff --git a/python/fatcat_web/routes.py b/python/fatcat_web/routes.py index 74805c69..da2bb6cf 100644 --- a/python/fatcat_web/routes.py +++ b/python/fatcat_web/routes.py @@ -227,7 +227,7 @@ def generic_editgroup_entity_view(editgroup_id, entity_type, ident, view_templat      entity, edit = generic_get_editgroup_entity(editgroup, entity_type, ident) -    if entity.state == "deleted": +    if entity.revision is None or entity.state == "deleted":          return render_template('deleted_entity.html', entity=entity,              entity_type=entity_type, editgroup=editgroup) diff --git a/python/fatcat_web/templates/deleted_entity.html b/python/fatcat_web/templates/deleted_entity.html index eefc87cf..4c6b14b6 100644 --- a/python/fatcat_web/templates/deleted_entity.html +++ b/python/fatcat_web/templates/deleted_entity.html @@ -30,7 +30,7 @@  <b>Entity Type:</b> <code>{{ entity_type }}</code>  </div> -{{ entity_macros.fatcat_bits(entity, entity_type, "") }} +{{ entity_macros.fatcat_bits(entity, entity_type, "", editgroup=editgroup) }}  </div>  </div> diff --git a/python/fatcat_web/templates/entity_macros.html b/python/fatcat_web/templates/entity_macros.html index 718c071c..0ce646bf 100644 --- a/python/fatcat_web/templates/entity_macros.html +++ b/python/fatcat_web/templates/entity_macros.html @@ -33,7 +33,7 @@    {% if entity.state %}      State is "{{ entity.state }}".    {% endif %} -  {% if entity.state != "deleted" %} +  {% if entity.revision %}      Revision:      <br><small><code><a href="/{{ entity_type }}/rev/{{ entity.revision }}">{{ entity.revision }}</a></code></small>    {% endif %} @@ -43,11 +43,13 @@    {%- else -%}      https://api.{{ config.FATCAT_DOMAIN }}    {%- endif -%} -  /v0/{{ entity_type }} -  {%- if entity.ident -%} -    /{{ entity.ident }} +  /v0 +  {%- if editgroup and entity.ident -%} +    /editgroup/{{ editgroup.editgroup_id }}{# /{{ entity_type }}/{{ entity.ident }} #} +  {%- elif entity.ident -%} +    /{{ entity_type }}/{{ entity.ident }}    {%- elif entity.revision -%} -    /rev/{{ entity.revision }} +    /{{ entity_type }}/rev/{{ entity.revision }}    {% endif %}    {% if expand %}?expand={{ expand}}{% endif %}">    As JSON object via API | 
