This commit is contained in:
j 2011-04-18 20:50:31 +02:00
parent fbf7196d7a
commit 5744fdb53a
2 changed files with 26 additions and 7 deletions

View file

@ -9,6 +9,7 @@ import time
from django.db import models
from django.contrib.auth.models import User
from django.conf import settings
from django.db.models.signals import pre_delete
from ox.django import fields
import ox
@ -334,6 +335,14 @@ class File(models.Model):
ext = '.unknown'
return name + ext
def delete_file(sender, **kwargs):
f = kwargs['instance']
if f.video:
f.video.delete()
if f.data:
f.data.delete()
pre_delete.connect(delete_file, sender=File)
class Volume(models.Model):
class Meta:
@ -348,7 +357,6 @@ class Volume(models.Model):
def __unicode__(self):
return u"%s's %s"% (self.user, self.name)
class Instance(models.Model):
class Meta:
@ -408,3 +416,9 @@ class Frame(models.Model):
def __unicode__(self):
return u'%s/%s' % (self.file, self.position)
def delete_frame(sender, **kwargs):
f = kwargs['instance']
if f.frame:
f.frame.delete()
pre_delete.connect(delete_frame, sender=Frame)

View file

@ -6,6 +6,7 @@ from datetime import datetime
import os.path
import subprocess
from glob import glob
import shutil
import uuid
import unicodedata
@ -15,6 +16,7 @@ from django.core.files.base import ContentFile
from django.utils import simplejson as json
from django.conf import settings
from django.contrib.auth.models import User, Group
from django.db.models.signals import pre_delete
import ox
from ox.django import fields
@ -238,12 +240,11 @@ class Item(models.Model):
if update_poster:
tasks.update_poster.delay(self.itemId)
def delete_files(self):
shutil.rmtree(self.path(''))
def delete(self, *args, **kwargs):
self.delete_poster()
for f in glob("%s*"%self.timeline_prefix):
os.unlink(f)
for f in glob("%sstrip*"%self.timeline_prefix[:-8]):
os.unlink(f)
self.delete_files()
super(Item, self).delete(*args, **kwargs)
def merge_with(self, other):
@ -594,7 +595,7 @@ class Item(models.Model):
def main_videos(self):
#FIXME: needs to check if more than one user has main files and only
# take from "higher" user
videos = self.files.filter(is_main=True, is_video=True, available=True)
videos = self.files.filter(is_main=True, is_video=True, available=True).order_by('part')
if videos.count()>0:
first = videos[0]
user = first.instances.all()[0].volume.user
@ -807,6 +808,10 @@ class Item(models.Model):
return icon
return None
def delete_item(sender, **kwargs):
i = kwargs['instance']
i.delete_files()
pre_delete.connect(delete_item, sender=Item)
config = site_config()