Make it possible to autocreate an object in simple_form
authorMagnus Hagander <magnus@hagander.net>
Sun, 27 Nov 2011 13:13:16 +0000 (14:13 +0100)
committerMagnus Hagander <magnus@hagander.net>
Sun, 27 Nov 2011 13:13:16 +0000 (14:13 +0100)
Previously, one had to specify "new" as objectid to create a new one, but
in some cases it may not be known ahead of time if the object exists or not.

pgweb/util/helpers.py

index d62ea42f5fb577909ac264f5f68710ee1817ffb6..16dfaab3735d4b9c043ef87e0db86685c9904229 100644 (file)
@@ -5,12 +5,15 @@ from django.template import Context
 from django.template.loader import get_template
 import django.utils.xmlutils
 
-def simple_form(instancetype, itemid, request, formclass, formtemplate='base/form.html', redirect='/account/', navsection='account', fixedfields=None):
+def simple_form(instancetype, itemid, request, formclass, formtemplate='base/form.html', redirect='/account/', navsection='account', fixedfields=None, createifempty=False):
        if itemid == 'new':
                instance = instancetype()
        else:
-               # Regular news item, attempt to edit it
-               instance = get_object_or_404(instancetype, pk=itemid)
+               # Regular form item, attempt to edit it
+               if createifempty:
+                       (instance, wascreated) = instancetype.objects.get_or_create(pk=itemid)
+               else:
+                       instance = get_object_or_404(instancetype, pk=itemid)
                if hasattr(instance, 'submitter'):
                        if not instance.submitter == request.user:
                                raise Exception("You are not the owner of this item!")