admin can now fix ebook/ebookfile problems

pull/46/head
eric 2017-12-22 12:42:29 -05:00
parent 44c2289c62
commit 2f649ef9a2
2 changed files with 55 additions and 9 deletions

View File

@ -21,7 +21,8 @@ from regluit.core.lookups import (
PublisherNameLookup,
WorkLookup,
OwnerLookup,
EditionLookup
EditionLookup,
EbookLookup,
)
@ -165,21 +166,51 @@ class PublisherNameAdmin(ModelAdmin):
class RelationAdmin(ModelAdmin):
list_display = ('code', 'name')
search_fields = ['name']
class EbookAdminForm(forms.ModelForm):
edition = AutoCompleteSelectField(
lookup_class=EditionLookup,
label='Edition',
widget=AutoCompleteSelectWidget(lookup_class=EditionLookup, attrs={'size':60}),
required=True,
)
class Meta(object):
model = models.Ebook
exclude = ('user', 'filesize', 'download_count')
class EbookAdmin(ModelAdmin):
form = EbookAdminForm
search_fields = ('edition__title','^url') # search by provider using leading url
list_display = ('__unicode__','created', 'user','edition')
list_display = ('__unicode__','created', 'user', 'edition')
date_hierarchy = 'created'
ordering = ('edition__title',)
exclude = ('edition','user', 'filesize')
readonly_fields = ('user', 'filesize', 'download_count')
class EbookFileAdminForm(forms.ModelForm):
edition = AutoCompleteSelectField(
lookup_class=EditionLookup,
label='Edition',
widget=AutoCompleteSelectWidget(lookup_class=EditionLookup, attrs={'size':60}),
required=True,
)
ebook = AutoCompleteSelectField(
lookup_class=EbookLookup,
label='Ebook',
widget=AutoCompleteSelectWidget(lookup_class=EbookLookup, attrs={'size':60}),
required=False,
)
class Meta(object):
model = models.EbookFile
fields = ('file', 'format', 'edition', 'ebook', 'source')
class EbookFileAdmin(ModelAdmin):
form = EbookFileAdminForm
search_fields = ('ebook__edition__title', 'source') # search by provider using leading url
list_display = ('created', 'format', 'ebook_link', 'asking')
date_hierarchy = 'created'
ordering = ('edition__work',)
fields = ('file', 'format', 'edition_link', 'ebook_link', 'source')
readonly_fields = ('file', 'edition_link', 'ebook_link', 'ebook')
fields = ('file', 'format', 'edition', 'edition_link', 'ebook', 'ebook_link', 'source')
readonly_fields = ('file', 'edition_link', 'ebook_link', )
def edition_link(self, obj):
if obj.edition:
link = reverse("admin:core_edition_change", args=[obj.edition_id])
@ -251,7 +282,7 @@ class IdentifierAdminForm(forms.ModelForm):
lookup_class=EditionLookup,
label='Edition',
widget=AutoCompleteSelectWidget(lookup_class=EditionLookup, attrs={'size':60}),
required=True,
required=False,
)
class Meta(object):
model = models.Identifier

View File

@ -3,7 +3,7 @@ from selectable.registry import registry
from django.contrib.auth.models import User
from django.db.models import Count
from regluit.core.models import Work, PublisherName, Edition, Subject, EditionNote
from regluit.core.models import Work, PublisherName, Edition, Subject, EditionNote, Ebook
from regluit.utils.text import sanitize_line
class OwnerLookup(ModelLookup):
@ -32,6 +32,20 @@ class PublisherNameLookup(ModelLookup):
publisher_name.save()
return publisher_name
class EbookLookup(ModelLookup):
model = Ebook
search_fields = ('edition__title__icontains',)
filters = {'edition__isnull': False, }
def get_item(self, value):
item = None
if value:
try:
item = Ebook.objects.get(pk=value)
except (ValueError, Ebook.DoesNotExist):
item = None
return item
class EditionLookup(ModelLookup):
model = Edition
search_fields = ('title__icontains',)
@ -69,4 +83,5 @@ registry.register(WorkLookup)
registry.register(PublisherNameLookup)
registry.register(EditionLookup)
registry.register(SubjectLookup)
registry.register(EditionNoteLookup)
registry.register(EditionNoteLookup)
registry.register(EbookLookup)