Skip to content

Commit 34c08bb

Browse files
committed
Adding support for extraction of a Ticket's comments via Ticket.comments().
Fixes markfinger#23
1 parent 8b9e254 commit 34c08bb

File tree

3 files changed

+45
-0
lines changed

3 files changed

+45
-0
lines changed

README.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ methods and properties:
7272
- [milestone()](#ticketmilestone)
7373
- [user()](#ticketuser)
7474
- [component()](#ticketcomponent)
75+
- [comments()](#ticketcomments)
7576
- [write()](#ticketwrite)
7677
- [delete()](#ticketdelete)
7778
- [User](#user)
@@ -209,6 +210,9 @@ Returns an instance of the [User](#user) that the Ticket is assigned to.
209210
###Ticket.component()
210211
An instance of the [Component](#component) that the Ticket is assigned to.
211212

213+
###Ticket.comments()
214+
Returns a list of the [Ticket Comment](#ticket-comment) instances relating to the Ticket.
215+
212216
###Ticket.write()
213217
Calling Ticket.write() sends the ticket back to Assembla. The ticket object must have a `space` attribute
214218
set to the corresponding [Space](#space) object.
@@ -224,6 +228,12 @@ Calling Ticket.delete() deletes the ticket from Assembla. The ticket object must
224228
set to the corresponding [Space](#space) object.
225229

226230

231+
Ticket Comment
232+
--------------------------------------------------
233+
234+
See the [Ticket Comment object field reference](http://api-doc.assembla.com/content/ref/ticket_comments_fields.html#fields)
235+
for field names and explanations.
236+
227237

228238
User
229239
--------------------------------------------------

assembla/api.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -452,6 +452,31 @@ def component(self, extra_params=None):
452452
if components:
453453
return components[0]
454454

455+
@assembla_filter
456+
def comments(self, extra_params=None):
457+
"""
458+
All Comments in this Ticket
459+
"""
460+
461+
# Default params
462+
params = {
463+
'per_page': settings.MAX_PER_PAGE,
464+
}
465+
466+
if extra_params:
467+
params.update(extra_params)
468+
469+
return self.api._get_json(
470+
TicketComment,
471+
space=self,
472+
rel_path=self.space._build_rel_path(
473+
'tickets/%s/ticket_comments' % self['number']
474+
),
475+
extra_params=params,
476+
get_all=True, # Retrieve all comments in the ticket
477+
)
478+
479+
455480
def write(self):
456481
"""
457482
Create or update the Ticket on Assembla
@@ -484,6 +509,10 @@ def delete(self):
484509
)
485510

486511

512+
class TicketComment(AssemblaObject):
513+
pass
514+
515+
487516
class User(AssemblaObject):
488517
@assembla_filter
489518
def tickets(self, extra_params=None):

assembla/lib.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,19 @@ def get(self, *args, **kwargs):
2424
return self.data.get(*args, **kwargs)
2525

2626
def __repr__(self):
27+
# Most objects
2728
for field in ('menu_name', 'page_name', 'name',):
2829
if field in self.data:
2930
return '<%s: %s>' % (type(self).__name__, self.data[field])
3031

32+
# Tickets
3133
if ('number' in self.data) and ('summary' in self.data):
3234
return "<%s: #%s - %s>" % (type(self).__name__, self.data['number'], self.data['summary'])
3335

36+
# Ticket Comments
37+
if 'id' in self.data:
38+
return "<%s: #%s>" % (type(self).__name__, self.data['id'])
39+
3440
return super(AssemblaObject, self).__repr__()
3541

3642

0 commit comments

Comments
 (0)