90 lines
2.9 KiB
Python
90 lines
2.9 KiB
Python
from django.shortcuts import render_to_response
|
|
from django.template import RequestContext
|
|
from django.utils.translation import ugettext as _
|
|
from django.contrib import messages
|
|
from django.http import HttpResponseForbidden, HttpResponseRedirect
|
|
from django.views.decorators.csrf import csrf_exempt
|
|
from filer.models import Image
|
|
from shelfzilla.views import View
|
|
from shelfzilla.apps.manga.models import Volume, Series
|
|
|
|
|
|
class VolumeChangeSeriesView(View):
|
|
template = '_admin/volumes/change_series.html'
|
|
|
|
def dispatch(self, request, *args, **kwargs):
|
|
if not request.user.is_staff:
|
|
return HttpResponseForbidden()
|
|
else:
|
|
return super(VolumeChangeSeriesView, self).dispatch(
|
|
request, *args, **kwargs)
|
|
|
|
def get(self, request):
|
|
volumes = Volume.objects.filter(
|
|
pk__in=request.GET['volumes'].split(','))
|
|
|
|
data = {
|
|
'volumes': volumes,
|
|
'series': Series.objects.all,
|
|
}
|
|
|
|
ctx = RequestContext(request, data)
|
|
return render_to_response(self.template, context_instance=ctx)
|
|
|
|
def post(self, request):
|
|
volumes = Volume.objects.filter(
|
|
pk__in=request.GET['volumes'].split(','))
|
|
|
|
series = Series.objects.get(pk=int(request.POST['series_pk']))
|
|
|
|
for vol in volumes:
|
|
vol.series = series
|
|
vol.save()
|
|
|
|
messages.success(request, _('Volume series changed'))
|
|
|
|
return HttpResponseRedirect('/admin/manga/volume/')
|
|
|
|
|
|
class VolumeChangeCoverView(View):
|
|
@csrf_exempt
|
|
def dispatch(self, request, *args, **kwargs):
|
|
if not request.user.is_staff:
|
|
return HttpResponseForbidden()
|
|
else:
|
|
return super(VolumeChangeCoverView, self).dispatch(
|
|
request, *args, **kwargs)
|
|
|
|
def post(self, request, volume_pk):
|
|
try:
|
|
volume = Volume.objects.get(pk=volume_pk)
|
|
if 'cover_url' in request.POST:
|
|
cover_url = request.POST['cover_url']
|
|
|
|
from django.core.files.temp import NamedTemporaryFile
|
|
from django.core.files import File
|
|
import urllib2
|
|
|
|
|
|
cover_temp = NamedTemporaryFile(delete=True)
|
|
cover_temp.write(urllib2.urlopen(cover_url).read())
|
|
cover_temp.flush()
|
|
|
|
new_cover, is_new = Image.objects.get_or_create(file=File(cover_temp))
|
|
# new_cover._move_file()
|
|
|
|
if volume.cover:
|
|
volume.cover.delete()
|
|
volume.cover = new_cover
|
|
volume.save()
|
|
|
|
messages.success(request, _('Volume series changed'))
|
|
else:
|
|
messages.error(request, _('Cover url to update not found.'))
|
|
except Volume.DoesNotExist:
|
|
messages.error(request, _('Volume not found.'))
|
|
|
|
return HttpResponseRedirect(
|
|
'/admin/manga/volume/{}/'.format(volume_pk))
|
|
|