summaryrefslogtreecommitdiff
path: root/ishtar/furnitures
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar/furnitures')
-rw-r--r--ishtar/furnitures/forms.py16
-rw-r--r--ishtar/furnitures/widgets.py11
2 files changed, 22 insertions, 5 deletions
diff --git a/ishtar/furnitures/forms.py b/ishtar/furnitures/forms.py
index e294a00ac..e6a085c07 100644
--- a/ishtar/furnitures/forms.py
+++ b/ishtar/furnitures/forms.py
@@ -28,7 +28,8 @@ from django.core.exceptions import ObjectDoesNotExist
from django.utils.translation import ugettext_lazy as _
from django.template import Context, RequestContext
from django.shortcuts import render_to_response
-from django.forms.formsets import formset_factory, BaseFormSet
+from django.forms.formsets import formset_factory, BaseFormSet, \
+ DELETION_FIELD_NAME
from django.db.models import Max
from django import forms
@@ -48,7 +49,10 @@ class FinalForm(forms.Form):
form_label = _("Confirm")
class FormSet(BaseFormSet):
- pass
+ def add_fields(self, form, index):
+ super(FormSet, self).add_fields(form, index)
+ form.fields[DELETION_FIELD_NAME].label = ''
+ form.fields[DELETION_FIELD_NAME].widget = widgets.DeleteWidget()
class Wizard(NamedUrlSessionFormWizard):
model = None
@@ -204,10 +208,12 @@ class Wizard(NamedUrlSessionFormWizard):
def render_next_step(self, request, storage, form, **kwargs):
"""
- Manage the modify button in formset: next_step = current_step
+ Manage the modify or delete button in formset: next_step = current_step
"""
- if request.POST.has_key('formset_modify') and \
- request.POST['formset_modify']:
+ if request.POST.has_key('formset_modify') \
+ and request.POST['formset_modify'] \
+ or [key for key in request.POST.keys()
+ if key.endswith('DELETE') and request.POST[key]]:
return self.render(request, storage, form, **kwargs)
return super(Wizard, self).render_next_step(request, storage, form,
**kwargs)
diff --git a/ishtar/furnitures/widgets.py b/ishtar/furnitures/widgets.py
index 899d66307..8a60fba61 100644
--- a/ishtar/furnitures/widgets.py
+++ b/ishtar/furnitures/widgets.py
@@ -19,11 +19,22 @@
# See the file COPYING for details.
from django import forms
+from django.utils.safestring import mark_safe
from django.forms.widgets import flatatt
from django.utils.encoding import smart_unicode
from django.utils.html import escape
from django.utils.simplejson import JSONEncoder
from django.core.urlresolvers import resolve
+from django.utils.translation import ugettext_lazy as _
+
+class DeleteWidget(forms.CheckboxInput):
+ def render(self, name, value, attrs=None):
+ final_attrs = flatatt(self.build_attrs(attrs, name=name,
+ value='1'))
+ output = ['<tr class="delete"><td colspan="2">']
+ output.append(u"<button%s>%s</button>" % (final_attrs, _("Delete")))
+ output.append('</td></tr>')
+ return mark_safe('\n'.join(output))
class JQueryAutoComplete(forms.TextInput):
def __init__(self, source, associated_model=None, options={}, attrs={}):