Skip to content
Snippets Groups Projects
Verified Commit 66419d38 authored by Nik | Klampfradler's avatar Nik | Klampfradler
Browse files

Allow using `match` field type directly

parent 6ecc8130
No related branches found
No related tags found
No related merge requests found
......@@ -89,9 +89,39 @@ class FieldType:
self.args = kwargs
class FieldTypeRegistry:
def __init__(self):
self.field_types = {}
def register(self, field_type: Type[FieldType]):
"""Add new `FieldType` to registry.
Can be used as decorator, too.
"""
if field_type.name in self.field_types:
raise ValueError(f"The field type {field_type.name} is already registered.")
self.field_types[field_type.name] = field_type
return field_type
def get_from_name(self, name: str) -> FieldType:
"""Get `FieldType` by its name."""
return self.field_types[name]
@property
def choices(self) -> Sequence[Tuple[str, str]]:
"""Return choices in Django format."""
return [(f.name, f.verbose_name) for f in self.field_types.values()]
field_type_registry = FieldTypeRegistry()
@field_type_registry.register
class MatchFieldType(FieldType):
"""Field type for getting an instance."""
name: str = "match"
priority: int = 1
def get_priority(self):
......@@ -126,34 +156,6 @@ class RegExFieldType(ProcessFieldType):
instance.save()
class FieldTypeRegistry:
def __init__(self):
self.field_types = {}
def register(self, field_type: Type[FieldType]):
"""Add new `FieldType` to registry.
Can be used as decorator, too.
"""
if field_type.name in self.field_types:
raise ValueError(f"The field type {field_type.name} is already registered.")
self.field_types[field_type.name] = field_type
return field_type
def get_from_name(self, name: str) -> FieldType:
"""Get `FieldType` by its name."""
return self.field_types[name]
@property
def choices(self) -> Sequence[Tuple[str, str]]:
"""Return choices in Django format."""
return [(f.name, f.verbose_name) for f in self.field_types.values()]
field_type_registry = FieldTypeRegistry()
@field_type_registry.register
class UniqueReferenceFieldType(MatchFieldType):
name = "unique_reference"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment