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 }, )()