mirror of
https://github.com/ajurna/cbwebreader.git
synced 2025-12-06 06:17:17 +00:00
added atomic commiting to processing comic books to increase performance.
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
from django.db import models
|
from django.db import models
|
||||||
|
from django.db.transaction import atomic
|
||||||
from django.utils.http import urlsafe_base64_encode, urlsafe_base64_decode
|
from django.utils.http import urlsafe_base64_encode, urlsafe_base64_decode
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
|
|
||||||
@@ -18,6 +19,7 @@ class Setting(models.Model):
|
|||||||
def __unicode__(self):
|
def __unicode__(self):
|
||||||
return self.__str__()
|
return self.__str__()
|
||||||
|
|
||||||
|
|
||||||
class ComicBook(models.Model):
|
class ComicBook(models.Model):
|
||||||
file_name = models.CharField(max_length=100, unique=True)
|
file_name = models.CharField(max_length=100, unique=True)
|
||||||
|
|
||||||
@@ -129,45 +131,45 @@ class ComicBook(models.Model):
|
|||||||
cbx = zipfile.ZipFile(path.join(base_dir, comic_path))
|
cbx = zipfile.ZipFile(path.join(base_dir, comic_path))
|
||||||
except zipfile.BadZipfile:
|
except zipfile.BadZipfile:
|
||||||
return False
|
return False
|
||||||
|
with atomic():
|
||||||
|
book = ComicBook(file_name=comic_file_name)
|
||||||
|
book.save()
|
||||||
|
i = 0
|
||||||
|
for f in sorted([str(x) for x in cbx.namelist()], key=str.lower):
|
||||||
|
try:
|
||||||
|
dot_index = f.rindex('.') + 1
|
||||||
|
except ValueError:
|
||||||
|
continue
|
||||||
|
ext = f.lower()[dot_index:]
|
||||||
|
if ext in ['jpg', 'jpeg']:
|
||||||
|
page = ComicPage(Comic=book,
|
||||||
|
index=i,
|
||||||
|
page_file_name=f,
|
||||||
|
content_type='image/jpeg')
|
||||||
|
page.save()
|
||||||
|
|
||||||
book = ComicBook(file_name=comic_file_name)
|
i += 1
|
||||||
book.save()
|
elif ext == 'png':
|
||||||
i = 0
|
page = ComicPage(Comic=book,
|
||||||
for f in sorted([str(x) for x in cbx.namelist()], key=str.lower):
|
index=i,
|
||||||
try:
|
page_file_name=f,
|
||||||
dot_index = f.rindex('.') + 1
|
content_type='image/png')
|
||||||
except ValueError:
|
page.save()
|
||||||
continue
|
i += 1
|
||||||
ext = f.lower()[dot_index:]
|
elif ext == 'bmp':
|
||||||
if ext in ['jpg', 'jpeg']:
|
page = ComicPage(Comic=book,
|
||||||
page = ComicPage(Comic=book,
|
index=i,
|
||||||
index=i,
|
page_file_name=f,
|
||||||
page_file_name=f,
|
content_type='image/bmp')
|
||||||
content_type='image/jpeg')
|
page.save()
|
||||||
page.save()
|
i += 1
|
||||||
|
elif ext == 'gif':
|
||||||
i += 1
|
page = ComicPage(Comic=book,
|
||||||
elif ext == 'png':
|
index=i,
|
||||||
page = ComicPage(Comic=book,
|
page_file_name=f,
|
||||||
index=i,
|
content_type='image/gif')
|
||||||
page_file_name=f,
|
page.save()
|
||||||
content_type='image/png')
|
i += 1
|
||||||
page.save()
|
|
||||||
i += 1
|
|
||||||
elif ext == 'bmp':
|
|
||||||
page = ComicPage(Comic=book,
|
|
||||||
index=i,
|
|
||||||
page_file_name=f,
|
|
||||||
content_type='image/bmp')
|
|
||||||
page.save()
|
|
||||||
i += 1
|
|
||||||
elif ext == 'gif':
|
|
||||||
page = ComicPage(Comic=book,
|
|
||||||
index=i,
|
|
||||||
page_file_name=f,
|
|
||||||
content_type='image/gif')
|
|
||||||
page.save()
|
|
||||||
i += 1
|
|
||||||
return book
|
return book
|
||||||
|
|
||||||
class DirFile:
|
class DirFile:
|
||||||
|
|||||||
@@ -3,8 +3,6 @@ from django.template import RequestContext
|
|||||||
from django.utils.http import urlsafe_base64_decode
|
from django.utils.http import urlsafe_base64_decode
|
||||||
from django.shortcuts import render, redirect, get_object_or_404
|
from django.shortcuts import render, redirect, get_object_or_404
|
||||||
from django.contrib.auth.decorators import login_required, user_passes_test
|
from django.contrib.auth.decorators import login_required, user_passes_test
|
||||||
from django.core.validators import validate_email
|
|
||||||
from django.core.exceptions import ValidationError
|
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
|
|
||||||
from comic.models import Setting, ComicBook, ComicStatus
|
from comic.models import Setting, ComicBook, ComicStatus
|
||||||
@@ -215,4 +213,4 @@ def get_image(_, comic_path, page):
|
|||||||
|
|
||||||
|
|
||||||
def comic_redirect(_):
|
def comic_redirect(_):
|
||||||
return redirect('/comic/')
|
return redirect('/comic/')
|
||||||
|
|||||||
Reference in New Issue
Block a user