Don't create a new "done" release on rename. fix #3250

This commit is contained in:
Ruud
2014-06-11 23:17:59 +02:00
parent c0297f10cb
commit 83e8ae392d
3 changed files with 48 additions and 26 deletions
+6 -3
View File
@@ -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):
+37 -21
View File
@@ -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)
+5 -2
View File
@@ -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