Skip to content

Commit b595d0b

Browse files
committed
add issues_assigned and issues_authored relations (issue #317)
1 parent 68e56e1 commit b595d0b

5 files changed

Lines changed: 31 additions & 4 deletions

File tree

CHANGELOG.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ Changelog
1414

1515
- Migrated CI to GitHub Actions, also we now test not only on Linux, but on macOS and Windows as well
1616
- ``dir(resource)`` and ``list(resource)`` now also show properties of an object
17+
- Support for ``issues_assigned`` and ``issues_authored`` relations in User object
18+
(`Issue #317 <https://github.com/maxtepkeev/python-redmine/issues/317>`__)
1719
- *Pro Edition:* Added support for RedmineUP DealCategory ``create()``, ``update()``, ``delete()`` operations
1820
(see `docs <https://python-redmine.com/resources/deal_category.html#create-methods>`__ for details)
1921
- *Pro Edition:* RedmineUP CrmQuery resource now supports ``invoices`` and ``expenses`` relation attributes

docs/resources/issue.rst

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,21 @@ filter
287287
>>> project.issues
288288
<redminelib.resultsets.ResourceSet object with Issue resources>
289289
290+
.. versionadded:: 2.5.0
291+
292+
Apart from ``issues`` relation a User resource object provides ``issues_assigned`` which is an alias
293+
to ``issues`` relation and ``issues_authored`` relation which returns Issue objects authored by a user:
294+
295+
.. code-block:: python
296+
297+
>>> user = redmine.user.get(9)
298+
>>> user.issues
299+
<redminelib.resultsets.ResourceSet object with Issue resources>
300+
>>> user.issues_assigned
301+
<redminelib.resultsets.ResourceSet object with Issue resources>
302+
>>> user.issues_authored
303+
<redminelib.resultsets.ResourceSet object with Issue resources>
304+
290305
Update methods
291306
--------------
292307

docs/resources/user.rst

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,8 +154,10 @@ get
154154
resource objects wrapped in a :ref:`ResourceSet` which are somehow related to a User
155155
resource object. The relations provided by the User resource object are:
156156

157-
* issues
158157
* time_entries
158+
* issues (alias to issues_assigned)
159+
* issues_assigned (requires Python-Redmine v2.5.0)
160+
* issues_authored (requires Python-Redmine v2.5.0)
159161
* deals (requires Pro Edition and `CRM plugin <https://www.redmineup.com/pages/plugins/crm>`_)
160162
* contacts (requires Pro Edition and `CRM plugin <https://www.redmineup.com/pages/plugins/crm>`_)
161163
* invoices (requires Pro Edition and `Invoices plugin <https://www.redmineup.com/pages/plugins/invoices>`_

redminelib/resources/standard.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -419,7 +419,7 @@ class User(BaseResource):
419419

420420
_repr = [['id', 'firstname', 'lastname'], ['id', 'name']]
421421
_includes = ['memberships', 'groups']
422-
_relations = ['issues', 'time_entries']
422+
_relations = ['issues', 'issues_assigned', 'issues_authored', 'time_entries']
423423
_relations_name = 'assigned_to'
424424
_unconvertible = ['status']
425425
_create_readonly = BaseResource._create_readonly + ['api_key', 'last_login_on']
@@ -429,12 +429,18 @@ class User(BaseResource):
429429
'groups': 'Group',
430430
'memberships': 'ProjectMembership',
431431
'issues': 'Issue',
432+
'issues_assigned': 'Issue',
433+
'issues_authored': 'Issue',
432434
'time_entries': 'TimeEntry',
433435
}
434436

435437
def __getattr__(self, attr):
436-
if attr == 'time_entries' and attr not in self._encoded_attrs:
437-
self._relations_name = 'user'
438+
if attr in self._relations and attr not in self._encoded_attrs:
439+
if attr == 'issues_authored':
440+
self._relations_name = 'author'
441+
elif attr == 'time_entries':
442+
self._relations_name = 'user'
443+
438444
value = super().__getattr__(attr)
439445
self._relations_name = 'assigned_to'
440446
return value

tests/test_resources_standard.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1409,6 +1409,8 @@ def test_user_relations(self):
14091409
self.response.json.return_value = responses['user']['get']
14101410
user = self.redmine.user.get(1)
14111411
self.assertIsInstance(user.issues, resultsets.ResourceSet)
1412+
self.assertIsInstance(user.issues_assigned, resultsets.ResourceSet)
1413+
self.assertIsInstance(user.issues_authored, resultsets.ResourceSet)
14121414
self.assertIsInstance(user.time_entries, resultsets.ResourceSet)
14131415

14141416
def test_user_includes(self):

0 commit comments

Comments
 (0)