Closes #53
This commit is contained in:
parent
bf8ce354e5
commit
aca69ce03c
|
@ -91,18 +91,21 @@ def update(cert_id, owner, description, active, destinations, notifications):
|
||||||
cert.description = description
|
cert.description = description
|
||||||
|
|
||||||
# we might have to create new notifications if the owner changes
|
# we might have to create new notifications if the owner changes
|
||||||
if owner != cert.owner:
|
new_notifications = []
|
||||||
for n in cert.notifications:
|
# get existing names to remove
|
||||||
notification_name = "DEFAULT_{0}".format(cert.owner.split('@')[0].upper())
|
notification_name = "DEFAULT_{0}".format(cert.owner.split('@')[0].upper())
|
||||||
if n.name == notification_name:
|
for n in notifications:
|
||||||
cert.notifications.remove(n)
|
if notification_name not in n.label:
|
||||||
|
new_notifications.append(n)
|
||||||
|
|
||||||
|
notification_name = "DEFAULT_{0}".format(owner.split('@')[0].upper())
|
||||||
|
new_notifications += notification_service.create_default_expiration_notifications(notification_name, owner)
|
||||||
|
|
||||||
|
cert.notifications = new_notifications
|
||||||
|
|
||||||
|
database.update_list(cert, 'destinations', Destination, destinations)
|
||||||
|
|
||||||
cert.owner = owner
|
cert.owner = owner
|
||||||
notification_name = "DEFAULT_{0}".format(cert.owner.split('@')[0].upper())
|
|
||||||
notifications = notification_service.create_default_expiration_notifications(notification_name, owner)
|
|
||||||
|
|
||||||
database.update_list(cert, 'notifications', Notification, notifications)
|
|
||||||
database.update_list(cert, 'destinations', Destination, destinations)
|
|
||||||
|
|
||||||
return database.update(cert)
|
return database.update(cert)
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,8 @@ from lemur.roles import service as role_service
|
||||||
|
|
||||||
from lemur.common.utils import marshal_items, paginated_parser
|
from lemur.common.utils import marshal_items, paginated_parser
|
||||||
|
|
||||||
|
from lemur.notifications.views import notification_list
|
||||||
|
|
||||||
|
|
||||||
mod = Blueprint('certificates', __name__)
|
mod = Blueprint('certificates', __name__)
|
||||||
api = Api(mod)
|
api = Api(mod)
|
||||||
|
@ -569,7 +571,7 @@ class Certificates(AuthenticatedResource):
|
||||||
self.reqparse.add_argument('owner', type=str, location='json')
|
self.reqparse.add_argument('owner', type=str, location='json')
|
||||||
self.reqparse.add_argument('description', type=str, location='json')
|
self.reqparse.add_argument('description', type=str, location='json')
|
||||||
self.reqparse.add_argument('destinations', type=list, default=[], location='json')
|
self.reqparse.add_argument('destinations', type=list, default=[], location='json')
|
||||||
self.reqparse.add_argument('notifications', type=list, default=[], location='json')
|
self.reqparse.add_argument('notifications', type=notification_list, default=[], location='json')
|
||||||
args = self.reqparse.parse_args()
|
args = self.reqparse.parse_args()
|
||||||
|
|
||||||
cert = service.get(certificate_id)
|
cert = service.get(certificate_id)
|
||||||
|
|
|
@ -28,6 +28,36 @@ FIELDS = {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def notification(value, name):
|
||||||
|
"""
|
||||||
|
Validates a given notification exits
|
||||||
|
:param value:
|
||||||
|
:param name:
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
|
n = service.get(value)
|
||||||
|
if not n:
|
||||||
|
raise ValueError("Unable to find notification specified")
|
||||||
|
return n
|
||||||
|
|
||||||
|
|
||||||
|
def notification_list(value, name):
|
||||||
|
"""
|
||||||
|
Validates a given notification exists and returns a list
|
||||||
|
:param value:
|
||||||
|
:param name:
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
|
notifications = []
|
||||||
|
for v in value:
|
||||||
|
try:
|
||||||
|
notifications.append(notification(v['id'], 'id'))
|
||||||
|
except ValueError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
return notifications
|
||||||
|
|
||||||
|
|
||||||
class NotificationsList(AuthenticatedResource):
|
class NotificationsList(AuthenticatedResource):
|
||||||
""" Defines the 'notifications' endpoint """
|
""" Defines the 'notifications' endpoint """
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
|
Loading…
Reference in New Issue