From cd2363f3e71d333b8e5950450be12dd439fb11dd Mon Sep 17 00:00:00 2001 From: aristidesfl Date: Sun, 6 Feb 2011 04:50:19 +0000 Subject: [PATCH 1/8] transformed the repository in a package to be easily imported while a submodule --- __init__.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 __init__.py diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000..e69de29 From bccfd24b550dff3a4cf28bdb2d79515496d416f8 Mon Sep 17 00:00:00 2001 From: aristidesfl Date: Sun, 6 Feb 2011 04:54:00 +0000 Subject: [PATCH 2/8] added method: get_new_tickets Retrieves all the tickets in the first page of a project, then returns a list with the new ones. --- lighthouse.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lighthouse.py b/lighthouse.py index e2bb70f..8153807 100644 --- a/lighthouse.py +++ b/lighthouse.py @@ -326,6 +326,14 @@ def get_tickets(self, project, page=1): project.tickets[t_obj.number] = t_obj return c + def get_new_tickets(self, project): + """Retrieves all the tickets in the first page of a project, + then returns a list with the new ones. + """ + old_tickets = project.tickets; + self.get_tickets(project) + return list(set(project.tickets).difference(set(old_tickets))) + def get_full_ticket(self, project, ticket): path = Ticket.endpoint_single % (project.id, ticket.number) ticket_data = self._get_data(path) From 43c42b23a54c9e72c470b3a74105e37e5f5cab83 Mon Sep 17 00:00:00 2001 From: aristidesfl Date: Sun, 6 Feb 2011 05:00:19 +0000 Subject: [PATCH 3/8] complemented the description of get_tickets() --- lighthouse.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lighthouse.py b/lighthouse.py index 8153807..bee0105 100644 --- a/lighthouse.py +++ b/lighthouse.py @@ -271,7 +271,8 @@ def get_all_tickets(self, project): page += 1 def get_tickets(self, project, page=1): - """Retrieves all the tickets in a project + """Retrieves all the tickets in a page of a project. + If no page is specified, uses the first one. >>> lh = Lighthouse() >>> lh.url = 'http://ars.lighthouseapp.com' From 728a148462b3fd76ae3f3c12d25c9c5d8a0956f3 Mon Sep 17 00:00:00 2001 From: aristidesfl Date: Sun, 6 Feb 2011 07:07:10 +0000 Subject: [PATCH 4/8] correction in get_tickets() documentation --- lighthouse.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse.py b/lighthouse.py index bee0105..970af43 100644 --- a/lighthouse.py +++ b/lighthouse.py @@ -272,7 +272,7 @@ def get_all_tickets(self, project): def get_tickets(self, project, page=1): """Retrieves all the tickets in a page of a project. - If no page is specified, uses the first one. + If no page is specified, the first is used. >>> lh = Lighthouse() >>> lh.url = 'http://ars.lighthouseapp.com' From cdebe95cd5afcf6546801d4442d70a623103297c Mon Sep 17 00:00:00 2001 From: aristidesfl Date: Mon, 7 Feb 2011 05:00:27 +0000 Subject: [PATCH 5/8] fixed identation problems --- __init__.pyc | Bin 0 -> 163 bytes lighthouse.py | 16 ++++++++-------- lighthouse.pyc | Bin 0 -> 16219 bytes xmltodict.pyc | Bin 0 -> 6450 bytes 4 files changed, 8 insertions(+), 8 deletions(-) create mode 100644 __init__.pyc create mode 100644 lighthouse.pyc create mode 100644 xmltodict.pyc diff --git a/__init__.pyc b/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..69e2821e7c3db6f04b67a89d177bb1ed88026cfd GIT binary patch literal 163 zcmcckiI*!T#osrX0SXv_v;zqg#rnmi1(iwpCHe(9rRkY@#ri&(=@}&%`K86F`Z@W@i8=Z?aDl{vO#S%y%)HE! b_;|g7$`THsfi}7MDWy57b|7nuftUdR@!Tjp literal 0 HcmV?d00001 diff --git a/lighthouse.py b/lighthouse.py index 970af43..cd0300c 100644 --- a/lighthouse.py +++ b/lighthouse.py @@ -327,14 +327,14 @@ def get_tickets(self, project, page=1): project.tickets[t_obj.number] = t_obj return c - def get_new_tickets(self, project): - """Retrieves all the tickets in the first page of a project, - then returns a list with the new ones. - """ - old_tickets = project.tickets; - self.get_tickets(project) - return list(set(project.tickets).difference(set(old_tickets))) - + def get_new_tickets(self, project): + """Retrieves all the tickets in the first page of a project, + then returns a list with the new ones. + """ + old_tickets = project.tickets; + self.get_tickets(project) + return list(set(project.tickets).difference(set(old_tickets))) + def get_full_ticket(self, project, ticket): path = Ticket.endpoint_single % (project.id, ticket.number) ticket_data = self._get_data(path) diff --git a/lighthouse.pyc b/lighthouse.pyc new file mode 100644 index 0000000000000000000000000000000000000000..553f861b565c918b5ec5ac25b656703747ee6a27 GIT binary patch literal 16219 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 literal 0 HcmV?d00001 From 6a30786df70cda3613924faff05e034dd840375f Mon Sep 17 00:00:00 2001 From: aristidesfl Date: Mon, 7 Feb 2011 05:03:49 +0000 Subject: [PATCH 6/8] gir rm .pyc files --- .gitignore | 1 + __init__.pyc | Bin 163 -> 0 bytes lighthouse.pyc | Bin 16219 -> 0 bytes xmltodict.pyc | Bin 6450 -> 0 bytes 4 files changed, 1 insertion(+) create mode 100644 .gitignore delete mode 100644 __init__.pyc delete mode 100644 lighthouse.pyc delete mode 100644 xmltodict.pyc diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..df2219c --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*pyc \ No newline at end of file diff --git a/__init__.pyc b/__init__.pyc deleted file mode 100644 index 69e2821e7c3db6f04b67a89d177bb1ed88026cfd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 163 zcmcckiI*!T#osrX0SXv_v;zqg#rnmi1(iwpCHe(9rRkY@#ri&(=@}&%`K86F`Z@W@i8=Z?aDl{vO#S%y%)HE! b_;|g7$`THsfi}7MDWy57b|7nuftUdR@!Tjp diff --git a/lighthouse.pyc b/lighthouse.pyc deleted file mode 100644 index 553f861b565c918b5ec5ac25b656703747ee6a27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16219 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 From 0c6e7ceb969bbd0a1776c71bf2d570c151cfd62a Mon Sep 17 00:00:00 2001 From: Maximillian Dornseif Date: Fri, 25 Feb 2011 22:55:40 +0100 Subject: [PATCH 7/8] fix __repr__ of non-ASCII titles --- lighthouse.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse.py b/lighthouse.py index cd0300c..039d8e9 100644 --- a/lighthouse.py +++ b/lighthouse.py @@ -393,7 +393,7 @@ def __init__(self): def __repr__(self): if self.title: - return "Ticket: %s" % (self.title,) + return "Ticket: %s" % (self.title.encode('ascii', 'replace'),) else: return "Ticket: Unnamed" From c21df61c889d003ead8ae3d40c0b371f92288cb5 Mon Sep 17 00:00:00 2001 From: Maximillian Dornseif Date: Mon, 9 Jan 2012 19:50:44 +0100 Subject: [PATCH 8/8] handle pages with more than 30 entries also fixes non existan `children` attribute - this is from https://github.com/Kjuly/python-lighthouse-api/commit/a6906abdf5d3271da4c11f20a9d205f7494434d5 --- lighthouse.py | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/lighthouse.py b/lighthouse.py index 039d8e9..dcb0e29 100644 --- a/lighthouse.py +++ b/lighthouse.py @@ -265,7 +265,7 @@ def get_all_tickets(self, project): c = 30 page = 1 ticket_count = 0 - while c == 30: + while c >= 30: c = self.get_tickets(project, page) ticket_count += c page += 1 @@ -317,14 +317,15 @@ def get_tickets(self, project, page=1): if(ticket_list.get('children', None)): for ticket in ticket_list['children']: c += 1 - t_obj = Ticket() - for field in ticket['children']: - field_name, field_value, field_type = \ - self._parse_field(field) - py_field_name = field_name.replace('-', '_') - t_obj.__setattr__(py_field_name, field_value) - t_obj.fields.add(py_field_name) - project.tickets[t_obj.number] = t_obj + if( ticket.get('children', None) ): # Got the KeyError 'children', so check whether it exists + t_obj = Ticket() + for field in ticket['children']: + field_name, field_value, field_type = \ + self._parse_field(field) + py_field_name = field_name.replace('-', '_') + t_obj.__setattr__(py_field_name, field_value) + t_obj.fields.add(py_field_name) + project.tickets[t_obj.number] = t_obj return c def get_new_tickets(self, project): @@ -338,9 +339,9 @@ def get_new_tickets(self, project): def get_full_ticket(self, project, ticket): path = Ticket.endpoint_single % (project.id, ticket.number) ticket_data = self._get_data(path) + for field in ticket_data['children']: - field_name, field_value, field_type = \ - self._parse_field(field) + field_name, field_value, field_type = self._parse_field(field) py_field_name = field_name.replace('-', '_') ticket.__setattr__(py_field_name, field_value) ticket.fields.add(py_field_name) @@ -437,4 +438,4 @@ def __init__(self, arg): if __name__ == "__main__": import doctest - doctest.testmod(optionflags=doctest.IGNORE_EXCEPTION_DETAIL) \ No newline at end of file + doctest.testmod(optionflags=doctest.IGNORE_EXCEPTION_DETAIL)