fmartingr
/
shelfzilla
Archived
1
0
Fork 0
This repository has been archived on 2021-06-29. You can view files and clone it, but cannot push or open issues or pull requests.
shelfzilla/shelfzilla/apps/_admin/views.py

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))