Problème de création de Topic avec external_id

Salut,

  1. Créé un sujet (via l’API REST) avec le champ « external_id ».
  2. Supprimé ce sujet. Je suppose que le sujet sera toujours dans la base de données, mais caché aux utilisateurs.
  3. Tenté de créer le même sujet avec le même « external_id ». J’ai reçu le message « External has already been taken » (L’identifiant externe a déjà été utilisé).

Si le sujet est supprimé du point de vue de l’utilisateur, alors l’utilisateur devrait pouvoir créer un nouveau sujet avec les mêmes données. Mais pourquoi cela n’arrive-t-il pas ? Il semble qu’il n’y ait aucun moyen d’utiliser le même « external_id ». Cela ressemble à un bug.

2022/10/12 12:33:32 resp: &{Status:404 Not Found StatusCode:404 Proto:HTTP/2.0 ProtoMajor:2 ProtoMinor:0 Header:map[Content-Type:[application/json; charset=utf-8] Date:[Wed, 12 Oct 2022 10:33:32 GMT] Referrer-Policy:[strict-origin-when-cross-origin] Server:[nginx] Vary:[Accept-Encoding] X-Content-Type-Options:[nosniff] X-Discourse-Route:[topics/show_by_external_id] X-Discourse-Username:[mohan43u] X-Download-Options:[noopen] X-Frame-Options:[SAMEORIGIN] X-Permitted-Cross-Domain-Policies:[none] X-Request-Id:[26b86048-937c-451c-ac0c-b23dbcd3c8ca] X-Runtime:[0.013603] X-Xss-Protection:[0]] Body:0xc000183bc0 ContentLength:-1 TransferEncoding:[] Close:false Uncompressed:true Trailer:map[] Request:0xc00030a800 TLS:0xc0000d22c0}
2022/10/12 12:33:32 req: &{Method:GET URL:https://forums.tamillinuxcommunity.org/t/external_id/7N69MKNwQAs.json Proto:HTTP/1.1 ProtoMajor:1 ProtoMinor:1 Header:map[Api-Key:[] Api-Username:[mohan43u]] Body:<nil> GetBody:<nil> ContentLength:0 TransferEncoding:[] Close:false Host:forums.tamillinuxcommunity.org Form:map[] PostForm:map[] MultipartForm:<nil> Trailer:map[] RemoteAddr: RequestURI: TLS:<nil> Cancel:<nil> Response:<nil> ctx:0xc0000260b8}
2022/10/12 12:33:32 {"errors":["The requested URL or resource could not be found."],"error_type":"not_found"}
2022/10/12 12:33:32 uploading  https://www.youtube.com/watch?v=7N69MKNwQAs
2022/10/12 12:33:32 {"title":"[Youtube] ஆண்ட்ராய்டுக்கான கட்டற்ற மென்பொருள் | FOSS for Android | F-Droid | Tamil","raw":"https://www.youtube.com/watch?v=7N69MKNwQAs\nஇந்த காணொளியில் F-Droid எவ்வாறு பயன்படுத்துவது? அதன் பயன் என்ன ? - என்பதை காண்போம்.\n\nகாணொளி வழங்கியவர்: \nமணிமாறன், விழுப்புரம் கட்டற்ற மென்பொருள் குழுமம்\n\nF-Droid: http://fdroid.org/\n\n#fdroid #fossforandroid #tamil #android #vglug","category":3,"external_id":"7N69MKNwQAs"}

2022/10/12 12:33:33 failed to create Topic: https://www.youtube.com/watch?v=7N69MKNwQAs
2022/10/12 12:33:33 err: <nil>
2022/10/12 12:33:33 resp: &{Status:422 Unprocessable Entity StatusCode:422 Proto:HTTP/2.0 ProtoMajor:2 ProtoMinor:0 Header:map[Cache-Control:[no-cache, no-store] Content-Type:[application/json; charset=utf-8] Date:[Wed, 12 Oct 2022 10:33:33 GMT] Referrer-Policy:[strict-origin-when-cross-origin] Server:[nginx] X-Content-Type-Options:[nosniff] X-Discourse-Route:[posts/create] X-Discourse-Username:[mohan43u] X-Download-Options:[noopen] X-Frame-Options:[SAMEORIGIN] X-Permitted-Cross-Domain-Policies:[none] X-Request-Id:[217f7585-269a-48b3-ac5e-215e02e76bdb] X-Runtime:[0.060606] X-Xss-Protection:[0]] Body:{cs:0xc00032c180} ContentLength:-1 TransferEncoding:[] Close:false Uncompressed:false Trailer:map[] Request:0xc000352100 TLS:0xc0000d22c0}
2022/10/12 12:33:33 req: &{Method:POST URL:https://forums.tamillinuxcommunity.org/posts.json Proto:HTTP/1.1 ProtoMajor:1 ProtoMinor:1 Header:map[Api-Key:[] Api-Username:[mohan43u] Content-Type:[application/json]] Body:0xc0005b0228 GetBody:0x6b0e40 ContentLength:733 TransferEncoding:[] Close:false Host:forums.tamillinuxcommunity.org Form:map[] PostForm:map[] MultipartForm:<nil> Trailer:map[] RemoteAddr: RequestURI: TLS:<nil> Cancel:<nil> Response:<nil> ctx:0xc0000260b8}
2022/10/12 12:33:33 {"action":"create_post","errors":["Title has already been used","External has already been taken"]}

Que se passerait-il si le premier sujet était restauré ?

1 « J'aime »

il n’y a aucun moyen de restaurer ce premier sujet, je ne vois aucune icône/bouton pour le restaurer.

Salut Mohan. :wave:

Je pense que ce à quoi @RGJ faisait référence : ce n’est pas un bug, car Discourse utilise par défaut une approche de « suppression logique ». L’external_id serait utilisé dans ce contexte, ce qui est voulu. :+1:

2 « J'aime »

L’icône pour annuler la suppression est celle-ci :

Il y a aussi l’option dans la clé à molette du sujet :

Il n’y a rien de tel

L’important est qu’un tel sujet puisse être restauré, et dans ce cas, il y aurait deux sujets avec le même ID externe. L’ID externe est censé être unique, à travers tous les sujets, y compris ceux qui ont été supprimés. Comme l’a dit @maiki, c’est par conception.

1 « J'aime »

peut être restauré ? comment ? Je veux aussi restaurer ce sujet, mon problème disparaîtra. mais il n’y a aucun moyen de restaurer ce sujet.

Soit discourse devrait permettre d’utiliser l’external_id qui est utilisé sur un sujet supprimé, soit il devrait y avoir un moyen de restaurer le sujet supprimé avec cet external_id. Je ne vois aucune de ces deux options.

C’est donc évidemment un bug.

Les messages ci-dessus indiquent clairement que les sujets peuvent être restaurés. Le fait que vous ne puissiez pas restaurer ce sujet spécifique ne signifie pas qu’il s’agit d’un bug, mais plutôt d’un problème de permissions ou de configuration.

Êtes-vous administrateur du forum ?

Au fait, veuillez cesser de classer cela comme un Bug.

1 « J'aime »

dois-je classifier cela comme un bug ?

Non, vous ne devriez pas.

Veuillez utiliser le mode sans échec et voir si vous pouvez le faire. Si vous ne pouvez pas, veuillez nous dire en détail ce que vous voyez à la place. Les captures d’écran aideront.

Faites-moi savoir si j’essaie de la mauvaise façon

2 « J'aime »

Le bouton “restaurer” se trouve dans le sujet « supprimé ». Vous devez donc le consulter et le restaurer à partir de là.

Vous ne pouvez pas accéder au menu approprié depuis la liste des messages supprimés par l’utilisateur. Vous devez aller dans le sujet lui-même pour voir l’option dans le menu :


@Mohan43u, cela répond-il à votre question initiale sur l’utilisation de external_id ? :slight_smile:

Oui, mais @Mohan43u a un argument valable, il n’y a aucun moyen d’y accéder depuis la liste des « messages supprimés ». Alors, comment accède-t-on à ce sujet ?

De plus, ?status=deleted ne semble plus fonctionner ?

Il n’y a aucun moyen d’accéder à ce sujet supprimé, sauf depuis ma page de profil. Il n’est pas du tout accessible depuis les catégories.

/latest?status=deleted fonctionne pour moi sur mon site de test ?


Ahhh, je vois maintenant. La vidéo a vraiment aidé. :slight_smile: Oui, le titre du sujet n’apparaît actuellement pas sur les sujets supprimés de cette vue. Cela a été soulevé précédemment, mais cela mérite peut-être un nouvel examen. :+1:

Pourriez-vous essayer [YourSite]/latest?status=deleted et voir si vous pouvez accéder au sujet à partir de la liste des sujets là-bas ?

Et maintenant que j’ai trouvé l’autre sujet, il y a aussi une autre astuce pour naviguer vers le sujet supprimé via vos journaux du personnel, si cela peut vous aider :

1 « J'aime »

Forum totalement propre, tests réussis ce matin. Lorsque je rétablis le sujet, il apparaît à nouveau dans les derniers.

Bonne suggestion !!
Mais ce serait vraiment bien si le message supprimé dans le profil permettait également d’y naviguer.

1 « J'aime »

Je pense que le vôtre est caché par le bouton d’appel à l’action de la bannière du sujet de bienvenue. Pourriez-vous essayer de le masquer dans votre console et voir si le sujet se trouve derrière ? (ou modifier le sujet de bienvenue pour masquer la bannière :slight_smile:)

1 « J'aime »

Vous avez raison !

C’est à la fois brillant (votre réponse) et très triste (la raison) en même temps.

Nous avons donc maintenant deux raisons de recatégoriser cela en UX

1 « J'aime »

Merci beaucoup, j’ai pu récupérer ce sujet et mon client rest-api est satisfait.

3 « J'aime »