Invites page

This commit is contained in:
Mouse Reeve 2020-09-29 21:45:59 -07:00
parent 8260dcf804
commit 1d5d7f8965
6 changed files with 62 additions and 26 deletions

View file

@ -1,17 +1,22 @@
{% extends 'layout.html' %}
{% load humanize %}
{% block content %}
<div class="content-container">
<h2>Import Books from GoodReads</h2>
<div class="block">
<h2 class="title">Import Books from GoodReads</h2>
<form name="import" action="/import_data/" method="post" enctype="multipart/form-data">
{% csrf_token %}
{{ import_form.as_p }}
<button type="submit">Import</button>
<button class="button" type="submit">Import</button>
</form>
<p>
Imports are limited in size, and only the first {{ limit }} items will be imported.
</div>
<h2>Recent Imports</h2>
<div class="content block">
<h2 class="title">Recent Imports</h2>
{% if not jobs %}
<p>No recent imports</p>
{% endif %}
<ul>
{% for job in jobs %}
<li><a href="/import_status/{{ job.id }}">{{ job.created_date | naturaltime }}</a></li>

View file

@ -67,7 +67,13 @@
<a href="/user/{{request.user.localname}}" class="navbar-item">
Profile
</a>
<a class="navbar-item">
<a href="/user-edit" class="navbar-item">
Settings
</a>
<a href="/invite" class="navbar-item">
Invites
</a>
<a href="/import" class="navbar-item">
Import books
</a>
<hr class="navbar-divider">

View file

@ -1,16 +1,18 @@
{% extends 'layout.html' %}
{% load humanize %}
{% block content %}
<div class="content-container">
<div class="manage-invites">
<h2>Invites</h2>
<table>
<tr>
<th>Link</th>
<th>Expires</th>
<th>Max uses</th>
<th>Times used</th>
</tr>
<div class="block">
<h2 class="title">Invites</h2>
<table class="table is-striped">
<tr>
<th>Link</th>
<th>Expires</th>
<th>Max uses</th>
<th>Times used</th>
</tr>
{% if not invites %}
<tr><td colspan="4">No active invites</td></tr>
{% endif %}
{% for invite in invites %}
<tr>
<td><a href="{{ invite.link }}">{{ invite.link }}</td>
@ -19,14 +21,33 @@
<td>{{ invite.times_used }}</td>
</tr>
{% endfor %}
</table>
<h2>Generate New Invite</h2>
</table>
</div>
<form name="avatar" action="/create_invite/" method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Create Invite</button>
</form>
</div>
<div class="block">
<h2 class="title is-4">Generate New Invite</h2>
<form name="invite" action="/create_invite/" method="post">
{% csrf_token %}
<div class="field">
<div class="control">
<label class="label" for="id_expiry">Expiry:</label>
</div>
<div class="select">
{{ form.expiry }}
</div>
</div>
<div class="field">
<div class="control">
<label class="label" for="id_use_limit">Use limit:</label>
</div>
<div class="select">
{{ form.use_limit }}
</div>
</div>
<button class="button is-primary" type="submit">Create Invite</button>
</form>
</div>
{% endblock %}

View file

@ -14,7 +14,11 @@
{% if shelf.size > 3 %}<small>(<a href="{{ shelf.remote_id }}">See all {{ shelf.size }}</a>)</small>{% endif %}</h3>
<div class="is-mobile field is-grouped">
{% for book in shelf.books %}
{% include 'snippets/book_cover.html' with book=book size="medium" %}
<div class="control">
<a href="/book/{{ book.id }}">
{% include 'snippets/book_cover.html' with book=book size="medium" %}
</a>
</div>
{% endfor %}
</div>
</div>

View file

@ -40,8 +40,8 @@ urlpatterns = [
re_path(r'^login/?$', views.login_page),
re_path(r'^register/?$', views.register_page),
re_path(r'^about/?$', views.about_page),
re_path(r'^invite/?$', views.manage_invites),
re_path(r'^invite/(?P<code>[A-Za-z0-9]+)/?$', views.invite_page),
re_path(r'^manage_invites/?$', views.manage_invites),
path('', views.home),
re_path(r'^(?P<tab>home|local|federated)/?$', views.home_tab),

View file

@ -444,4 +444,4 @@ def create_invite(request):
invite.user = request.user
invite.save()
return redirect('/manage_invites')
return redirect('/invite')