def upload(self, request, object_id): obj = self.get_object(request, unquote(object_id)) if not self.has_change_permission(request, obj): raise PermissionDenied if obj is None: raise Http404 form = UploadForm(request.POST, request.FILES) if form.is_valid(): photo = Photo( album=obj, file=form.cleaned_data['file'], shot_on=obj.date, is_public=obj.is_public, ) photo.save() shot_on = read_shot_on(photo.file) if shot_on: photo.shot_on = shot_on photo.save(update_fields=['shot_on']) return HttpResponse('Thanks')
def changeform_view(self, request, object_id=None, form_url='', extra_context=None): if request.method == 'POST' and 'download' in request.POST: obj = self.get_object(request, unquote(object_id)) return self.download(request, obj) return admin.ModelAdmin.changeform_view( self, request, object_id=object_id, form_url=form_url, extra_context=extra_context, )
def init_parameters_view(self, request, object_id, extra_context=None): ## Access control performed as ModelAdmin.change_view model = self.model opts = model._meta try: obj = self.queryset(request).get(pk=unquote(object_id)) except model.DoesNotExist: # Don't raise Http404 just yet, because we haven't checked # permissions yet. We don't want an unauthenticated user to be able # to determine whether a given object exists. obj = None if not self.has_change_permission(request, obj): raise PermissionDenied if obj is None: raise Http404(_('%(name)s object with primary key %(key)r does not exist.') % {'name': force_unicode(opts.verbose_name), 'key': escape(object_id)}) show_trace = request.GET.get("show_trace", "no") == "yes" limit = request.GET.get("limit", None) is not None limit_params = None if limit: tracer = models.ParamTracer() ctx = Context({"ap":obj, tracer.tracer_key:tracer}) for init_section in obj.architecture.initsection_set.order_by('section__name'): init_section.compile_template().render(ctx) limit_params = tracer.params.keys() full_param_info = obj.get_full_param_information() return render_to_response("admin/accesspoints/accesspoint/init_parameters.html", { "app_label":opts.app_label, "original":obj, "opts":opts, "parameters":self.param_iterator(full_param_info, limit_params), "full":show_trace, "title":_(u"Parameters Overview"), }, context_instance=RequestContext(request), )
def change_view(self, request, object_id, form_url='', extra_context=None): "The 'change' admin view for this model." model = self.model opts = model._meta obj = self.get_object(request, unquote(object_id)) if not self.has_change_permission(request, obj): raise PermissionDenied if obj is None: raise Http404(_('%(name)s object with primary key %(key)r does not exist.') % {'name': force_unicode(opts.verbose_name), 'key': escape(object_id)}) if request.method == 'POST' and "_saveasnew" in request.POST: return self.add_view(request, form_url=reverse('admin:%s_%s_add' % (opts.app_label, opts.module_name), current_app=self.admin_site.name)) ModelForm = self.get_form(request, obj) formsets = [] inline_instances = self.get_inline_instances(request, obj) if request.method == 'POST': form = ModelForm(request.POST, request.FILES, instance=obj) if form.is_valid(): form_validated = True new_object = self.save_form(request, form, change=True) else: form_validated = False new_object = obj prefixes = {} for FormSet, inline in self._get_formsets(request, new_object): prefix = FormSet.get_default_prefix() prefixes[prefix] = prefixes.get(prefix, 0) + 1 if prefixes[prefix] != 1 or not prefix: prefix = "%s-%s" % (prefix, prefixes[prefix]) formset = FormSet(request.POST, request.FILES, instance=new_object, prefix=prefix, queryset=inline.queryset(request)) formsets.append(formset) if inline.inlines: self.add_nested_inline_formsets(request, inline, formset) if self.all_valid_with_nesting(formsets) and form_validated: self.save_model(request, new_object, form, True) self.save_related(request, form, formsets, True) change_message = self.construct_change_message(request, form, formsets) self.log_change(request, new_object, change_message) return self.response_change(request, new_object) else: form = ModelForm(instance=obj) prefixes = {} for FormSet, inline in self._get_formsets(request, obj): prefix = FormSet.get_default_prefix() prefixes[prefix] = prefixes.get(prefix, 0) + 1 if prefixes[prefix] != 1 or not prefix: prefix = "%s-%s" % (prefix, prefixes[prefix]) formset = FormSet(instance=obj, prefix=prefix, queryset=inline.queryset(request)) formsets.append(formset) if inline.inlines: self.add_nested_inline_formsets(request, inline, formset) adminForm = AdminForm(form, self.get_fieldsets(request, obj), self.get_prepopulated_fields(request, obj), self.get_readonly_fields(request, obj), model_admin=self) media = self.media + adminForm.media inline_admin_formsets = [] for inline, formset in zip(inline_instances, formsets): fieldsets = list(inline.get_fieldsets(request, obj)) readonly = list(inline.get_readonly_fields(request, obj)) prepopulated = dict(inline.get_prepopulated_fields(request, obj)) inline_admin_formset = InlineAdminFormSet(inline, formset, fieldsets, prepopulated, readonly, model_admin=self) inline_admin_formsets.append(inline_admin_formset) media = media + inline_admin_formset.media if inline.inlines: media = media + self.wrap_nested_inline_formsets(request, inline, formset) context = { 'title': _('Change %s') % force_unicode(opts.verbose_name), 'adminform': adminForm, 'object_id': object_id, 'original': obj, 'is_popup': "_popup" in request.POST, 'media': media, 'inline_admin_formsets': inline_admin_formsets, 'errors': AdminErrorList(form, formsets), 'app_label': opts.app_label, 'django_version_lt_1_6': DJANGO_VERSION < (1, 6) } context.update(extra_context or {}) return self.render_change_form(request, context, change=True, obj=obj, form_url=form_url)
def change_view(self, request, object_id, form_url='', extra_context=None): "The 'change' admin view for this model." model = self.model opts = model._meta obj = self.get_object(request, unquote(object_id)) if not self.has_change_permission(request, obj): raise PermissionDenied if obj is None: raise Http404( _('%(name)s object with primary key %(key)r does not exist.') % { 'name': force_unicode(opts.verbose_name), 'key': escape(object_id) }) if request.method == 'POST' and "_saveasnew" in request.POST: return self.add_view( request, form_url=reverse('admin:%s_%s_add' % (opts.app_label, opts.module_name), current_app=self.admin_site.name)) ModelForm = self.get_form(request, obj) formsets = [] inline_instances = self.get_inline_instances(request, obj) if request.method == 'POST': form = ModelForm(request.POST, request.FILES, instance=obj) if form.is_valid(): form_validated = True new_object = self.save_form(request, form, change=True) else: form_validated = False new_object = obj prefixes = {} for FormSet, inline in self._get_formsets(request, new_object): prefix = FormSet.get_default_prefix() prefixes[prefix] = prefixes.get(prefix, 0) + 1 if prefixes[prefix] != 1 or not prefix: prefix = "%s-%s" % (prefix, prefixes[prefix]) formset = FormSet(request.POST, request.FILES, instance=new_object, prefix=prefix, queryset=inline.get_queryset(request)) formsets.append(formset) if inline.inlines: self.add_nested_inline_formsets(request, inline, formset) if self.all_valid_with_nesting(formsets) and form_validated: self.save_model(request, new_object, form, True) self.save_related(request, form, formsets, True) change_message = self.construct_change_message( request, form, formsets) self.log_change(request, new_object, change_message) return self.response_change(request, new_object) else: form = ModelForm(instance=obj) prefixes = {} for FormSet, inline in self._get_formsets(request, obj): prefix = FormSet.get_default_prefix() prefixes[prefix] = prefixes.get(prefix, 0) + 1 if prefixes[prefix] != 1 or not prefix: prefix = "%s-%s" % (prefix, prefixes[prefix]) formset = FormSet(instance=obj, prefix=prefix, queryset=inline.get_queryset(request)) formsets.append(formset) if inline.inlines: self.add_nested_inline_formsets(request, inline, formset) adminForm = AdminForm(form, self.get_fieldsets(request, obj), self.get_prepopulated_fields(request, obj), self.get_readonly_fields(request, obj), model_admin=self) media = self.media + adminForm.media inline_admin_formsets = [] for inline, formset in zip(inline_instances, formsets): fieldsets = list(inline.get_fieldsets(request, obj)) readonly = list(inline.get_readonly_fields(request, obj)) prepopulated = dict(inline.get_prepopulated_fields(request, obj)) inline_admin_formset = InlineAdminFormSet(inline, formset, fieldsets, prepopulated, readonly, model_admin=self) inline_admin_formsets.append(inline_admin_formset) media = media + inline_admin_formset.media if inline.inlines: media = media + self.wrap_nested_inline_formsets( request, inline, formset) context = { 'title': _('Change %s') % force_unicode(opts.verbose_name), 'adminform': adminForm, 'object_id': object_id, 'original': obj, 'is_popup': "_popup" in request.POST, 'media': media, 'inline_admin_formsets': inline_admin_formsets, 'errors': AdminErrorList(form, formsets), 'app_label': opts.app_label, 'django_version_lt_1_6': DJANGO_VERSION < (1, 6) } context.update(extra_context or {}) return self.render_change_form(request, context, change=True, obj=obj, form_url=form_url)
def change_view(self, request, object_id, form_url="", extra_context=None): "The 'change' admin view for this model." model = self.model opts = model._meta obj = self.get_object(request, unquote(object_id)) if not self.has_change_permission(request, obj): raise PermissionDenied if obj is None: raise Http404( _("%(name)s object with primary key %(key)r does not exist.") % {"name": force_text(opts.verbose_name), "key": escape(object_id)} ) if request.method == "POST" and "_saveasnew" in request.POST: return self.add_view( request, form_url=reverse( "admin:%s_%s_add" % (opts.app_label, opts.module_name), current_app=self.admin_site.name ), ) ModelForm = self.get_form(request, obj) formsets = [] inline_instances = self.get_inline_instances(request, obj) if request.method == "POST": form = ModelForm(request.POST, request.FILES, instance=obj) if form.is_valid(): form_validated = True new_object = self.save_form(request, form, change=True) else: form_validated = False new_object = obj prefixes = {} for FormSet, inline in self.get_formsets_with_inlines(request, new_object): prefix = FormSet.get_default_prefix() prefixes[prefix] = prefixes.get(prefix, 0) + 1 if prefixes[prefix] != 1 or not prefix: prefix = "%s-%s" % (prefix, prefixes[prefix]) formset = FormSet( request.POST, request.FILES, instance=new_object, prefix=prefix, queryset=inline.get_queryset(request), ) formsets.append(formset) if inline.inlines: self.add_nested_inline_formsets(request, inline, formset) if self.all_valid_with_nesting(formsets) and form_validated: self.save_model(request, new_object, form, True) self.save_related(request, form, formsets, True) change_message = self.construct_change_message(request, form, formsets) self.log_change(request, new_object, change_message) return self.response_change(request, new_object) else: form = ModelForm(instance=obj) prefixes = {} for FormSet, inline in self.get_formsets_with_inlines(request, obj): prefix = FormSet.get_default_prefix() prefixes[prefix] = prefixes.get(prefix, 0) + 1 if prefixes[prefix] != 1 or not prefix: prefix = "%s-%s" % (prefix, prefixes[prefix]) formset = FormSet(instance=obj, prefix=prefix, queryset=inline.get_queryset(request)) formsets.append(formset) if inline.inlines: self.add_nested_inline_formsets(request, inline, formset) adminForm = AdminForm( form, self.get_fieldsets(request, obj), self.get_prepopulated_fields(request, obj), self.get_readonly_fields(request, obj), model_admin=self, ) media = self.media + adminForm.media inline_admin_formsets = [] for inline, formset in zip(inline_instances, formsets): fieldsets = list(inline.get_fieldsets(request, obj)) readonly = list(inline.get_readonly_fields(request, obj)) prepopulated = dict(inline.get_prepopulated_fields(request, obj)) inline_admin_formset = InlineAdminFormSet( inline, formset, fieldsets, prepopulated, readonly, model_admin=self ) inline_admin_formsets.append(inline_admin_formset) media = media + inline_admin_formset.media if inline.inlines: media = media + self.wrap_nested_inline_formsets(request, inline, formset) context = { "title": _("Change %s") % force_text(opts.verbose_name), "adminform": adminForm, "object_id": object_id, "original": obj, "is_popup": "_popup" in request.POST, "media": media, "inline_admin_formsets": inline_admin_formsets, "errors": AdminErrorList(form, formsets), "app_label": opts.app_label, } context.update(extra_context or {}) return self.render_change_form(request, context, change=True, obj=obj, form_url=form_url)
def clone_view(self, request, object_id, extra_context=None): # This method is a cut and paste copy of ModelAdmin.change_view with # a custom form instead of the admin form. It allows editing the base # properties of the AccessPoint, and creates a copy upon saving ## Access control performed as ModelAdmin.change_view model = self.model opts = model._meta try: obj = self.queryset(request).get(pk=unquote(object_id)) except model.DoesNotExist: # Don't raise Http404 just yet, because we haven't checked # permissions yet. We don't want an unauthenticated user to be able # to determine whether a given object exists. obj = None if not self.has_change_permission(request, obj): raise PermissionDenied if obj is None: raise Http404(_('%(name)s object with primary key %(key)r does not exist.') % {'name': force_unicode(opts.verbose_name), 'key': escape(object_id)}) formsets = [] if request.method == "POST": form = myforms.APForm(request.POST) if form.is_valid(): newobj = form.save(commit=False) # Remove the id, we want a new one newobj.id = None newobj.save(force_insert=True) # Copy related parameters for apparam in obj.apparameter_set.all(): # Remove the id, we want a new one apparam.id = None apparam.ap = newobj apparam.save(force_insert=True) # Copy related protocol support for psup in obj.protocol_support.all(): #Remove the id, we want a enw one psup.id = None psup.ap = newobj psup.save(force_insert=True) msg = _('The %(name)s "%(obj)s" was cloned successfully.') % {'name': force_unicode(opts.verbose_name), 'obj': force_unicode(obj)} # Add new, go back or edit if request.POST.has_key("_addanother"): self.message_user(request, msg + ' ' + _("You may clone it again below.")) return HttpResponseRedirect("../clone/") elif request.POST.has_key("_continue"): self.message_user(request, msg + ' ' + _("You may edit it below.")) return HttpResponseRedirect("../../%s/" % newobj._get_pk_val()) else: self.message_user(request, msg) return HttpResponseRedirect("../../") else: form = myforms.APForm(instance=obj) ## Setup formsets (change_form) prefixes = {} for FormSet in self.get_formsets(request, obj): prefix = FormSet.get_default_prefix() prefixes[prefix] = prefixes.get(prefix, 0) + 1 if prefixes[prefix] != 1: prefix = "%s-%s" % (prefix, prefixes[prefix]) formset = FormSet(instance=obj, prefix=prefix) formsets.append(formset) adminForm = helpers.AdminForm(form, self.get_fieldsets(request, obj), self.prepopulated_fields) media = self.media + adminForm.media inline_admin_formsets = [] context = { 'title': _('Clone %s') % force_unicode(opts.verbose_name), 'adminform': adminForm, 'object_id': object_id, 'original': obj, 'is_popup': request.REQUEST.has_key('_popup'), 'media': mark_safe(media), 'inline_admin_formsets': inline_admin_formsets, 'errors': helpers.AdminErrorList(form, formsets), 'root_path': self.admin_site.root_path, 'app_label': opts.app_label, } context.update(extra_context or {}) with nested( temp_setattr(self, "change_form_template", [ "admin/%s/%s/clone_form.html" % (opts.app_label, opts.object_name.lower()), "admin/%s/clone_form.html" % (opts.app_label), "admin/clone_form.html", ]) ): return self.render_change_form(request, context, change=True, obj=obj)