Skip to content

Commit

Permalink
Merge pull request #3 from jhnnsrs:devi
Browse files Browse the repository at this point in the history
Devi
  • Loading branch information
jhnnsrs committed Jan 7, 2024
2 parents ec342b9 + 1274408 commit a263fce
Show file tree
Hide file tree
Showing 40 changed files with 2,670 additions and 326 deletions.
9 changes: 8 additions & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,15 +1,22 @@
FROM python:3.8
LABEL maintainer="jhnnsrs@gmail.com"


# Install dependencies
RUN pip install poetry rich

# Configure poetry
RUN poetry config virtualenvs.create false
ENV PYTHONUNBUFFERED=1


# Copy dependencies
COPY pyproject.toml /
RUN poetry config virtualenvs.create false
COPY poetry.lock /
RUN poetry install



# Install Arbeid
RUN mkdir /workspace
ADD . /workspace
Expand Down
2 changes: 1 addition & 1 deletion arkitekt/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
SUPERUSERS = [
{
"USERNAME": conf.django.admin.username,
"EMAIL": conf.django.admin.email,
"EMAIL": "fake@fake.com",
"PASSWORD": conf.django.admin.password,
}
]
Expand Down
2 changes: 1 addition & 1 deletion config.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
lok:
issuer: herre
issuer: lok
key_type: RS256
public_key: YOUR_PUBLIC_KEY
port: 8090
Expand Down
68 changes: 0 additions & 68 deletions conftest.py

This file was deleted.

2 changes: 1 addition & 1 deletion facade/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

# Register your models here.


admin.site.register(Protocol)
admin.site.register(Repository)
admin.site.register(Registry)
admin.site.register(Agent)
Expand Down
5 changes: 3 additions & 2 deletions facade/enums.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,8 +78,9 @@ class TopicMode(TextChoices):


class AssignationStatus(TextChoices):
PENDING = "PENDING", "Pending" # Assignation has been requested
ACKNOWLEDGED = "ACKNOWLEDGED", "Acknowledged" # Assignation has been requested
PENDING = "PENDING", "Pending" # Assignation is pending
BOUND = "BOUND", "Bound" # Assignation was just bound to a provision
ACKNOWLEDGED = "ACKNOWLEDGED", "Acknowledged" # Assignation has been request
RETURNED = "RETURNED", "Assignation Returned (Only for Functions)"
# Arnheim acknowledgments
DENIED = "DENIED", "Denied (Assingment was rejected)"
Expand Down
112 changes: 82 additions & 30 deletions facade/filters.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,19 @@
NodeScope,
)
from lok.models import LokClient
from .models import Agent, Node, Repository, Template, Registry, Assignation, Reservation, TestCase, TestResult, Collection
from .models import (
Agent,
Node,
Repository,
Protocol,
Template,
Registry,
Assignation,
Reservation,
TestCase,
TestResult,
Collection,
)
from django.db.models import Q
from django.db.models import Count
import graphene
Expand All @@ -40,20 +52,20 @@ def __init__(self, *args, **kwargs) -> None:

def overwritten_type(self, **kwargs):
return graphene.List(graphene.String, **kwargs)


@convert_form_field.register(MultiStringField)
def convert_form_field_to_string_list(field):
return field.overwritten_type(required=field.required)



class MultiStringFilter(django_filters.MultipleChoiceFilter):
field_class = MultiStringField

def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)



class IDChoiceFilter(django_filters.MultipleChoiceFilter):
field_class = IDChoiceField

Expand All @@ -62,7 +74,6 @@ def __init__(self, *args, **kwargs):


class IdsFilter(django_filters.FilterSet):

ids = IDChoiceFilter(label="Filter by values")

def my_values_filter(self, queryset, name, value):
Expand All @@ -71,6 +82,7 @@ def my_values_filter(self, queryset, name, value):
else:
return queryset


