Skip to content

Commit

Permalink
CU-8693xmupv: interim commit of project groups. Front end needs to su…
Browse files Browse the repository at this point in the history
…pport the project group 'grouping'
  • Loading branch information
tomolopolis committed May 2, 2024
1 parent 1f84f92 commit 3227831
Show file tree
Hide file tree
Showing 7 changed files with 264 additions and 161 deletions.
8 changes: 8 additions & 0 deletions webapp/api/api/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -402,6 +402,14 @@ def formfield_for_manytomany(self, db_field, request, **kwargs):
admin.site.register(ProjectAnnotateEntities, ProjectAnnotateEntitiesAdmin)


class ProjectGroupAdmin(admin.ModelAdmin):
model = ProjectGroup
list_display = ('name', 'description')


admin.site.register(ProjectGroup, ProjectGroupAdmin)


class AnnotatedEntityAdmin(admin.ModelAdmin):
list_display = ('user', 'project', 'entity', 'value', 'deleted', 'validated')
list_filter = ('user', 'project', 'deleted', 'validated')
Expand Down
27 changes: 27 additions & 0 deletions webapp/api/api/migrations/0076_auto_20240501_1307.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Generated by Django 2.2.28 on 2024-05-01 13:07

from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

dependencies = [
('api', '0075_auto_20240429_1350'),
]

operations = [
migrations.CreateModel(
name='ProjectGroup',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.TextField()),
('description', models.TextField()),
],
),
migrations.AddField(
model_name='project',
name='group',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='api.ProjectGroup'),
),
]
9 changes: 9 additions & 0 deletions webapp/api/api/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,14 @@ def __str__(self):
return f'{self.name} | {self.dataset.name} | {self.dataset.id}'


class ProjectGroup(models.Model):
name = models.TextField()
description = models.TextField()

def __str__(self):
return self.name


class Project(PolymorphicModel):
PROJECT_STATUSES = [
("A", "Annotating"),
Expand All @@ -100,6 +108,7 @@ class Project(PolymorphicModel):
]
name = models.CharField(max_length=150)
description = models.TextField(default="", blank=True)
group = models.ForeignKey('ProjectGroup', on_delete=models.SET_NULL, blank=True, null=True)
annotation_guideline_link = models.TextField(default="", blank=True,
help_text="link to an external document (i.e. GoogleDoc, MS Sharepoint)"
"outlininng a guide for annotators to follow for this project,"
Expand Down
6 changes: 6 additions & 0 deletions webapp/api/api/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,12 @@ def to_representation(self, instance):
return data


class ProjectGroupSerializer(serializers.ModelSerializer):
class Meta:
model = ProjectGroup
fields = '__all__'


class DocumentSerializer(serializers.ModelSerializer):
class Meta:
model = Document
Expand Down
15 changes: 15 additions & 0 deletions webapp/api/api/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,21 @@ def get_queryset(self):
return projects


class ProjectGroupFilter(drf.FilterSet):
id__in = NumInFilter(field_name='id', lookup_expr='in')

class Meta:
model = ProjectGroup
fields = ['id', 'name', 'description']

class ProjectGroupViewSet(viewsets.ModelViewSet):
permission_classes = [permissions.IsAuthenticated]
queryset = ProjectGroup.objects.all()
serializer_class = ProjectGroupSerializer
filterset_fields = ['id']
filterset_class = ProjectGroupFilter


class AnnotatedEntityFilter(drf.FilterSet):
id__in = NumInFilter(field_name='id', lookup_expr='in')

Expand Down
1 change: 1 addition & 0 deletions webapp/api/core/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
router.register(r'users', api.views.UserViewSet)
router.register(r'entities', api.views.EntityViewSet)
router.register(r'project-annotate-entities', api.views.ProjectAnnotateEntitiesViewSet)
router.register(r'project-groups', api.views.ProjectGroupViewSet)
router.register(r'documents', api.views.DocumentViewSet)
router.register(r'annotated-entities', api.views.AnnotatedEntityViewSet)
router.register(r'meta-annotations', api.views.MetaAnnotationViewSet)
Expand Down
Loading

0 comments on commit 3227831

Please sign in to comment.