forked from inspirehep/inspirehep
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
backoffice: standardizing author app
- Loading branch information
Showing
22 changed files
with
358 additions
and
202 deletions.
There are no files selected for viewing
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
# Register your models here. | ||
from django.contrib import admin | ||
|
||
from backoffice.authors.models import AuthorWorkflow | ||
from backoffice.workflows.admin import WorkflowAdmin, WorkflowsAdminSite | ||
|
||
|
||
class AuthorWorkflowsAdminSite(WorkflowsAdminSite): | ||
""" | ||
Custom admin site for managing author workflows. | ||
This admin site extends the default Django admin site to include additional | ||
functionality for managing author workflows. It checks whether the user has the | ||
necessary permissions to access the admin site by verifying that they are | ||
an active user and either a superuser or a member of the 'curator' group. | ||
""" | ||
|
||
|
||
@admin.register(AuthorWorkflow) | ||
class AuthorWorkflowAdmin(WorkflowAdmin): | ||
""" | ||
Admin class for Author Workflow model. Define get, update and delete permissions. | ||
""" |
66 changes: 66 additions & 0 deletions
66
backoffice-repo/backoffice/backoffice/authors/api/serializers.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
from backoffice.authors.constants import ( | ||
AuthorResolutionDags, | ||
WorkflowType, | ||
author_workflow_types, | ||
) | ||
from backoffice.authors.models import AuthorWorkflow | ||
from backoffice.workflows.api.serializers import ( | ||
ResolutionSerializer, | ||
WorkflowDocumentSerializer, | ||
WorkflowSerializer, | ||
) | ||
from backoffice.workflows.constants import StatusChoices | ||
from drf_spectacular.utils import OpenApiExample, extend_schema_serializer | ||
from rest_framework import serializers | ||
|
||
|
||
@extend_schema_serializer( | ||
exclude_fields=[ | ||
"_created_at", | ||
"_updated_at", | ||
], # Exclude internal fields from schema | ||
examples=[ | ||
OpenApiExample( | ||
"Author Workflow Serializer", | ||
summary="Author Workflow Serializer no data", | ||
description="Author Workflow Serializer", | ||
value={ | ||
"workflow_type": WorkflowType.AUTHOR_CREATE, | ||
"status": StatusChoices.RUNNING, | ||
"data": {}, | ||
}, | ||
), | ||
], | ||
) | ||
class AuthorWorkflowSerializer(WorkflowSerializer): | ||
def validate_workflow_type(self, value): | ||
if value not in author_workflow_types: | ||
raise serializers.ValidationError( | ||
f"The field `workflow_type` should be on of {author_workflow_types}" | ||
) | ||
return value | ||
|
||
class Meta(WorkflowSerializer.Meta): | ||
model = AuthorWorkflow | ||
|
||
|
||
@extend_schema_serializer( | ||
examples=[ | ||
OpenApiExample( | ||
"Accept", | ||
description="Author Workflow Serializer", | ||
value={"value": "accept", "create_ticket": False}, | ||
), | ||
OpenApiExample( | ||
"Reject", | ||
description="Author Workflow Serializer", | ||
value={"value": "reject", "create_ticket": False}, | ||
), | ||
], | ||
) | ||
class AuthorResolutionSerializer(ResolutionSerializer): | ||
value = serializers.ChoiceField(choices=AuthorResolutionDags) | ||
|
||
|
||
class AuthorWorkflowDocumentSerializer(WorkflowDocumentSerializer): | ||
pass |
34 changes: 34 additions & 0 deletions
34
backoffice-repo/backoffice/backoffice/authors/api/views.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
import logging | ||
|
||
from backoffice.authors.api.serializers import ( | ||
AuthorResolutionSerializer, | ||
AuthorWorkflowDocumentSerializer, | ||
AuthorWorkflowSerializer, | ||
) | ||
from backoffice.authors.constants import AuthorResolutionDags | ||
from backoffice.authors.documents import AuthorWorkflowDocument | ||
from backoffice.workflows.api.views import WorkflowDocumentView, WorkflowViewSet | ||
|
||
logger = logging.getLogger(__name__) | ||
|
||
|
||
class AuthorWorkflowViewSet(WorkflowViewSet): | ||
serializer_class = AuthorWorkflowSerializer | ||
resolution_serializer = AuthorResolutionSerializer | ||
resolution_dags = AuthorResolutionDags | ||
|
||
|
||
class AuthorWorkflowDocumentView(WorkflowDocumentView): | ||
def __init__(self, *args, **kwargs): | ||
super().__init__(*args, **kwargs) | ||
self.search = self.search.extra(track_total_hits=True) | ||
|
||
document = AuthorWorkflowDocument | ||
serializer_class = AuthorWorkflowDocumentSerializer | ||
search_fields = { | ||
"data.ids.value", | ||
"data.ids.schema", | ||
"data.name.value", | ||
"data.name.preferred_name", | ||
"data.email_addresses.value", | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
from django.apps import AppConfig | ||
|
||
|
||
class AuthorsConfig(AppConfig): | ||
default_auto_field = "django.db.models.BigAutoField" | ||
name = "backoffice.authors" |
24 changes: 24 additions & 0 deletions
24
backoffice-repo/backoffice/backoffice/authors/constants.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
from django.db import models | ||
|
||
from backoffice.workflows.workflow_types import WorkflowType | ||
|
||
author_workflow_types = [ | ||
WorkflowType.AUTHOR_CREATE, | ||
WorkflowType.AUTHOR_UPDATE, | ||
] | ||
|
||
|
||
class AuthorResolutionDags(models.TextChoices): | ||
accept = "accept", "author_create_approved_dag" | ||
reject = "reject", "author_create_rejected_dag" | ||
accept_curate = "accept_curate", "author_create_approved_dag" | ||
|
||
|
||
class AuthorCreateDags(models.TextChoices): | ||
initialize = "author_create_initialization_dag", "initialize" | ||
approve = "author_create_approved_dag", "approve" | ||
reject = "author_create_rejected_dag", "reject" | ||
|
||
|
||
class AuthorUpdateDags(models.TextChoices): | ||
initialize = "author_update_dag", "initialize" |
10 changes: 10 additions & 0 deletions
10
backoffice-repo/backoffice/backoffice/authors/documents.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
from django.conf import settings | ||
from django_opensearch_dsl.registries import registry | ||
|
||
from backoffice.workflows.documents import WorkflowDocument | ||
|
||
|
||
@registry.register_document | ||
class AuthorWorkflowDocument(WorkflowDocument): | ||
class Index(WorkflowDocument.Index): | ||
name = settings.OPENSEARCH_INDEX_NAMES["authors"] |
32 changes: 32 additions & 0 deletions
32
backoffice-repo/backoffice/backoffice/authors/migrations/0001_initial.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
# Generated by Django 4.2.6 on 2024-10-01 16:01 | ||
|
||
import django.db.models.deletion | ||
from django.db import migrations, models | ||
|
||
|
||
class Migration(migrations.Migration): | ||
initial = True | ||
|
||
dependencies = [ | ||
("workflows", "0012_remove_workflow_core_remove_workflow_is_update_and_more"), | ||
] | ||
|
||
operations = [ | ||
migrations.CreateModel( | ||
name="AuthorWorkflow", | ||
fields=[ | ||
( | ||
"workflow_ptr", | ||
models.OneToOneField( | ||
auto_created=True, | ||
on_delete=django.db.models.deletion.CASCADE, | ||
parent_link=True, | ||
primary_key=True, | ||
serialize=False, | ||
to="workflows.workflow", | ||
), | ||
), | ||
], | ||
bases=("workflows.workflow",), | ||
), | ||
] |
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
from backoffice.workflows.models import Workflow | ||
|
||
|
||
class AuthorWorkflow(Workflow): | ||
pass |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
# Create your tests here. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.