41 lines
1.1 KiB
Python
41 lines
1.1 KiB
Python
from django import forms
|
|
from django_registries.registry import Interface
|
|
from django_registries.registry import Registry
|
|
|
|
|
|
class ServiceRegistry(Registry):
|
|
"""Registry for services"""
|
|
|
|
implementations_module = "services"
|
|
|
|
|
|
class ServiceInterface(Interface):
|
|
"""Interface for services"""
|
|
|
|
registry = ServiceRegistry
|
|
|
|
name: str
|
|
description: str
|
|
url: str
|
|
|
|
public: bool = False
|
|
|
|
# TODO: add a way to add a something which defines the required fields for a service
|
|
# - maybe a list of tuples with the field name and the type of the field
|
|
# this could be used to generate a form for the service, and also to validate
|
|
# the data saved in a JSONField on the ServiceAccess model
|
|
|
|
subscribe_fields: list[tuple[str, forms.Field]] = []
|
|
|
|
def get_form(self) -> type:
|
|
"""Get the form for the service"""
|
|
print(self.subscribe_fields)
|
|
return type(
|
|
"ServiceForm",
|
|
(forms.Form,),
|
|
{
|
|
field_name: field_type
|
|
for field_name, field_type in self.subscribe_fields
|
|
},
|
|
)()
|