diff --git a/greenmine/base/api.py b/greenmine/base/api.py index 3f710506..4d890388 100644 --- a/greenmine/base/api.py +++ b/greenmine/base/api.py @@ -65,11 +65,9 @@ class RoleList(generics.ListCreateAPIView): class UserFilter(django_filters.FilterSet): - is_active = django_filters.BooleanFilter(name="is_active") - class Meta: model = User - fields = ['is_active',] + fields = ['is_active'] class UserList(generics.ListCreateAPIView): diff --git a/greenmine/base/serializers.py b/greenmine/base/serializers.py index fa071063..92de8a2c 100644 --- a/greenmine/base/serializers.py +++ b/greenmine/base/serializers.py @@ -54,11 +54,16 @@ class LoginSerializer(serializers.Serializer): class UserSerializer(serializers.ModelSerializer): + projects = serializers.SerializerMethodField('get_projects') + class Meta: model = User - fields = ('id', 'username', 'first_name', 'last_name', 'color', 'is_active',) + fields = ('id', 'username', 'first_name', 'last_name', 'color', 'is_active', 'projects') + def get_projects(self, obj): + return [x.id for x in obj.projects.all()] + class RoleSerializer(serializers.ModelSerializer): class Meta: model = Role diff --git a/greenmine/scrum/api.py b/greenmine/scrum/api.py index 6251f68c..c5e2b219 100644 --- a/greenmine/scrum/api.py +++ b/greenmine/scrum/api.py @@ -140,6 +140,7 @@ class TaskList(generics.ListCreateAPIView): def pre_save(self, obj): obj.owner = self.request.user + obj.milestone = obj.user_story.milestone class TaskDetail(generics.RetrieveUpdateDestroyAPIView): diff --git a/greenmine/scrum/management/commands/sample_data.py b/greenmine/scrum/management/commands/sample_data.py index 3c84087c..3e82877b 100644 --- a/greenmine/scrum/management/commands/sample_data.py +++ b/greenmine/scrum/management/commands/sample_data.py @@ -107,9 +107,7 @@ class Command(BaseCommand): owner=random.choice(users), milestone=milestone, user_story=us, - severity=Severity.objects.get(project=project, order=2), status=TaskStatus.objects.get(project=project, order=4), - priority=Priority.objects.get(project=project, order=3), ) # created unassociated uss. diff --git a/greenmine/scrum/models.py b/greenmine/scrum/models.py index 142f9301..a41b9e4e 100644 --- a/greenmine/scrum/models.py +++ b/greenmine/scrum/models.py @@ -224,18 +224,28 @@ class Project(models.Model): class Milestone(models.Model): - uuid = models.CharField(max_length=40, unique=True, null=False, blank=True, + uuid = models.CharField( + max_length=40, unique=True, null=False, blank=True, verbose_name=_('uuid')) - name = models.CharField(max_length=200, db_index=True, null=False, blank=False, + + name = models.CharField( + max_length=200, db_index=True, null=False, blank=False, verbose_name=_('name')) + slug = models.SlugField(max_length=250, unique=True, null=False, blank=True, verbose_name=_('slug')) - owner = models.ForeignKey('base.User', null=True, blank=False, - related_name='owned_milestones', - verbose_name=_('owner')) - project = models.ForeignKey('Project', null=False, blank=False, + + owner = models.ForeignKey( + 'base.User', + null=True, blank=True, + related_name='owned_milestones', verbose_name=_('owner')) + + project = models.ForeignKey( + 'Project', + null=False, blank=False, related_name='milestones', verbose_name=_('project')) + estimated_start = models.DateField(null=True, blank=True, default=None, verbose_name=_('estimated start')) estimated_finish = models.DateField(null=True, blank=True, default=None, diff --git a/greenmine/scrum/serializers.py b/greenmine/scrum/serializers.py index ed497aae..964b1a15 100644 --- a/greenmine/scrum/serializers.py +++ b/greenmine/scrum/serializers.py @@ -63,7 +63,7 @@ class AttachmentSerializer(serializers.ModelSerializer): class TaskSerializer(serializers.ModelSerializer): - tags = PickleField() + tags = PickleField(blank=True, default=[]) class Meta: model = Task