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 ) ip = models.GenericIPAddressField(verbose_name=_("IP")) class Meta: verbose_name = _("API - User") verbose_name_plural = _("API - Users") def __str__(self): return self.user_ptr.username class ApiSearchModel(models.Model): user = models.ForeignKey(ApiUser, on_delete=models.CASCADE) content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE) limit_query = models.TextField( verbose_name=_("Limit query"), blank=True, null=True, help_text=_("Search query add to each request") ) class Meta: 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")