diff options
| author | Bryan Newbold <bnewbold@robocracy.org> | 2019-03-02 17:25:30 -0800 | 
|---|---|---|
| committer | Bryan Newbold <bnewbold@robocracy.org> | 2019-03-02 17:25:30 -0800 | 
| commit | 1691ff26ff3a33d619fbc1bd2983a9b07dbdbabc (patch) | |
| tree | ce5c9e998b32bbcbecb40b00866c3df215aae8de /python/fatcat_web | |
| parent | 59c486662718de2a86cc0c5987f78585620bc83f (diff) | |
| download | fatcat-1691ff26ff3a33d619fbc1bd2983a9b07dbdbabc.tar.gz fatcat-1691ff26ff3a33d619fbc1bd2983a9b07dbdbabc.zip | |
add basic fileset and webcapture views
Diffstat (limited to 'python/fatcat_web')
| -rw-r--r-- | python/fatcat_web/routes.py | 89 | ||||
| -rw-r--r-- | python/fatcat_web/templates/fileset_view.html | 78 | ||||
| -rw-r--r-- | python/fatcat_web/templates/webcapture_view.html | 85 | 
3 files changed, 252 insertions, 0 deletions
| diff --git a/python/fatcat_web/routes.py b/python/fatcat_web/routes.py index ab23c847..5ccfe238 100644 --- a/python/fatcat_web/routes.py +++ b/python/fatcat_web/routes.py @@ -218,6 +218,95 @@ def file_view(ident):              abort(ae.status)      return render_template('file_view.html', file=entity) +@app.route('/fileset/<ident>/history', methods=['GET']) +def fileset_history(ident): +    try: +        entity = api.get_fileset(ident) +        history = api.get_fileset_history(ident) +    except ApiException as ae: +        abort(ae.status) +    return render_template('entity_history.html', +        page_title=None, +        entity_type="fileset", +        entity=entity, +        history=history) + +@app.route('/fileset/<ident>/edit', methods=['GET']) +def fileset_edit_view(ident): +    try: +        entity = api.get_fileset(ident) +    except ApiException as ae: +        abort(ae.status) +    return render_template('entity_edit.html') + +@app.route('/fileset/lookup', methods=['GET']) +def fileset_lookup(): +    raise NotImplementedError + +@app.route('/fileset/<ident>', methods=['GET']) +def fileset_view(ident): +    try: +        entity = api.get_fileset(ident) +    except ApiException as ae: +        abort(ae.status) +    if entity.state == "redirect": +        return redirect('/fileset/{}'.format(entity.redirect)) +    elif entity.state == "deleted": +        return render_template('deleted_entity.html', entity=entity) +    else: +        try: +            entity.releases = [] +            for r in entity.release_ids: +                entity.releases.append(api.get_release(r)) +        except ApiException as ae: +            abort(ae.status) +        entity.total_size = sum([f.size for f in entity.manifest]) +    return render_template('fileset_view.html', fileset=entity) + +@app.route('/webcapture/<ident>/history', methods=['GET']) +def webcapture_history(ident): +    try: +        entity = api.get_webcapture(ident) +        history = api.get_webcapture_history(ident) +    except ApiException as ae: +        abort(ae.status) +    return render_template('entity_history.html', +        page_title=None, +        entity_type="webcapture", +        entity=entity, +        history=history) + +@app.route('/webcapture/<ident>/edit', methods=['GET']) +def webcapture_edit_view(ident): +    try: +        entity = api.get_webcapture(ident) +    except ApiException as ae: +        abort(ae.status) +    return render_template('entity_edit.html') + +@app.route('/webcapture/lookup', methods=['GET']) +def webcapture_lookup(): +    raise NotImplementedError + +@app.route('/webcapture/<ident>', methods=['GET']) +def webcapture_view(ident): +    try: +        entity = api.get_webcapture(ident) +    except ApiException as ae: +        abort(ae.status) +    if entity.state == "redirect": +        return redirect('/webcapture/{}'.format(entity.redirect)) +    elif entity.state == "deleted": +        return render_template('deleted_entity.html', entity=entity) +    else: +        try: +            entity.releases = [] +            for r in entity.release_ids: +                entity.releases.append(api.get_release(r)) +        except ApiException as ae: +            abort(ae.status) +    return render_template('webcapture_view.html', webcapture=entity) +  @app.route('/release/lookup', methods=['GET'])  def release_lookup():      for key in ('doi', 'wikidata_qid', 'pmid', 'pmcid', 'isbn13', 'core_id'): diff --git a/python/fatcat_web/templates/fileset_view.html b/python/fatcat_web/templates/fileset_view.html new file mode 100644 index 00000000..11f69dd7 --- /dev/null +++ b/python/fatcat_web/templates/fileset_view.html @@ -0,0 +1,78 @@ +{% set entity = fileset %} +{% import "entity_macros.html" as entity_macros %} +{% extends "base.html" %} + +{% block fullbody %} + +<div class="ui stackable mobile reversed grid centered"> +<div class="one wide column"></div> +<div class="fifteen wide column"> +  <h1 class="ui header"> +  <div class="sub header"><code>fileset {{ entity.ident }}</code></div></h1> +</div> +</div> + +<div class="ui stackable mobile reversed grid centered"> +<div class="one wide column"></div> +<div class="ten wide column" style="font-size: 16px;"> + +{% if entity.extra %} +  {{ entity_macros.extra_metadata(entity.extra) }} +{% endif %} + +<h3>Releases</h3> +{% if entity.releases != [] %} +  {{ entity_macros.release_list(entity.releases) }} +{% else %} +  <p> +  This File Set is not associated with any fatcat release. +{% endif %} +  + +<h3>File Manifest ({{ fileset.manifest|count }})</h3> +{% if fileset.manifest %} +  <div class="ui celled list"> +    {% for file in fileset.manifest %} +    <div class="item"> +      <div class="content"><code> +        <div class="header"> +          <i class="file outline icon"></i> {{ file.path }} ({{ file.size|filesizeformat }}{% if file.extra.mimetype %}, {{ file.extra.mimetype }}{% endif %}) +        </div> +        <div style="color: #666; margin-left: 1em;"><small> +          {% if file.md5 %}   md5:{{ file.md5 }}<br>{% endif %} +          {% if file.sha1 %}  sha1:{{ file.sha1 }}<br>{% endif %} +          {% if file.sha256 %}sha256:{{ file.sha256 }}<br>{% endif %} +        </small></div> +      </code></div> +    </div> +    {% endfor %} +  </div> +{% else %} +This File Set is empty (contains no files). +{% endif %} + + +<br> +<h3>Base URLs</h3> +{% if entity.urls %} +  {{ entity_macros.url_list(entity.urls) }} +{% else %} +No known public URL, mirror, or archive for this File Set. +{% endif %} + +</div> +<div class="five wide column"> + +{% if fileset.total_size != None %} +<div class="ui segment attached"> +  <p><b>Total Size</b>  {{ fileset.total_size|filesizeformat }} +</div> +{% endif %} + +{{ entity_macros.fatcat_bits(entity, "fileset", "") }} + +</div> +</div> + + +{% endblock %} diff --git a/python/fatcat_web/templates/webcapture_view.html b/python/fatcat_web/templates/webcapture_view.html new file mode 100644 index 00000000..08489fd3 --- /dev/null +++ b/python/fatcat_web/templates/webcapture_view.html @@ -0,0 +1,85 @@ +{% set entity = webcapture %} +{% import "entity_macros.html" as entity_macros %} +{% extends "base.html" %} + +{% block fullbody %} + +<div class="ui stackable mobile reversed grid centered"> +<div class="one wide column"></div> +<div class="fifteen wide column"> +  <h1 class="ui header"> +  {% if webcapture.original_url %} +    <a href="{{ webcapture.original_url }}" style="color: black;"><code>{{ webcapture.original_url }}</code></a> +  {% endif %} +  <div class="sub header"><code>webcapture {{ webcapture.ident }}</code></div></h1> +</div> +</div> + +<div class="ui stackable mobile reversed grid centered"> +<div class="one wide column"></div> +<div class="ten wide column" style="font-size: 16px;"> + + +{% if entity.extra %} +  {{ entity_macros.extra_metadata(entity.extra) }} +{% endif %} + +<h3>Releases</h3> +{% if entity.releases != [] %} +  {{ entity_macros.release_list(entity.releases) }} +{% else %} +  <p> +  This Web Capture is not associated with any fatcat release. +{% endif %} + + +<h3>CDX Rows ({{ webcapture.cdx|count }})</h3> +{% if webcapture.cdx %} +  <div class="ui celled list"> +    {% for row in webcapture.cdx %} +    <div class="item"> +      <div class="content"> +        <div class="header"> +          <code><a href="{{ row.url }}">{{ row.url}}</a></code> +        </div> +        <div style="margin-left: 1em;"> +          {{ row.timestamp }} +          {% if row.mimetype %}| {{ row.mimetype }}{% endif %} +          <br> +          <code><small style="color: #666;"> +            {% if row.sha1 %}sha1:{{ row.sha1 }}<br>{% endif %} +            {% if row.sha256 %}sha256:{{ row.sha256 }}<br>{% endif %} +          </small></code> +        </div> +      </div> +    </div> +    {% endfor %} +  </div> +{% else %} +This File Set is empty (contains no files). +{% endif %} + +<br> +<h3>Archive URLs</h3> +{% if webcapture.archive_urls != None %} +  {{ entity_macros.url_list(webcapture.archive_urls) }} +{% else %} +No known public archive for this webcapture. +{% endif %} + +</div> +<div class="five wide column"> + +{% if webcapture.timestamp != None %} +<div class="ui segment attached"> +  <p><b>Capture Time</b>  {{ webcapture.timestamp }} +</div> +{% endif %} + +{{ entity_macros.fatcat_bits(entity, "webcapture", "") }} + +</div> +</div> + + +{% endblock %} | 
