[TRABAJO PAGADO] Requisitos para el plugin de Discourse para el serializador de vista de tema

¿Qué te gustaría que hiciéramos?

RE: https://community.unix.com/

Acabamos de completar la migración a Discourse, pero mantendremos nuestros foros antiguos accesibles hasta 2021, ya que contamos con dos décadas de código heredado del cual nuestros miembros están muy orgullosos (y en el que han invertido mucho trabajo).

Para nuestro personal, que desee verificar ocasionalmente la integridad del código migrado, necesitamos un pequeño plugin que extraiga el value de topic_custom_fields y añada únicamente el entero (que es el ID del hilo del foro antiguo) al TopicViewSerializer. De esta forma, el serializador JSON incluirá el par clave-valor adicional:

"import_id" : <thread_id_of_legacy_forum>

Vea la consulta a continuación como ejemplo; así, el valor añadido al TopicViewSerializer (para este topic_id de Discourse) será:

"import_id": 284071
postgres=# \c discourse
You are now connected to database "discourse" as user "postgres".
discourse=# select * from topic_custom_fields where name like '%import_id%' and topic_id = 377947;
   id   | topic_id |   name    |     value     |         created_at         |         updated_at         
--------+----------+-----------+---------------+----------------------------+----------------------------
 239520 |   377947 | import_id | thread-284071 | 2020-04-22 03:20:03.968513 | 2020-04-22 03:20:03.968513
(1 row)

Queremos utilizar esta propiedad en un componente de plantilla de la siguiente manera:

{{import_id}}

Dado que necesitamos un pequeño componente de plantilla <span> para el plugin-outlet topic-category, que se verá así (y que será visible solo para nuestro nivel de confianza especificado):

<span class='import-id'>Legacy Forum Thread <a class='import-id-link' href='https://www.unix.com/showthread.php?t={{import_id}}'>{{import_id}}</a></span>

¿Cuándo lo necesitas?

Cualquier momento en las próximas semanas está bien. No hay mucha prisa.

¿Cuál es tu presupuesto, en $ USD, que puedes ofrecer por esta tarea?

Se aceptan todas las cotizaciones razonables por este pequeño plugin.

Información adicional

Tenemos previsto hacer este código libremente disponible para todos aquellos que hayan realizado una migración similar. Sin embargo, es muy posible que otros foros heredados no tengan una preocupación tan alta por la integridad de los datos del código antiguo, por lo que es posible que nuestro foro sea el único que utilice este plugin.

Ayer redacté una descripción de este requisito “excesivamente compleja” y, por tanto, quizás “inexacta”; por lo que creo que la descripción anterior es más simple y fácil de entender (espero):

Nota al pie

Trabajé en este pequeño plugin durante varios días; fue mi primer intento de crear un plugin para Discourse y seguía obteniendo un valor null para import_id en el TopicViewSerializer.

Actualización

Gracias a un poco de amabilidad y tutoría, ahora tengo funcionando la parte del serializador de esta tarea.

3 Me gusta

Actualización:

El trabajo en este complemento está avanzando gracias a la orientación, el ánimo y el apoyo constante de @spirobel.

Sigo trabajando en el código paso a paso, y lo puliré para que esté disponible para cualquier migrador que pueda tener un requisito similar en el futuro.

@spirobel ha sido excelente para trabajar conmigo, permitiéndome hacer la mayor parte del trabajo y depurar yo mismo, pero brindándome consejos, código, borradores de PR y pistas cuando me topaba con un callejón sin salida.

Gracias @spirobel !

6 Me gusta

Actualización:

Acabo de completar (versión alpha) y he comenzado las pruebas en vivo de mi primer plugin.

Estado:

  • Pruebas en vivo

Por hacer

  • Este es mi primer plugin de Discourse. El enlace al foro antiguo está codificado directamente en el componente. Necesito convertir esto en una configuración ajustable.
  • Mejorar el plugin con el tiempo para llevar el código al “estándar de Discourse”, ya que actualmente está muy lejos de ello.
  • Publicar en la categoría #plugin cuando las pruebas estén finalizadas.

Agradecimiento

Un agradecimiento especial a @spirobel por orientarme ayer y ayudarme a que el serializador y la estructura básica del componente funcionaran correctamente.

Advertencia

Todas las prácticas de codificación “no estándar o deficientes” son responsabilidad mía.

Notas

Esta información del foro antiguo solo es visible (configurable) para miembros con nivel de confianza 4 en nuestros foros;

7 Me gusta

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.