diff --git a/pandora/archive/models.py b/pandora/archive/models.py index 323bd12b..b0fcf543 100644 --- a/pandora/archive/models.py +++ b/pandora/archive/models.py @@ -23,6 +23,9 @@ from person.models import get_name_sort from chunk import save_chunk import extract +def get_path(f, x): return f.path(x) +def get_data_path(f, x): return get_path(f, 'data.bin') + class File(models.Model): AV_INFO = ( 'duration', 'video', 'audio', 'oshash', 'size', @@ -89,7 +92,7 @@ class File(models.Model): #upload and data handling data = models.FileField(null=True, blank=True, - upload_to=lambda f, x: f.get_path('data.bin')) + upload_to=get_data_path) def __unicode__(self): return self.path @@ -565,6 +568,9 @@ class Volume(models.Model): 'items': self.files.count() } +def inttime(): + return int(time.time()) + class Instance(models.Model): class Meta: @@ -573,9 +579,9 @@ class Instance(models.Model): created = models.DateTimeField(auto_now_add=True) modified = models.DateTimeField(auto_now=True) - atime = models.IntegerField(default=lambda: int(time.time()), editable=False) - ctime = models.IntegerField(default=lambda: int(time.time()), editable=False) - mtime = models.IntegerField(default=lambda: int(time.time()), editable=False) + atime = models.IntegerField(default=inttime, editable=False) + ctime = models.IntegerField(default=inttime, editable=False) + mtime = models.IntegerField(default=inttime, editable=False) path = models.CharField(max_length=2048) ignore = models.BooleanField(default=False) @@ -641,7 +647,7 @@ class Stream(models.Model): resolution = models.IntegerField(default=96) format = models.CharField(max_length=255, default='webm') - media = models.FileField(default=None, blank=True, upload_to=lambda f, x: f.path(x)) + media = models.FileField(default=None, blank=True, upload_to=get_path) source = models.ForeignKey('Stream', related_name='derivatives', default=None, null=True) available = models.BooleanField(default=False) oshash = models.CharField(max_length=16, null=True, db_index=True) diff --git a/pandora/document/models.py b/pandora/document/models.py index a3d4d7ef..f92cb237 100644 --- a/pandora/document/models.py +++ b/pandora/document/models.py @@ -21,6 +21,7 @@ from archive.chunk import save_chunk import managers import utils +def get_path(f, x): return f.path(x) class Document(models.Model): @@ -42,7 +43,7 @@ class Document(models.Model): description = models.TextField(default="") oshash = models.CharField(max_length=16, unique=True, null=True) - file = models.FileField(default=None, blank=True,null=True, upload_to=lambda f, x: f.path(x)) + file = models.FileField(default=None, blank=True,null=True, upload_to=get_path) objects = managers.DocumentManager() uploading = models.BooleanField(default = False) diff --git a/pandora/edit/models.py b/pandora/edit/models.py index 263673a2..f67068bc 100644 --- a/pandora/edit/models.py +++ b/pandora/edit/models.py @@ -26,6 +26,9 @@ from archive import extract import managers +def get_path(f, x): return f.path(x) +def get_icon_path(f, x): return get_path(f, 'icon.jpg') + class Edit(models.Model): class Meta: @@ -46,8 +49,7 @@ class Edit(models.Model): query = DictField(default={"static": True}) type = models.CharField(max_length=255, default='static') - icon = models.ImageField(default=None, blank=True, null=True, - upload_to=lambda i, x: i.path("icon.jpg")) + icon = models.ImageField(default=None, blank=True, null=True, upload_to=get_icon_path) poster_frames = TupleField(default=[], editable=False) subscribed_users = models.ManyToManyField(User, related_name='subscribed_edits') diff --git a/pandora/item/models.py b/pandora/item/models.py index 3821c256..11c1a7cd 100644 --- a/pandora/item/models.py +++ b/pandora/item/models.py @@ -144,6 +144,11 @@ def get_item(info, user=None, async=False): tasks.update_poster.delay(item.public_id) return item +def get_path(f, x): return f.path(x) +def get_icon_path(f, x): return get_path(f, 'icon.jpg') +def get_poster_path(f, x): return get_path(f, 'poster.jpg') +def get_torrent_path(f, x): return get_path(f, 'torrent.torrent') + class Item(models.Model): created = models.DateTimeField(auto_now_add=True) modified = models.DateTimeField(auto_now=True) @@ -161,18 +166,15 @@ class Item(models.Model): external_data = fields.DictField(default={}, editable=False) data = fields.DictField(default={}, editable=False) json = fields.DictField(default={}, editable=False) - poster = models.ImageField(default=None, blank=True, - upload_to=lambda i, x: i.path("poster.jpg")) + poster = models.ImageField(default=None, blank=True, upload_to=get_poster_path) poster_source = models.TextField(blank=True) poster_height = models.IntegerField(default=0) poster_width = models.IntegerField(default=0) poster_frame = models.FloatField(default=-1) - icon = models.ImageField(default=None, blank=True, - upload_to=lambda i, x: i.path("icon.jpg")) + icon = models.ImageField(default=None, blank=True, upload_to=get_icon_path) - torrent = models.FileField(default=None, blank=True, max_length=1000, - upload_to=lambda i, x: i.path('torrent.torrent')) + torrent = models.FileField(default=None, blank=True, max_length=1000, upload_to=get_torrent_path) stream_info = fields.DictField(default={}, editable=False) #stream related fields diff --git a/pandora/itemlist/models.py b/pandora/itemlist/models.py index 4b169c06..da66953d 100644 --- a/pandora/itemlist/models.py +++ b/pandora/itemlist/models.py @@ -17,6 +17,11 @@ from ox.django.fields import DictField, TupleField from archive import extract import managers +def get_path(f, x): return f.path(x) +def get_icon_path(f, x): return get_path(f, 'icon.jpg') +def get_listview(): return settings.CONFIG['user']['ui']['listView'] +def get_listsort(): return tuple(settings.CONFIG['user']['ui']['listSort']) + class List(models.Model): class Meta: @@ -32,11 +37,10 @@ class List(models.Model): type = models.CharField(max_length=255, default='static') description = models.TextField(default='') - icon = models.ImageField(default=None, blank=True, - upload_to=lambda i, x: i.path("icon.jpg")) + icon = models.ImageField(default=None, blank=True, upload_to=get_icon_path) - view = models.TextField(default=lambda: settings.CONFIG['user']['ui']['listView']) - sort = TupleField(default=lambda: tuple(settings.CONFIG['user']['ui']['listSort']), editable=False) + view = models.TextField(default=get_listview) + sort = TupleField(default=get_listsort, editable=False) poster_frames = TupleField(default=[], editable=False) diff --git a/pandora/text/models.py b/pandora/text/models.py index dd730f0c..d2107b52 100644 --- a/pandora/text/models.py +++ b/pandora/text/models.py @@ -21,6 +21,9 @@ from archive.chunk import save_chunk import managers +def get_path(i, x): return i.path(x) +def get_icon_path(i, x): return get_path(i, 'icon.jpg') + class Text(models.Model): class Meta: @@ -35,8 +38,7 @@ class Text(models.Model): type = models.CharField(max_length=255, default='html') description = models.TextField(default='') rightslevel = models.IntegerField(db_index=True, default=0) - icon = models.ImageField(default=None, blank=True, - upload_to=lambda i, x: i.path("icon.jpg")) + icon = models.ImageField(default=None, blank=True, upload_to=get_icon_path) text = models.TextField(default="") embeds = TupleField(default=[], editable=True) @@ -46,7 +48,7 @@ class Text(models.Model): objects = managers.TextManager() uploading = models.BooleanField(default = False) - file = models.FileField(default=None, blank=True,null=True, upload_to=lambda f, x: f.path(x)) + file = models.FileField(default=None, blank=True,null=True, upload_to=get_path) def save(self, *args, **kwargs): self.rightslevel = min(self.rightslevel, len(settings.CONFIG['textRightsLevels']) - 1)