Skip to content

Commit

Permalink
issue #27
Browse files Browse the repository at this point in the history
  • Loading branch information
maxtepkeev committed Apr 2, 2014
1 parent 388ca26 commit 4d95d93
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 0 deletions.
7 changes: 7 additions & 0 deletions CHANGELOG.rst
@@ -1,6 +1,13 @@
Changelog
---------

0.8.1 (2014-04-XX)
++++++++++++++++++

- Fixed: `Issue #27 <https://github.com/maxtepkeev/python-redmine/issues/27>`__ (Project and
Issue resources ``parent`` attribute was returned as a dict instead of being converted to
Resource object)

0.8.0 (2014-03-27)
++++++++++++++++++

Expand Down
8 changes: 8 additions & 0 deletions redmine/resources.py
Expand Up @@ -310,6 +310,12 @@ class Project(_Resource):
_unconvertible = ('status',)
_readonly = _Resource._readonly + ('identifier',)

def __getattr__(self, item):
if item == 'parent' and item in self._attributes:
return ResourceManager(self.manager.redmine, 'Project').to_resource(self._attributes[item])

return super(Project, self).__getattr__(item)


class Issue(_Resource):
redmine_version = '1.0'
Expand Down Expand Up @@ -353,6 +359,8 @@ def __getattr__(self, item):
return super(Issue, self).__getattr__('fixed_version')
elif item == 'watcher':
return Issue.Watcher(self)
elif item == 'parent' and item in self._attributes:
return ResourceManager(self.manager.redmine, 'Issue').to_resource(self._attributes[item])

return super(Issue, self).__getattr__(item)

Expand Down
14 changes: 14 additions & 0 deletions tests/test_resources.py
Expand Up @@ -294,6 +294,13 @@ def test_project_url(self):
self.response.json = json_response(responses['project']['get'])
self.assertEqual(self.redmine.project.get(1).url, '{0}/projects/1'.format(self.url))

def test_project_parent_converts_to_resource(self):
from redmine.resources import Project
self.response.json = json_response({'project': {'name': 'Foo', 'id': 1, 'parent': {'id': 2}}})
parent = self.redmine.project.get(1).parent
self.assertIsInstance(parent, Project)
self.assertEqual(parent.id, 2)

def test_issue_version(self):
self.assertEqual(self.redmine.issue.resource_class.redmine_version, '1.0')

Expand Down Expand Up @@ -444,6 +451,13 @@ def test_issue_url(self):
self.response.json = json_response(responses['issue']['get'])
self.assertEqual(self.redmine.issue.get(1).url, '{0}/issues/1'.format(self.url))

def test_issue_parent_converts_to_resource(self):
from redmine.resources import Issue
self.response.json = json_response({'issue': {'subject': 'Foo', 'id': 1, 'parent': {'id': 2}}})
parent = self.redmine.issue.get(1).parent
self.assertIsInstance(parent, Issue)
self.assertEqual(parent.id, 2)

def test_time_entry_version(self):
self.assertEqual(self.redmine.time_entry.resource_class.redmine_version, '1.1')

Expand Down

0 comments on commit 4d95d93

Please sign in to comment.