From ba2b1caae8a561373cdd93178cf5c5d1e785228c Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Apr 07 2017 15:06:18 +0000 Subject: Store in the DB the API token used to flag a pull-request --- diff --git a/alembic/versions/4df75d40bafa_log_the_token_used_when_flagging_a_pr.py b/alembic/versions/4df75d40bafa_log_the_token_used_when_flagging_a_pr.py new file mode 100644 index 0000000..8cb887f --- /dev/null +++ b/alembic/versions/4df75d40bafa_log_the_token_used_when_flagging_a_pr.py @@ -0,0 +1,33 @@ +"""Log the token used when flagging a PR + +Revision ID: 4df75d40bafa +Revises: 3ffec872dfdf +Create Date: 2017-04-04 16:26:58.352213 + +""" + +from alembic import op +import sqlalchemy as sa + +# revision identifiers, used by Alembic. +revision = '4df75d40bafa' +down_revision = '3ffec872dfdf' + + +def upgrade(): + ''' Add the foreign key token_id to the table pull_request_flags. + ''' + op.add_column( + 'pull_request_flags', + sa.Column( + 'token_id', + sa.String(64), + sa.ForeignKey('tokens.id'), + nullable=True + ) + ) + +def downgrade(): + ''' Remove the column token_id from the table pull_request_flags. + ''' + op.drop_column('pull_request_flags', 'token_id') diff --git a/pagure/api/fork.py b/pagure/api/fork.py index 35bf16d..925a86c 100644 --- a/pagure/api/fork.py +++ b/pagure/api/fork.py @@ -681,6 +681,7 @@ def api_pull_request_add_flag(repo, requestid, username=None, namespace=None): url=url, uid=uid, user=flask.g.fas_user.username, + token=flask.g.token.id, requestfolder=APP.config['REQUESTS_FOLDER'], ) SESSION.commit() diff --git a/pagure/lib/__init__.py b/pagure/lib/__init__.py index 3c13620..499b99b 100644 --- a/pagure/lib/__init__.py +++ b/pagure/lib/__init__.py @@ -1218,7 +1218,7 @@ def edit_comment(session, parent, comment, user, def add_pull_request_flag(session, request, username, percent, comment, url, - uid, user, requestfolder): + uid, user, token, requestfolder): ''' Add a flag to a pull-request. ''' user_obj = get_user(session, user) @@ -1238,6 +1238,7 @@ def add_pull_request_flag(session, request, username, percent, comment, url, comment=comment, url=url, user_id=user_obj.id, + token_id=token, ) session.add(pr_flag) # Make sure we won't have SQLAlchemy error before we continue diff --git a/pagure/lib/model.py b/pagure/lib/model.py index d6941b8..d258c36 100644 --- a/pagure/lib/model.py +++ b/pagure/lib/model.py @@ -1705,6 +1705,11 @@ class PullRequestFlag(BASE): 'pull_requests.uid', ondelete='CASCADE', onupdate='CASCADE', ), nullable=False) + token_id = sa.Column( + sa.String(64), sa.ForeignKey( + 'tokens.id', + ), + nullable=False) user_id = sa.Column( sa.Integer, sa.ForeignKey( diff --git a/tests/test_pagure_lib.py b/tests/test_pagure_lib.py index 60dcec5..42b0447 100644 --- a/tests/test_pagure_lib.py +++ b/tests/test_pagure_lib.py @@ -2037,6 +2037,7 @@ class PagureLibtests(tests.Modeltests): mockemail.return_value = True self.test_new_pull_request() + tests.create_tokens(self.session) request = pagure.lib.search_pull_requests(self.session, requestid=1) self.assertEqual(len(request.flags), 0) @@ -2050,12 +2051,14 @@ class PagureLibtests(tests.Modeltests): url="http://jenkins.cloud.fedoraproject.org", uid="jenkins_build_pagure_34", user='foo', + token='aaabbbcccddd', requestfolder=None, ) self.assertEqual(msg, 'Flag added') self.session.commit() self.assertEqual(len(request.flags), 1) + self.assertEqual(request.flags[0].token_id, 'aaabbbcccddd') def test_search_pull_requests(self): """ Test search_pull_requests of pagure.lib. """