from datetime import timedelta
|
|
import factory
|
from core.utils.common import load_func
|
from django.conf import settings
|
from django.utils import timezone
|
from faker import Faker
|
from tasks.models import Annotation, AnnotationDraft, Prediction, Task, TaskLock
|
|
|
class TaskFactory(factory.django.DjangoModelFactory):
|
data = factory.LazyFunction(
|
lambda: {
|
'text': Faker().sentence(),
|
}
|
)
|
project = factory.SubFactory(load_func(settings.PROJECT_FACTORY))
|
|
class Meta:
|
model = Task
|
|
|
class AnnotationFactory(factory.django.DjangoModelFactory):
|
task = factory.SubFactory(TaskFactory)
|
project = factory.SelfAttribute('task.project')
|
completed_by = factory.SubFactory(load_func(settings.USER_FACTORY))
|
|
class Meta:
|
model = Annotation
|
|
@classmethod
|
def create_hypertextlabels(cls, **kwargs):
|
return cls.create(
|
result=[
|
{
|
'value': {
|
'htmllabels': ['Strong negative'],
|
'start': 1,
|
'end': 10,
|
'startOffset': '/text()[1]',
|
'endOffset': '/text()[2]',
|
'text': 'Test example phrase',
|
},
|
'id': 'wMmVN7k_47',
|
'from_name': 'label',
|
'to_name': 'text',
|
'type': 'hypertextlabels',
|
}
|
],
|
**kwargs,
|
)
|
|
|
class AnnotationDraftFactory(factory.django.DjangoModelFactory):
|
task = factory.SubFactory(TaskFactory)
|
user = factory.SubFactory(load_func(settings.USER_FACTORY))
|
result = [
|
{
|
'value': {'choices': ['neg']},
|
'id': 'wMmVN7k_47',
|
'from_name': 'sentiment',
|
'to_name': 'text',
|
'type': 'choices',
|
}
|
]
|
|
class Meta:
|
model = AnnotationDraft
|
|
|
class PredictionFactory(factory.django.DjangoModelFactory):
|
task = factory.SubFactory(TaskFactory)
|
project = factory.SelfAttribute('task.project')
|
result = [{}]
|
|
class Meta:
|
model = Prediction
|
|
|
class TaskLockFactory(factory.django.DjangoModelFactory):
|
task = factory.SubFactory(TaskFactory)
|
user = factory.SubFactory(load_func(settings.USER_FACTORY))
|
expire_at = factory.LazyFunction(lambda: timezone.now() + timedelta(seconds=10))
|
|
class Meta:
|
model = TaskLock
|