Stylistic changes for goodreads import
This commit is contained in:
parent
d41a420355
commit
09f030db88
|
@ -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'))
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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 %}
|
||||||
|
|
|
@ -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:
|
||||||
|
|
Loading…
Reference in New Issue