Ticket #6903: return_to_old_change_list.diff
File return_to_old_change_list.diff, 4.8 KB (added by , 16 years ago) |
---|
-
django/contrib/admin/options.py
15 15 from django.utils.text import capfirst, get_text_list 16 16 from django.utils.translation import ugettext as _ 17 17 from django.utils.encoding import force_unicode 18 from urllib import quote 18 19 import sets 19 20 20 21 HORIZONTAL, VERTICAL = 1, 2 … … 394 395 # Figure out where to redirect. If the user has change permission, 395 396 # redirect to the change-list page for this object. Otherwise, 396 397 # redirect to the admin index. 397 if self.has_change_permission(request, None): 398 if 'admin_change_return_to' in request.GET: 399 post_url = request.GET['admin_change_return_to'] 400 elif self.has_change_permission(request, None): 398 401 post_url = '../' 399 402 else: 400 403 post_url = '../../../' … … 459 462 return HttpResponseRedirect("../add/") 460 463 else: 461 464 request.user.message_set.create(message=msg) 462 return HttpResponseRedirect("../") 465 if 'admin_change_return_to' in request.GET: 466 post_url = request.GET['admin_change_return_to'] 467 else: 468 post_url = '../' 469 return HttpResponseRedirect(post_url) 463 470 save_change = transaction.commit_on_success(save_change) 464 471 465 472 def render_change_form(self, request, model, context, add=False, change=False, form_url='', obj=None): … … 508 515 inline_formsets = [] 509 516 obj = self.model() 510 517 if request.method == 'POST': 518 if 'admin_change_return_to' in request.GET: 519 return_to = request.GET['admin_change_return_to'] 520 else: 521 return_to = None 522 511 523 form = ModelForm(request.POST, request.FILES) 512 524 for FormSet in self.get_formsets(request): 513 525 inline_formset = FormSet(data=request.POST, files=request.FILES, … … 520 532 for FormSet in self.get_formsets(request): 521 533 inline_formset = FormSet(instance=obj) 522 534 inline_formsets.append(inline_formset) 535 if 'HTTP_REFERER' in request.META: 536 return_to = request.META['HTTP_REFERER'] 537 else: 538 return_to = None 523 539 540 if return_to: 541 form_url = form_url + '?admin_change_return_to=%s' % quote(return_to) 542 524 543 adminForm = AdminForm(form, list(self.get_fieldsets(request)), self.prepopulated_fields) 525 544 media = self.media + adminForm.media 526 545 for fs in inline_formsets: … … 543 562 'root_path': self.admin_site.root_path, 544 563 } 545 564 context.update(extra_context or {}) 546 return self.render_change_form(request, model, context, add=True)565 return self.render_change_form(request, model, context, form_url=form_url, add=True) 547 566 548 567 def change_view(self, request, object_id, extra_context=None): 549 568 "The 'change' admin view for this model." … … 571 590 ModelForm = self.get_form(request, obj) 572 591 inline_formsets = [] 573 592 if request.method == 'POST': 593 if 'admin_change_return_to' in request.GET: 594 return_to = request.GET['admin_change_return_to'] 595 else: 596 return_to = None 597 574 598 form = ModelForm(request.POST, request.FILES, instance=obj) 575 599 for FormSet in self.get_formsets(request, obj): 576 600 inline_formset = FormSet(request.POST, request.FILES, instance=obj) … … 583 607 for FormSet in self.get_formsets(request, obj): 584 608 inline_formset = FormSet(instance=obj) 585 609 inline_formsets.append(inline_formset) 610 if 'HTTP_REFERER' in request.META: 611 return_to = request.META['HTTP_REFERER'] 612 else: 613 return_to = None 614 615 if return_to: 616 form_url = '?admin_change_return_to=%s' % quote(return_to) 617 else: 618 form_url = '' 586 619 587 620 ## Populate the FormWrapper. 588 621 #oldform = oldforms.FormWrapper(manipulator, new_data, errors) … … 620 653 'errors': AdminErrorList(form, inline_formsets), 621 654 'root_path': self.admin_site.root_path, 622 655 } 623 context.update(extra_context or {}) 624 return self.render_change_form(request, model, context, change=True, obj=obj)656 context.update(extra_context or {}) 657 return self.render_change_form(request, model, context, change=True, form_url=form_url, obj=obj) 625 658 626 659 def changelist_view(self, request, extra_context=None): 627 660 "The 'change list' admin view for this model."