src/notes/models/base.py
author ymh <ymh.work@gmail.com>
Fri, 30 Nov 2018 10:53:15 +0100
changeset 183 f8f3af9e5c83
parent 119 8ff8e2aee0f9
permissions -rw-r--r--
Change the settings to avoid using Session authentication for rest framework as it raise exceptions in case client and backend are on the same domain On the filter, adapt to take into account new version of django_filters

"""
base abstract models
"""
import uuid

from concurrency.fields import AutoIncVersionField
from django.db import models
from django.utils.translation import ugettext_lazy as _


class ModelManager(models.Manager):
    def get_by_natural_key(self, ext_id):
        return self.get(ext_id=ext_id)

class Model(models.Model):
    objects = ModelManager()

    created = models.DateTimeField(auto_now_add=True, verbose_name=_('Model|created'), db_index=True)
    updated = models.DateTimeField(auto_now=True, verbose_name=_('Model|updated'), db_index=True)
    ext_id = models.UUIDField(unique=True, default=uuid.uuid4, verbose_name=_('Model|ext_id'))
    version = AutoIncVersionField(verbose_name=_('Model|version'))

    def natural_key(self):
        return (self.ext_id, )

    class Meta:
        abstract = True