Stylistic changes for goodreads import

This commit is contained in:
Mouse Reeve 2020-03-27 09:33:31 -07:00
parent d41a420355
commit 09f030db88
3 changed files with 18 additions and 8 deletions

View File

@ -158,6 +158,7 @@ def handle_unshelve(user, book, shelf):
def handle_import_books(user, items): def handle_import_books(user, items):
''' process a goodreads csv and then post about it '''
new_books = [] new_books = []
for item in items: for item in items:
if item.shelf: if item.shelf:
@ -165,7 +166,8 @@ def handle_import_books(user, items):
identifier=item.shelf, identifier=item.shelf,
user=user user=user
) )
shelf, created = models.ShelfBook.objects.get_or_create(book=item.book, shelf=desired_shelf, added_by=user) _, created = models.ShelfBook.objects.get_or_create(
book=item.book, shelf=desired_shelf, added_by=user)
if created: if created:
new_books.append(item.book) new_books.append(item.book)
activity = activitypub.get_add(user, item.book, desired_shelf) activity = activitypub.get_add(user, item.book, desired_shelf)
@ -178,7 +180,8 @@ def handle_import_books(user, items):
status.status_type = 'Update' status.status_type = 'Update'
status.save() status.save()
create_activity = activitypub.get_create(user, activitypub.get_status(status)) create_activity = activitypub.get_create(
user, activitypub.get_status(status))
broadcast(user, create_activity, get_recipients(user, 'public')) broadcast(user, create_activity, get_recipients(user, 'public'))

View File

@ -1,10 +1,12 @@
{% extends 'layout.html' %} {% extends 'layout.html' %}
{% block content %} {% block content %}
<div id="content"> <div class="content-container">
<h2>Import Books from GoodReads</h2>
<form name="import" action="/import_data/" method="post" enctype="multipart/form-data"> <form name="import" action="/import_data/" method="post" enctype="multipart/form-data">
{% csrf_token %} {% csrf_token %}
{{ import_form.as_p }} {{ import_form.as_p }}
<button type="submit">Import</button> <button type="submit">Import</button>
<small>Hang tight, this may take a minute!</small>
</form> </form>
</div> </div>
{% endblock %} {% endblock %}

View File

@ -6,6 +6,7 @@ from django.contrib.auth.decorators import login_required
from django.http import HttpResponseBadRequest from django.http import HttpResponseBadRequest
from django.shortcuts import redirect from django.shortcuts import redirect
from django.template.response import TemplateResponse from django.template.response import TemplateResponse
import re
from fedireads import forms, models, books_manager, outgoing from fedireads import forms, models, books_manager, outgoing
from fedireads.settings import DOMAIN from fedireads.settings import DOMAIN
@ -290,14 +291,18 @@ def delete_follow_request(request):
outgoing.handle_outgoing_reject(requester, request.user, follow_request) outgoing.handle_outgoing_reject(requester, request.user, follow_request)
return redirect('/user/%s' % request.user.localname) return redirect('/user/%s' % request.user.localname)
@login_required @login_required
def import_data(request): def import_data(request):
''' ingest a goodreads csv '''
form = forms.ImportForm(request.POST, request.FILES) form = forms.ImportForm(request.POST, request.FILES)
if form.is_valid(): if form.is_valid():
results = [] results = []
failures = [] failures = []
for item in GoodreadsCsv(TextIOWrapper(request.FILES['csv_file'], encoding=request.encoding)): for item in GoodreadsCsv(TextIOWrapper(
request.FILES['csv_file'],
encoding=request.encoding)):
if item.book: if item.book:
results.append(item) results.append(item)
else: else:
@ -306,9 +311,9 @@ def import_data(request):
outgoing.handle_import_books(request.user, results) outgoing.handle_import_books(request.user, results)
if failures: if failures:
return TemplateResponse(request, 'import_results.html', { return TemplateResponse(request, 'import_results.html', {
'success_count': len(results), 'success_count': len(results),
'failures': failures, 'failures': failures,
}) })
else: else:
return redirect('/') return redirect('/')
else: else: