authentik/passbook/lib/models.py

38 lines
1.1 KiB
Python
Raw Normal View History

2018-11-14 18:14:14 +00:00
"""Generic models"""
from django.db import models
from model_utils.managers import InheritanceManager
2018-11-14 18:14:14 +00:00
class CreatedUpdatedModel(models.Model):
"""Base Abstract Model to save created and update"""
2019-12-31 11:51:16 +00:00
2019-02-21 15:06:57 +00:00
created = models.DateTimeField(auto_now_add=True)
2018-11-14 18:14:14 +00:00
last_updated = models.DateTimeField(auto_now=True)
class Meta:
abstract = True
class InheritanceAutoManager(InheritanceManager):
"""Object manager which automatically selects the subclass"""
def get_queryset(self):
return super().get_queryset().select_subclasses()
class InheritanceForwardManyToOneDescriptor(
models.fields.related.ForwardManyToOneDescriptor
):
"""Forward ManyToOne Descriptor that selects subclass. Requires InheritanceAutoManager."""
def get_queryset(self, **hints):
return self.field.remote_field.model.objects.db_manager(
hints=hints
).select_subclasses()
class InheritanceForeignKey(models.ForeignKey):
"""Custom ForeignKey that uses InheritanceForwardManyToOneDescriptor"""
forward_related_accessor_class = InheritanceForwardManyToOneDescriptor