Don't create a new "done" release on rename. fix #3250
This commit is contained in:
@@ -32,7 +32,7 @@ class Manage(Plugin):
|
|||||||
# Add files after renaming
|
# Add files after renaming
|
||||||
def after_rename(message = None, group = None):
|
def after_rename(message = None, group = None):
|
||||||
if not group: group = {}
|
if not group: group = {}
|
||||||
return self.scanFilesToLibrary(folder = group['destination_dir'], files = group['renamed_files'])
|
return self.scanFilesToLibrary(folder = group['destination_dir'], files = group['renamed_files'], release_download = group['release_download'])
|
||||||
addEvent('renamer.after', after_rename, priority = 110)
|
addEvent('renamer.after', after_rename, priority = 110)
|
||||||
|
|
||||||
addApiView('manage.update', self.updateLibraryView, docs = {
|
addApiView('manage.update', self.updateLibraryView, docs = {
|
||||||
@@ -254,7 +254,7 @@ class Manage(Plugin):
|
|||||||
|
|
||||||
return []
|
return []
|
||||||
|
|
||||||
def scanFilesToLibrary(self, folder = None, files = None):
|
def scanFilesToLibrary(self, folder = None, files = None, release_download = None):
|
||||||
|
|
||||||
folder = os.path.normpath(folder)
|
folder = os.path.normpath(folder)
|
||||||
|
|
||||||
@@ -263,7 +263,10 @@ class Manage(Plugin):
|
|||||||
if groups:
|
if groups:
|
||||||
for group in groups.values():
|
for group in groups.values():
|
||||||
if group.get('media'):
|
if group.get('media'):
|
||||||
fireEvent('release.add', group = group)
|
if release_download and release_download.get('release_id'):
|
||||||
|
fireEvent('release.add', group = group, update_id = release_download.get('release_id'))
|
||||||
|
else:
|
||||||
|
fireEvent('release.add', group = group)
|
||||||
|
|
||||||
def getDiskSpace(self):
|
def getDiskSpace(self):
|
||||||
|
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ class Release(Plugin):
|
|||||||
elif rel['status'] in ['snatched', 'downloaded']:
|
elif rel['status'] in ['snatched', 'downloaded']:
|
||||||
self.updateStatus(rel['_id'], status = 'ignore')
|
self.updateStatus(rel['_id'], status = 'ignore')
|
||||||
|
|
||||||
def add(self, group, update_info = True):
|
def add(self, group, update_info = True, update_id = None):
|
||||||
|
|
||||||
try:
|
try:
|
||||||
db = get_db()
|
db = get_db()
|
||||||
@@ -120,27 +120,43 @@ class Release(Plugin):
|
|||||||
'profile_id': None,
|
'profile_id': None,
|
||||||
}, search_after = False, update_after = update_info, notify_after = False, status = 'done', single = True)
|
}, search_after = False, update_after = update_info, notify_after = False, status = 'done', single = True)
|
||||||
|
|
||||||
# Add Release
|
release = None
|
||||||
release = {
|
if update_id:
|
||||||
'_t': 'release',
|
try:
|
||||||
'media_id': media['_id'],
|
release = db.get('id', update_id)
|
||||||
'identifier': release_identifier,
|
release.update({
|
||||||
'quality': group['meta_data']['quality'].get('identifier'),
|
'identifier': release_identifier,
|
||||||
'is_3d': group['meta_data']['quality'].get('is_3d', 0),
|
'last_edit': int(time.time()),
|
||||||
'last_edit': int(time.time()),
|
'status': 'done',
|
||||||
'status': 'done'
|
})
|
||||||
}
|
except:
|
||||||
try:
|
log.error('Failed updating existing release: %s', traceback.format_exc())
|
||||||
r = db.get('release_identifier', release_identifier, with_doc = True)['doc']
|
else:
|
||||||
r['media_id'] = media['_id']
|
|
||||||
except:
|
|
||||||
r = db.insert(release)
|
|
||||||
|
|
||||||
# Update with ref and _id
|
# Add Release
|
||||||
release.update({
|
if not release:
|
||||||
'_id': r['_id'],
|
release = {
|
||||||
'_rev': r['_rev'],
|
'_t': 'release',
|
||||||
})
|
'media_id': media['_id'],
|
||||||
|
'identifier': release_identifier,
|
||||||
|
'quality': group['meta_data']['quality'].get('identifier'),
|
||||||
|
'is_3d': group['meta_data']['quality'].get('is_3d', 0),
|
||||||
|
'last_edit': int(time.time()),
|
||||||
|
'status': 'done'
|
||||||
|
}
|
||||||
|
|
||||||
|
try:
|
||||||
|
r = db.get('release_identifier', release_identifier, with_doc = True)['doc']
|
||||||
|
r['media_id'] = media['_id']
|
||||||
|
except:
|
||||||
|
log.error('Failed updating release by identifier: %s', traceback.format_exc())
|
||||||
|
r = db.insert(release)
|
||||||
|
|
||||||
|
# Update with ref and _id
|
||||||
|
release.update({
|
||||||
|
'_id': r['_id'],
|
||||||
|
'_rev': r['_rev'],
|
||||||
|
})
|
||||||
|
|
||||||
# Empty out empty file groups
|
# Empty out empty file groups
|
||||||
release['files'] = dict((k, [toUnicode(x) for x in v]) for k, v in group['files'].items() if v)
|
release['files'] = dict((k, [toUnicode(x) for x in v]) for k, v in group['files'].items() if v)
|
||||||
|
|||||||
@@ -227,6 +227,7 @@ class Renamer(Plugin):
|
|||||||
for group_identifier in groups:
|
for group_identifier in groups:
|
||||||
|
|
||||||
group = groups[group_identifier]
|
group = groups[group_identifier]
|
||||||
|
group['release_download'] = None
|
||||||
rename_files = {}
|
rename_files = {}
|
||||||
remove_files = []
|
remove_files = []
|
||||||
remove_releases = []
|
remove_releases = []
|
||||||
@@ -504,13 +505,15 @@ class Renamer(Plugin):
|
|||||||
if release_download['status'] == 'completed':
|
if release_download['status'] == 'completed':
|
||||||
# Set the release to downloaded
|
# Set the release to downloaded
|
||||||
fireEvent('release.update_status', release['_id'], status = 'downloaded', single = True)
|
fireEvent('release.update_status', release['_id'], status = 'downloaded', single = True)
|
||||||
|
group['release_download'] = release_download
|
||||||
elif release_download['status'] == 'seeding':
|
elif release_download['status'] == 'seeding':
|
||||||
# Set the release to seeding
|
# Set the release to seeding
|
||||||
fireEvent('release.update_status', release['_id'], status = 'seeding', single = True)
|
fireEvent('release.update_status', release['_id'], status = 'seeding', single = True)
|
||||||
|
|
||||||
elif release.get('identifier') == group['meta_data']['quality']['identifier']:
|
elif release.get('identifier') == group['meta_data']['quality']['identifier']:
|
||||||
# Set the release to downloaded
|
# Set the release to downloaded
|
||||||
fireEvent('release.update_status', release['_id'], status = 'downloaded', single = True)
|
fireEvent('release.update_status', release['_id'], status = 'downloaded', single = True)
|
||||||
|
group['release_download'] = release_download
|
||||||
|
|
||||||
# Remove leftover files
|
# Remove leftover files
|
||||||
if not remove_leftovers: # Don't remove anything
|
if not remove_leftovers: # Don't remove anything
|
||||||
|
|||||||
Reference in New Issue
Block a user