fnp
/
wolnelektury.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add basic login.
[wolnelektury.git]
/
src
/
catalogue
/
models
/
book.py
diff --git
a/src/catalogue/models/book.py
b/src/catalogue/models/book.py
index
411476a
..
29e3754
100644
(file)
--- a/
src/catalogue/models/book.py
+++ b/
src/catalogue/models/book.py
@@
-91,6
+91,7
@@
class Book(models.Model):
tagged = managers.ModelTaggedItemManager(Tag)
tags = managers.TagDescriptor(Tag)
tag_relations = GenericRelation(Tag.intermediary_table_model)
tagged = managers.ModelTaggedItemManager(Tag)
tags = managers.TagDescriptor(Tag)
tag_relations = GenericRelation(Tag.intermediary_table_model)
+ translators = models.ManyToManyField(Tag, blank=True)
html_built = django.dispatch.Signal()
published = django.dispatch.Signal()
html_built = django.dispatch.Signal()
published = django.dispatch.Signal()
@@
-154,12
+155,6
@@
class Book(models.Model):
def genre_unicode(self):
return self.tag_unicode('genre')
def genre_unicode(self):
return self.tag_unicode('genre')
- def translators(self):
- translators = self.get_extra_info_json().get('translators') or []
- return [
- '\xa0'.join(reversed(translator.split(', ', 1))) for translator in translators
- ]
-
def translator(self):
translators = self.get_extra_info_json().get('translators')
if not translators:
def translator(self):
translators = self.get_extra_info_json().get('translators')
if not translators:
@@
-331,6
+326,9
@@
class Book(models.Model):
total += app_settings.GET_MP3_LENGTH(media.file.path)
return int(total)
total += app_settings.GET_MP3_LENGTH(media.file.path)
return int(total)
+ def get_time(self):
+ return round(self.xml_file.size / 1000 * 40)
+
def has_media(self, type_):
if type_ in Book.formats:
return bool(getattr(self, "%s_file" % type_))
def has_media(self, type_):
if type_ in Book.formats:
return bool(getattr(self, "%s_file" % type_))
@@
-416,7
+414,7
@@
class Book(models.Model):
has_daisy_file.boolean = True
def has_sync_file(self):
has_daisy_file.boolean = True
def has_sync_file(self):
- return self.has_media("sync")
+ return se
ttings.FEATURE_SYNCHRO and se
lf.has_media("sync")
def get_sync(self):
with self.get_media('sync').first().file.open('r') as f:
def get_sync(self):
with self.get_media('sync').first().file.open('r') as f:
@@
-594,7
+592,7
@@
class Book(models.Model):
@classmethod
def from_text_and_meta(cls, raw_file, book_info, overwrite=False, dont_build=None, search_index=True,
@classmethod
def from_text_and_meta(cls, raw_file, book_info, overwrite=False, dont_build=None, search_index=True,
- remote_gallery_url=None, days=0, findable=True):
+ remote_gallery_url=None, days=0, findable=True
, logo=None, logo_mono=None, logo_alt=None
):
from catalogue import tasks
if dont_build is None:
from catalogue import tasks
if dont_build is None:
@@
-641,21
+639,26
@@
class Book(models.Model):
book.common_slug = book_info.variant_of.slug
else:
book.common_slug = book.slug
book.common_slug = book_info.variant_of.slug
else:
book.common_slug = book.slug
- book.extra_info = json.dumps(book_info.to_dict())
+ extra = book_info.to_dict()
+ if logo:
+ extra['logo'] = logo
+ if logo_mono:
+ extra['logo_mono'] = logo_mono
+ if logo_alt:
+ extra['logo_alt'] = logo_alt
+ book.extra_info = json.dumps(extra)
book.load_abstract()
book.load_toc()
book.save()
meta_tags = Tag.tags_from_info(book_info)
book.load_abstract()
book.load_toc()
book.save()
meta_tags = Tag.tags_from_info(book_info)
- for tag in meta_tags:
- if not tag.for_books:
- tag.for_books = True
- tag.save()
-
- book.tags = set(meta_tags + book_shelves)
+ just_tags = [t for (t, rel) in meta_tags if not rel]
+ book.tags = set(just_tags + book_shelves)
book.save() # update sort_key_author
book.save() # update sort_key_author
+ book.translators.set([t for (t, rel) in meta_tags if rel == 'translator'])
+
cover_changed = old_cover != book.cover_info()
obsolete_children = set(b for b in book.children.all()
if b not in children)
cover_changed = old_cover != book.cover_info()
obsolete_children = set(b for b in book.children.all()
if b not in children)
@@
-729,8
+732,12
@@
class Book(models.Model):
else:
entity, entity_created = Entity.objects.get_or_create(uri=uri)
if entity_created:
else:
entity, entity_created = Entity.objects.get_or_create(uri=uri)
if entity_created:
- entity.populate()
- entity.save()
+ try:
+ entity.populate()
+ except:
+ pass
+ else:
+ entity.save()
ref, ref_created = entity.reference_set.get_or_create(book=self)
refs[uri] = ref
if not ref_created:
ref, ref_created = entity.reference_set.get_or_create(book=self)
refs[uri] = ref
if not ref_created: