diff options
Diffstat (limited to 'ishtar_common/models_rest.py')
-rw-r--r-- | ishtar_common/models_rest.py | 44 |
1 files changed, 40 insertions, 4 deletions
diff --git a/ishtar_common/models_rest.py b/ishtar_common/models_rest.py index 7d321ca92..db7d21834 100644 --- a/ishtar_common/models_rest.py +++ b/ishtar_common/models_rest.py @@ -1,10 +1,16 @@ from django.contrib.auth.models import User from django.contrib.contenttypes.models import ContentType from django.contrib.gis.db import models +from django.contrib.postgres.fields import ArrayField from ishtar_common.utils import ugettext_lazy as _ +MAIN_CONTENT_TYPES = ( + ("archaeological_operations", "operation"), +) + + class ApiUser(models.Model): user_ptr = models.OneToOneField( User, primary_key=True, related_name="apiuser", on_delete=models.CASCADE @@ -12,8 +18,8 @@ class ApiUser(models.Model): ip = models.GenericIPAddressField(verbose_name=_("IP")) class Meta: - verbose_name = _("Api - User") - verbose_name_plural = _("Api - Users") + verbose_name = _("API - User") + verbose_name_plural = _("API - Users") def __str__(self): return self.user_ptr.username @@ -28,5 +34,35 @@ class ApiSearchModel(models.Model): ) class Meta: - verbose_name = _("Api - Search model") - verbose_name_plural = _("Api - Search models") + verbose_name = _("API - Search model") + verbose_name_plural = _("API - Search models") + + +class ApiExternalSource(models.Model): + url = models.URLField(verbose_name=_("URL")) + name = models.CharField(verbose_name=_("Name"), max_length=200) + key = models.CharField(_("Key"), max_length=40) + + class Meta: + verbose_name = _("API - External source") + verbose_name_plural = _("API - External sources") + + +class ApiKeyMatch(models.Model): + source = models.ForeignKey(ApiExternalSource, on_delete=models.CASCADE) + search_model = models.ForeignKey(ContentType, on_delete=models.CASCADE, + verbose_name=_("Search model")) + search_keys = ArrayField(models.CharField(max_length=200), + verbose_name=_("Search keys"), blank=True) + distant_slug = models.SlugField(verbose_name=_("Distant key"), max_length=200, + allow_unicode=True) + distant_label = models.TextField(verbose_name=_("Distant value"), blank=True, + default="") + local_slug = models.SlugField(verbose_name=_("Local key"), max_length=200, + allow_unicode=True) + local_label = models.TextField(verbose_name=_("Local value"), blank=True, + default="") + + class Meta: + verbose_name = _("API - Key match") + verbose_name_plural = _("API - Keys matches") |