Exemple #1
0
def sprintCleanup():
	for sprint in Sprint.loadAll():
		if 'deleted' in sprint.flags:
			sprint.delete(deep = True)
			print "Deleted sprint %d (%s: %s)<br>" % (sprint.id, sprint.project.safe.name, sprint.safe.name)
			continue

		if (not sprint.isOver()) or 'cleaned-up' in sprint.flags:
			continue
		tasks = Task.loadAll(sprintid = sprint.id, deleted = False)
		tasks = filter(lambda task: task.stillOpen(), tasks)

		for task in tasks:
			task.status = 'deferred'
			task.creator = sprint.owner
			task.timestamp = sprint.end
			task.revise()

		sprint.flags.add('cleaned-up')
		sprint.save()
		print "Cleaned up sprint %d (%s: %s): %s deferred<br>" % (sprint.id, sprint.project.safe.name, sprint.safe.name, pluralize(len(tasks), 'task', 'tasks'))
Exemple #2
0
def apiSprintsList(handler, calendar = False, start = None, end = None, _ = None):
	def die(msg):
		print toJS({'error': msg})
		done()

	handler.wrappers = False
	start = int(start) if start else None
	end = int(end) if end else None

	sprints = filter(lambda sprint: not sprint.isHidden(handler.session['user']), Sprint.loadAll())
	if start and end:
		sprints = filter(lambda sprint: (start <= sprint.start <= end) or (start <= sprint.end <= end), sprints)

	rtn = [{'id': sprint.id,
	        'title': "%s - %s" % (sprint.project.name, sprint.name) if calendar else sprint.name,
	        'start': tsToDate(sprint.start).strftime('%Y-%m-%d'),
	        'end': tsToDate(sprint.end).strftime('%Y-%m-%d'),
	        'active': sprint.isActive(),
	        'member': handler.session['user'] in sprint.members
	       } for sprint in sprints]
	if calendar:
		for entry in rtn:
			entry.update({'color': 'green' if entry['member'] and entry['active'] else '#36c;'})
	print toJS(rtn)