fix(endpoints/notificationmethod.py): deals with pre oci and the previous data model
Issue: NA - [ ] It works! - [ ] Comments provide sufficient explanations for the next contributor - [ ] Tests cover changes and corner cases - [ ] Follows Quay syntax patterns and format
This commit is contained in:
parent
2f750bfc87
commit
69a0a10ab4
1 changed files with 20 additions and 7 deletions
|
@ -27,6 +27,18 @@ class NotificationMethodPerformException(JobException):
|
|||
pass
|
||||
|
||||
|
||||
def _get_namespace_name_from(repository):
|
||||
# TODO Charlie 2017-07-14: This is hack for a bug in production
|
||||
# because in some places have started calling this method with
|
||||
# pre oci models and in some we have started calling with non pre oci models. We should
|
||||
# remove this when we have switched over to database interfaces.
|
||||
if hasattr(repository, 'namespace_name'):
|
||||
namespace_name = repository.namespace_name
|
||||
else:
|
||||
namespace_name = repository.namespace_user.username
|
||||
return namespace_name
|
||||
|
||||
|
||||
SSLClientCert = None
|
||||
if app.config['PREFERRED_URL_SCHEME'] == 'https':
|
||||
# TODO(jschorr): move this into the config provider library
|
||||
|
@ -98,7 +110,7 @@ class QuayNotificationMethod(NotificationMethod):
|
|||
return (True, 'Unknown organization %s' % target_info['name'], None)
|
||||
|
||||
# Only repositories under the organization can cause notifications to that org.
|
||||
if target_info['name'] != repository.namespace_name:
|
||||
if target_info['name'] != _get_namespace_name_from(repository):
|
||||
return (False, 'Organization name must match repository namespace')
|
||||
|
||||
return (True, None, [target])
|
||||
|
@ -106,7 +118,7 @@ class QuayNotificationMethod(NotificationMethod):
|
|||
# Lookup the team.
|
||||
org_team = None
|
||||
try:
|
||||
org_team = model.team.get_organization_team(repository.namespace_name, target_info['name'])
|
||||
org_team = model.team.get_organization_team(_get_namespace_name_from(repository), target_info['name'])
|
||||
except model.InvalidTeamException:
|
||||
# Probably deleted.
|
||||
return (True, 'Unknown team %s' % target_info['name'], None)
|
||||
|
@ -142,7 +154,8 @@ class EmailMethod(NotificationMethod):
|
|||
if not email:
|
||||
raise CannotValidateNotificationMethodException('Missing e-mail address')
|
||||
|
||||
record = model.repository.get_email_authorized_for_repo(repository.namespace_name,
|
||||
|
||||
record = model.repository.get_email_authorized_for_repo(_get_namespace_name_from(repository),
|
||||
repository.name, email)
|
||||
if not record or not record.confirmed:
|
||||
raise CannotValidateNotificationMethodException('The specified e-mail address '
|
||||
|
@ -220,7 +233,7 @@ class FlowdockMethod(NotificationMethod):
|
|||
if not token:
|
||||
return
|
||||
|
||||
owner = model.user.get_user_or_org(notification_obj.repository.namespace_name)
|
||||
owner = model.user.get_user_or_org(_get_namespace_name_from(notification_obj.repository))
|
||||
if not owner:
|
||||
# Something went wrong.
|
||||
return
|
||||
|
@ -233,7 +246,7 @@ class FlowdockMethod(NotificationMethod):
|
|||
'subject': event_handler.get_summary(notification_data['event_data'], notification_data),
|
||||
'content': event_handler.get_message(notification_data['event_data'], notification_data),
|
||||
'from_name': owner.username,
|
||||
'project': (notification_obj.repository.namespace_name + ' ' +
|
||||
'project': (_get_namespace_name_from(notification_obj.repository)+ ' ' +
|
||||
notification_obj.repository.name),
|
||||
'tags': ['#' + event_handler.event_name()],
|
||||
'link': notification_data['event_data']['homepage']
|
||||
|
@ -276,7 +289,7 @@ class HipchatMethod(NotificationMethod):
|
|||
if not token or not room_id:
|
||||
return
|
||||
|
||||
owner = model.user.get_user_or_org(notification_obj.repository.namespace_name)
|
||||
owner = model.user.get_user_or_org(_get_namespace_name_from(notification_obj.repository))
|
||||
if not owner:
|
||||
# Something went wrong.
|
||||
return
|
||||
|
@ -388,7 +401,7 @@ class SlackMethod(NotificationMethod):
|
|||
if not url:
|
||||
return
|
||||
|
||||
owner = model.user.get_user_or_org(notification_obj.repository.namespace_name)
|
||||
owner = model.user.get_user_or_org(_get_namespace_name_from(notification_obj.repository))
|
||||
if not owner:
|
||||
# Something went wrong.
|
||||
return
|
||||
|
|
Reference in a new issue