Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Empty file.
7 changes: 7 additions & 0 deletions src/backend/api/v1/labels/serializers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
from backend.api.v1.template_options.serializers import FilterKeyValueSerializer
from backend.apps.clusters.models import Label


class LabelSerializer(FilterKeyValueSerializer[Label]):
class Meta:
model = Label
10 changes: 10 additions & 0 deletions src/backend/api/v1/labels/urls.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
from django.urls import path, include
from rest_framework import routers

from backend.api.v1.labels.views import LabelView

base_router = routers.DefaultRouter()
base_router.register(r"", LabelView, basename="labels")
urlpatterns = [
path("", include(base_router.urls)),
]
24 changes: 24 additions & 0 deletions src/backend/api/v1/labels/views.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
from django.db.models import QuerySet
from django_filters.rest_framework import DjangoFilterBackend
from rest_framework import mixins, filters
from rest_framework.viewsets import GenericViewSet

from backend.api.v1.labels.serializers import LabelSerializer
from backend.api.v1.mixins import AdminOnlyViewSet
from backend.apps.clusters.models import Label


class LabelView(
AdminOnlyViewSet,
mixins.ListModelMixin,
mixins.RetrieveModelMixin,
GenericViewSet
):
serializer_class = LabelSerializer
filter_backends = [DjangoFilterBackend, filters.SearchFilter, filters.OrderingFilter]

search_fields = ["name"]
ordering = ["name"]

def get_queryset(self) -> QuerySet[Label]:
return Label.objects.all()
Empty file.
7 changes: 7 additions & 0 deletions src/backend/api/v1/organizations/serializers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
from backend.api.v1.template_options.serializers import FilterKeyValueSerializer
from backend.apps.clusters.models import Organization


class OrganizationSerializer(FilterKeyValueSerializer[Organization]):
class Meta:
model = Organization
10 changes: 10 additions & 0 deletions src/backend/api/v1/organizations/urls.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
from django.urls import path, include
from rest_framework import routers

from backend.api.v1.organizations.views import OrganizationView

base_router = routers.DefaultRouter()
base_router.register(r"", OrganizationView, basename="organizations")
urlpatterns = [
path("", include(base_router.urls)),
]
24 changes: 24 additions & 0 deletions src/backend/api/v1/organizations/views.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
from django.db.models import QuerySet
from django_filters.rest_framework import DjangoFilterBackend
from rest_framework import mixins, filters
from rest_framework.viewsets import GenericViewSet

from backend.api.v1.mixins import AdminOnlyViewSet
from backend.api.v1.organizations.serializers import OrganizationSerializer
from backend.apps.clusters.models import Organization


class OrganizationView(
AdminOnlyViewSet,
mixins.ListModelMixin,
mixins.RetrieveModelMixin,
GenericViewSet
):
serializer_class = OrganizationSerializer
filter_backends = [DjangoFilterBackend, filters.SearchFilter, filters.OrderingFilter]

search_fields = ["name"]
ordering = ["name"]

def get_queryset(self) -> QuerySet[Organization]:
return Organization.objects.all()
Empty file.
7 changes: 7 additions & 0 deletions src/backend/api/v1/projects/serializers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
from backend.api.v1.template_options.serializers import FilterKeyValueSerializer
from backend.apps.clusters.models import Project


class ProjectSerializer(FilterKeyValueSerializer[Project]):
class Meta:
model = Project
10 changes: 10 additions & 0 deletions src/backend/api/v1/projects/urls.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
from django.urls import path, include
from rest_framework import routers

from backend.api.v1.projects.views import ProjectView

base_router = routers.DefaultRouter()
base_router.register(r"", ProjectView, basename="projects")
urlpatterns = [
path("", include(base_router.urls)),
]
24 changes: 24 additions & 0 deletions src/backend/api/v1/projects/views.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
from django.db.models import QuerySet
from django_filters.rest_framework import DjangoFilterBackend
from rest_framework import mixins, filters
from rest_framework.viewsets import GenericViewSet

from backend.api.v1.mixins import AdminOnlyViewSet
from backend.api.v1.projects.serializers import ProjectSerializer
from backend.apps.clusters.models import Project


class ProjectView(
AdminOnlyViewSet,
mixins.ListModelMixin,
mixins.RetrieveModelMixin,
GenericViewSet
):
serializer_class = ProjectSerializer
filter_backends = [DjangoFilterBackend, filters.SearchFilter, filters.OrderingFilter]

search_fields = ["name"]
ordering = ["name"]

def get_queryset(self) -> QuerySet[Project]:
return Project.objects.all()
3 changes: 1 addition & 2 deletions src/backend/api/v1/report/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import logging
from collections import OrderedDict

