Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

[bug] Shared default templates not re-assigned after device organization change

Aperta
#1,334 4 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

  • #1427 di @omlahore — chiusa senza merge

Valutazione

Difficoltà
3/5
Tempo stimato
1-2 giorni
Idoneità per principianti
55/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Tranquilla
Stack tecnologico
django, python
Ambito
backend

Direzione di ricerca

Riproduci il comportamento tramite l’endpoint REST PATCH /api/v1/controller/device/{id}/ o l’interfaccia di amministrazione, quindi segui il gestore del cambio di organizzazione descritto nell’analisi. L’attività è completata quando lo spostamento di un dispositivo tra organizzazioni rimuove i template non applicabili e riassegna tutti i template condivisi e specifici dell’organizzazione applicabili con default=True, in modo che corrisponda a un dispositivo appena registrato.

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

Descrizione

Summary

When a device is moved from one organization to another, shared templates with default=True are removed and not re-assigned when the device is moved back. Only templates with required=True survive the roundtrip.

Steps to reproduce

  1. Create a shared template (no organization) with default=True, required=False (e.g. "SSH Keys")
  2. Create a shared template with default=True, required=True (e.g. "default-management-vpn")
  3. Create an org-specific template with default=True in Org A (e.g. "Provision-OrgA")
  4. Register a device in Org A — it gets all 3 templates automatically ✅
  5. Move the device to Org B via the admin UI or API
  6. Observed: Only the required=True template remains. The shared default=True template and the org-specific template are both removed.
  7. Move the device back to Org A
  8. Observed: The org-specific template is re-assigned (because default=True in Org A), but the shared default=True template is NOT re-assigned.

Expected behavior

After moving a device to a new organization, all applicable default=True templates (both shared and org-specific) should be automatically assigned, just as they would be for a newly registered device in that organization.

Actual behavior

Shared templates with default=True but required=False are removed during the org change and never re-applied, even when moving back to the original organization. The device ends up with fewer templates than a freshly registered device in the same org.

Workaround

Setting the shared template to required=True prevents it from being removed during organization changes. However, this prevents users from ever unassigning the template, which may not be desirable.

Environment

  • openwisp-controller version: latest (as of April 2026)
  • Tested via REST API (PATCH /api/v1/controller/device/{id}/ with {"organization": "<new-org-id>"})
  • Also reproducible via the admin UI

Analysis

The issue appears to be in the organization-change handler: it correctly removes org-specific templates that don't belong to the new organization, but it also removes shared default=True templates (which are valid in any organization). When the device arrives in the new org, only org-specific default=True templates are auto-assigned — the shared ones are not reconsidered.

The required=True flag acts as a "never remove" guard, which is why those templates survive. But default=True should mean "always assign to new devices in this context", and an organization change is effectively a "new device in this org" scenario.

Lingua principale
Python
Stelle
792
Fork
335
Merge medio
9h 41m
PR unite (30g)
32

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 openwisp/openwisp-controller

Tutte le issue di openwisp/openwisp-controller

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.