taiga-back/greenmine/scrum/management/commands/sample_data.py

144 lines
5.4 KiB
Python

# -*- coding: utf-8 -*-
from django.core.management.base import BaseCommand, CommandError
from django.db import transaction
from django.db.utils import IntegrityError
from django.core import management
from django.contrib.webdesign import lorem_ipsum
from django.utils.timezone import now
import random, sys, datetime
from greenmine.base.models import *
from greenmine.scrum.models import *
subjects = [
"Fixing templates for Django 1.2.",
"get_actions() does not check for 'delete_selected' in actions",
"Experimental: modular file types",
"Add setting to allow regular users to create folders at the root level.",
"add tests for bulk operations",
"create testsuite with matrix builds",
"Lighttpd support",
"Lighttpd x-sendfile support",
"Added file copying and processing of images (resizing)",
"Exception is thrown if trying to add a folder with existing name",
"Feature/improved image admin",
"Support for bulk actions",
]
class Command(BaseCommand):
@transaction.commit_on_success
def handle(self, *args, **options):
from django.core import management
management.call_command('loaddata', 'development_users')
users_counter = 0
def create_user(counter):
user = User.objects.create(
username = 'foouser%d' % (counter),
first_name = 'foouser%d' % (counter),
email = 'foouser%d@foodomain.com' % (counter),
)
return user
# projects
for x in xrange(3):
# create project
project = Project.objects.create(
name = 'Project Example %s' % (x),
description = 'Project example %s description' % (x),
owner = random.choice(list(User.objects.all()[:1])),
public = True,
)
project.add_user(project.owner, "developer")
extras = project.get_extras()
extras.show_burndown = True
extras.show_sprint_burndown = True
extras.sprints = 4
extras.save()
# add random participants to project
participants = []
for t in xrange(random.randint(1, 2)):
participant = create_user(users_counter)
participants.append(participant)
project.add_user(participant, "developer")
users_counter += 1
now_date = now() - datetime.timedelta(30)
# create random milestones
for y in xrange(2):
milestone = Milestone.objects.create(
project = project,
name = 'Sprint %s' % (y),
owner = project.owner,
created_date = now_date,
modified_date = now_date,
estimated_start = now_date,
estimated_finish = now_date + datetime.timedelta(15)
)
now_date = now_date + datetime.timedelta(15)
# create uss asociated to milestones
for z in xrange(5):
us = UserStory.objects.create(
subject = lorem_ipsum.words(random.randint(4,9), common=False),
priority = 6,
points = 3,
project = project,
owner = random.choice(participants),
description = lorem_ipsum.words(30, common=False),
milestone = milestone,
status = 'completed',
)
for tag in lorem_ipsum.words(random.randint(1,5), common=True).split(" "):
us.tags.add(tag)
for w in xrange(3):
task = Task.objects.create(
subject = "Task %s" % (w),
description = lorem_ipsum.words(30, common=False),
project = project,
owner = random.choice(participants),
milestone = milestone,
user_story = us,
status = 'completed',
)
# created unassociated uss.
for y in xrange(10):
us = UserStory.objects.create(
subject = lorem_ipsum.words(random.randint(4,9), common=False),
priority = 3,
points = 3,
status = 'open',
owner = random.choice(participants),
description = lorem_ipsum.words(30, common=False),
milestone = None,
project = project,
)
for tag in lorem_ipsum.words(random.randint(1,5), common=True).split(" "):
us.tags.add(tag)
# create bugs.
for y in xrange(20):
bug = Task.objects.create(
project = project,
type = "bug",
severity = random.randint(1,5),
subject = lorem_ipsum.words(random.randint(1,5), common=False),
description = lorem_ipsum.words(random.randint(1,15), common=False),
owner = project.owner,
)
for tag in lorem_ipsum.words(random.randint(1,5), common=True).split(" "):
bug.tags.add(tag)