Merge branch 'develop' into redesign
Conflicts: couchpotato/templates/login.html
This commit is contained in:
commit
1f7555e8fd
251 files changed
+8840
-15268
No files matched your search
@@ -3,6 +3,7 @@ import threading
|
||||
import time
|
||||
import traceback
|
||||
import uuid
|
||||
from CodernityDB.database import RecordDeleted
|
||||
|
||||
from couchpotato import get_db
|
||||
from couchpotato.api import addApiView, addNonBlockApiView
|
||||
@@ -66,7 +67,9 @@ class CoreNotifier(Notification):
|
||||
fireEvent('schedule.interval', 'core.clean_messages', self.cleanMessages, seconds = 15, single = True)
|
||||
|
||||
addEvent('app.load', self.clean)
|
||||
addEvent('app.load', self.checkMessages)
|
||||
|
||||
if not Env.get('dev'):
|
||||
addEvent('app.load', self.checkMessages)
|
||||
|
||||
self.messages = []
|
||||
self.listeners = []
|
||||
@@ -153,9 +156,14 @@ class CoreNotifier(Notification):
|
||||
n = {
|
||||
'_t': 'notification',
|
||||
'time': int(time.time()),
|
||||
'message': toUnicode(message),
|
||||
'data': data
|
||||
'message': toUnicode(message)
|
||||
}
|
||||
|
||||
if data.get('sticky'):
|
||||
n['sticky'] = True
|
||||
if data.get('important'):
|
||||
n['important'] = True
|
||||
|
||||
db.insert(n)
|
||||
|
||||
self.frontend(type = listener, data = n)
|
||||
@@ -263,11 +271,16 @@ class CoreNotifier(Notification):
|
||||
if init:
|
||||
db = get_db()
|
||||
|
||||
notifications = db.all('notification', with_doc = True)
|
||||
notifications = db.all('notification')
|
||||
|
||||
for n in notifications:
|
||||
if n['doc'].get('time') > (time.time() - 604800):
|
||||
messages.append(n['doc'])
|
||||
|
||||
try:
|
||||
doc = db.get('id', n.get('_id'))
|
||||
if doc.get('time') > (time.time() - 604800):
|
||||
messages.append(doc)
|
||||
except RecordDeleted:
|
||||
pass
|
||||
|
||||
return {
|
||||
'success': True,
|
||||
|
||||
@@ -50,7 +50,7 @@ var NotificationBase = new Class({
|
||||
, 'top');
|
||||
self.notifications.include(result);
|
||||
|
||||
if((result.data.important !== undefined || result.data.sticky !== undefined) && !result.read){
|
||||
if((result.important !== undefined || result.sticky !== undefined) && !result.read){
|
||||
var sticky = true;
|
||||
App.trigger('message', [result.message, sticky, result])
|
||||
}
|
||||
@@ -72,7 +72,7 @@ var NotificationBase = new Class({
|
||||
|
||||
if(!force_ids) {
|
||||
var rn = self.notifications.filter(function(n){
|
||||
return !n.read && n.data.important === undefined
|
||||
return !n.read && n.important === undefined
|
||||
});
|
||||
|
||||
var ids = [];
|
||||
|
||||
@@ -42,7 +42,7 @@ class Email(Notification):
|
||||
# Open the SMTP connection, via SSL if requested
|
||||
log.debug("Connecting to host %s on port %s" % (smtp_server, smtp_port))
|
||||
log.debug("SMTP over SSL %s", ("enabled" if ssl == 1 else "disabled"))
|
||||
mailserver = smtplib.SMTP_SSL(smtp_server) if ssl == 1 else smtplib.SMTP(smtp_server)
|
||||
mailserver = smtplib.SMTP_SSL(smtp_server, smtp_port) if ssl == 1 else smtplib.SMTP(smtp_server, smtp_port)
|
||||
|
||||
if starttls:
|
||||
log.debug("Using StartTLS to initiate the connection with the SMTP server")
|
||||
|
||||
@@ -34,9 +34,9 @@ class Growl(Notification):
|
||||
|
||||
self.growl = notifier.GrowlNotifier(
|
||||
applicationName = Env.get('appname'),
|
||||
notifications = ["Updates"],
|
||||
defaultNotifications = ["Updates"],
|
||||
applicationIcon = '%s/static/images/couch.png' % fireEvent('app.api_url', single = True),
|
||||
notifications = ['Updates'],
|
||||
defaultNotifications = ['Updates'],
|
||||
applicationIcon = self.getNotificationImage('medium'),
|
||||
hostname = hostname if hostname else 'localhost',
|
||||
password = password if password else None,
|
||||
port = port if port else 23053
|
||||
@@ -56,7 +56,7 @@ class Growl(Notification):
|
||||
|
||||
try:
|
||||
self.growl.notify(
|
||||
noteType = "Updates",
|
||||
noteType = 'Updates',
|
||||
title = self.default_title,
|
||||
description = message,
|
||||
sticky = False,
|
||||
|
||||
@@ -1,68 +0,0 @@
|
||||
from couchpotato.core.helpers.variable import splitString
|
||||
from couchpotato.core.logger import CPLog
|
||||
from couchpotato.core.notifications.base import Notification
|
||||
from pynmwp import PyNMWP
|
||||
import six
|
||||
|
||||
log = CPLog(__name__)
|
||||
|
||||
autoload = 'NotifyMyWP'
|
||||
|
||||
|
||||
class NotifyMyWP(Notification):
|
||||
|
||||
def notify(self, message = '', data = None, listener = None):
|
||||
if not data: data = {}
|
||||
|
||||
keys = splitString(self.conf('api_key'))
|
||||
p = PyNMWP(keys, self.conf('dev_key'))
|
||||
|
||||
response = p.push(application = self.default_title, event = message, description = message, priority = self.conf('priority'), batch_mode = len(keys) > 1)
|
||||
|
||||
for key in keys:
|
||||
if not response[key]['Code'] == six.u('200'):
|
||||
log.error('Could not send notification to NotifyMyWindowsPhone (%s). %s', (key, response[key]['message']))
|
||||
return False
|
||||
|
||||
return response
|
||||
|
||||
|
||||
config = [{
|
||||
'name': 'notifymywp',
|
||||
'groups': [
|
||||
{
|
||||
'tab': 'notifications',
|
||||
'list': 'notification_providers',
|
||||
'name': 'notifymywp',
|
||||
'label': 'Windows Phone',
|
||||
'options': [
|
||||
{
|
||||
'name': 'enabled',
|
||||
'default': 0,
|
||||
'type': 'enabler',
|
||||
},
|
||||
{
|
||||
'name': 'api_key',
|
||||
'description': 'Multiple keys seperated by a comma. Maximum of 5.'
|
||||
},
|
||||
{
|
||||
'name': 'dev_key',
|
||||
'advanced': True,
|
||||
},
|
||||
{
|
||||
'name': 'priority',
|
||||
'default': 0,
|
||||
'type': 'dropdown',
|
||||
'values': [('Very Low', -2), ('Moderate', -1), ('Normal', 0), ('High', 1), ('Emergency', 2)],
|
||||
},
|
||||
{
|
||||
'name': 'on_snatch',
|
||||
'default': 0,
|
||||
'type': 'bool',
|
||||
'advanced': True,
|
||||
'description': 'Also send message when movie is snatched.',
|
||||
},
|
||||
],
|
||||
}
|
||||
],
|
||||
}]
|
||||
@@ -1,4 +1,4 @@
|
||||
from couchpotato.core.helpers.variable import getTitle
|
||||
from couchpotato.core.helpers.variable import getTitle, getIdentifier
|
||||
from couchpotato.core.logger import CPLog
|
||||
from couchpotato.core.notifications.base import Notification
|
||||
|
||||
@@ -16,7 +16,8 @@ class Trakt(Notification):
|
||||
'test': 'account/test/%s',
|
||||
}
|
||||
|
||||
listen_to = ['movie.downloaded']
|
||||
listen_to = ['movie.snatched']
|
||||
enabled_option = 'notification_enabled'
|
||||
|
||||
def notify(self, message = '', data = None, listener = None):
|
||||
if not data: data = {}
|
||||
@@ -38,7 +39,7 @@ class Trakt(Notification):
|
||||
'username': self.conf('automation_username'),
|
||||
'password': self.conf('automation_password'),
|
||||
'movies': [{
|
||||
'imdb_id': data['identifier'],
|
||||
'imdb_id': getIdentifier(data),
|
||||
'title': getTitle(data),
|
||||
'year': data['info']['year']
|
||||
}] if data else []
|
||||
|
||||
@@ -7,8 +7,8 @@ import urllib
|
||||
from couchpotato.core.helpers.variable import splitString, getTitle
|
||||
from couchpotato.core.logger import CPLog
|
||||
from couchpotato.core.notifications.base import Notification
|
||||
import requests
|
||||
from requests.packages.urllib3.exceptions import MaxRetryError, ConnectionError
|
||||
from requests.exceptions import ConnectionError, Timeout
|
||||
from requests.packages.urllib3.exceptions import MaxRetryError
|
||||
|
||||
|
||||
log = CPLog(__name__)
|
||||
@@ -172,7 +172,7 @@ class XBMC(Notification):
|
||||
# manually fake expected response array
|
||||
return [{'result': 'Error'}]
|
||||
|
||||
except (MaxRetryError, requests.exceptions.Timeout, ConnectionError):
|
||||
except (MaxRetryError, Timeout, ConnectionError):
|
||||
log.info2('Couldn\'t send request to XBMC, assuming it\'s turned off')
|
||||
return [{'result': 'Error'}]
|
||||
except:
|
||||
@@ -208,7 +208,7 @@ class XBMC(Notification):
|
||||
log.debug('Returned from request %s: %s', (host, response))
|
||||
|
||||
return response
|
||||
except (MaxRetryError, requests.exceptions.Timeout, ConnectionError):
|
||||
except (MaxRetryError, Timeout, ConnectionError):
|
||||
log.info2('Couldn\'t send request to XBMC, assuming it\'s turned off')
|
||||
return []
|
||||
except:
|
||||
|
||||
Reference in new issue
Block a user