diff --git a/pagure/lib/__init__.py b/pagure/lib/__init__.py index f783e96..38886c1 100644 --- a/pagure/lib/__init__.py +++ b/pagure/lib/__init__.py @@ -3291,59 +3291,6 @@ def set_watch_obj(session, user, obj, watch_status): return output -def is_watching_obj(session, user, obj): - ''' Check if the user is watching the specified object. - - Objects can be either an issue or a pull-request - ''' - - if not isinstance(user, model.User): - try: - user = get_user(session, user) - except pagure.exceptions.PagureException: - return False - - if not user: - return False - - # First check if the user explicitely turned on/off notifications - if obj.isa == "issue": - query = session.query( - model.IssueWatcher - ).filter( - model.IssueWatcher.user_id == user.id - ).filter( - model.IssueWatcher.issue_uid == obj.uid - ) - elif obj.isa == "pull-request": - query = session.query( - model.PullRequestWatcher - ).filter( - model.PullRequestWatcher.user_id == user.id - ).filter( - model.PullRequestWatcher.pull_request_uid == obj.uid - ) - else: - raise pagure.exceptions.InvalidObjectException( - 'Unsupported object found: "%s"' % obj - ) - - watcher = query.first() - - if watcher: - return watcher.watch - - # Otherwise, just check if they are in the default group - if obj.user.user == user.user: - return True - - for comment in obj.comments: - if comment.user.user == user.user: - return True - - return False - - def get_watch_list(session, obj): """ Return a list of all the users that are watching the "object" """ diff --git a/tests/test_pagure_flask_api_issue.py b/tests/test_pagure_flask_api_issue.py index e044330..dec2bb1 100644 --- a/tests/test_pagure_flask_api_issue.py +++ b/tests/test_pagure_flask_api_issue.py @@ -1587,8 +1587,22 @@ class PagureFlaskApiIssuetests(tests.Modeltests): p_send_email.return_value = True p_ugt.return_value = True + item = pagure.lib.model.User( + user='bar', + fullname='bar foo', + password='foo', + default_email='bar@bar.com', + ) + self.session.add(item) + item = pagure.lib.model.UserEmail( + user_id=3, + email='bar@bar.com') + self.session.add(item) + + self.session.commit() + tests.create_projects(self.session) - tests.create_tokens(self.session) + tests.create_tokens(self.session, user_id=3) tests.create_tokens_acl(self.session) headers = {'Authorization': 'token aaabbbcccddd'} @@ -1646,8 +1660,9 @@ class PagureFlaskApiIssuetests(tests.Modeltests): # Check subscribtion before repo = pagure.lib.get_project(self.session, 'test') issue = pagure.lib.search_issues(self.session, repo, issueid=1) - self.assertFalse( - pagure.lib.is_watching_obj(self.session, 'pingou', issue)) + self.assertEqual( + pagure.lib.get_watch_list(self.session, issue), + set(['pingou', 'foo'])) # Unsubscribe - no changes @@ -1674,8 +1689,9 @@ class PagureFlaskApiIssuetests(tests.Modeltests): # No change repo = pagure.lib.get_project(self.session, 'test') issue = pagure.lib.search_issues(self.session, repo, issueid=1) - self.assertFalse( - pagure.lib.is_watching_obj(self.session, 'pingou', issue)) + self.assertEqual( + pagure.lib.get_watch_list(self.session, issue), + set(['pingou', 'foo'])) # Subscribe data = {'status': True} @@ -1701,8 +1717,9 @@ class PagureFlaskApiIssuetests(tests.Modeltests): repo = pagure.lib.get_project(self.session, 'test') issue = pagure.lib.search_issues(self.session, repo, issueid=1) - self.assertTrue( - pagure.lib.is_watching_obj(self.session, 'pingou', issue)) + self.assertEqual( + pagure.lib.get_watch_list(self.session, issue), + set(['pingou', 'foo', 'bar'])) # Unsubscribe data = {} @@ -1717,8 +1734,9 @@ class PagureFlaskApiIssuetests(tests.Modeltests): repo = pagure.lib.get_project(self.session, 'test') issue = pagure.lib.search_issues(self.session, repo, issueid=1) - self.assertFalse( - pagure.lib.is_watching_obj(self.session, 'pingou', issue)) + self.assertEqual( + pagure.lib.get_watch_list(self.session, issue), + set(['pingou', 'foo'])) if __name__ == '__main__': diff --git a/tests/test_pagure_lib.py b/tests/test_pagure_lib.py index 49c5f6c..6432e7f 100644 --- a/tests/test_pagure_lib.py +++ b/tests/test_pagure_lib.py @@ -2877,86 +2877,6 @@ class PagureLibtests(tests.Modeltests): html = pagure.lib.text2markdown(text) self.assertEqual(html, expected[idx]) - def test_is_watching_obj(self): - """ Test the is_watching_obj method in pagure.lib """ - # Create the project ns/test - item = pagure.lib.model.Project( - user_id=1, # pingou - name='test3', - namespace='ns', - description='test project #1', - hook_token='aaabbbcccdd', - ) - item.close_status = ['Invalid', 'Insufficient data', 'Fixed'] - self.session.add(item) - self.session.commit() - - # Create the ticket - iss = pagure.lib.new_issue( - issue_id=4, - session=self.session, - repo=item, - title='test issue', - content='content test issue', - user='pingou', - ticketfolder=None, - ) - self.session.commit() - self.assertEqual(iss.id, 4) - self.assertEqual(iss.title, 'test issue') - - # Created the ticket - self.assertTrue(pagure.lib.is_watching_obj( - self.session, 'pingou', iss)) - self.assertFalse(pagure.lib.is_watching_obj( - self.session, 'foo', iss)) - self.assertFalse(pagure.lib.is_watching_obj( - self.session, 'bar', iss)) - - # Comment on the ticket - out = pagure.lib.add_issue_comment( - self.session, - issue=iss, - comment='This is a comment', - user='foo', - ticketfolder=None, - notify=False) - self.assertEqual(out, 'Comment added') - - # Commented on the ticket - self.assertTrue(pagure.lib.is_watching_obj( - self.session, 'pingou', iss)) - self.assertTrue(pagure.lib.is_watching_obj( - self.session, 'foo', iss)) - self.assertFalse(pagure.lib.is_watching_obj( - self.session, 'bar', iss)) - - # Add user `bar` - item = pagure.lib.model.User( - user='bar', - fullname='bar name', - password='bar', - default_email='bar@bar.com', - ) - self.session.add(item) - item = pagure.lib.model.UserEmail( - user_id=3, - email='bar@bar.com') - self.session.add(item) - self.session.commit() - - # Watch the ticket - out = pagure.lib.set_watch_obj(self.session, 'bar', iss, True) - self.assertEqual(out, 'You are now watching this issue') - - # Is watching the ticket - self.assertTrue(pagure.lib.is_watching_obj( - self.session, 'pingou', iss)) - self.assertTrue(pagure.lib.is_watching_obj( - self.session, 'foo', iss)) - self.assertTrue(pagure.lib.is_watching_obj( - self.session, 'bar', iss)) - def test_set_watch_obj(self): """ Test the set_watch_obj method in pagure.lib """ # Create the project ns/test