def edit(request,kind,object_id): """ Edit model """ (model,model_form) = _getModelInfo(kind) message = "" id = None key_name = None try: id = int(object_id) except ValueError: key_name = object_id object = get_object_or_404(model,key_name = key_name , id=id) if request.method == 'POST': form = model_form(request.POST,instance=object) if form.is_valid(): #Old object was changed by the from, so it need to get a new copy object = get_object_or_404(model,key_name = key_name , id=id) new_object = form.save(commit = False) changelog = createChangelog(object,new_object,form.cleaned_data['log_message']) if changelog: db.put([new_object,changelog]) updateCachedObject(new_object) #TODO - Update loader cache return HttpResponseRedirect(new_object.get_absolute_url()) else: message = _("Nothing changed. The form will not be saved") else: form = model_form(instance=object) view_object_link = None if object : view_object_link = object.get_absolute_url() return render_to_response( request, 'gogogo/db/edit.html' ,{ "form" : form , "object" : object, "kind" : kind, "message" : message, "history_link" : _reverse('gogogo.views.db.changelog.list') + "?kind=%s" % kind, "view_object_link" : view_object_link, "action" : _reverse('gogogo.views.db.edit',args=[kind,object_id]) , })
def add(request,kind): """ Add new entry to database """ (model,model_form) = _getModelInfo(kind) if request.method == 'POST': form = model_form(request.POST) if form.is_valid(): instance = _createModelByForm(model,form) form = model_form(request.POST,instance = instance) instance = form.save(commit=False) instance.save() changelog = createChangelog(None,instance,form.cleaned_data['log_message']) changelog.save() return HttpResponseRedirect(instance.get_absolute_url()) elif request.method == 'GET': parent = None if "parent" in request.GET: parent = request.GET['parent'] instance = _createModel(kind,parent) form = model_form(instance=instance) else: form = model_form() message = "" return render_to_response( request, 'gogogo/db/edit.html' ,{ "form" : form , "kind" : kind, "message" : message, "history_link" : _reverse('gogogo.views.db.changelog.list') + "?kind=%s" % kind, "action" : _reverse('gogogo.views.db.add',args=[kind]) , })