def dump_task(t, issues, time_entries): task = {} issues[task_key(t.id)] = task task['name'] = t.name task['type'] = 'Task' if t.owner is None: task['author'] = DEFAULT_USER else: task['author'] = t.owner.username task['assigned'] = t.owner.username task['description'] = totextile(t.description) task['status'] = Task.STATES.label(t.state) task['estimate'] = t.estimate task['remaining'] = t.remaining task['category'] = Task.CATEGORIES.label(t.category) task['parent'] = story_key(t.user_story.id) if not t.tags is None: task['tags'] = t.taglist if t.user_story.iteration: task['sprint'] = sprint_key(t.user_story.iteration.id) task['history'] = [] value = t.remaining for tl in t.tasklog_set.all(): if tl.old_remaining is None: tl.old_remaining = t.estimate if tl.old_remaining != value: j = journal(tl.date, tl.owner, 'remaining_hours', tl.old_remaining, value) value = tl.old_remaining task['history'].append(j) if not tl.owner is None and not tl.time_on_task is None and tl.time_on_task != 0: time_entries.append(time_entry_object(t, tl))
def time_entry_object(task, tasklog): te = {} te['timestamp'] = tasklog.date te['username'] = tasklog.owner.username te['issue'] = task_key(task.id) te['hours'] = tasklog.time_on_task te['comments'] = totextile(tasklog.summary) te['activity'] = Task.CATEGORIES.label(task.category) return te
def dump_impediment(i, issues): imp = {} issues[impediment_key(i.id)] = imp imp['name'] = impediment.name imp['author'] = DEFAULT_USER imp['type'] = 'Impediment' imp['description'] = totextile(impediment.description) imp['created'] = impediment.opened if impediment.resolved is None: imp['status'] = 'open' else: imp['status'] = 'closed' imp['history'] = [journal(impediment.resolved, None, 'status', 'open', 'closed')] imp['blocks'] = [] for t in Task.objects.filter(impediment=i).distinct(): imp['blocks'].append(task_key(t.id)) if t.user_story.iteration: imp['sprint'] = sprint_key(t.user_story.iteration.id)
def dump_story(s,issues): dump = {} issues[story_key(s.id)] = dump dump['name'] = '%s (#%d)' % (s.name, s.id) dump['type'] = 'Story' dump['author'] = DEFAULT_USER dump['description'] = totextile(s.description) dump['status'] = UserStory.STATES.label(s.state) dump['points'] = s.size dump['position'] = s.rank dump['created'] = s.created if s.iteration: dump['sprint'] = sprint_key(s.iteration.id) if not s.closed is None: dump['history'] = [journal(s.closed, None, 'status', UserStory.STATES.label(UserStory.STATES.SPECIFIED), dump['status'])] if not s.tags is None: dump['tags'] = s.taglist if s.state in UserStory.ENDSTATES: dump['done'] = 100 else: dump['done'] = 0
imp['status'] = 'open' else: imp['status'] = 'closed' imp['history'] = [journal(impediment.resolved, None, 'status', 'open', 'closed')] imp['blocks'] = [] for t in Task.objects.filter(impediment=i).distinct(): imp['blocks'].append(task_key(t.id)) if t.user_story.iteration: imp['sprint'] = sprint_key(t.user_story.iteration.id) for project in Project.objects.all(): print 'Generating %s...' % project.name pname = project.name if SAMPLE: pname = 'Sample' pdump = {'name': pname, 'sprints': {}, 'members': {}, 'description': totextile(project.description)} DEFAULT_USER = None if KEY_USERS.has_key(project.name): DEFAULT_USER = KEY_USERS[project.name] for user in project.project_members.all(): pdump['members'][tostr(user.username)] = { 'email': user.email, 'lastname': user.last_name, 'firstname': user.first_name, 'active': user.is_active, 'admin': user.is_superuser or user.is_staff, 'role': 'member' } if not DEFAULT_USER in pdump['members'].keys():