[INGAGGIO A PAGAMENTO] Requisiti per il plugin Discourse per il serializzatore della visualizzazione dell'argomento

Cosa vorresti che venisse fatto?

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

Abbiamo appena completato la migrazione a Discourse, ma lasceremo accessibili i nostri vecchi forum fino al 2021, poiché disponiamo di due decenni di codice legacy di cui ogni nostro membro è orgoglioso (e su cui ha lavorato molto).

Per il nostro personale che desidera verificare di tanto in tanto l’integrità del codice migrato, vorremmo un piccolo plugin che separi il valore value da topic_custom_fields e aggiunga solo l’intero (che corrisponde all’ID del thread del forum legacy) a TopicViewSerializer, in modo che il serializzatore JSON includa la coppia chiave-valore aggiuntiva:

"import_id": <thread_id_del_forum_legacy>

Vedi la query sottostante come esempio: il valore aggiunto a TopicViewSerializer (per questo topic_id di Discourse) sarà:

"import_id": 284071
postgres=# \c discourse
Ora sei connesso al database "discourse" come utente "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)

Vogliamo utilizzare questa proprietà in un componente di template come segue:

{{import_id}}

Poiché desideriamo un piccolo componente template <span> per il plugin-outlet topic-category, che avrà questo aspetto (e sarà visibile solo al nostro livello di fiducia specificato):

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

Entro quando deve essere completato?

Qualsiasi momento nelle prossime settimane va bene. Non c’è fretta.

Qual è il tuo budget, in $ USD, che puoi offrire per questo compito?

Sono benvenute tutte le quotazioni ragionevoli per questo piccolo plugin.

Informazioni aggiuntive

Prevediamo di rendere questo codice liberamente disponibile a tutti coloro che hanno effettuato una migrazione simile. Tuttavia, è molto probabile che altri forum legacy non abbiano una preoccupazione così elevata per l’integrità dei dati del codice legacy, quindi è possibile che il nostro forum sia l’unico a utilizzare questo plugin.

Ieri ho redatto una descrizione di questo requisito “troppo complessa” e quindi forse “imprecisa”; quindi penso che la descrizione sopra sia più semplice e facile da capire (spero):

Nota a piè di pagina

Ho lavorato a questo piccolo plugin per diversi giorni, il mio primo tentativo con un plugin Discourse, e continuavo a ottenere un valore null per import_id in TopicViewSerializer.

Aggiornamento

Grazie a un po’ di gentilezza e tutoraggio, ora ho la parte del serializzatore di questo compito funzionante.

3 Mi Piace

Aggiornamento:

Il lavoro su questo plugin sta avanzando grazie a una gentile guida, incoraggiamento e supporto da parte di @spirobel.

Sto ancora lavorando al codice, passo dopo passo, e lo rifinirò per renderlo disponibile a eventuali migratori che potrebbero avere requisiti simili in futuro.

@spirobel è stato davvero fantastico con cui lavorare: mi ha permesso di svolgere la maggior parte del lavoro e del debugging da solo, fornendomi consigli, codice, bozze di PR e suggerimenti quando mi trovavo in un vicolo cieco.

Grazie @spirobel!

6 Mi Piace

Aggiornamento:

Ho appena completato (versione alpha) e ho iniziato i test live del mio primo plugin.

Stato:

  • Test live in corso

DA FARE

  • Questo è il mio primo plugin per Discourse. Il link al forum legacy è hard-coded nel componente. Devo renderlo un’impostazione configurabile.
  • Migliorare il plugin nel tempo per portare il codice agli standard di “Discourse”, poiché al momento è ben lontano da tale livello.
  • Pubblicare nella categoria #plugin quando i test saranno conclusi.

Ringraziamenti

Un ringraziamento speciale a @spirobel per il coaching di ieri e per avermi aiutato a far funzionare il serializer e la struttura di base del componente.

Avvertenza

Tutte le pratiche di codifica “non standard o errate” sono di mia responsabilità.

Note

Queste informazioni sul forum legacy sono visibili (configurabili) solo ai membri con livello di fiducia 4 sui nostri forum;

7 Mi Piace

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