예제 #1
0
파일: forms.py 프로젝트: gogogo/gogogo-hk
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]) ,
           })		
예제 #2
0
파일: forms.py 프로젝트: gogogo/gogogo-hk
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]) ,
           })