summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2021-12-21 10:04:46 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2022-12-12 12:20:59 +0100
commit8b173f3397fd7f82cdc1b7377d1b62d5eec0eb14 (patch)
tree3c63c708b72d20d1f550686d108773ca5fd1f889
parent1ad0312b086b0286b81322252991c855deca554e (diff)
downloadIshtar-8b173f3397fd7f82cdc1b7377d1b62d5eec0eb14.tar.bz2
Ishtar-8b173f3397fd7f82cdc1b7377d1b62d5eec0eb14.zip
Syndication - fix tests
-rw-r--r--archaeological_operations/tests.py52
-rw-r--r--ishtar_common/admin.py35
2 files changed, 54 insertions, 33 deletions
diff --git a/archaeological_operations/tests.py b/archaeological_operations/tests.py
index cc0a8cb1b..371857337 100644
--- a/archaeological_operations/tests.py
+++ b/archaeological_operations/tests.py
@@ -87,10 +87,8 @@ from ishtar_common.models import (
Document,
ValueFormater,
Regexp,
- ApiUser,
- ApiSearchModel,
)
-from ishtar_common.models_imports import ImporterDefault, ImporterDefaultValues
+from ishtar_common.models_rest import ApiUser, ApiSearchModel, ApiSheetFilter
from archaeological_files.models import File, FileType
from ishtar_common import forms_common
@@ -4445,12 +4443,16 @@ class ApiTest(OperationInitTest, APITestCase):
self.create_operation(self.user, self.orgas[0])
self.create_operation(self.user, self.orgas[0])
- keys = ("old-neolithic", "middle-neolithic", "recent-neolithic",
- "final-neolithic")
- old_neo = models.Period.objects.get(txt_idx='old-neolithic')
- middle_neo = models.Period.objects.get(txt_idx='middle-neolithic')
- recent_neo = models.Period.objects.get(txt_idx='recent-neolithic')
- final_neo = models.Period.objects.get(txt_idx='final-neolithic')
+ keys = (
+ "old-neolithic",
+ "middle-neolithic",
+ "recent-neolithic",
+ "final-neolithic",
+ )
+ old_neo = models.Period.objects.get(txt_idx="old-neolithic")
+ middle_neo = models.Period.objects.get(txt_idx="middle-neolithic")
+ recent_neo = models.Period.objects.get(txt_idx="recent-neolithic")
+ final_neo = models.Period.objects.get(txt_idx="final-neolithic")
self.operation_0 = models.Operation.objects.get(pk=self.operations[0].pk)
self.operation_0.code_patriarche = "28123"
self.operation_0.save()
@@ -4769,10 +4771,7 @@ class ApiTest(OperationInitTest, APITestCase):
def _mock_search(self, mock_get, model, url):
_get_item = get_item(
- model,
- "get_" + model.SLUG,
- model.SLUG,
- no_permission_check=True
+ model, "get_" + model.SLUG, model.SLUG, no_permission_check=True
)
mock_get.__call__ = _get_item
@@ -4824,7 +4823,9 @@ class ApiTest(OperationInitTest, APITestCase):
url = base_url + params
self._mock_search(mock_get, models.Operation, "/get-operation/" + params)
response = self.client.get(
- url, format="json", HTTP_AUTHORIZATION=self.auth_token,
+ url,
+ format="json",
+ HTTP_AUTHORIZATION=self.auth_token,
)
self.assertEqual(response.status_code, 200)
j = json.loads(response.content.decode())
@@ -4839,7 +4840,9 @@ class ApiTest(OperationInitTest, APITestCase):
url = base_url + params
self._mock_search(mock_get, models.Operation, "/get-operation/" + params)
response = self.client.get(
- url, format="json", HTTP_AUTHORIZATION=self.auth_token,
+ url,
+ format="json",
+ HTTP_AUTHORIZATION=self.auth_token,
)
self.assertEqual(response.status_code, 200)
j = json.loads(response.content.decode())
@@ -4852,18 +4855,23 @@ class ApiTest(OperationInitTest, APITestCase):
# test timeout
pass
- def test_distant_sheet_display(self):
- # POV: local
- # test query limitation
- pass
-
def test_sheet_display(self):
# POV: external
api_search_model = self.create_api_search_model()
url = reverse("api-get-operation", args=[self.operations[0].pk])
- data = {"submited": 1, "search_vector": "28"}
response = self.client.get(
- url, format="json", HTTP_AUTHORIZATION=self.auth_token, data=data
+ url, format="json", HTTP_AUTHORIZATION=self.auth_token
+ )
+ self.assertEqual(response.status_code, 200)
+ j = json.loads(response.content.decode())
+ self.assertIsNotNone(j.get("cached_label", None))
+ # filter
+ ApiSheetFilter.objects.create(
+ api_search_model=api_search_model, key="cached_label"
+ )
+ response = self.client.get(
+ url, format="json", HTTP_AUTHORIZATION=self.auth_token
)
self.assertEqual(response.status_code, 200)
j = json.loads(response.content.decode())
+ self.assertIsNone(j.get("cached_label", None))
diff --git a/ishtar_common/admin.py b/ishtar_common/admin.py
index 5c2f33aa1..b7de250c6 100644
--- a/ishtar_common/admin.py
+++ b/ishtar_common/admin.py
@@ -44,7 +44,7 @@ from django.contrib.gis.geos import GEOSGeometry, MultiPolygon
from django.contrib.gis.gdal.error import GDALException
from django.contrib.gis.geos.error import GEOSException
from django.core.cache import cache
-from django.core.exceptions import FieldError
+from django.core.exceptions import FieldError, FieldDoesNotExist
from django.core.serializers import serialize
from django.db.models.fields import (
BooleanField,
@@ -2186,14 +2186,15 @@ def update_types_from_source(modeladmin, request, queryset):
send_error_message(
request,
str(_("Response of {} is not a valid JSON message.")).format(curl),
- return_url,
)
continue
result = source.update_matches(content)
if result.get("created", None):
created += result['created']
if result.get("updated", None):
- updated += result['updated']
+ updated += result["updated"]
+ if result.get("deleted", None):
+ deleted += result["deleted"]
if result.get("search_model do not exist", None):
missing_models += result["search_model do not exist"]
if result.get("type do not exist", None):
@@ -2214,10 +2215,10 @@ def update_types_from_source(modeladmin, request, queryset):
messages.add_message(
request,
messages.INFO,
- str(_(f"{result['deleted']} matches deleted")),
+ str(_(f"{deleted} matches deleted")),
)
if missing_models:
- missing_models = ", ".join(missing_models)
+ missing_models = ", ".join(set(missing_models))
messages.add_message(
request,
messages.INFO,
@@ -2228,7 +2229,7 @@ def update_types_from_source(modeladmin, request, queryset):
),
)
if missing_types:
- missing_types = ", ".join(result["type do not exist"])
+ missing_types = ", ".join(set(missing_types))
messages.add_message(
request,
messages.INFO,
@@ -2360,11 +2361,11 @@ class ApiSheetFilterForm(forms.ModelForm):
models_rest.ApiSearchModel.objects,
label=_("API - Remote access - Search model"),
)
- key = forms.ChoiceField(
+ key = forms.CharField(
label=_("Key"),
initial="-",
- choices=(("-", "-"),),
help_text=_("Save first to choose a key"),
+ max_length=200,
)
class Meta:
@@ -2381,9 +2382,21 @@ class ApiSheetFilterForm(forms.ModelForm):
query_dict._mutable = True
query_dict.setlist("api_search_model", [instance.api_search_model.pk])
query_dict._mutable = False
- self.fields["api_search_model"].widget.attrs = {'disabled': 'disabled'}
- self.fields["key"].help_text = ""
- self.fields["key"].choices = [(k, k) for k in instance.get_keys()]
+ self.fields["api_search_model"].widget.attrs = {"disabled": "disabled"}
+ keys = instance.get_keys()
+ model = instance.api_search_model.content_type.model_class()
+ help_text = []
+ for key in keys:
+ try:
+ field = model._meta.get_field(key)
+ except FieldDoesNotExist:
+ field = None
+ if field and getattr(field, "verbose_name", None):
+ key += f" ({field.verbose_name})"
+ help_text.append(key)
+ self.fields["key"].help_text = str(_("Available keys: ")) + " ; ".join(
+ help_text
+ )
class ApiSheetFilterAdmin(admin.ModelAdmin):