[bug]: Comment external_id is deduplicated per project instead of per work item

Aperta Adatta ai principianti
#10,195 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
74/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
django, postgresql, python
Ambito
api, backend, databases

Direzione di ricerca

Leggi apps/api/plane/api/views/issue.py intorno alle righe 1565 e 1735, dove la creazione e l’aggiornamento dei commenti verificano la presenza di ID esterni duplicati. Segui il modo in cui l’endpoint identifica l’elemento di lavoro corrente e confrontalo con il filtro limitato al progetto descritto nell’issue. Il lavoro è completato quando la stessa fonte e lo stesso ID esterni possono essere usati su diversi elementi di lavoro in un progetto, mentre una ripetizione sullo stesso elemento di lavoro continua a restituire 409; verifica entrambi i casi tramite la Comments API.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Is there an existing issue for this?
  • I have searched the existing issues
Current behavior

Creating a work item comment with external_source and external_id returns 409 when any work item in the same project already has a comment with that pair. The check belongs to one work item's comment endpoint, but it filters by project only:

apps/api/plane/api/views/issue.py:1565 (create) and :1735 (update), branch preview:

IssueComment.objects.filter(
    project_id=project_id,
    workspace__slug=slug,
    external_source=...,
    external_id=...,
).exists()

So one external event that touches several work items in a project, written with one key per event, can record a comment on the first work item only. The rest get 409, and the id in the response points to a comment on a different work item.

Steps to reproduce
  1. Take two work items A and B in one project.
  2. Create a comment on A:
curl -X POST "$HOST/api/v1/workspaces/$SLUG/projects/$PROJECT/work-items/$A/comments/" \
  -H "X-API-Key: $KEY" -H 'Content-Type: application/json' \
  -d '{"comment_html":"<p>probe</p>","external_source":"probe","external_id":"scope-1"}'

Result: 201.

  1. Send the same request for B.

Result: 409 with {"error":"Work item comment with the same external id and external source already exists","id":"<id of the comment on A>"}.

Expected: 201 on B. The 409 should apply only to a repeat on the same work item, by adding issue_id to the filter. If project-wide uniqueness is intended, it would help to say so in the API docs.

Environment

Production

Browser

Other

Edition

Commercial

Version

v3.3.0

Lingua principale
TypeScript
Stelle
61.9k
Fork
6.3k
Merge medio
1g 18h
PR unite (30g)
74

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di makeplane/plane

Tutte le issue di makeplane/plane

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.