forked from 0x2620/pandora
index all instance paths too, add getPath
This commit is contained in:
parent
faf9865f87
commit
da9dd942b2
3 changed files with 42 additions and 11 deletions
|
@ -77,9 +77,9 @@ class File(models.Model):
|
||||||
def set_state(self):
|
def set_state(self):
|
||||||
self.path = self.create_path()
|
self.path = self.create_path()
|
||||||
|
|
||||||
if not os.path.splitext(self.path)[-1] in (
|
if not self.path.split('.')[-1] in (
|
||||||
'.srt', '.rar', '.sub', '.idx', '.txt', '.jpg', '.png', '.nfo') \
|
'srt', 'rar', 'sub', 'idx', 'txt', 'jpg', 'png', 'nfo'
|
||||||
and self.info:
|
) and self.info:
|
||||||
for key in ('duration', 'size'):
|
for key in ('duration', 'size'):
|
||||||
setattr(self, key, self.info.get(key, 0))
|
setattr(self, key, self.info.get(key, 0))
|
||||||
|
|
||||||
|
@ -126,9 +126,9 @@ class File(models.Model):
|
||||||
self.pixels = int(self.width * self.height * float(utils.parse_decimal(self.framerate)) * self.duration)
|
self.pixels = int(self.width * self.height * float(utils.parse_decimal(self.framerate)) * self.duration)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
self.is_video = os.path.splitext(self.path)[-1].lower() in ('.avi', '.mkv', '.dv', '.ogv', '.mpeg', '.mov', '.webm', '.mp4', '.mpg', '.wmv', '.mts', '.flv')
|
self.is_video = self.path.split('.')[-1].lower() in ox.movie.EXTENSIONS['video']
|
||||||
self.is_audio = os.path.splitext(self.path)[-1].lower() in ('.mp3', '.wav', '.ogg', '.flac', '.oga', '.wma')
|
self.is_audio = self.path.split('.')[-1].lower() in ox.movie.EXTENSIONS['audio']
|
||||||
self.is_subtitle = os.path.splitext(self.path)[-1].lower() in ('.srt', )
|
self.is_audio = self.path.split('.')[-1].lower() == 'srt'
|
||||||
|
|
||||||
if self.path.endswith('.srt'):
|
if self.path.endswith('.srt'):
|
||||||
self.is_subtitle = True
|
self.is_subtitle = True
|
||||||
|
@ -139,8 +139,8 @@ class File(models.Model):
|
||||||
|
|
||||||
self.type = self.get_type()
|
self.type = self.get_type()
|
||||||
if self.instances.count()>0:
|
if self.instances.count()>0:
|
||||||
info = ox.parse_movie_path(self.path)
|
info = ox.movie.parse_path(self.path)
|
||||||
self.language = info['language']
|
self.language = info['language'] or ''
|
||||||
self.part = self.get_part()
|
self.part = self.get_part()
|
||||||
|
|
||||||
if self.type not in ('audio', 'video'):
|
if self.type not in ('audio', 'video'):
|
||||||
|
@ -271,9 +271,12 @@ class File(models.Model):
|
||||||
def create_path(self):
|
def create_path(self):
|
||||||
instance = self.get_instance()
|
instance = self.get_instance()
|
||||||
if instance:
|
if instance:
|
||||||
return instance.path
|
return ox.movie.parse_path(instance.path)['path']
|
||||||
return self.path
|
return self.path
|
||||||
|
|
||||||
|
def all_paths(self):
|
||||||
|
return [self.path] + [i.path for i in self.instances.all()]
|
||||||
|
|
||||||
def delete_frames(self):
|
def delete_frames(self):
|
||||||
frames = os.path.join(settings.MEDIA_ROOT, self.get_path('frames'))
|
frames = os.path.join(settings.MEDIA_ROOT, self.get_path('frames'))
|
||||||
if os.path.exists(frames):
|
if os.path.exists(frames):
|
||||||
|
|
|
@ -429,6 +429,28 @@ def removeFiles(request):
|
||||||
return render_to_json_response(response)
|
return render_to_json_response(response)
|
||||||
actions.register(removeFiles, cache=False)
|
actions.register(removeFiles, cache=False)
|
||||||
|
|
||||||
|
def getPath(request):
|
||||||
|
'''
|
||||||
|
change file / item link
|
||||||
|
param data {
|
||||||
|
ids: [hash of file]
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
status: {'code': int, 'text': string},
|
||||||
|
data: {
|
||||||
|
path: {
|
||||||
|
id: path
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
'''
|
||||||
|
data = json.loads(request.POST['data'])
|
||||||
|
response = json_response({'path': {}})
|
||||||
|
for f in models.File.objects.filter(oshash__in=data['ids']):
|
||||||
|
response['data']['path'][f.oshash] = f.path
|
||||||
|
return render_to_json_response(response)
|
||||||
|
actions.register(getPath, cache=True)
|
||||||
|
|
||||||
def lookup_file(request, oshash):
|
def lookup_file(request, oshash):
|
||||||
oshash = oshash.replace('/', '')
|
oshash = oshash.replace('/', '')
|
||||||
|
|
|
@ -595,8 +595,7 @@ class Item(models.Model):
|
||||||
elif i == 'rightslevel':
|
elif i == 'rightslevel':
|
||||||
save(i, self.level)
|
save(i, self.level)
|
||||||
elif i == 'filename':
|
elif i == 'filename':
|
||||||
save(i,
|
save(i, '\n'.join(i.all_paths()))
|
||||||
'\n'.join([f.path for f in self.files.all()]))
|
|
||||||
elif i == 'user':
|
elif i == 'user':
|
||||||
if self.user:
|
if self.user:
|
||||||
save(i, self.user.username)
|
save(i, self.user.username)
|
||||||
|
@ -905,6 +904,13 @@ class Item(models.Model):
|
||||||
return os.path.join(settings.MEDIA_ROOT, videos[0].path(''))
|
return os.path.join(settings.MEDIA_ROOT, videos[0].path(''))
|
||||||
return os.path.join(settings.MEDIA_ROOT, self.path())
|
return os.path.join(settings.MEDIA_ROOT, self.path())
|
||||||
|
|
||||||
|
def all_paths(self):
|
||||||
|
return list(set([
|
||||||
|
item for sublist in
|
||||||
|
[f.all_paths() for f in self.files.all()]
|
||||||
|
for item in sublist
|
||||||
|
]))
|
||||||
|
|
||||||
def get_files(self, user):
|
def get_files(self, user):
|
||||||
files = self.files.all().select_related()
|
files = self.files.all().select_related()
|
||||||
if user.get_profile().get_level() != 'admin':
|
if user.get_profile().get_level() != 'admin':
|
||||||
|
|
Loading…
Reference in a new issue