Add a form to upload goodreads data.

This commit is contained in:
Adam Kelly 2020-03-23 16:40:09 +00:00
parent ea735fd570
commit 8bcd3da25e
5 changed files with 25 additions and 0 deletions

View file

@ -1,6 +1,7 @@
''' usin django model forms '''
from django.core.validators import MaxValueValidator, MinValueValidator
from django.forms import ModelForm, PasswordInput, IntegerField
from django import forms
from fedireads import models
@ -73,3 +74,6 @@ class TagForm(ModelForm):
help_texts = {f: None for f in fields}
labels = {'name': 'Add a tag'}
class ImportForm(forms.Form):
csv_file = forms.FileField()

View file

@ -0,0 +1,10 @@
{% extends 'layout.html' %}
{% block content %}
<div id="content">
<form name="import" action="/import_data/" method="post" enctype="multipart/form-data">
{% csrf_token %}
{{ import_form.as_p }}
<button type="submit">Import</button>
</form>
</div>
{% endblock %}

View file

@ -29,6 +29,7 @@
<li><a href="/user/{{request.user.localname}}/shelves">Your shelves</a></li>
<li><a href="/#feed">Updates</a></li>
<li><a href="/books">Discover Books</a></li>
<li><a href="/import">Import Books</a><li>
</ul>
<div id="actions">

View file

@ -34,6 +34,7 @@ urlpatterns = [
re_path(r'^(?P<tab>home|local|federated)/?$', views.home_tab),
re_path(r'^notifications/?', views.notifications_page),
re_path(r'books/?$', views.books_page),
re_path(r'import/?$', views.import_page),
# should return a ui view or activitypub json blob as requested
# users
@ -81,5 +82,6 @@ urlpatterns = [
re_path(r'^accept_follow_request/?$', actions.accept_follow_request),
re_path(r'^delete_follow_request/?$', actions.delete_follow_request),
re_path(r'import_data', actions.import_data),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

View file

@ -108,6 +108,14 @@ def books_page(request):
}
return TemplateResponse(request, 'books.html', data)
@login_required
def import_page(request):
''' import history from goodreads '''
return TemplateResponse(request, 'import.html', {
'import_form': forms.ImportForm(),
})
def login_page(request):
''' authentication '''