Browse Source

Tag and untag dashboard media

pull/3480/head
Ruud 11 years ago
parent
commit
6f766aae8c
  1. 40
      couchpotato/core/media/_base/media/main.py
  2. 1
      couchpotato/core/media/movie/_base/main.py
  3. 5
      couchpotato/core/media/movie/searcher.py
  4. 4
      couchpotato/core/plugins/release/main.py
  5. 13
      couchpotato/core/plugins/renamer.py
  6. 3
      couchpotato/static/scripts/page/home.js

40
couchpotato/core/media/_base/media/main.py

@ -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

1
couchpotato/core/media/movie/_base/main.py

@ -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)

5
couchpotato/core/media/movie/searcher.py

@ -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))

4
couchpotato/core/plugins/release/main.py

@ -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

13
couchpotato/core/plugins/renamer.py

@ -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

3
couchpotato/static/scripts/page/home.js

@ -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(){

Loading…
Cancel
Save