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 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.
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 )