Skip to content

Commit 7cdd754

Browse files
authored
Merge pull request #42 from BirkbeckCTP/django_two_three
Plugin now runs in Django 3.2
2 parents 8458c74 + d59a645 commit 7cdd754

File tree

6 files changed

+66
-38
lines changed

6 files changed

+66
-38
lines changed

apps.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22

33

44
class BooksConfig(AppConfig):
5-
name = 'books'
5+
name = 'plugins.books'

forms.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ def get_queryset(self):
2727
pks = [row.get('object', None).pk for row in self.items if row.get('object', None)]
2828
return models.Contributor.objects.filter(pk__in=pks)
2929

30-
def render(self, name, value, attrs=None, choices=()):
30+
def render(self, name, value, attrs=None, choices=(), renderer=None):
3131
value_for_template = [int(val) for val in value] if value else None
3232
context = {
3333
'items': self.items,
@@ -95,6 +95,7 @@ def __init__(self, *args, **kwargs):
9595
items = kwargs.pop('items', None)
9696
super(ChapterForm, self).__init__(*args, **kwargs)
9797
self.fields['contributors'].widget = TableMultiSelect(items=items)
98+
self.fields['contributors'].required = False
9899

99100
file = forms.FileField(required=False)
100101

models.py

Lines changed: 34 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,10 @@ def remote_book_label(self):
224224

225225

226226
class Contributor(models.Model):
227-
book = models.ForeignKey(Book)
227+
book = models.ForeignKey(
228+
Book,
229+
on_delete=models.CASCADE,
230+
)
228231
first_name = models.CharField(max_length=100)
229232
middle_name = models.CharField(max_length=100, blank=True, null=True)
230233
last_name = models.CharField(max_length=100)
@@ -254,7 +257,10 @@ def citation_name(self):
254257

255258

256259
class Format(models.Model):
257-
book = models.ForeignKey(Book)
260+
book = models.ForeignKey(
261+
Book,
262+
on_delete=models.CASCADE,
263+
)
258264

259265
title = models.CharField(max_length=100)
260266
filename = models.CharField(max_length=100)
@@ -318,12 +324,30 @@ def access_choices():
318324

319325

320326
class BookAccess(models.Model):
321-
book = models.ForeignKey(Book)
322-
chapter = models.ForeignKey('Chapter', blank=True, null=True)
327+
book = models.ForeignKey(
328+
Book,
329+
on_delete=models.CASCADE,
330+
)
331+
chapter = models.ForeignKey(
332+
'Chapter',
333+
blank=True,
334+
null=True,
335+
on_delete=models.SET_NULL,
336+
)
323337
type = models.CharField(max_length=20, choices=access_choices())
324-
format = models.ForeignKey(Format, blank=True, null=True)
338+
format = models.ForeignKey(
339+
Format,
340+
blank=True,
341+
null=True,
342+
on_delete=models.SET_NULL,
343+
)
325344
accessed = models.DateTimeField(default=timezone.now)
326-
country = models.ForeignKey('core.Country', null=True, blank=True)
345+
country = models.ForeignKey(
346+
'core.Country',
347+
null=True,
348+
blank=True,
349+
on_delete=models.SET_NULL,
350+
)
327351
identifier = models.CharField(max_length=100)
328352

329353
def __str__(self):
@@ -335,7 +359,10 @@ def __str__(self):
335359

336360

337361
class Chapter(models.Model):
338-
book = models.ForeignKey(Book)
362+
book = models.ForeignKey(
363+
Book,
364+
on_delete=models.CASCADE,
365+
)
339366
title = models.CharField(
340367
max_length=255,
341368
)

templates/books/book_detail.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
{% load static from staticfiles %}
1+
{% load static %}
22
{% load i18n %}
33
<div class="large-12 columns">
44
<div class="content clearfix">

templates/books/book_epub.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
{% load static from staticfiles %}
1+
{% load static %}
22
<html>
33
<head>
44
<title>{{ book.full_title }}</title>

urls.py

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,46 @@
1-
from django.conf.urls import url
1+
from django.urls import re_path
22

33
from plugins.books import views
44

55
urlpatterns = [
6-
url(r'^$', views.index, name='books_index'),
7-
url(r'^category/(?P<category_slug>[-\w.]+)/$', views.index, name='books_index_category'),
8-
url(r'^(?P<book_id>\d+)/$', views.view_book, name='books_book'),
9-
url(r'^(?P<book_id>\d+)/format/(?P<format_id>\d+)/$', views.download_format, name='books_download_format'),
10-
url(r'^(?P<book_id>\d+)/format/(?P<format_id>\d+)/mark_download/(?P<mark_download>no|yes)/$', views.download_format, name='books_download_format'),
11-
url(r'^(?P<book_id>\d+)/format/(?P<format_id>\d+)/read/$', views.read_epub, name='books_read_epub'),
12-
url(r'^(?P<book_id>\d+)/chapter/(?P<chapter_id>\d+)$',
6+
re_path(r'^$', views.index, name='books_index'),
7+
re_path(r'^category/(?P<category_slug>[-\w.]+)/$', views.index, name='books_index_category'),
8+
re_path(r'^(?P<book_id>\d+)/$', views.view_book, name='books_book'),
9+
re_path(r'^(?P<book_id>\d+)/format/(?P<format_id>\d+)/$', views.download_format, name='books_download_format'),
10+
re_path(r'^(?P<book_id>\d+)/format/(?P<format_id>\d+)/mark_download/(?P<mark_download>no|yes)/$', views.download_format, name='books_download_format'),
11+
re_path(r'^(?P<book_id>\d+)/format/(?P<format_id>\d+)/read/$', views.read_epub, name='books_read_epub'),
12+
re_path(r'^(?P<book_id>\d+)/chapter/(?P<chapter_id>\d+)$',
1313
views.view_chapter,
1414
name='book_view_chapter'),
15-
url(r'^(?P<book_id>\d+)/format/(?P<chapter_id>\d+)/download/$',
15+
re_path(r'^(?P<book_id>\d+)/format/(?P<chapter_id>\d+)/download/$',
1616
views.download_chapter,
1717
name='books_download_chapter'),
1818

19-
url(r'^admin/$', views.admin, name='books_admin'),
20-
url(r'^admin/categories/$', views.categories, name='books_categories'),
21-
url(r'^admin/categories/(?P<category_id>\d+)$', views.categories, name='books_edit_category'),
22-
url(r'^admin/new/$', views.edit_book, name='books_new_book'),
23-
url(r'^admin/edit/(?P<book_id>\d+)/$', views.edit_book, name='books_edit_book'),
24-
url(r'^admin/edit/(?P<book_id>\d+)/contributor/$', views.edit_contributor, name='books_new_contributor'),
25-
url(r'^admin/edit/(?P<book_id>\d+)/contributor/(?P<contributor_id>\d+)$', views.edit_contributor,
19+
re_path(r'^admin/$', views.admin, name='books_admin'),
20+
re_path(r'^admin/categories/$', views.categories, name='books_categories'),
21+
re_path(r'^admin/categories/(?P<category_id>\d+)$', views.categories, name='books_edit_category'),
22+
re_path(r'^admin/new/$', views.edit_book, name='books_new_book'),
23+
re_path(r'^admin/edit/(?P<book_id>\d+)/$', views.edit_book, name='books_edit_book'),
24+
re_path(r'^admin/edit/(?P<book_id>\d+)/contributor/$', views.edit_contributor, name='books_new_contributor'),
25+
re_path(r'^admin/edit/(?P<book_id>\d+)/contributor/(?P<contributor_id>\d+)$', views.edit_contributor,
2626
name='books_edit_contributor'),
27-
url(r'^admin/edit/(?P<book_id>\d+)/format/$', views.edit_format, name='books_new_format'),
28-
url(r'^admin/edit/(?P<book_id>\d+)/format/(?P<format_id>\d+)/$', views.edit_format, name='books_edit_format'),
27+
re_path(r'^admin/edit/(?P<book_id>\d+)/format/$', views.edit_format, name='books_new_format'),
28+
re_path(r'^admin/edit/(?P<book_id>\d+)/format/(?P<format_id>\d+)/$', views.edit_format, name='books_edit_format'),
2929

30-
url(r'^admin/edit/(?P<book_id>\d+)/chapter/new/$',
30+
re_path(r'^admin/edit/(?P<book_id>\d+)/chapter/new/$',
3131
views.books_chapter,
3232
name='books_new_chapter'),
33-
url(r'^admin/edit/(?P<book_id>\d+)/chapter/edit/(?P<chapter_id>\d+)/$',
33+
re_path(r'^admin/edit/(?P<book_id>\d+)/chapter/edit/(?P<chapter_id>\d+)/$',
3434
views.books_chapter,
3535
name='books_edit_chapter'),
3636

37-
url(r'^admin/import/$', views.import_books_upload, name='books_import_books_upload'),
38-
url(r'^admin/import/(?P<uuid>.+)/process/$', views.import_books_process, name='books_import_process'),
39-
url(r'^admin/import/(?P<uuid>.+)/$', views.import_books_preview, name='books_import_preview'),
37+
re_path(r'^admin/import/$', views.import_books_upload, name='books_import_books_upload'),
38+
re_path(r'^admin/import/(?P<uuid>.+)/process/$', views.import_books_process, name='books_import_process'),
39+
re_path(r'^admin/import/(?P<uuid>.+)/$', views.import_books_preview, name='books_import_preview'),
4040

41-
url(r'^admin/metrics/$', views.book_metrics, name='books_metrics'),
42-
url(r'^admin/metrics/by_month/$', views.book_metrics_by_month, name='books_metrics_by_month'),
41+
re_path(r'^admin/metrics/$', views.book_metrics, name='books_metrics'),
42+
re_path(r'^admin/metrics/by_month/$', views.book_metrics_by_month, name='books_metrics_by_month'),
4343

44-
url(r'^onix/export/$', views.export_onix_xml, name='books_export_onix_xml'),
45-
url(r'^onix/export/(?P<book_id>\d+)/$', views.export_onix_xml, name='books_export_onix_xml_book'),
44+
re_path(r'^onix/export/$', views.export_onix_xml, name='books_export_onix_xml'),
45+
re_path(r'^onix/export/(?P<book_id>\d+)/$', views.export_onix_xml, name='books_export_onix_xml_book'),
4646
]

0 commit comments

Comments
 (0)