Django Admin: Popup nach Änderung schließen

Veröffentlich am 18.11.2008, 14:24

Ich arbeite derzeit an einem netten CMS Modul für Django, bei dem die einzelnen Seiten im Baukastenprinzip inkl. Drag+Drop zusammengesetzt werden. Beim Bearbeiten der einzelnen PageElements (die Blöcke, aus denen die Seite besteht) fiel mir auf, dass beim Speichern der REQUEST Parameter _popup nicht berücksichtigt wird, sondern stattdessen zur Change List des zu bearbeitenden Models gewechselt wird.

Dieses Stück Code schafft Abhilfe und schließt das Popup Window nach dem Speichern auf die gleiche Weise, wie beim Hinzufügen von Objekten bei z.b. ForeignKeys.

class ClosablePopupAdmin(admin.ModelAdmin):
    def response_change(self, request, obj):
        response = super(ClosablePopupAdmin, self).response_change(request, obj)
        if request.POST.has_key("_popup"):
            return HttpResponse('<script type="text/javascript">window.close();</script>')
        return response

Sehr simpel aber funktioniert ;-)

Tags: django, newforms-admin, popup

Weiterlesen, 0 Kommentar(e)