Skip to content
Snippets Groups Projects
Verified Commit f1ab5f15 authored by Erwan Rouchet's avatar Erwan Rouchet
Browse files

Update default corpora types

parent fed55299
No related branches found
Tags 1.3.5-rc1
1 merge request!776Update default corpora types
......@@ -6,6 +6,7 @@ from django.core.exceptions import ValidationError
from enumfields import EnumField, Enum
from arkindex_common.enums import TranscriptionType, MetaType, EntityType
from arkindex_common.ml_tool import MLToolType
from arkindex.project.default_corpus import DEFAULT_CORPUS_TYPES
from arkindex.project.models import IndexableModel
from arkindex.project.fields import ArrayField
from arkindex.project.elastic import ESTranscription, ESElement, ESEntity
......@@ -81,6 +82,12 @@ class Corpus(IndexableModel):
return rights
def create_default_types(self):
self.types.bulk_create(
ElementType(corpus=self, **values)
for values in DEFAULT_CORPUS_TYPES
)
class ElementType(models.Model):
id = models.UUIDField(default=uuid.uuid4, primary_key=True, editable=False)
......
......@@ -78,15 +78,7 @@ class CorpusSerializer(serializers.ModelSerializer):
can_write=True,
can_admin=True,
)
corpus.types.create(
folder=True,
slug='folder',
display_name='Folder',
)
corpus.types.create(
slug='page',
display_name='Page',
)
corpus.create_default_types()
return corpus
......
......@@ -6,6 +6,7 @@ from django.urls import reverse
from rest_framework import status
from arkindex.documents.models import Corpus, Element, Right
from arkindex.project.default_corpus import DEFAULT_CORPUS_TYPES
from arkindex.project.tests import FixtureAPITestCase
import datetime
import mock
......@@ -279,14 +280,23 @@ class TestCorpus(FixtureAPITestCase):
right = corpus.corpus_right.get(user=self.user)
self.assertTrue(right.can_write)
self.assertTrue(right.can_admin)
self.assertEqual(corpus.types.count(), 2)
folder, page = corpus.types.order_by('slug')
self.assertEqual(folder.slug, 'folder')
self.assertEqual(folder.display_name, 'Folder')
self.assertTrue(folder.folder)
self.assertEqual(page.slug, 'page')
self.assertEqual(page.display_name, 'Page')
self.assertFalse(page.folder)
# Assert defaults types are set on the new corpus
self.assertCountEqual(
list(corpus.types.values(
'slug',
'display_name',
'folder',
'default_view',
'allowed_transcription'
)),
[{
'folder': False,
'default_view': False,
'allowed_transcription': None,
**values
} for values in DEFAULT_CORPUS_TYPES]
)
def test_create_requires_login(self):
response = self.client.post(reverse('api:corpus'), {
......
# Default corpus attributes
from arkindex_common.enums import TranscriptionType
DEFAULT_CORPUS_TYPES = [
{
'slug': 'volume',
'display_name': 'Volume',
'slug': 'folder',
'display_name': 'Folder',
'folder': True,
'default_view': True
}, {
'default_view': True,
},
{
'slug': 'page',
'display_name': 'Page'
}, {
'display_name': 'Page',
},
{
'slug': 'text_line',
'display_name': 'Text line'
}, {
'slug': 'text',
'display_name': 'Text'
'display_name': 'Text line',
'allowed_transcription': TranscriptionType.Line,
},
{
'slug': 'illustration',
'display_name': 'Illustration',
},
{
'slug': 'decoration',
'display_name': 'Decoration',
},
{
'slug': 'chart',
'display_name': 'Chart',
},
{
'slug': 'table',
'display_name': 'Table',
},
{
'slug': 'signature',
'display_name': 'Signature',
}
]
......@@ -15,8 +15,7 @@ from rest_framework.generics import \
from rest_framework.response import Response
from rest_framework.exceptions import AuthenticationFailed, ValidationError, PermissionDenied
from arkindex.project.permissions import IsAuthenticatedOrReadOnly, IsVerified
from arkindex.project.default_corpus import DEFAULT_CORPUS_TYPES
from arkindex.documents.models import Corpus, ElementType
from arkindex.documents.models import Corpus
from arkindex.users.providers import oauth_providers, get_provider
from arkindex.users.models import User, OAuthStatus, UserScope, Scope
from arkindex.users.serializers import (
......@@ -246,10 +245,7 @@ class UserEmailVerification(APIView):
can_write=True
)
# Add default types
corpus.types.bulk_create([
ElementType(corpus=corpus, **values)
for values in DEFAULT_CORPUS_TYPES
])
corpus.create_default_types()
# Redirtect to home page
url = '/'
......
......@@ -111,11 +111,18 @@ class TestRegistration(FixtureAPITestCase):
list(new_corpus)
)
# Assert defaults types are set on the new corpus
self.assertListEqual(
list(new_corpus.get().types.values('slug', 'display_name', 'folder', 'default_view')),
self.assertCountEqual(
list(new_corpus.get().types.values(
'slug',
'display_name',
'folder',
'default_view',
'allowed_transcription'
)),
[{
'folder': False,
'default_view': False,
'allowed_transcription': None,
**values
} for values in DEFAULT_CORPUS_TYPES]
)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment