Problema al crear Tema con external_id

Hola,

  1. Creé un Tema (usando la API REST) con el campo “external_id”.
  2. Eliminé ese Tema, supongo que el Tema estará en la Base de Datos pero estará oculto para los usuarios.
  3. Intenté crear el Mismo Tema con el mismo “external_id”, obtengo “External has already been taken”.

Si el Tema se elimina desde el punto de vista del usuario, entonces el usuario debería poder crear un nuevo Tema con los mismos datos, pero ¿por qué no sucede? Parece que no hay forma de usar el mismo “external_id”. Parece un error.

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"]}

¿Qué pasaría si el primer tema fuera recuperado?

1 me gusta

no hay forma de recuperar ese primer tema, no veo ningún icono/botón para recuperar.

Hola Mohan. :wave:

Creo que a lo que @RGJ se refería: esto no es un error, ya que Discourse utiliza un enfoque de “eliminación lógica” por defecto. El external_id se usaría en ese contexto, lo cual es intencional. :+1:

2 Me gusta

El icono para “restaurar” es este:

Y también está la opción en la llave inglesa del tema:

No existe tal cosa

El punto es que dicho tema puede ser recuperado, y en ese caso habría dos temas con el mismo ID externo. El ID externo debe ser único, en todos los temas, incluidos los eliminados. Como dijo @maiki, esto es por diseño.

1 me gusta

¿se puede recuperar? ¿cómo? Yo también quiero recuperar ese tema, mi problema desaparecerá. pero no hay forma de recuperar ese tema.

O discourse debería permitir usar el external_id que se usa en un tema eliminado o debería tener alguna forma de recuperar el tema eliminado con ese external_id. No veo ninguna de estas dos cosas.

Así que obviamente es un error.

Las publicaciones anteriores a la mía indican claramente que los temas se pueden restaurar. Que parezca que no puedes restaurar este tema específico no significa que sea un error, sería una cuestión de permisos o configuraciones.

¿Eres administrador del foro?

Por cierto, por favor deja de clasificar esto como Bug.

1 me gusta

¿Debería clasificar esto como un error?

No, no deberías.
Por favor, usa el modo seguro y mira si puedes hacer esto. Si no puedes, dinos con gran detalle qué ves en su lugar. Las capturas de pantalla ayudarán.

Avísame si estoy intentando de forma incorrecta.

2 Me gusta

El botón de restaurar está en el tema “eliminado”. Así que necesitas verlo y restaurarlo desde allí.

No puedes acceder al menú apropiado desde la lista de publicaciones eliminadas por el usuario. Tienes que ir al tema en sí para ver la opción en el menú:


@Mohan43u, ¿eso responde a tu pregunta original sobre cómo se usa el external_id? :slight_smile:

Sí, pero @Mohan43u tiene razón, no hay forma de ir allí desde la lista de “publicaciones eliminadas”. Entonces, ¿cómo llegas a ese tema?

Además, ?status=deleted ya no parece funcionar.

No hay forma de ir a ese tema eliminado excepto desde mi página de perfil. No es accesible desde las categorías.

/latest?status=deleted funciona para mí en mi sitio de prueba.


Ahhh, ya veo. El video definitivamente ayudó. :slight_smile: Sí, el título del tema no aparece actualmente en los temas eliminados desde esa vista. Esto se ha mencionado anteriormente, pero puede valer la pena revisarlo de nuevo. :+1:

¿Podrías intentar [TuSitio]/latest?status=deleted y ver si puedes acceder al tema desde la lista de temas allí en su lugar?

Y ahora que he encontrado el otro tema, también hay otro consejo para navegar al tema eliminado a través de tus registros de personal, si eso ayuda:

1 me gusta

Foro totalmente limpio, pruebas superadas esta mañana. Cuando deselimino el tema, aparece de nuevo en el último.

¡¡Buena sugerencia!!
Pero sería muy bueno si la publicación eliminada en el perfil también permitiera la navegación.

1 me gusta

Creo que el tuyo está oculto por la llamada a la acción del banner del tema de bienvenida. ¿Podrías intentar ocultarlo en tu consola y ver si el tema está detrás de él? (o editar el tema de bienvenida para descartar el banner :slight_smile:)

1 me gusta

¡Tienes razón!

Eso es a la vez brillante (tu respuesta) y muy triste (la razón) al mismo tiempo.

Así que ahora tenemos dos razones para reclasificar esto a UX

1 me gusta

Muchas gracias, pude recuperar ese tema y mi cliente de rest-api está contento.

3 Me gusta