- Added "Push to Library" button to issues archive - Implemented direct API upload to Grimmory/Booklore - Added support for `.env` files via `python-dotenv` - Handled 409 Conflict for duplicate files gracefully - Resolved library name to numeric ID for direct uploads - Fixed SQLAlchemy and ebooklib warnings in tests - Added comprehensive tests for push functionality Made-with: Cursor
53 lines
2.1 KiB
HTML
53 lines
2.1 KiB
HTML
{% extends "base.html" %}
|
||
{% block title %}Issues{% endblock %}
|
||
{% block content %}
|
||
<h1>Issues Archive</h1>
|
||
|
||
{% if issues %}
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>Cover</th>
|
||
<th>Week</th>
|
||
<th>Articles</th>
|
||
<th>Cover Method</th>
|
||
<th>Created</th>
|
||
<th>Actions</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
{% for item in issues %}
|
||
<tr>
|
||
<td>
|
||
<img src="/issues/{{ item.issue.id }}/cover" alt="Cover"
|
||
style="max-width: 100px; max-height: 60px;">
|
||
</td>
|
||
<td>{{ item.issue.week_start.strftime('%b %d') }} – {{ item.issue.week_end.strftime('%b %d, %Y') }}</td>
|
||
<td>{{ item.article_count }}</td>
|
||
<td>{{ item.issue.cover_method }}</td>
|
||
<td>{{ item.issue.created_at.strftime('%b %d, %Y %H:%M') }}</td>
|
||
<td class="issue-actions">
|
||
<a href="/issues/{{ item.issue.id }}/read" role="button" class="outline">Read</a>
|
||
<a href="/issues/{{ item.issue.id }}/download" role="button" class="outline">Download</a>
|
||
{% if config.GRIMMORY_URL and config.GRIMMORY_USERNAME and config.GRIMMORY_PASSWORD %}
|
||
<form method="post" action="/issues/{{ item.issue.id }}/push">
|
||
<button type="submit" class="outline">Push to Library</button>
|
||
</form>
|
||
{% endif %}
|
||
<form method="post" action="/issues/{{ item.issue.id }}/regenerate">
|
||
<button type="submit" class="outline contrast">Regenerate</button>
|
||
</form>
|
||
<form method="post" action="/issues/{{ item.issue.id }}/delete" data-confirm-danger="true"
|
||
onsubmit="event.preventDefault(); confirmAction('The ePub and cover files will also be removed.', this, 'Delete Issue?');">
|
||
<button type="submit" class="outline btn-danger">Delete</button>
|
||
</form>
|
||
</td>
|
||
</tr>
|
||
{% endfor %}
|
||
</tbody>
|
||
</table>
|
||
{% else %}
|
||
<p>No issues published yet. <a href="/publish">Create one?</a></p>
|
||
{% endif %}
|
||
{% endblock %}
|