mirror of https://github.com/doccano/doccano.git
24 changed files with 325 additions and 110 deletions
Split View
Diff Options
-
18backend/api/admin.py
-
46backend/api/migrations/0034_auto_20220128_0246.py
-
34backend/api/migrations/0035_auto_20220128_0246.py
-
79backend/api/models.py
-
3backend/auto_labeling/pipeline/labels.py
-
3backend/data_export/pipeline/repositories.py
-
3backend/data_import/pipeline/data.py
-
3backend/data_import/pipeline/writers.py
-
3backend/data_import/tests/test_tasks.py
-
19backend/examples/admin.py
-
2backend/examples/filters.py
-
0backend/examples/managers.py
-
79backend/examples/migrations/0001_initial.py
-
83backend/examples/models.py
-
2backend/examples/serializers.py
-
2backend/examples/tests/test_filters.py
-
3backend/examples/tests/test_models.py
-
2backend/examples/views/comment.py
-
3backend/examples/views/example.py
-
3backend/examples/views/example_state.py
-
38backend/labels/migrations/0004_auto_20220128_0246.py
-
3backend/labels/models.py
-
2backend/labels/serializers.py
-
2backend/metrics/views.py
@ -0,0 +1,46 @@ |
|||
# Generated by Django 3.2.11 on 2022-01-28 02:46 |
|||
|
|||
from django.db import migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('api', '0033_auto_20220127_0654'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.SeparateDatabaseAndState( |
|||
state_operations=[ |
|||
migrations.RemoveField( |
|||
model_name='example', |
|||
name='annotations_approved_by', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='example', |
|||
name='project', |
|||
), |
|||
migrations.AlterUniqueTogether( |
|||
name='examplestate', |
|||
unique_together=None, |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='examplestate', |
|||
name='confirmed_by', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='examplestate', |
|||
name='example', |
|||
), |
|||
migrations.DeleteModel( |
|||
name='Comment', |
|||
), |
|||
], |
|||
database_operations=[ |
|||
migrations.AlterModelTable( |
|||
name='Comment', |
|||
table='examples_comment' |
|||
) |
|||
] |
|||
) |
|||
] |
@ -0,0 +1,34 @@ |
|||
# Generated by Django 3.2.11 on 2022-01-28 02:46 |
|||
|
|||
from django.db import migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('api', '0034_auto_20220128_0246'), |
|||
('labels', '0004_auto_20220128_0246'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.SeparateDatabaseAndState( |
|||
state_operations=[ |
|||
migrations.DeleteModel( |
|||
name='Example', |
|||
), |
|||
migrations.DeleteModel( |
|||
name='ExampleState', |
|||
), |
|||
], |
|||
database_operations=[ |
|||
migrations.AlterModelTable( |
|||
name='Example', |
|||
table='examples_example' |
|||
), |
|||
migrations.AlterModelTable( |
|||
name='ExampleState', |
|||
table='examples_examplestate' |
|||
) |
|||
] |
|||
) |
|||
] |
@ -0,0 +1,19 @@ |
|||
from django.contrib import admin |
|||
|
|||
from .models import Example, Comment |
|||
|
|||
|
|||
class ExampleAdmin(admin.ModelAdmin): |
|||
list_display = ('text', 'project', 'meta') |
|||
ordering = ('project',) |
|||
search_fields = ('text',) |
|||
|
|||
|
|||
class CommentAdmin(admin.ModelAdmin): |
|||
list_display = ('user', 'example', 'text', 'created_at', ) |
|||
ordering = ('user', 'created_at', ) |
|||
search_fields = ('user',) |
|||
|
|||
|
|||
admin.site.register(Example, ExampleAdmin) |
|||
admin.site.register(Comment, CommentAdmin) |
@ -0,0 +1,79 @@ |
|||
# Generated by Django 3.2.11 on 2022-01-28 02:46 |
|||
|
|||
from django.conf import settings |
|||
from django.db import migrations, models |
|||
import django.db.models.deletion |
|||
import uuid |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
initial = True |
|||
|
|||
dependencies = [ |
|||
migrations.swappable_dependency(settings.AUTH_USER_MODEL), |
|||
('api', '0034_auto_20220128_0246'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.SeparateDatabaseAndState( |
|||
state_operations=[ |
|||
migrations.CreateModel( |
|||
name='Example', |
|||
fields=[ |
|||
('id', |
|||
models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
|||
('uuid', models.UUIDField(db_index=True, default=uuid.uuid4, editable=False, unique=True)), |
|||
('meta', models.JSONField(default=dict)), |
|||
('filename', models.FileField(default='.', max_length=1024, upload_to='')), |
|||
('text', models.TextField(blank=True, null=True)), |
|||
('created_at', models.DateTimeField(auto_now_add=True, db_index=True)), |
|||
('updated_at', models.DateTimeField(auto_now=True)), |
|||
('annotations_approved_by', |
|||
models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, |
|||
to=settings.AUTH_USER_MODEL)), |
|||
('project', |
|||
models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='examples', |
|||
to='api.project')), |
|||
], |
|||
options={ |
|||
'ordering': ['created_at'], |
|||
}, |
|||
), |
|||
migrations.CreateModel( |
|||
name='Comment', |
|||
fields=[ |
|||
('id', |
|||
models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
|||
('text', models.TextField()), |
|||
('created_at', models.DateTimeField(auto_now_add=True, db_index=True)), |
|||
('updated_at', models.DateTimeField(auto_now=True)), |
|||
('example', |
|||
models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='comments', |
|||
to='examples.example')), |
|||
('user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, |
|||
to=settings.AUTH_USER_MODEL)), |
|||
], |
|||
options={ |
|||
'ordering': ['created_at'], |
|||
}, |
|||
), |
|||
migrations.CreateModel( |
|||
name='ExampleState', |
|||
fields=[ |
|||
('id', |
|||
models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
|||
('confirmed_at', models.DateTimeField(auto_now=True)), |
|||
('confirmed_by', |
|||
models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), |
|||
('example', |
|||
models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='states', |
|||
to='examples.example')), |
|||
], |
|||
options={ |
|||
'unique_together': {('example', 'confirmed_by')}, |
|||
}, |
|||
), |
|||
] |
|||
) |
|||
] |
@ -0,0 +1,83 @@ |
|||
import uuid |
|||
|
|||
from django.contrib.auth.models import User |
|||
from django.db import models |
|||
|
|||
from api.models import Project |
|||
from .managers import ExampleManager, ExampleStateManager |
|||
|
|||
|
|||
class Example(models.Model): |
|||
objects = ExampleManager() |
|||
|
|||
uuid = models.UUIDField(default=uuid.uuid4, editable=False, db_index=True, unique=True) |
|||
meta = models.JSONField(default=dict) |
|||
filename = models.FileField(default='.', max_length=1024) |
|||
project = models.ForeignKey( |
|||
to=Project, |
|||
on_delete=models.CASCADE, |
|||
related_name='examples' |
|||
) |
|||
annotations_approved_by = models.ForeignKey( |
|||
to=User, |
|||
on_delete=models.SET_NULL, |
|||
null=True, |
|||
blank=True |
|||
) |
|||
text = models.TextField(null=True, blank=True) |
|||
created_at = models.DateTimeField(auto_now_add=True, db_index=True) |
|||
updated_at = models.DateTimeField(auto_now=True) |
|||
|
|||
@property |
|||
def comment_count(self): |
|||
return Comment.objects.filter(example=self.id).count() |
|||
|
|||
@property |
|||
def data(self): |
|||
if self.project.is_text_project: |
|||
return self.text |
|||
else: |
|||
return str(self.filename) |
|||
|
|||
class Meta: |
|||
ordering = ['created_at'] |
|||
|
|||
|
|||
class ExampleState(models.Model): |
|||
objects = ExampleStateManager() |
|||
example = models.ForeignKey( |
|||
to=Example, |
|||
on_delete=models.CASCADE, |
|||
related_name='states' |
|||
) |
|||
confirmed_by = models.ForeignKey( |
|||
to=User, |
|||
on_delete=models.CASCADE |
|||
) |
|||
confirmed_at = models.DateTimeField(auto_now=True) |
|||
|
|||
class Meta: |
|||
unique_together = (('example', 'confirmed_by'),) |
|||
|
|||
|
|||
class Comment(models.Model): |
|||
text = models.TextField() |
|||
example = models.ForeignKey( |
|||
to=Example, |
|||
on_delete=models.CASCADE, |
|||
related_name='comments' |
|||
) |
|||
user = models.ForeignKey( |
|||
to=User, |
|||
on_delete=models.CASCADE, |
|||
null=True |
|||
) |
|||
created_at = models.DateTimeField(auto_now_add=True, db_index=True) |
|||
updated_at = models.DateTimeField(auto_now=True) |
|||
|
|||
@property |
|||
def username(self): |
|||
return self.user.username |
|||
|
|||
class Meta: |
|||
ordering = ['created_at'] |
@ -0,0 +1,38 @@ |
|||
# Generated by Django 3.2.11 on 2022-01-28 02:46 |
|||
|
|||
from django.db import migrations, models |
|||
import django.db.models.deletion |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('examples', '0001_initial'), |
|||
('labels', '0003_auto_20220127_0654'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.SeparateDatabaseAndState( |
|||
state_operations=[ |
|||
migrations.AlterField( |
|||
model_name='category', |
|||
name='example', |
|||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='categories', |
|||
to='examples.example'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='span', |
|||
name='example', |
|||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='spans', |
|||
to='examples.example'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='textlabel', |
|||
name='example', |
|||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='texts', |
|||
to='examples.example'), |
|||
), |
|||
], |
|||
database_operations=[] |
|||
) |
|||
] |
Write
Preview
Loading…
Cancel
Save