Créé un sujet (via l’API REST) avec le champ « external_id ».
Supprimé ce sujet. Je suppose que le sujet sera toujours dans la base de données, mais caché aux utilisateurs.
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"]}
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.
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.
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.
Les messages ci-dessus indiquent clairement que les sujets peuvent être restaurés. Le fait que vous ne semblez pas pouvoir restaurer ce sujet spécifique ne signifie pas qu’il s’agit d’un bug ; cela relève probablement des permissions ou des paramètres.
Êtes-vous administrateur du forum ?
Par ailleurs, veuillez cesser de classer ce cas comme Contribute > Bug.
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.
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 :
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 ?
/latest?status=deleted fonctionne pour moi sur mon site de test ?
Ahhh, je vois maintenant. La vidéo a vraiment aidé. 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.
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 :
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 )