예제 #1
0
파일: views.py 프로젝트: doctor-said/kanvas
def update_field(request, pk, field):
    """
    This is function and not a CreateView/Update as it points to a template with less fields
    :param request:
    :param pk: primary key of Canvas
    :param field: which field to update
    :return:
    """
    widgets = {}
    if field=='logo':
        widgets[field] = ClearableFileInput()
    else:
        widgets[field] = Textarea(attrs={'rows':4, 'cols':150})
    CanvasForm = modelform_factory(Canvas, fields=(field,), widgets=widgets)
    if request.method == 'POST':
        form = CanvasForm(request.POST)
        if form.is_valid():
            obj = Canvas.objects.get(id=pk)
            if obj.originalauthor == request.user: # more maintainable than dfunckt/django-rules
                if 'logo' in request.FILES:
                    data = ContentFile(request.FILES['logo'].file.read())
                    filename = request.FILES['logo'].name
                    form.cleaned_data['logo'] = filename
                    default_storage.save(filename, data)
                setattr(obj, field, form.cleaned_data[field])
                obj.save()
                return HttpResponseRedirect('/canvas/'+pk)
            else:
                return HttpResponseRedirect('/login/')
    else:
        form = CanvasForm(instance = Canvas.objects.get(id=pk))

    return render(request, 'app/canvas_form.html', {'formfield': form})
예제 #2
0
파일: views.py 프로젝트: doctor-said/kanvas
def create_canvas(request):
    """
    This is function and not a CreateView/Update as it points to a template with less fields
    :param request:
    :param pk: primary key of Canvas
    :param field: which field to update
    :return:
    """
    if request.method == 'POST':
        form = CanvasForm(request.POST)
        if form.is_valid():
            form.cleaned_data['originalauthor'] = request.user
            if 'logo' in request.FILES:
                data = ContentFile(request.FILES['logo'].file.read())
                filename = request.FILES['logo'].name
                form.cleaned_data['logo'] = filename
                default_storage.save(filename, data)
            obj = Canvas.objects.create(**form.cleaned_data)
            return HttpResponseRedirect("/canvas/%d" % obj.id)
    else:
        form = CanvasForm() # blank form

    return render(request, 'app/canvas_new.html', {'company': form['company'],'description': form['description'],'logo': form['logo']})