]> git.parisson.com Git - teleforma.git/commitdiff
Use the new "avis verifies" API pb-docker-dev
authorYoan Le Clanche <yoanl@pilotsystems.net>
Thu, 2 Jul 2026 07:30:57 +0000 (09:30 +0200)
committerYoan Le Clanche <yoanl@pilotsystems.net>
Thu, 2 Jul 2026 07:30:57 +0000 (09:30 +0200)
app/settings.py
teleforma/management/commands/test_avis_list.py

index 404a4273bda215123f91f3d789558d999045e6a5..93384f2f2fa665131caa3b455920595a1b395edd 100644 (file)
@@ -266,6 +266,10 @@ COPY_INSCRIPTION_TO_EMAIL = "inscription@pro-barreau.com"
 REPORT_TO_EMAIL = ('kostya.rilov@pre-barreau.com', 'alexia.dcruz@pro-barreau.com')
 EMAIL_SUBJECT_PREFIX = '[' + TELEFORMA_ORGANIZATION + '] '
 
+# Skeepers / Avis Vérifiés - Published API (OAuth2 client credentials)
+SKEEPERS_CLIENT_ID = os.environ.get('SKEEPERS_CLIENT_ID', '')
+SKEEPERS_CLIENT_SECRET = os.environ.get('SKEEPERS_CLIENT_SECRET', '')
+
 PASSWORD_HASHERS = [
     'django.contrib.auth.hashers.PBKDF2PasswordHasher',
 ]
index f3e86d14ddc1666e774f7092532eb66f483a94f0..77ea0edd5bbef35702563936d5a2a9e289d7a1e6 100644 (file)
@@ -1,26 +1,59 @@
+import datetime
+
 import requests
+from django.conf import settings
 from django.core.management.base import BaseCommand
-import datetime
+
+# Skeepers / Avis Vérifiés - Published API (OAuth2 client credentials)
+# Replaces the legacy cl.avis-verifies.com "publication" API deactivated on
+# 2026-11-17. See https://apidocs.skeepers.io/migrations-published.html
+SKEEPERS_TOKEN_URL = 'https://auth.skeepers.io/realms/skeepers/protocol/openid-connect/token'
+SKEEPERS_API_URL = 'https://api.skeepers.io/verified-reviews/v1/published'
+SKEEPERS_AUDIENCE = 'verified-reviews'
+
 
 class Command(BaseCommand):
-    help = "Fetch product reviews"
-
-    def handle(self, *args, **kwargs):
-        product_id = "CONF0124"
-        url = f'http://cl.avis-verifies.com/fr/cache/8/d/a/8da32059-03b0-23c4-1554-4f4b505a8c6a/AWS/PRODUCT_API/REVIEWS/{product_id}.json'
-        response = requests.get(url)
-        if response.status_code == 200:
-            avis_list = response.json()
-            for avis in avis_list:
-                print("*"*7)
-                print(avis)
-                print("*"*7)
-                date = avis['publish_date']
-                if date == 'Array':
-                    date = avis['review_date']
-                if date == 'Array':
-                    continue
+    help = "Fetch product reviews from the Skeepers Published API"
+
+    def add_arguments(self, parser):
+        parser.add_argument('--product', default='CONF0124')
+
+    def get_token(self):
+        response = requests.post(
+            SKEEPERS_TOKEN_URL,
+            data={
+                'grant_type': 'client_credentials',
+                'client_id': settings.SKEEPERS_CLIENT_ID,
+                'client_secret': settings.SKEEPERS_CLIENT_SECRET,
+                'audience': SKEEPERS_AUDIENCE,
+            },
+            timeout=10,
+        )
+        response.raise_for_status()
+        return response.json()['access_token']
+
+    def handle(self, *args, **options):
+        product_id = options['product']
+        if not settings.SKEEPERS_CLIENT_ID or not settings.SKEEPERS_CLIENT_SECRET:
+            self.stderr.write("SKEEPERS_CLIENT_ID / SKEEPERS_CLIENT_SECRET are not configured")
+            return
+
+        token = self.get_token()
+        response = requests.get(
+            SKEEPERS_API_URL + '/products/reviews',
+            params={'product_variation_id': product_id, 'limit': 200},
+            headers={'Authorization': 'Bearer %s' % token},
+            timeout=10,
+        )
+        if response.status_code != 200:
+            self.stderr.write("Failed to fetch reviews: %s" % response.status_code)
+            return
+
+        for avis in response.json():
+            print("*" * 7)
+            print(avis)
+            date = avis.get('publish_date') or avis.get('review_date')
+            if date:
                 avis['publish_date'] = datetime.datetime.strptime(
-                    date, '%Y-%m-%d %H:%M:%S')
-        else:
-            self.stderr.write(f"Failed to fetch reviews: {response.status_code}")
+                    date[:19], '%Y-%m-%dT%H:%M:%S')
+            print("*" * 7)