Skip to content
This repository has been archived by the owner on Nov 21, 2024. It is now read-only.

Commit

Permalink
submissions: changed enumeration types
Browse files Browse the repository at this point in the history
  • Loading branch information
DonHaul committed Jul 9, 2024
1 parent cb19cde commit 1e0230b
Show file tree
Hide file tree
Showing 9 changed files with 89 additions and 38 deletions.
2 changes: 1 addition & 1 deletion .envs/docker/.django
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,4 @@ OPENSEARCH_INDEX_PREFIX=backoffice-backend-local

# Airflow
AIRFLOW_BASE_URL=http://localhost:8080
AIRFLOW_TOKEN=CHANGE_ME
AIRFLOW_TOKEN=CHANGE_ME
2 changes: 1 addition & 1 deletion .envs/local/.django
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,4 @@ OPENSEARCH_INDEX_PREFIX=backoffice-backend-local

# Airflow
AIRFLOW_BASE_URL=http://host.docker.internal:8082
AIRFLOW_TOKEN=CHANGE_ME
AIRFLOW_TOKEN=CHANGE_ME
1 change: 0 additions & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ repos:
rev: "5.12.0"
hooks:
- id: isort
args: ["--profile", "black"]
- repo: https://github.com/pycqa/flake8
rev: "3.9.2"
hooks:
Expand Down
8 changes: 6 additions & 2 deletions backoffice/workflows/airflow_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,14 @@


def trigger_airflow_dag(dag_id, workflow_id, extra_data=None):
"""triggers an airflow dag
"""
Triggers an airflow dag
:param dag_id: name of the dag to run
:param workflow_id: id of the workflow being triggered
:return request response"""
:returns: request response
:raises RequestException: raises exception on request failure
"""

data = {"dag_run_id": workflow_id, "conf": {"workflow_id": workflow_id}}

Expand Down
9 changes: 3 additions & 6 deletions backoffice/workflows/api/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
from backoffice.workflows.documents import WorkflowDocument
from backoffice.workflows.models import Workflow, WorkflowTicket

from ..constants import ResolutionDags


class WorkflowSerializer(serializers.ModelSerializer):
class Meta:
Expand All @@ -24,10 +26,5 @@ class Meta:


class AuthorResolutionSerializer(serializers.Serializer):

RESOLUTION_CHOICES = [
("accept", "accept"),
("reject", "reject"),
]
value = serializers.ChoiceField(choices=RESOLUTION_CHOICES)
value = serializers.ChoiceField(choices=ResolutionDags)
create_ticket = serializers.BooleanField(default=False)
9 changes: 5 additions & 4 deletions backoffice/workflows/api/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
from backoffice.workflows.documents import WorkflowDocument
from backoffice.workflows.models import Workflow, WorkflowTicket

