Skip to content
Open
2 changes: 0 additions & 2 deletions pyvo/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,2 @@
VERSION = 0, 2, 0
DEV_STATUS = 3 # Alpha


3 changes: 1 addition & 2 deletions pyvo/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ def __init__(self, token,

def token_auth(self, request):
request.headers.update({
'x-trackertoken': self.token
'x-trackertoken': self.token,
})
return request

Expand All @@ -152,4 +152,3 @@ def __getattr__(self, k):
except AttributeError:
request = self.request(uriparts=[k])
return request

19 changes: 9 additions & 10 deletions pyvo/model/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,23 +4,28 @@ class ModelNotFound(Exception):
pass

def generate_resources(response, client=None):
from person import Me
from person import Me, Person, ProjectMembership
from project import Project
from story import Story, Epic
from story import Story, Epic, Task, Comment, FileAttachment
from metadata import Label

def generate(resource):
kind = resource['kind']

print "generating {}".format(kind)
print("generating {}".format(kind))

resource_class = {
'project': Project,
'me': Me,
'story': Story,
'epic': Epic,
'label': Label,
'error': Error
'error': Error,
'project_membership': ProjectMembership,
'person': Person,
'task': Task,
'comment': Comment,
'file_attachment': FileAttachment
}.get(kind)

if resource_class is None:
Expand All @@ -34,9 +39,3 @@ def generate(resource):
return (generate(resource) for resource in response)
else:
return generate(response)






4 changes: 0 additions & 4 deletions pyvo/model/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@


class PivotalResource(models.Base):

@classmethod
def with_client(cls, client, **data):
resource = cls(**data)
Expand Down Expand Up @@ -60,6 +59,3 @@ def __init__(self, *args):

def validate(self, value):
pass



1 change: 0 additions & 1 deletion pyvo/model/error.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,3 @@ class Error(PivotalResource):

def __str__(self):
return "{}".format(self.general_problem or self.error)

20 changes: 16 additions & 4 deletions pyvo/model/person.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
from base import PivotalResource, Instantiated, fields
from base import PivotalResource, Instantiated, fields, OneOf
from metadata import TimeZone
from project import MembershipSummary


class Me(Instantiated, PivotalResource):

name = fields.StringField()
initials = fields.StringField()
username = fields.StringField()
Expand All @@ -18,9 +17,22 @@ class Me(Instantiated, PivotalResource):


class Person(Instantiated, PivotalResource):

name = fields.StringField(required=True)
email = fields.StringField(required=True)
initials = fields.StringField()
username = fields.StringField()
kind = fields.StringField()
kind = fields.StringField()

class ProjectMembership(Instantiated, PivotalResource):
created_at = fields.DateTimeField()
updated_at = fields.DateTimeField()
person_id = fields.IntField()
project_id = fields.IntField()
role = fields.StringField(validators=OneOf('owner', 'member', 'viewer', 'inactive'))
project_color = fields.StringField()
favorite = fields.BoolField()
last_viewed_at = fields.DateTimeField()
wants_comment_notification_emails = fields.BoolField()
will_receive_mention_notifications_or_emails = fields.BoolField()
kind = fields.StringField()
person = fields.EmbeddedField(Person)
11 changes: 2 additions & 9 deletions pyvo/model/project.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@


class Project(Instantiated, PivotalResource):

name = fields.StringField(validators=PostValidators(RequiredOnPost()))
version = fields.IntField()
iteration_length = fields.IntField()
Expand Down Expand Up @@ -33,9 +32,7 @@ class Project(Instantiated, PivotalResource):
current_velocity = fields.IntField()
current_volatility = fields.FloatField()
account_id = fields.IntField()
accounting_type = fields.StringField(
validators=OneOf('unbillable',
'billable', 'overhead'))
accounting_type = fields.StringField(validators=OneOf('unbillable', 'billable', 'overhead'))
featured = fields.BoolField()
story_ids = fields.ListField()
epic_ids = fields.ListField()
Expand All @@ -46,12 +43,8 @@ class Project(Instantiated, PivotalResource):


class MembershipSummary(Instantiated, PivotalResource):

project_id = fields.IntField()
project_name = fields.StringField()
project_color = fields.StringField()
role = fields.StringField(
validators=OneOf('owner', 'member', 'viewer', 'inactive')
)
role = fields.StringField(validators=OneOf('owner', 'member', 'viewer', 'inactive'))
last_viewed_at = fields.DateTimeField()

35 changes: 31 additions & 4 deletions pyvo/model/story.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,16 @@
class Story(Instantiated, PivotalResource):
name = fields.StringField()
description = fields.StringField(validators=PostValidators(RequiredOnPost()))
story_type = fields.StringField(
validators=OneOf('feature', 'bug', 'chore', 'release')
)
story_type = fields.StringField(validators=OneOf('feature', 'bug', 'chore', 'release'))
current_state = fields.StringField(
validators=OneOf('accepted', 'delivered', 'finished',
'started', 'rejected', 'planned', 'unstarted', 'unscheduled')
'started', 'rejected', 'planned', 'unstarted', 'unscheduled')
)
estimate = fields.FloatField()
accepted_at = fields.DateTimeField()
deadline = fields.DateTimeField()
requested_by_id = fields.IntField()
owned_by_id = fields.IntField()
owner_ids = fields.ListField(int)
label_ids = fields.ListField(int)
task_ids = fields.ListField(int)
Expand Down Expand Up @@ -54,3 +53,31 @@ class Epic(Instantiated, PivotalResource):
past_done_stories_no_point_count = fields.IntField()
url = fields.StringField()

class FileAttachment(Instantiated, PivotalResource):
filename = fields.StringField()
created_at = fields.DateTimeField()
uploader_id = fields.IntField()
thumbnailable = fields.BoolField()
height = fields.IntField()
width = fields.IntField()
size = fields.IntField()
download_url = fields.StringField()
content_type = fields.StringField()
uploaded = fields.BoolField()
big_url = fields.StringField()
thumbnail_url = fields.StringField()
kind = fields.StringField()

class Comment(Instantiated, PivotalResource):
story_id = fields.IntField()
epic_id = fields.IntField()
text = fields.StringField()
person_id = fields.IntField()
created_at = fields.DateTimeField()
updated_at = fields.DateTimeField()
file_attachment_ids = fields.ListField(int)
google_attachment_ids = fields.ListField()
attachment_ids = fields.ListField()
commit_identifier = fields.StringField()
commit_type = fields.StringField()
kind = fields.StringField()
2 changes: 1 addition & 1 deletion tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ envlist = py27
commands = py.test {posargs}
deps =
-rrequirements.txt
pytest==2.7.2
pytest==2.9
pytest-describe
pytest-bdd
pytest-sugar