- Add data classes for notifications
- Add basic API for notifications - Change the password required to be a notification
This commit is contained in:
parent
e650da5278
commit
368a8da7db
7 changed files with 80 additions and 6 deletions
|
@ -28,7 +28,7 @@ from auth.permissions import (ReadRepositoryPermission,
|
|||
ViewTeamPermission,
|
||||
UserPermission)
|
||||
from endpoints.common import (common_login, get_route_data, truthy_param,
|
||||
start_build)
|
||||
start_build, add_notification)
|
||||
from endpoints.trigger import (BuildTrigger, TriggerActivationException,
|
||||
TriggerDeactivationException,
|
||||
EmptyRepositoryException)
|
||||
|
@ -2518,3 +2518,19 @@ def get_logs(namespace, start_time, end_time, performer_name=None,
|
|||
'logs': [log_view(log) for log in logs]
|
||||
})
|
||||
|
||||
|
||||
def notification_view(notification):
|
||||
return {
|
||||
'kind': notification.kind.name,
|
||||
'created': notification.created,
|
||||
'metadata': json.loads(notification.metadata_json),
|
||||
}
|
||||
|
||||
|
||||
@api.route('/user/notifications', methods=['GET'])
|
||||
@api_login_required
|
||||
def list_user_notifications():
|
||||
notifications = model.list_notifications(current_user.db_user())
|
||||
return jsonify({
|
||||
'notifications': [notification_view(notification) for notification in notifications]
|
||||
})
|
||||
|
|
|
@ -5,7 +5,7 @@ import urlparse
|
|||
import json
|
||||
|
||||
from flask import session, make_response, render_template, request
|
||||
from flask.ext.login import login_user, UserMixin
|
||||
from flask.ext.login import login_user, UserMixin, current_user
|
||||
from flask.ext.principal import identity_changed
|
||||
|
||||
from data import model
|
||||
|
@ -120,13 +120,19 @@ app.jinja_env.globals['csrf_token'] = generate_csrf_token
|
|||
|
||||
|
||||
def render_page_template(name, **kwargs):
|
||||
|
||||
resp = make_response(render_template(name, route_data=get_route_data(),
|
||||
**kwargs))
|
||||
resp.headers['X-FRAME-OPTIONS'] = 'DENY'
|
||||
return resp
|
||||
|
||||
|
||||
def add_notification(kind, metadata=None, user=None):
|
||||
if not user and current_user:
|
||||
user = current_user.db_user()
|
||||
|
||||
return model.create_notification(kind, user, metadata or {})
|
||||
|
||||
|
||||
def start_build(repository, dockerfile_id, tags, build_name, subdir, manual,
|
||||
trigger=None):
|
||||
host = urlparse.urlparse(request.url).netloc
|
||||
|
|
|
@ -203,7 +203,7 @@ class GithubBuildTrigger(BuildTrigger):
|
|||
|
||||
try:
|
||||
repo = gh_client.get_repo(source)
|
||||
default_commit = repo.get_branch(repo.master_branch).commit
|
||||
default_commit = repo.get_branch(repo.master_branch or 'master').commit
|
||||
commit_tree = repo.get_git_tree(default_commit.sha, recursive=True)
|
||||
|
||||
return [os.path.dirname(elem.path) for elem in commit_tree.tree
|
||||
|
@ -283,4 +283,4 @@ class GithubBuildTrigger(BuildTrigger):
|
|||
short_sha = GithubBuildTrigger.get_display_name(master_sha)
|
||||
ref = 'refs/heads/%s' % repo.master_branch
|
||||
|
||||
return self._prepare_build(config, repo, master_sha, short_sha, ref)
|
||||
return self._prepare_build(config, repo, master_sha, short_sha, ref)
|
||||
|
|
Reference in a new issue