fnp
/
wolnelektury.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
cover colors
[wolnelektury.git]
/
apps
/
ajaxable
/
utils.py
diff --git
a/apps/ajaxable/utils.py
b/apps/ajaxable/utils.py
index
e32356a
..
79eca52
100755
(executable)
--- a/
apps/ajaxable/utils.py
+++ b/
apps/ajaxable/utils.py
@@
-53,6
+53,12
@@
def require_login(request):
return HttpResponseRedirect('/uzytkownicy/zaloguj')# next?=request.build_full_path())
return HttpResponseRedirect('/uzytkownicy/zaloguj')# next?=request.build_full_path())
+def placeholdized(form):
+ for field in form.fields.values():
+ field.widget.attrs['placeholder'] = field.label
+ return form
+
+
class AjaxableFormView(object):
"""Subclass this to create an ajaxable view for any form.
class AjaxableFormView(object):
"""Subclass this to create an ajaxable view for any form.
@@
-60,6
+66,7
@@
class AjaxableFormView(object):
"""
form_class = None
"""
form_class = None
+ placeholdize = False
# override to customize form look
template = "ajaxable/form.html"
submit = _('Send')
# override to customize form look
template = "ajaxable/form.html"
submit = _('Send')
@@
-74,7
+81,8
@@
class AjaxableFormView(object):
@method_decorator(vary_on_headers('X-Requested-With'))
def __call__(self, request, *args, **kwargs):
"""A view displaying a form, or JSON if request is AJAX."""
@method_decorator(vary_on_headers('X-Requested-With'))
def __call__(self, request, *args, **kwargs):
"""A view displaying a form, or JSON if request is AJAX."""
- form_args, form_kwargs = self.form_args(request, *args, **kwargs)
+ obj = self.get_object(request, *args, **kwargs)
+ form_args, form_kwargs = self.form_args(request, obj)
if self.form_prefix:
form_kwargs['prefix'] = self.form_prefix
if self.form_prefix:
form_kwargs['prefix'] = self.form_prefix
@@
-104,6
+112,8
@@
class AjaxableFormView(object):
else:
errors = form.errors
response_data = {'success': False, 'errors': errors}
else:
errors = form.errors
response_data = {'success': False, 'errors': errors}
+ else:
+ response_data = None
if request.is_ajax():
return HttpResponse(LazyEncoder(ensure_ascii=False).encode(response_data))
else:
if request.is_ajax():
return HttpResponse(LazyEncoder(ensure_ascii=False).encode(response_data))
else:
@@
-114,28
+124,46
@@
class AjaxableFormView(object):
form = self.form_class(*form_args, **form_kwargs)
response_data = None
form = self.form_class(*form_args, **form_kwargs)
response_data = None
- template = self.template if request.is_ajax() else self.full_template
+ title = self.title
+ if request.is_ajax():
+ template = self.template
+ else:
+ template = self.full_template
+ cd = self.context_description(request, obj)
+ if cd:
+ title += ": " + cd
+ if self.placeholdize:
+ form = placeholdized(form)
context = {
self.formname: form,
context = {
self.formname: form,
- "title": self.title,
+ "title": title,
+ "placeholdize": self.placeholdize,
"submit": self.submit,
"response_data": response_data,
"ajax_template": self.template,
"view_args": args,
"view_kwargs": kwargs,
}
"submit": self.submit,
"response_data": response_data,
"ajax_template": self.template,
"view_args": args,
"view_kwargs": kwargs,
}
- context.update(self.extra_context())
+ context.update(self.extra_context(
request, obj
))
return render_to_response(template, context,
context_instance=RequestContext(request))
return render_to_response(template, context,
context_instance=RequestContext(request))
- def form_args(self, request, *args, **kwargs):
+ def get_object(self, request, *args, **kwargs):
+ """Override to parse view args and get some associated data."""
+ return None
+
+ def form_args(self, request, obj):
"""Override to parse view args and give additional args to the form."""
return (), {}
"""Override to parse view args and give additional args to the form."""
return (), {}
- def extra_context(self):
+ def extra_context(self
, request, obj
):
"""Override to pass something to template."""
return {}
"""Override to pass something to template."""
return {}
+ def context_description(self, request, obj):
+ """Description to appear in standalone form, but not in AJAX form."""
+ return ""
+
def success(self, form, request):
"""What to do when the form is valid.
def success(self, form, request):
"""What to do when the form is valid.