class AgentFilter(IdsFilter, django_filters.FilterSet):
app = django_filters.CharFilter(method="app_filter")
registry = django_filters.ModelChoiceFilter(
Expand All @@ -79,37 +91,44 @@ class AgentFilter(IdsFilter, django_filters.FilterSet):
status = MultiEnumFilter(type=AgentStatusInput, field_name="status")
search = django_filters.CharFilter(method="search_filter", label="Search")


def search_filter(self, queryset, name, value):
return queryset.filter(
Q(registry__app__name__icontains=value) | Q(template__interface__icontains=value)
Q(registry__app__name__icontains=value)
| Q(template__interface__icontains=value)
)


class CollectionFilter(IdsFilter, django_filters.FilterSet):
search = django_filters.CharFilter(method="search_filter", label="Search")


def search_filter(self, queryset, name, value):
return queryset.filter(name__icontains=value)





class NodeFilter(IdsFilter, django_filters.FilterSet):
repository = django_filters.ModelChoiceFilter(
queryset=Repository.objects.all(), field_name="repository"
)
collections = django_filters.ModelMultipleChoiceFilter(queryset=Collection.objects.all(), field_name="collections")
collections = django_filters.ModelMultipleChoiceFilter(
queryset=Collection.objects.all(), field_name="collections"
)
protocols = django_filters.ModelMultipleChoiceFilter(
queryset=Protocol.objects.all(), field_name="protocols"
)
name = django_filters.CharFilter(field_name="name", lookup_expr="icontains")
search = django_filters.CharFilter(method="search_filter", label="Search")
type = EnumFilter(type=NodeKindInput, field_name="type")
scopes = MultiEnumFilter(type=NodeScope, field_name="scope")
arg_types = MultiStringFilter(method="arg_types_filter", label="Args")
protocol_names = MultiStringFilter(
method="protocol_names_filter", label="Protocol Names"
)
interfaces = MultiStringFilter(method="interfaces_filter", label="Args")
restrict = MultiStringFilter(method="restrict_filter", label="Restrict")
templated = django_filters.BooleanFilter(method="templated_filter", label="Currently Templated")
templated = django_filters.BooleanFilter(
method="templated_filter", label="Currently Templated"
)
order = django_filters.OrderingFilter(fields={"created_at": "time"})

def search_filter(self, queryset, name, value):
return queryset.filter(
Expand All @@ -125,7 +144,9 @@ def restrict_filter(self, queryset, name, value):
return queryset.filter(templates__registry__unique__in=value)

def templated_filter(self, queryset, name, value):
return queryset.annotate(num_templates=Count('templates')).filter(num_templates__gt= 0)
return queryset.annotate(num_templates=Count("templates")).filter(
num_templates__gt=0
)

def arg_types_filter(self, queryset, name, value):
filter_args = {}
Expand All @@ -136,20 +157,40 @@ def arg_types_filter(self, queryset, name, value):

return queryset.filter(**filter_args)

def protocol_names_filter(self, queryset, name, value):
if value:
return queryset.filter(protocols__name__in=value)

return queryset


class ProvisionFilter(IdsFilter, django_filters.FilterSet):
status = MultiEnumFilter(type=ProvisionStatusInput, field_name="status")
agent = django_filters.ModelChoiceFilter(queryset=Agent.objects.all(), field_name="agent")
client = django_filters.ModelChoiceFilter(queryset=LokClient.objects.all(), field_name="client")
client_id = django_filters.CharFilter(field_name="agent__registry__client__client_id", lookup_expr="iexact")
agent = django_filters.ModelChoiceFilter(
queryset=Agent.objects.all(), field_name="agent"
)
client = django_filters.ModelChoiceFilter(
queryset=LokClient.objects.all(), field_name="client"
)
client_id = django_filters.CharFilter(
field_name="agent__registry__client__client_id", lookup_expr="iexact"
)


class AssignationFilter(IdsFilter, django_filters.FilterSet):
status = MultiEnumFilter(type=AssignationStatusInput, field_name="status")
reference = django_filters.CharFilter(field_name="reference", lookup_expr="icontains")
reservation = django_filters.ModelChoiceFilter(queryset=Reservation.objects.all(), field_name="reservation")
reservation_reference = django_filters.CharFilter(field_name="reservation__reference")
parent = django_filters.ModelChoiceFilter(queryset=Assignation.objects.all(), field_name="parent")
reference = django_filters.CharFilter(
field_name="reference", lookup_expr="icontains"
)
reservation = django_filters.ModelChoiceFilter(
queryset=Reservation.objects.all(), field_name="reservation"
)
reservation_reference = django_filters.CharFilter(
field_name="reservation__reference"
)
parent = django_filters.ModelChoiceFilter(
queryset=Assignation.objects.all(), field_name="parent"
)
o = OrderingFilter(fields={"created_at": "time"})


Expand All @@ -175,24 +216,34 @@ class NodesFilter(IdsFilter, django_filters.FilterSet):
package = django_filters.CharFilter(field_name="package", lookup_expr="icontains")


class ProtocolFilter(IdsFilter, django_filters.FilterSet):
name = django_filters.CharFilter(field_name="name", lookup_expr="icontains")


class TestCaseFilter(IdsFilter, django_filters.FilterSet):
search = django_filters.CharFilter(method="search_filter", label="Search")
node = django_filters.ModelChoiceFilter(queryset=Node.objects.all(), field_name="node")
node = django_filters.ModelChoiceFilter(
queryset=Node.objects.all(), field_name="node"
)
key = django_filters.CharFilter(field_name="key", lookup_expr="icontains")

def search_filter(self, queryset, name, value):
return queryset.filter(node__name__icontains=value)
return queryset.filter(node__name__icontains=value)


class TestResultFilter(IdsFilter, django_filters.FilterSet):
search = django_filters.CharFilter(method="search_filter", label="Search")
case = django_filters.ModelChoiceFilter(queryset=TestCase.objects.all(), field_name="case")
template = django_filters.ModelChoiceFilter(queryset=Template.objects.all(), field_name="template")
case = django_filters.ModelChoiceFilter(
queryset=TestCase.objects.all(), field_name="case"
)
template = django_filters.ModelChoiceFilter(
queryset=Template.objects.all(), field_name="template"
)
key = django_filters.CharFilter(field_name="key", lookup_expr="icontains")

def search_filter(self, queryset, name, value):
return queryset.filter(template__name__icontains=value)
return queryset.filter(template__name__icontains=value)


class RegistryFilter(IdsFilter, django_filters.FilterSet):
unique = django_filters.CharFilter(field_name="unique", lookup_expr="icontains")
Expand All @@ -216,14 +267,15 @@ class TemplateFilter(IdsFilter, django_filters.FilterSet):
node_description = django_filters.CharFilter(
field_name="node__description", lookup_expr="icontains"
)
node = django_filters.ModelChoiceFilter(queryset=Node.objects.all(), field_name="node")
node = django_filters.ModelChoiceFilter(
queryset=Node.objects.all(), field_name="node"
)
search = django_filters.CharFilter(method="search_filter", label="Search")

def providable_filter(self, queryset, name, value):
return queryset.filter(agent__active=True)

def search_filter(self, queryset, name, value):
return queryset.filter(
Q(node__name__icontains=value) | Q(node__description__icontains=value)
)

6 changes: 4 additions & 2 deletions facade/graphql/mutations/postman/assign.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,9 @@ def mutate(
app = info.context.bounced.app
client = info.context.bounced.client

registry, _ = Registry.objects.get_or_create(user=creator, client=client, defaults=dict(app=info.context.bounced.app))
registry, _ = Registry.objects.get_or_create(
user=creator, client=client, defaults=dict(app=info.context.bounced.app)
)

creator = info.context.bounced.user
app = info.context.bounced.app
Expand All @@ -65,7 +67,7 @@ def mutate(
"reservation": res,
"args": args or [],
"creator": creator,
"status": AssignationStatus.ASSIGNED,
"status": AssignationStatus.RECEIVED,
"reference": reference,
"parent_id": parent,
}
Expand Down
1 change: 0 additions & 1 deletion facade/graphql/mutations/postman/provide.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ def mutate(root, info, node=None, template=None, params={}):

temp = Template.objects.get(id=template)


pro = Provision.objects.create(
**{
"template": temp,
Expand Down
Loading

0 comments on commit a263fce

Please sign in to comment.