Navigation works!
This commit is contained in:
93
models/models.py
Normal file
93
models/models.py
Normal file
@@ -0,0 +1,93 @@
|
||||
import dateutil
|
||||
import sys
|
||||
|
||||
class AsanaObject(object):
|
||||
def __init__(self, object_dict):
|
||||
self.object_dict = object_dict
|
||||
|
||||
def id(self):
|
||||
return self.object_dict['id']
|
||||
|
||||
def name(self):
|
||||
if 'name' in self.object_dict:
|
||||
return self.object_dict['name']
|
||||
else:
|
||||
return ''
|
||||
|
||||
class User(AsanaObject):
|
||||
def workspaces(self):
|
||||
return [AsanaObject(w) for w in self.object_dict['workspaces']]
|
||||
|
||||
class Task(AsanaObject):
|
||||
def name(self):
|
||||
if self.object_dict['completed']:
|
||||
return '✓ %s' % super(self).name()
|
||||
return super(Task, self).name()
|
||||
|
||||
def assignee(self):
|
||||
if 'assignee' in self.object_dict:
|
||||
return User(self.object_dict['assignee'])
|
||||
else:
|
||||
return None
|
||||
|
||||
def atm_section(self):
|
||||
return self.object_dict['assignee_status']
|
||||
|
||||
def description(self):
|
||||
if 'notes' in self.object_dict:
|
||||
return self.object_dict['notes']
|
||||
else:
|
||||
return None
|
||||
|
||||
def due_date(self):
|
||||
if 'due_at' in self.object_dict:
|
||||
return dateutil.parser.parse(self.object_dict['due_at'])
|
||||
elif 'due_one' in self.object_dict:
|
||||
return dateutil.parser.parse(self.object_dict['due_on'])
|
||||
else:
|
||||
return None
|
||||
|
||||
def parent(self):
|
||||
if 'parent' in self.object_dict and self.object_dict['parent']:
|
||||
return Task(self.object_dict['parent'])
|
||||
else:
|
||||
return None
|
||||
|
||||
def projects(self):
|
||||
if 'projects' in self.object_dict:
|
||||
return [Project(p) for p in self.object_dict['projects']]
|
||||
else:
|
||||
return []
|
||||
|
||||
def custom_fields(self):
|
||||
if 'custom_fields' in self.object_dict:
|
||||
return [CustomField(c) for c in self.object_dict['custom_fields']]
|
||||
else:
|
||||
return []
|
||||
class Project(AsanaObject):
|
||||
def description(self):
|
||||
if 'notes' in self.object_dict:
|
||||
return self.object_dict['notes']
|
||||
else:
|
||||
return ''
|
||||
|
||||
class CustomField(AsanaObject):
|
||||
def string_value(self):
|
||||
if 'text_value' in self.object_dict:
|
||||
return self.object_dict['text_value']
|
||||
elif 'number_value' in self.object_dict:
|
||||
return self.object_dict['number_value']
|
||||
elif 'enum_value' in self.object_dict and self.object_dict['enum_value']:
|
||||
enum_value = AsanaObject(self.object_dict['enum_value'])
|
||||
return enum_value.name()
|
||||
|
||||
return ''
|
||||
|
||||
class Story(AsanaObject):
|
||||
def string_value(self):
|
||||
if 'created_by' in self.object_dict:
|
||||
creator = self.object_dict['created_by']['name'] + ' '
|
||||
else:
|
||||
creator = ''
|
||||
|
||||
return '%s%s' % (creator, self.object_dict['text'])
|
||||
Reference in New Issue
Block a user