from ..constants import AUTHOR_RESOLUTION_DAGS, WORKFLOW_DAG
from ..constants import WORKFLOW_DAG, ResolutionDags
from .serializers import (
AuthorResolutionSerializer,
WorkflowDocumentSerializer,
Expand Down Expand Up @@ -83,15 +83,16 @@ class AuthorWorkflowViewSet(viewsets.ViewSet):
serializer_class = WorkflowSerializer

def create(self, request):

serializer = self.serializer_class(data=request.data)

if serializer.is_valid(raise_exception=True):
workflow = Workflow.objects.create(
data=serializer.validated_data["data"], workflow_type=serializer.validated_data["workflow_type"]
)

return airflow_utils.trigger_airflow_dag(WORKFLOW_DAG[workflow.workflow_type], str(workflow.id), workflow.data)
return airflow_utils.trigger_airflow_dag(
WORKFLOW_DAG[workflow.workflow_type].label, str(workflow.id), workflow.data
)

@action(detail=True, methods=["post"])
def resolve(self, request, pk=None):
Expand All @@ -101,7 +102,7 @@ def resolve(self, request, pk=None):
if serializer.is_valid(raise_exception=True):
extra_data = {"create_ticket": serializer.validated_data["create_ticket"]}
return airflow_utils.trigger_airflow_dag(
AUTHOR_RESOLUTION_DAGS[serializer.validated_data["value"]], pk, extra_data
ResolutionDags[serializer.validated_data["value"]].label, pk, extra_data
)


Expand Down
48 changes: 29 additions & 19 deletions backoffice/workflows/constants.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
from django.db import models

# tickets
TICKET_TYPES = (
("author_create_curation", "Author create curation"),
Expand All @@ -6,28 +8,36 @@
DEFAULT_TICKET_TYPE = "author_create_curation"

# workflows
DEFAULT_STATUS_CHOICE = "running"
DEFAULT_WORKFLOW_TYPE = "HEP_create"
STATUS_CHOICES = (
("running", "Running"),
("approval", "Waiting for approval"),
("completed", "Completed"),
("error", "Error"),
)

WORKFLOW_TYPES = (
("HEP_CREATE", "HEP create"),
("HEP_UPDATE", "HEP update"),
("AUTHOR_CREATE", "Author create"),
("AUTHOR_UPDATE", "Author update"),
)

class StatusChoices(models.TextChoices):
RUNNING = "running", "Running"
APPROVAL = "approval", "Waiting for approva"
COMPLETED = "completed", "Completed"
ERROR = "error", "Error"


DEFAULT_STATUS_CHOICE = StatusChoices.RUNNING


class WorkflowType(models.TextChoices):
HEP_CREATE = "HEP_CREATE", "HEP create"
HEP_UPDATE = "HEP_UPDATE", "HEP update"
AUTHOR_CREATE = "AUTHOR_CREATE", "Author create"
AUTHOR_UPDATE = "AUTHOR_UPDATE", "Author update"


DEFAULT_WORKFLOW_TYPE = WorkflowType.HEP_CREATE

# author dags for each workflow type
WORKFLOW_DAG = {
WORKFLOW_TYPES[0][0]: "",
WORKFLOW_TYPES[1][0]: "",
WORKFLOW_TYPES[2][0]: "author_create_initialization_dag",
WORKFLOW_TYPES[3][0]: "author_update_dag",
WorkflowType.HEP_CREATE: "",
WorkflowType.HEP_UPDATE: "",
WorkflowType.AUTHOR_CREATE: "author_create_initialization_dag",
WorkflowType.AUTHOR_UPDATE: "author_update_dag",
}

AUTHOR_RESOLUTION_DAGS = {"accept": "author_create_approved_dag", "reject": "author_create_rejected_dag"}

class ResolutionDags(models.TextChoices):
accept = "accept", "author_create_approved_dag"
reject = "reject", "author_create_rejected_dag"
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Generated by Django 4.2.6 on 2024-07-09 12:42

from django.db import migrations, models


class Migration(migrations.Migration):
dependencies = [
("workflows", "0007_alter_workflow_core_alter_workflow_is_update"),
]

operations = [
migrations.AlterField(
model_name="workflow",
name="status",
field=models.CharField(
choices=[
("running", "Running"),
("approval", "Waiting for approva"),
("completed", "Completed"),
("error", "Error"),
],
default="running",
max_length=30,
),
),
migrations.AlterField(
model_name="workflow",
name="workflow_type",
field=models.CharField(
choices=[
("HEP_CREATE", "HEP create"),
("HEP_UPDATE", "HEP update"),
("AUTHOR_CREATE", "Author create"),
("AUTHOR_UPDATE", "Author update"),
],
default="HEP_CREATE",
max_length=30,
),
),
]
8 changes: 4 additions & 4 deletions backoffice/workflows/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@
DEFAULT_STATUS_CHOICE,
DEFAULT_TICKET_TYPE,
DEFAULT_WORKFLOW_TYPE,
STATUS_CHOICES,
TICKET_TYPES,
WORKFLOW_TYPES,
StatusChoices,
WorkflowType,
)


Expand All @@ -17,13 +17,13 @@ class Workflow(models.Model):

workflow_type = models.CharField(
max_length=30,
choices=WORKFLOW_TYPES,
choices=WorkflowType.choices,
default=DEFAULT_WORKFLOW_TYPE,
)
data = models.JSONField()
status = models.CharField(
max_length=30,
choices=STATUS_CHOICES,
choices=StatusChoices.choices,
default=DEFAULT_STATUS_CHOICE,
)
core = models.BooleanField(default=False)
Expand Down

0 comments on commit 1e0230b

Please sign in to comment.