diff options
Diffstat (limited to 'pygithub3')
-rw-r--r-- | pygithub3/services/base.py | 14 | ||||
-rw-r--r-- | pygithub3/services/issues/__init__.py | 21 | ||||
-rw-r--r-- | pygithub3/services/issues/milestones.py | 16 | ||||
-rw-r--r-- | pygithub3/tests/services/test_core.py | 13 |
4 files changed, 32 insertions, 32 deletions
diff --git a/pygithub3/services/base.py b/pygithub3/services/base.py index 649b2b3..5fed1db 100644 --- a/pygithub3/services/base.py +++ b/pygithub3/services/base.py @@ -1,10 +1,13 @@ #!/usr/bin/env python # -*- encoding: utf-8 -*- +from datetime import datetime + from pygithub3.core.client import Client +from pygithub3.core.errors import NotFound from pygithub3.core.result import smart, normal from pygithub3.requests.base import Factory -from pygithub3.core.errors import NotFound +from pygithub3.resources.base import GITHUB_DATE_FORMAT class Service(object): @@ -41,6 +44,15 @@ class Service(object): self._client = Client(**config) self.request_builder = Factory() + def _normalize_date(self, key, _dict): + """ If ``key`` comes as ``datetime``, it'll normalize it """ + try: + key = str(key) + date = datetime.strftime(_dict.get(key), GITHUB_DATE_FORMAT) + _dict.update({key: date}) + except: + pass + @property def remaining_requests(self): return Client.remaining_requests diff --git a/pygithub3/services/issues/__init__.py b/pygithub3/services/issues/__init__.py index ada2dca..f17ee91 100644 --- a/pygithub3/services/issues/__init__.py +++ b/pygithub3/services/issues/__init__.py @@ -1,9 +1,6 @@ # -*- encoding: utf-8 -*- -from datetime import datetime - from pygithub3.services.base import Service, MimeTypeMixin -from pygithub3.resources.base import GITHUB_DATE_FORMAT from .comments import Comments from .events import Events from .labels import Labels @@ -30,7 +27,7 @@ class Issue(Service, MimeTypeMixin): @high :param str sort: 'created', 'updated' or 'comments' :param str direction: 'asc' or 'desc' - :param datetime since: Date filter + :param datetime since: Date filter (datetime or str in ISO 8601) :returns: A :doc:`result` .. warning:: @@ -38,12 +35,7 @@ class Issue(Service, MimeTypeMixin): """ params = dict(filter=filter, state=state, labels=labels, sort=sort, direction=direction) - try: - date = datetime.strptime(since, GITHUB_DATE_FORMAT) - params.update(since=date) - except: - pass - + self._normalize_data('since', params) request = self.request_builder('issues.list') return self._get_result(request, **params) @@ -60,7 +52,7 @@ class Issue(Service, MimeTypeMixin): @high :param str sort: 'created', 'updated' or 'comments' :param str direction: 'asc' or 'desc' - :param datetime since: Date filter + :param datetime since: Date filter (datetime or str in ISO 8601) :returns: A :doc:`result` .. note:: @@ -68,12 +60,7 @@ class Issue(Service, MimeTypeMixin): """ params = dict(milestone=milestone, state=state, assignee=assignee, mentioned=mentioned, labels=labels, sort=sort, direction=direction) - try: - date = datetime.strptime(since, GITHUB_DATE_FORMAT) - params.update(since=date) - except: - pass - + self._normalize_data('since', params) request = self.make_request('issues.list_by_repo', user=user, repo=repo) return self._get_result(request, **params) diff --git a/pygithub3/services/issues/milestones.py b/pygithub3/services/issues/milestones.py index fa0f95d..ac43a0c 100644 --- a/pygithub3/services/issues/milestones.py +++ b/pygithub3/services/issues/milestones.py @@ -1,10 +1,8 @@ #!/usr/bin/env python # -*- encoding: utf-8 -*- -from datetime import datetime - from pygithub3.services.base import Service -from pygithub3.resources.base import GITHUB_DATE_FORMAT + class Milestones(Service): """ Consume `Milestones API @@ -43,14 +41,6 @@ class Milestones(Service): repo=repo, number=number) return self._get(request) - def _normalize_due_on(self, data): - """ If ``due_on`` comes as ``datetime``, it'll normalize it """ - try: - due_on = datetime.strptime(data.get('due_on'), GITHUB_DATE_FORMAT) - data.update({'due_on': due_on}) - except: - pass - def create(self, data, user=None, repo=None): """ Create a milestone @@ -64,7 +54,7 @@ class Milestones(Service): .. note:: Remember :ref:`config precedence` """ - self._normalize_due_on(data) + self._normalize_date('due_on', data) request = self.make_request('issues.milestones.create', user=user, repo=repo, body=data) return self._post(request) @@ -83,7 +73,7 @@ class Milestones(Service): .. note:: Remember :ref:`config precedence` """ - self._normalize_due_on(data) + self._normalize_date('due_on', data) request = self.make_request('issues.milestones.update', user=user, repo=repo, number=number, body=data) return self._patch(request) diff --git a/pygithub3/tests/services/test_core.py b/pygithub3/tests/services/test_core.py index 8a2bbbe..556f3d9 100644 --- a/pygithub3/tests/services/test_core.py +++ b/pygithub3/tests/services/test_core.py @@ -1,8 +1,9 @@ #!/usr/bin/env python # -*- encoding: utf-8 -*- -import requests +from datetime import datetime +import requests from mock import patch from pygithub3.tests.utils.core import TestCase @@ -54,6 +55,16 @@ class TestServiceCalls(TestCase): self.assertFalse(request_method.called) self.assertIsInstance(result, base.Result) + def test_normalize_ok(self, request_method): + data = {'test': datetime(2012, 12, 12, 3, 3, 3)} + self.s._normalize_date('test', data) + self.assertEqual(data['test'], '2012-12-12T03:03:03Z') + + def test_normalize_fail(self, request_method): + data = {'test': 'fail'} + self.s._normalize_date('test', data) + self.assertEqual(data['test'], 'fail') + @patch.object(requests.sessions.Session, 'request') class TestMimeType(TestCase): |