Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(Aplose): Rename "tag" to "label" [ADEV-63] #203

Merged
merged 141 commits into from
Jun 24, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
141 commits
Select commit Hold shift + click to select a range
acbf1aa
chore(frontend): initialize aplose frontend with Vite instead of depr…
rvovard Nov 8, 2023
2311abc
chore(frontend): initialize aplose frontend with Vite - part 2 (edit …
rvovard Nov 8, 2023
d6bf727
chore(frontend): move files to use TypeScript (editing will be done i…
rvovard Nov 24, 2023
47a1a61
chore(frontend): update main.tsx for ViteJS and add forgotten react-r…
rvovard Nov 24, 2023
7841cf9
chore(vitejs): update all component files with no big modifications t…
rvovard Nov 24, 2023
009cb2b
chore(frontend): update a new batch of components for typescript
rvovard Dec 14, 2023
2cdb599
chore(frontend): __WIP__ update AudioAnnotator component for typescri…
rvovard Dec 14, 2023
18a8ec5
App & Auth
ElodieENSTA Jan 3, 2024
faf1410
DatasetList
ElodieENSTA Jan 3, 2024
1c7b7e2
Annotation campaign list
ElodieENSTA Jan 3, 2024
c21d100
Annotation campaign detail
ElodieENSTA Jan 3, 2024
746e7e5
Annotation task list
ElodieENSTA Jan 3, 2024
b22597b
CreateAnnotationCampaign.tsx
ElodieENSTA Jan 3, 2024
4ecacb1
EditAnnotationCampaign.tsx
ElodieENSTA Jan 3, 2024
048615c
AudioAnnotator.tsx
ElodieENSTA Jan 4, 2024
a5e0ebf
fix DatasetList.tsx
ElodieENSTA Jan 4, 2024
4d79fea
fix wip
ElodieENSTA Jan 9, 2024
f7739a9
Cypress cherry pick
ElodieENSTA Jan 9, 2024
1aa3cbd
Datasets tests updated
ElodieENSTA Jan 9, 2024
90db1db
AnnotationCampaignDetail.tsx
ElodieENSTA Jan 9, 2024
29d2db7
wip - annotator
ElodieENSTA Jan 10, 2024
556aba8
wip - auth
ElodieENSTA Jan 11, 2024
3902966
wip - auth
ElodieENSTA Jan 11, 2024
b066fcd
wip - global components
ElodieENSTA Jan 11, 2024
e0e635b
wip - global components
ElodieENSTA Jan 11, 2024
a9b3454
wip - global components
ElodieENSTA Jan 11, 2024
88115d2
wip - login page
ElodieENSTA Jan 11, 2024
a691162
wip - dataset list page
ElodieENSTA Jan 11, 2024
879694d
wip - annotation campaign list page
ElodieENSTA Jan 11, 2024
6ce867d
wip - annotation campaign detail page
ElodieENSTA Jan 11, 2024
0efc57d
wip - annotation campaign create/edit page
ElodieENSTA Jan 11, 2024
2b0e104
wip - annotation task list page
ElodieENSTA Jan 11, 2024
0eb1951
wip - annotator
ElodieENSTA Jan 15, 2024
e75c46f
wip - annotator refacto done > next start testing
ElodieENSTA Jan 26, 2024
7a59c12
FIX login
ElodieENSTA Jan 26, 2024
098855d
FIX login
ElodieENSTA Jan 26, 2024
1109980
FIX datasets
ElodieENSTA Jan 29, 2024
707a16f
FIX campaigns
ElodieENSTA Jan 29, 2024
72ca34d
FIX campaign creation
ElodieENSTA Jan 29, 2024
63010fa
FIX Annotator - Spectro
ElodieENSTA Jan 30, 2024
1aa031d
FIX Annotator - Pointer
ElodieENSTA Jan 30, 2024
2b49e58
clean logs
ElodieENSTA Jan 30, 2024
96771a1
FIX annotator for whole files
ElodieENSTA Feb 1, 2024
757ba64
FIX annotator
ElodieENSTA Feb 1, 2024
45e6536
remove unused tests
ElodieENSTA Feb 1, 2024
7b37714
rebase - applied navgation fix from master
ElodieENSTA Feb 1, 2024
d9256be
Sort collaborators by level, name
ElodieENSTA Feb 1, 2024
c6aa569
Fix workflow
ElodieENSTA Feb 1, 2024
337d633
FIX Cypress CI
ElodieENSTA Feb 1, 2024
b7659d2
FIX CI
ElodieENSTA Feb 1, 2024
16aee92
Fix docker compose & small fixes
ElodieENSTA Feb 1, 2024
50620fc
FIX play/pause shortcut for annotation playing and minimal size for b…
ElodieENSTA Feb 1, 2024
8f0a103
remove dev logs
ElodieENSTA Feb 1, 2024
c41a819
[Data] Création du modèle "Detector"
ElodieENSTA Feb 2, 2024
dd8b805
[Data] Evolution des modèles
ElodieENSTA Feb 5, 2024
96b8717
New create campaign page with new style
ElodieENSTA Feb 6, 2024
149c54e
New create campaign page with new style
ElodieENSTA Feb 6, 2024
c9e80ea
Campaign creation form > annotation bloc component
ElodieENSTA Feb 6, 2024
fc4740c
Move searchbar component
ElodieENSTA Feb 7, 2024
4841b44
Import existing result for check campaign ok
ElodieENSTA Feb 20, 2024
6449237
annotator and result csv export updated
ElodieENSTA Feb 21, 2024
a51e0d9
Merge remote-tracking branch 'origin/master' into feature/double_check
ElodieENSTA Feb 21, 2024
4cfcbbd
Fix add instruction URL to annotation task retrieve
ElodieENSTA Feb 23, 2024
1d8f710
Remove materialize.min.css
ElodieENSTA Feb 23, 2024
8b16c40
Remove unused components
ElodieENSTA Feb 23, 2024
3e44888
Dataset list page
ElodieENSTA Mar 8, 2024
506c4e8
Login page: add autocomplete info on inputs
ElodieENSTA Mar 8, 2024
54f1624
Login page: add autocomplete info on inputs
ElodieENSTA Mar 8, 2024
9a34ec5
Annotation campaign list
ElodieENSTA Mar 8, 2024
bbbbc8f
New input component
ElodieENSTA Mar 11, 2024
fb64d76
New select component
ElodieENSTA Mar 12, 2024
5d9d9c5
New chips-input component
ElodieENSTA Mar 12, 2024
42cdf73
New textarea component
ElodieENSTA Mar 12, 2024
752fc7c
New Drag-n-drop file input component
ElodieENSTA Mar 12, 2024
608f98b
New searchbar component
ElodieENSTA Mar 12, 2024
93174f3
Improve Drag n drop file input test with actual input file
ElodieENSTA Mar 13, 2024
094522c
remove logs
ElodieENSTA Mar 13, 2024
4d7eae3
Fix seeding was creating 2 sound001.wav per dataset
ElodieENSTA Mar 14, 2024
737407d
Create campaign tests + backend tests
ElodieENSTA Mar 18, 2024
45cd1b4
Update recover campaign information tests
ElodieENSTA Mar 19, 2024
eb744ed
Edit campaign
ElodieENSTA Mar 19, 2024
0ffeba7
Seed now create whole file campaigns
ElodieENSTA Mar 19, 2024
b7642e4
FIX pointer indicator on leave should disappear
ElodieENSTA Mar 19, 2024
8a29143
Small fixes
ElodieENSTA Mar 19, 2024
134ea5b
Merge remote-tracking branch 'origin/master' into feature/double_check
ElodieENSTA Mar 19, 2024
7ea1168
Fix CI
ElodieENSTA Mar 19, 2024
949eaf7
FIX Pylint issues
ElodieENSTA Apr 2, 2024
ebf9ed0
[ADEV-10] Fix error while uploading only some of all detectors in file
ElodieENSTA Apr 3, 2024
e50bf92
Try fix CI
ElodieENSTA Apr 10, 2024
1b83e27
Try fix CI
ElodieENSTA Apr 10, 2024
3862e4c
FIX creating multiple detectors with same config
ElodieENSTA Apr 12, 2024
35c0b51
FIX: file upload on firefox
ElodieENSTA Apr 12, 2024
1295b9e
FIX create issue with confidence set
ElodieENSTA Apr 11, 2024
f149a9b
fix import
ElodieENSTA Apr 11, 2024
b90601f
fix css
ElodieENSTA Apr 11, 2024
da876b0
Remove useless TODO
ElodieENSTA Apr 11, 2024
ab5c6e6
Clean after review
ElodieENSTA Apr 15, 2024
40605f5
Fix import issues
ElodieENSTA Apr 16, 2024
eac483c
[ADEV-95] Handle task without annotations to check
ElodieENSTA Apr 17, 2024
3d90e4a
[ADEV-96] Replace "annotations" by "detections" in annotator for chec…
ElodieENSTA Apr 19, 2024
e6d0e2e
[ADEV-103] Show CSV import errors in view
ElodieENSTA Apr 22, 2024
659f9d6
[ADEV-93] Improve Detector form on CSV import
ElodieENSTA Apr 24, 2024
9c4dcd0
[ADEV-111] Import double-check annotations based on the timestamp rat…
ElodieENSTA Apr 30, 2024
4ce8a61
Fix test after review
ElodieENSTA Apr 30, 2024
0613447
Removed "campaign_user_list" tests after review
ElodieENSTA Apr 30, 2024
7227442
Update User interface to class after review
ElodieENSTA Apr 30, 2024
0c409a8
Update package.json
ElodieENSTA May 2, 2024
4f8b85b
[ADEV-111] Add error for results where back cannot associate files ; …
ElodieENSTA May 7, 2024
7bb4ff6
[ADEV-117] Add results counts on task list
ElodieENSTA May 7, 2024
3f19ee9
Add loading behavior at campaign creation submit
ElodieENSTA May 13, 2024
01eee4f
[ADEV-117] Fix: tasks request must filter annotator
ElodieENSTA May 13, 2024
166b9bb
[ADEV-38] Login page
ElodieENSTA Mar 21, 2024
ede41d9
[ADEV-38] Dataset page
ElodieENSTA Mar 21, 2024
a6ce793
[ADEV-54] Fix validate empty dataset list to import was disabling the…
ElodieENSTA Mar 21, 2024
b8bdf95
[ADEV-38] Create / Edit campaigns
ElodieENSTA Mar 21, 2024
5c5d51b
[ADEV-38] Create / Edit campaigns & Login -> Unblock buttons if the r…
ElodieENSTA Mar 22, 2024
43fdf60
[ADEV-38] Annotator
ElodieENSTA Mar 22, 2024
c3f853c
[ADEV-38] Create / Edit campaigns
ElodieENSTA Mar 21, 2024
a5f22a1
[ADEV-38] Create / Edit campaigns & Login -> Unblock buttons if the r…
ElodieENSTA Mar 22, 2024
cafce75
[ADEV-57] Add a reference to the areShortcutsEnabled state to have up…
ElodieENSTA Apr 2, 2024
815fe2c
[ADEV-38] Create / Edit campaigns
ElodieENSTA Mar 21, 2024
74152f0
[ADEV-38] Create / Edit campaigns & Login -> Unblock buttons if the r…
ElodieENSTA Mar 22, 2024
859629a
[ADEV-55] Ajouter un bandeau "Proposé par Osmose"
ElodieENSTA Mar 22, 2024
bb4b32f
FIX rebase
ElodieENSTA Apr 10, 2024
9b89144
[ADEV-38] Create / Edit campaigns
ElodieENSTA Mar 21, 2024
7a92c7e
[ADEV-38] Create / Edit campaigns & Login -> Unblock buttons if the r…
ElodieENSTA Mar 22, 2024
5a8a66c
[ADEV-58] Annotator header now styled as grid
ElodieENSTA Apr 2, 2024
eb9d789
[ADEV-59] Add audio download button
ElodieENSTA Apr 2, 2024
aa26125
[ADEV-60] Add spectro download button
ElodieENSTA Apr 2, 2024
cb6f2b7
[ADEV-62] Limit downloads to admin members
ElodieENSTA Apr 2, 2024
94ec037
[ADEV-97] Last label in timescale is cut
ElodieENSTA Apr 19, 2024
7a40243
FIX rebase
ElodieENSTA May 2, 2024
04b3df9
[ADEV-38] Create / Edit campaigns
ElodieENSTA Mar 21, 2024
8987ecb
[ADEV-38] Create / Edit campaigns & Login -> Unblock buttons if the r…
ElodieENSTA Mar 22, 2024
d8cd938
[ADEV-63] Rename "AnnotationTag" to "Label"
ElodieENSTA Apr 3, 2024
d58c42e
[ADEV-63] Rename "AnnotationSet" to "LabelSet"
ElodieENSTA Apr 3, 2024
0f19ac6
FIX rebase
ElodieENSTA May 2, 2024
816a9a6
Merge remote-tracking branch 'origin/master' into feature/ADEV-63-Ren…
ElodieENSTA Jun 24, 2024
2568f2c
Merge remote-tracking branch 'origin/master' into feature/ADEV-63-Ren…
ElodieENSTA Jun 24, 2024
818217c
FIX merge
ElodieENSTA Jun 24, 2024
679a191
FIX merge
ElodieENSTA Jun 24, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 15 additions & 15 deletions backend/api/admin/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@
from backend.api.models import (
Dataset,
DatasetFile,
AnnotationSet,
AnnotationTag,
LabelSet,
Label,
AnnotationCampaign,
AnnotationTask,
AnnotationComment,
Expand Down Expand Up @@ -59,7 +59,7 @@ class NewItemsForm(forms.ModelForm):


class ConfidenceIndicatorAdmin(admin.ModelAdmin):
"""ConfidenceIndicatorAdmin presentation in DjangoAdmin"""
"""ConfidenceIndicator presentation in DjangoAdmin"""

list_display = (
"id",
Expand Down Expand Up @@ -152,28 +152,28 @@ class DatasetFileAdmin(admin.ModelAdmin):
)


class AnnotationTagAdmin(admin.ModelAdmin):
"""AnnotationTag presentation in DjangoAdmin"""
class LabelAdmin(admin.ModelAdmin):
"""Label presentation in DjangoAdmin"""

list_display = ["name"]


class AnnotationSetAdmin(admin.ModelAdmin):
"""AnnotationSet presentation in DjangoAdmin"""
class LabelSetAdmin(admin.ModelAdmin):
"""LabelSet presentation in DjangoAdmin"""

list_display = (
"name",
"desc",
"show_tags",
"show_labels",
)

def show_tags(self, obj):
"""show_tags"""
return get_many_to_many(obj, "tags", "name")
def show_labels(self, obj):
"""show_labels"""
return get_many_to_many(obj, "labels", "name")


class AnnotationCommentAdmin(admin.ModelAdmin):
"""AnnotationSet presentation in DjangoAdmin"""
"""AnnotationComment presentation in DjangoAdmin"""

list_display = (
"id",
Expand All @@ -191,7 +191,7 @@ class AnnotationCampaignAdmin(admin.ModelAdmin):
"instructions_url",
"start",
"end",
"annotation_set",
"label_set",
"annotation_scope",
"owner",
"show_spectro_configs",
Expand Down Expand Up @@ -334,8 +334,8 @@ class SpectroConfigAdmin(admin.ModelAdmin):
admin.site.register(DatasetType, DatasetTypeAdmin)
admin.site.register(Dataset, DatasetAdmin)
admin.site.register(DatasetFile, DatasetFileAdmin)
admin.site.register(AnnotationTag, AnnotationTagAdmin)
admin.site.register(AnnotationSet, AnnotationSetAdmin)
admin.site.register(Label, LabelAdmin)
admin.site.register(LabelSet, LabelSetAdmin)
admin.site.register(AnnotationCampaign, AnnotationCampaignAdmin)
admin.site.register(AnnotationComment, AnnotationCommentAdmin)
admin.site.register(AnnotationTask, AnnotationTaskAdmin)
Expand Down
4 changes: 2 additions & 2 deletions backend/api/admin/annotation/result.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,15 @@ class AnnotationResultAdmin(admin.ModelAdmin):
"end_time",
"start_frequency",
"end_frequency",
"annotation_tag",
"label",
"confidence_indicator",
"annotation_campaign",
"dataset_file",
"annotator",
"detector_configuration",
)
search_fields = (
"annotation_tag__name",
"label__name",
"confidence_indicator__label",
"annotator__username",
"annotator__first_name",
Expand Down
40 changes: 20 additions & 20 deletions backend/api/management/commands/seed.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
GeoMetadatum,
AudioMetadatum,
Dataset,
AnnotationSet,
LabelSet,
AnnotationCampaign,
WindowType,
ConfidenceIndicator,
Expand Down Expand Up @@ -65,7 +65,7 @@ def handle(self, *args, **options):
self._create_users()
self._create_metadata()
self._create_datasets()
self._create_annotation_sets()
self._create_label_sets()
self._create_confidence_sets()
self._create_annotation_campaigns()
self._create_annotation_results()
Expand Down Expand Up @@ -195,33 +195,33 @@ def _create_datasets(self):
DatasetFile.objects.bulk_create(files)
SpectroConfig.objects.bulk_create(configs)

def _create_annotation_sets(self):
print(" ###### _create_annotation_sets ######")
def _create_label_sets(self):
print(" ###### _create_label_set ######")
sets = [
{
"name": "Test SPM campaign",
"desc": "Annotation set made for Test SPM campaign",
"tags": ["Mysticetes", "Odoncetes", "Boat", "Rain", "Other"],
"desc": "Label set made for Test SPM campaign",
"labels": ["Mysticetes", "Odoncetes", "Boat", "Rain", "Other"],
},
{
"name": "Test DCLDE LF campaign",
"desc": "Test annotation set DCLDE LF 2015",
"tags": ["Dcall", "40-Hz"],
"desc": "Test label set DCLDE LF 2015",
"labels": ["Dcall", "40-Hz"],
},
{
"name": "Big tag set",
"desc": "Test annotation set with lots of tags",
"tags": set([self.fake.color_name() for _ in range(0, 20)]),
"name": "Big label set",
"desc": "Test label set with lots of labels",
"labels": set([self.fake.color_name() for _ in range(0, 20)]),
},
]
self.annotation_sets = []
self.label_sets = []
for seed_set in sets:
annotation_set = AnnotationSet.objects.create(
label_set = LabelSet.objects.create(
name=seed_set["name"], desc=seed_set["desc"]
)
for tag in seed_set["tags"]:
annotation_set.tags.create(name=tag)
self.annotation_sets.append(annotation_set)
for label in seed_set["labels"]:
label_set.labels.create(name=label)
self.label_sets.append(label_set)

def _create_confidence_sets(self):
self.confidence_indicator_set = ConfidenceIndicatorSet.objects.create(
Expand Down Expand Up @@ -254,7 +254,7 @@ def _create_annotation_campaigns(self):
end=timezone.make_aware(datetime.strptime("2010-11-02", "%Y-%m-%d")),
instructions_url=self.fake.uri(),
annotation_scope=2,
annotation_set=AnnotationSet.objects.first(),
label_set=LabelSet.objects.first(),
confidence_indicator_set=ConfidenceIndicatorSet.objects.first(),
owner=self.admin,
)
Expand All @@ -277,7 +277,7 @@ def _create_annotation_campaigns(self):
def _create_annotation_results(self):
print(" ###### _create_annotation_results ######")
campaign = self.campaigns[0]
tags = self.annotation_sets[0].tags.values_list("id", flat=True)
labels = self.label_sets[0].labels.values_list("id", flat=True)
for user in self.users:
done_files = randint(5, max(self.files_nb - 5, 5))
tasks = campaign.tasks.filter(annotator_id=user.id)[:done_files]
Expand All @@ -296,7 +296,7 @@ def _create_annotation_results(self):
end_time=start_time + randint(30, 300),
start_frequency=start_frequency,
end_frequency=start_frequency + randint(2000, 5000),
annotation_tag_id=choice(tags),
label_id=choice(labels),
confidence_indicator=choice(self.confidences_indicators),
dataset_file_id=task.dataset_file_id,
annotator_id=task.annotator_id,
Expand All @@ -313,7 +313,7 @@ def _create_comments(self):
if randint(1, 3) >= 2:
comments.append(
AnnotationComment(
comment=f"a comment : {result.annotation_tag.name}",
comment=f"a comment : {result.label.name}",
annotation_task=AnnotationTask.objects.filter(
annotation_campaign_id=result.annotation_campaign_id,
dataset_file_id=result.dataset_file_id,
Expand Down
32 changes: 32 additions & 0 deletions backend/api/migrations/0035_rename_tag_label.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Generated by Django 3.2.23 on 2024-04-03 12:11
""" Linked to ADEV-63 ticket"""

from django.db import migrations


class Migration(migrations.Migration):

dependencies = [
("api", "0034_alter_annotationresult_dataset_file"),
]

operations = [
migrations.RenameModel(
old_name="AnnotationTag",
new_name="Label",
),
migrations.AlterModelTable(
name="label",
table=None,
),
migrations.RenameField(
model_name="annotationresult",
old_name="annotation_tag",
new_name="label",
),
migrations.RenameField(
model_name="annotationset",
old_name="tags",
new_name="labels",
),
]
26 changes: 26 additions & 0 deletions backend/api/migrations/0036_rename_annotationset_labelset.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Generated by Django 3.2.23 on 2024-04-03 14:25

from django.db import migrations


class Migration(migrations.Migration):

dependencies = [
("api", "0035_rename_tag_label"),
]

operations = [
migrations.RenameModel(
old_name="AnnotationSet",
new_name="LabelSet",
),
migrations.RenameField(
model_name="annotationcampaign",
old_name="annotation_set",
new_name="label_set",
),
migrations.AlterModelTable(
name="labelset",
table=None,
),
]
41 changes: 23 additions & 18 deletions backend/api/models/__init__.py
Original file line number Diff line number Diff line change
@@ -1,30 +1,35 @@
"""All Django models available"""

from django.contrib.auth import get_user_model

from backend.api.models.datasets import DatasetType, Dataset, DatasetFile
from backend.api.models.metadata import (
AudioMetadatum,
GeoMetadatum,
SpectroConfig,
WindowType,
from backend.api.models.annotation import (
Detector,
DetectorConfiguration,
AnnotationResult,
AnnotationResultValidation,
)

from backend.api.models.annotations import (
ConfidenceIndicator,
ConfidenceIndicatorSet,
AnnotationTag,
AnnotationSet,
AnnotationCampaign,
AnnotationCampaignUsage,
AnnotationComment,
AnnotationSession,
AnnotationTask,
AnnotationCampaignUsage,
ConfidenceIndicator,
ConfidenceIndicatorSet,
Label,
LabelSet,
)
from backend.api.models.annotation import (
Detector,
DetectorConfiguration,
AnnotationResult,
AnnotationResultValidation,

from backend.api.models.datasets import (
DatasetType,
Dataset,
DatasetFile,
)

from backend.api.models.metadata import (
AudioMetadatum,
GeoMetadatum,
SpectroConfig,
WindowType,
)

from .user import User
6 changes: 3 additions & 3 deletions backend/api/models/annotation/result.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

class AnnotationResult(models.Model):
"""
This table contains the resulting tag associations for specific annotation_tasks
This table contains the resulting label associations for specific annotation_tasks
"""

class Meta:
Expand All @@ -32,7 +32,7 @@ class Meta:
start_frequency = models.FloatField(null=True, blank=True)
end_frequency = models.FloatField(null=True, blank=True)

annotation_tag = models.ForeignKey("AnnotationTag", on_delete=models.CASCADE)
label = models.ForeignKey("Label", on_delete=models.CASCADE)
confidence_indicator = models.ForeignKey(
"ConfidenceIndicator", on_delete=models.SET_NULL, null=True, blank=True
)
Expand Down Expand Up @@ -66,7 +66,7 @@ class Meta:

class AnnotationResultValidation(models.Model):
"""
This table contains the resulting tag associations for specific annotation_tasks
This table contains the resulting label associations for specific annotation_tasks
"""

is_valid = models.BooleanField(null=True, blank=True)
Expand Down
Loading
Loading