Tag and untag dashboard media
This commit is contained in:
@@ -82,6 +82,8 @@ class MediaPlugin(MediaBase):
|
||||
addEvent('media.list', self.list)
|
||||
addEvent('media.delete', self.delete)
|
||||
addEvent('media.restatus', self.restatus)
|
||||
addEvent('media.tag', self.tag)
|
||||
addEvent('media.untag', self.unTag)
|
||||
|
||||
def refresh(self, id = '', **kwargs):
|
||||
handlers = []
|
||||
@@ -469,3 +471,41 @@ class MediaPlugin(MediaBase):
|
||||
return True
|
||||
except:
|
||||
log.error('Failed restatus: %s', traceback.format_exc())
|
||||
|
||||
def tag(self, media_id, tag):
|
||||
|
||||
try:
|
||||
db = get_db()
|
||||
m = db.get('id', media_id)
|
||||
|
||||
tags = m.get('tags') or []
|
||||
if tag not in tags:
|
||||
tags.append(tag)
|
||||
m['tags'] = tags
|
||||
db.update(m)
|
||||
|
||||
return True
|
||||
except:
|
||||
log.error('Failed tagging: %s', traceback.format_exc())
|
||||
|
||||
return False
|
||||
|
||||
def unTag(self, media_id, tag):
|
||||
|
||||
try:
|
||||
db = get_db()
|
||||
m = db.get('id', media_id)
|
||||
|
||||
tags = m.get('tags') or []
|
||||
if tag in tags:
|
||||
new_tags = list(set(tags))
|
||||
new_tags.remove(tag)
|
||||
|
||||
m['tags'] = new_tags
|
||||
db.update(m)
|
||||
|
||||
return True
|
||||
except:
|
||||
log.error('Failed untagging: %s', traceback.format_exc())
|
||||
|
||||
return False
|
||||
|
||||
@@ -149,6 +149,7 @@ class MovieBase(MovieTypeBase):
|
||||
m['profile_id'] = params.get('profile_id', default_profile.get('id'))
|
||||
m['category_id'] = cat_id if cat_id is not None and len(cat_id) > 0 else (m.get('category_id') or None)
|
||||
m['last_edit'] = int(time.time())
|
||||
m['tags'] = []
|
||||
|
||||
do_search = True
|
||||
db.update(m)
|
||||
|
||||
@@ -131,6 +131,7 @@ class MovieSearcher(SearcherBase, MovieTypeBase):
|
||||
outside_eta_results = 0
|
||||
alway_search = self.conf('always_search')
|
||||
ignore_eta = manual
|
||||
total_result_count = 0
|
||||
|
||||
default_title = getTitle(movie)
|
||||
if not default_title:
|
||||
@@ -199,6 +200,7 @@ class MovieSearcher(SearcherBase, MovieTypeBase):
|
||||
|
||||
results = fireEvent('searcher.search', search_protocols, movie, quality, single = True) or []
|
||||
results_count = len(results)
|
||||
total_result_count += results_count
|
||||
if results_count == 0:
|
||||
log.debug('Nothing found for %s in %s', (default_title, quality['label']))
|
||||
|
||||
@@ -235,6 +237,9 @@ class MovieSearcher(SearcherBase, MovieTypeBase):
|
||||
if self.shuttingDown() or ret:
|
||||
break
|
||||
|
||||
if total_result_count > 0:
|
||||
fireEvent('media.tag', movie['_id'], 'recent', single = True)
|
||||
|
||||
if len(too_early_to_search) > 0:
|
||||
log.info2('Too early to search for %s, %s', (too_early_to_search, default_title))
|
||||
|
||||
|
||||
@@ -104,6 +104,8 @@ class Release(Plugin):
|
||||
elif rel['status'] in ['snatched', 'downloaded']:
|
||||
self.updateStatus(rel['_id'], status = 'ignore')
|
||||
|
||||
fireEvent('media.untag', media.get('_id'), 'recent', single = True)
|
||||
|
||||
def add(self, group, update_info = True, update_id = None):
|
||||
|
||||
try:
|
||||
@@ -346,6 +348,8 @@ class Release(Plugin):
|
||||
mdia['last_edit'] = int(time.time())
|
||||
db.update(mdia)
|
||||
|
||||
fireEvent('media.tag', media['_id'], 'recent', single = True)
|
||||
|
||||
return True
|
||||
|
||||
# Assume release downloaded
|
||||
|
||||
@@ -457,9 +457,15 @@ class Renamer(Plugin):
|
||||
mdia['last_edit'] = int(time.time())
|
||||
db.update(mdia)
|
||||
|
||||
# List movie on dashboard
|
||||
fireEvent('media.tag', media['_id'], 'recent', single = True)
|
||||
|
||||
except:
|
||||
log.error('Failed marking movie finished: %s', (traceback.format_exc()))
|
||||
|
||||
# Mark media for dashboard
|
||||
mark_as_recent = False
|
||||
|
||||
# Go over current movie releases
|
||||
for release in fireEvent('release.for_media', media['_id'], single = True):
|
||||
|
||||
@@ -506,14 +512,21 @@ class Renamer(Plugin):
|
||||
# Set the release to downloaded
|
||||
fireEvent('release.update_status', release['_id'], status = 'downloaded', single = True)
|
||||
group['release_download'] = release_download
|
||||
mark_as_recent = True
|
||||
elif release_download['status'] == 'seeding':
|
||||
# Set the release to seeding
|
||||
fireEvent('release.update_status', release['_id'], status = 'seeding', single = True)
|
||||
mark_as_recent = True
|
||||
|
||||
elif release.get('identifier') == group['meta_data']['quality']['identifier']:
|
||||
# Set the release to downloaded
|
||||
fireEvent('release.update_status', release['_id'], status = 'downloaded', single = True)
|
||||
group['release_download'] = release_download
|
||||
mark_as_recent = True
|
||||
|
||||
# Mark media for dashboard
|
||||
if mark_as_recent:
|
||||
fireEvent('media.tag', group['media'].get('_id'), 'recent', single = True)
|
||||
|
||||
# Remove leftover files
|
||||
if not remove_leftovers: # Don't remove anything
|
||||
|
||||
@@ -54,7 +54,8 @@ Page.Home = new Class({
|
||||
})
|
||||
),
|
||||
'filter': {
|
||||
'release_status': 'snatched,missing,available,downloaded'
|
||||
'release_status': 'snatched,missing,available,downloaded,done,seeding',
|
||||
'with_tags': 'recent'
|
||||
},
|
||||
'limit': null,
|
||||
'onLoaded': function(){
|
||||
|
||||
Reference in New Issue
Block a user