from dateutil.relativedelta import relativedelta
from django.conf import settings
from django.db import models
from django.db.models import (
Expand All @@ -26,6 +25,7 @@
from rest_framework.response import Response
from rest_framework.viewsets import GenericViewSet

from backend.api.v1.mixins import AdminOnlyViewSet
from backend.api.v1.report.filters import (
CustomReportFilter,
filter_by_range,
Expand Down Expand Up @@ -53,7 +53,6 @@
ChartItem,
QueryParams)
from backend.apps.common.models import Settings, Currency
from backend.api.v1.mixins import AdminOnlyViewSet

logger = logging.getLogger("automation-dashboard")

Expand Down
8 changes: 7 additions & 1 deletion src/backend/api/v1/template/serializers.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
from rest_framework import serializers

from backend.api.v1.template_options.serializers import FilterKeyValueSerializer
from backend.apps.clusters.models import JobTemplate


class TemplateSerializer(serializers.ModelSerializer[JobTemplate]):
class TemplatesSerializer(serializers.ModelSerializer[JobTemplate]):
name = serializers.CharField(read_only=True)
description = serializers.CharField(read_only=True)

Expand All @@ -12,3 +13,8 @@ class Meta:
fields = ("id", "name", "description",
"time_taken_manually_execute_minutes",
"time_taken_create_automation_minutes")


class JobTemplateSerializer(FilterKeyValueSerializer[JobTemplate]):
class Meta:
model = JobTemplate
25 changes: 21 additions & 4 deletions src/backend/api/v1/template/views.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,31 @@
from django.db.models import QuerySet
from rest_framework import mixins
from django_filters.rest_framework import DjangoFilterBackend
from rest_framework import mixins, filters, serializers
from rest_framework.viewsets import GenericViewSet

from backend.api.v1.mixins import AdminOnlyViewSet
from backend.api.v1.template.serializers import TemplateSerializer
from backend.api.v1.template.serializers import TemplatesSerializer, JobTemplateSerializer
from backend.apps.clusters.models import JobTemplate


class TemplateView(AdminOnlyViewSet, mixins.ListModelMixin, mixins.UpdateModelMixin, GenericViewSet):
serializer_class = TemplateSerializer
class TemplateView(
AdminOnlyViewSet,
mixins.ListModelMixin,
mixins.RetrieveModelMixin,
mixins.UpdateModelMixin,
GenericViewSet
):
serializer_class = TemplatesSerializer

filter_backends = [DjangoFilterBackend, filters.SearchFilter, filters.OrderingFilter]

search_fields = ["name"]
ordering = ["name"]

def get_serializer_class(self) -> type[serializers.ModelSerializer[JobTemplate]]:
if self.action == "list" or self.action == "retrieve":
return JobTemplateSerializer
return TemplatesSerializer

def get_queryset(self) -> QuerySet[JobTemplate]:
return JobTemplate.objects.all()
27 changes: 1 addition & 26 deletions src/backend/api/v1/template_options/serializers.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,6 @@
from rest_framework import serializers

from backend.apps.clusters.models import (
Organization,
Cluster,
Label,
JobTemplate,
Project)
from backend.apps.clusters.models import Cluster


class ClusterSerializer(serializers.ModelSerializer[Cluster]):
Expand All @@ -21,23 +16,3 @@ class FilterKeyValueSerializer(serializers.Serializer):

class Meta:
fields = ("key", "value", "cluster_id")


class OrganizationSerializer(FilterKeyValueSerializer[Organization]):
class Meta:
model = Organization


class LabelSerializer(FilterKeyValueSerializer[Label]):
class Meta:
model = Label


class JobTemplateSerializer(FilterKeyValueSerializer[JobTemplate]):
class Meta:
model = JobTemplate


class ProjectSerializer(FilterKeyValueSerializer[Project]):
class Meta:
model = Project
23 changes: 2 additions & 21 deletions src/backend/api/v1/template_options/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,22 +11,12 @@
from backend.api.v1.common.serializers.currency import CurrencySerializer
from backend.api.v1.common.serializers.filter_set import FilterSetSerializer
from backend.api.v1.mixins import AdminOnlyViewSet
from backend.api.v1.template_options.serializers import (
OrganizationSerializer,
ClusterSerializer,
LabelSerializer,
JobTemplateSerializer,
ProjectSerializer)
from backend.api.v1.template_options.serializers import ClusterSerializer
from backend.apps.clusters.models import (
DateRangeChoices,
Cluster,
Organization,
Label,
JobTemplate,
CostsChoices,
Project,
Job,
Costs, max_minutes_input, min_minutes_input)
Costs, JobTemplate, max_minutes_input, min_minutes_input)
from backend.apps.common.models import Currency, Settings, FilterSet
from backend.django_config import settings

Expand All @@ -41,26 +31,17 @@ def list(self, request: Request) -> Response:
for choice in DateRangeChoices.choices
]
clusters = Cluster.objects.all().order_by('address')
organizations = Organization.objects.filter(id__in=Job.objects.values_list('organization', flat=True)).order_by("name")
labels = Label.objects.all().order_by("name")

job_templates = JobTemplate.objects.filter(id__in=Job.objects.values_list('job_template', flat=True)).order_by("name")
currencies = Currency.objects.all().order_by("name")

costs = Costs.get()

filter_sets = FilterSet.objects.all().order_by("name")

projects = Project.objects.all().order_by("name")

result = {
"clusters": ClusterSerializer(clusters, many=True).data,
"currencies": CurrencySerializer(currencies, many=True).data,
"organizations": OrganizationSerializer(organizations, many=True).data,
"labels": LabelSerializer(labels, many=True).data,
"date_ranges": date_range,
"job_templates": JobTemplateSerializer(job_templates, many=True).data,
"projects": ProjectSerializer(projects, many=True).data,
"manual_cost_automation": costs[CostsChoices.MANUAL],
"automated_process_cost": costs[CostsChoices.AUTOMATED],
"currency": Settings.currency(),
Expand Down
3 changes: 3 additions & 0 deletions src/backend/api/v1/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,7 @@
path("common/", include("backend.api.v1.common.urls")),
path("aap_auth/", include("backend.api.v1.aap_auth.urls")),
path("users/", include("backend.api.v1.users.urls")),
path("labels/", include("backend.api.v1.labels.urls")),
path("projects/", include("backend.api.v1.projects.urls")),
path("organizations/", include("backend.api.v1.organizations.urls")),
]
Loading