def update_entry(request, app_label, class_name, id): vars = {} # Check if theres an valid instance try: model = get_model(app_label, class_name) if model: instance = model.objects.get(id=id) except ObjectDoesNotExist: return HttpResponse(status=404) # No valid instance # Check if user can edit instance if instance.created_by != request.user: HttpResponse(status=401) # User not auth # if there any fields to edit if not instance.ajax_editable_fields: return HttpResponse(status=404) # No field to edit if request.method == 'GET': # Get form fields = instance.ajax_editable_fields form = update_entry_form( fields, model, instance=instance) vars['instance'] = instance vars['fields'] = fields vars['form'] = form vars['action'] = reverse('update_entry', args=[app_label, class_name, id]) if request.method == 'POST': fields = instance.ajax_editable_fields form = update_entry_form( fields, model, request.POST, instance=instance) if form.is_valid(): form.save() instance.date_last_changed = datetime.datetime.now() instance.save() vars['instance'] = instance for field in fields: vars[field] = getattr(instance,field) if request.is_ajax(): return render(request, 'update_entry_form.html', vars ) return redirect( request.META['HTTP_REFERER'] ) return HttpResponse(status=401) return render(request, 'update_entry_form.html', vars )
def update_entry(request, app_label, class_name, id): vars = {} # Check if theres an valid instance try: model = get_model(app_label, class_name) if model: instance = model.objects.get(id=id) except ObjectDoesNotExist: return HttpResponse(status=404) # No valid instance # Check if user can edit instance if instance.created_by != request.user: HttpResponse(status=401) # User not auth # if there any fields to edit if not instance.ajax_editable_fields: return HttpResponse(status=404) # No field to edit if request.method == 'GET': # Get form fields = instance.ajax_editable_fields form = update_entry_form( fields, model, instance=instance) vars['form'] = form if request.method == 'POST': fields = instance.ajax_editable_fields form = update_entry_form( fields, model, request.POST, instance=instance) if form.is_valid(): form.save() return HttpResponse(status=200) return HttpResponse(status=401) return render(request, 'update_entry_form.html', vars )