Changeset 1519
- Timestamp:
- 12/01/05 00:36:47 (3 years ago)
- Files:
-
- django/trunk/AUTHORS (modified) (1 diff)
- django/trunk/django/views/generic/create_update.py (modified) (15 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
django/trunk/AUTHORS
r1511 r1519 59 59 Stuart Langridge <http://www.kryogenix.org/> 60 60 Eugene Lazutkin <http://lazutkin.com/blog/> 61 limodou 61 62 Martin Maney <http://www.chipy.org/Martin_Maney> 62 63 Maniac <http://www.softwaremaniacs.org/> django/trunk/django/views/generic/create_update.py
r1434 r1519 1 1 from django import models 2 2 from django.core.xheaders import populate_xheaders 3 from django.core import template_loader, formfields 3 from django.core import template_loader, formfields, meta 4 4 from django.views.auth.login import redirect_to_login 5 5 from django.core.extensions import DjangoContext as Context … … 8 8 from django.core.exceptions import Http404, ObjectDoesNotExist, ImproperlyConfigured 9 9 10 def create_object(request, app_label, module_name, template_name=None, 11 template_loader=template_loader, extra_context={}, 10 def create_object(request, app_label, module_name, template_name=None, 11 template_loader=template_loader, extra_context={}, 12 12 post_save_redirect=None, login_required=False, follow=None): 13 13 """ 14 14 Generic object-creation function. 15 15 16 16 Templates: ``<app_label>/<module_name>_form`` 17 17 Context: … … 21 21 if login_required and request.user.is_anonymous(): 22 22 return redirect_to_login(request.path) 23 23 24 24 mod = models.get_module(app_label, module_name) 25 25 manipulator = mod.AddManipulator(follow=follow) … … 27 27 # If data was POSTed, we're trying to create a new object 28 28 new_data = request.POST.copy() 29 29 30 if mod.Klass._meta.has_field_type(meta.FileField): 31 new_data.update(request.FILES) 32 30 33 # Check for errors 31 34 errors = manipulator.get_validation_errors(new_data) 32 35 manipulator.do_html2python(new_data) 33 36 34 37 if not errors: 35 38 # No errors -- this means we can save the data! 36 39 new_object = manipulator.save(new_data) 37 40 38 41 if not request.user.is_anonymous(): 39 42 request.user.add_message("The %s was created sucessfully." % mod.Klass._meta.verbose_name) 40 43 41 44 # Redirect to the new object: first by trying post_save_redirect, 42 45 # then by obj.get_absolute_url; fail if neither works. … … 51 54 errors = {} 52 55 new_data = manipulator.flatten_data() 53 56 54 57 # Create the FormWrapper, template, context, response 55 58 form = formfields.FormWrapper(manipulator, new_data, errors) … … 63 66 if callable(value): 64 67 c[key] = value() 65 else: 68 else: 66 69 c[key] = value 67 70 return HttpResponse(t.render(c)) 68 71 69 def update_object(request, app_label, module_name, object_id=None, slug=None, 72 def update_object(request, app_label, module_name, object_id=None, slug=None, 70 73 slug_field=None, template_name=None, template_loader=template_loader, 71 extra_lookup_kwargs={}, extra_context={}, post_save_redirect=None, 74 extra_lookup_kwargs={}, extra_context={}, post_save_redirect=None, 72 75 login_required=False, follow=None): 73 76 """ … … 85 88 86 89 mod = models.get_module(app_label, module_name) 87 90 88 91 # Look up the object to be edited 89 92 lookup_kwargs = {} … … 99 102 except ObjectDoesNotExist: 100 103 raise Http404("%s.%s does not exist for %s" % (app_label, module_name, lookup_kwargs)) 101 104 102 105 manipulator = mod.ChangeManipulator(object.id, follow=follow) 103 106 104 107 if request.POST: 105 108 new_data = request.POST.copy() … … 108 111 if not errors: 109 112 manipulator.save(new_data) 110 113 111 114 if not request.user.is_anonymous(): 112 115 request.user.add_message("The %s was updated sucessfully." % mod.Klass._meta.verbose_name) … … 123 126 # This makes sure the form acurate represents the fields of the place. 124 127 new_data = manipulator.flatten_data() 125 128 126 129 form = formfields.FormWrapper(manipulator, new_data, errors) 127 130 if not template_name: … … 135 138 if callable(value): 136 139 c[key] = value() 137 else: 140 else: 138 141 c[key] = value 139 142 response = HttpResponse(t.render(c)) … … 141 144 return response 142 145 143 def delete_object(request, app_label, module_name, post_delete_redirect, 144 object_id=None, slug=None, slug_field=None, template_name=None, 145 template_loader=template_loader, extra_lookup_kwargs={}, 146 def delete_object(request, app_label, module_name, post_delete_redirect, 147 object_id=None, slug=None, slug_field=None, template_name=None, 148 template_loader=template_loader, extra_lookup_kwargs={}, 146 149 extra_context={}, login_required=False): 147 150 """ 148 151 Generic object-delete function. 149 150 The given template will be used to confirm deletetion if this view is 152 153 The given template will be used to confirm deletetion if this view is 151 154 fetched using GET; for safty, deletion will only be performed if this 152 155 view is POSTed. … … 161 164 162 165 mod = models.get_module(app_label, module_name) 163 166 164 167 # Look up the object to be edited 165 168 lookup_kwargs = {} … … 175 178 except ObjectDoesNotExist: 176 179 raise Http404("%s.%s does not exist for %s" % (app_label, module_name, lookup_kwargs)) 177 180 178 181 if request.META['REQUEST_METHOD'] == 'POST': 179 182 object.delete() … … 191 194 if callable(value): 192 195 c[key] = value() 193 else: 196 else: 194 197 c[key] = value 195 198 response = HttpResponse(t.render(c))
