示例#1
0
def add_modify_entry(request, pk = None):
    if request.method == "POST":
        if pk:
            #пк указан, в ссылке, это редактирование
            _entry = Entry.objects.get(pk = pk)

            form_entry = EntryForm(data = request.POST, instance = _entry, prefix = "entry")
            form_tag = TagsForm(data = request.POST, prefix = "tag", all_tags = Tag.objects.all() )
        else:
            form_entry = EntryForm(request.POST, prefix = "entry")
            form_tag = TagsForm(data = request.POST, prefix = "tag", all_tags=Tag.objects.all() )

        if form_entry.is_valid() and form_tag.is_valid():

            en = form_entry.save()

            #delete all old tags for this entry

            old_tags = en.get_tags()
            if len(old_tags):
                for tag in old_tags:
                    tag.entrys.remove(en)
                    tag.save()

            #add new tags
            new_tags = form_tag.cleaned_data["tags"]
            if len(new_tags):
                for new_tag in new_tags:
                    try:
                        #уже такой есть
                        tag = Tag.objects.get(name = new_tag)
                    except ObjectDoesNotExist:
                        #новый
                        tag = Tag(name = new_tag, )
                        tag.save()
                    tag.entrys.add(en)
                    #незнаю нужно ли еще раз сохранять?
                    tag.save()

            #TODO добавить сообщение что все хорошо, все сохранено

            return HttpResponseRedirect( reverse("view_entry", args=[en.pk]) )
    else:
        if pk:
            #пк указан, в ссылке, это редактирование
            _entry = Entry.objects.get(pk = pk)

            form_entry = EntryForm(instance = _entry, prefix = "entry")
            if _entry.get_tags() :
                form_tag = TagsForm(prefix = "tag", initial= {"tags": _entry.get_tags()}, all_tags=Tag.objects.all())
            else:
                form_tag = TagsForm(prefix = "tag", all_tags= Tag.objects.all())

        else:
            form_entry = EntryForm(initial = {'author': request.user.id}, prefix = "entry")
            form_tag = TagsForm(prefix = "tag", all_tags = Tag.objects.all())
        
    return render_to_response('blog/add_entry.html', locals(), context_instance=RequestContext(request))
示例#2
0
def add_modify_entry(request, pk = None):
    #TODO delete it after dev
    print request.user

    if request.method == "POST":
        if pk:
            #пк указан, в ссылке, это редактирование
            _entry = Entry.objects.get(pk = pk)


            form_entry = EntryForm(request.POST, instance = _entry, prefix = "entry")
            if _entry.get_tags() :
                form_tag = TagForm(request.POST, prefix = "tag", instance = _entry.get_tags()[0] )
            else:
                form_tag = TagForm(request.POST, prefix = "tag")
        else:
            form_entry = EntryForm(request.POST, prefix = "entry")
            form_tag = TagForm(request.POST, prefix = "tag")

        if form_entry.is_valid() and form_tag.is_valid():

            en = form_entry.save()
            tg = Tag.objects.filter(name = form_tag.cleaned_data['name'])
            if tg:
                #exist
                tg = tg[0]
                tg.entrys.add(en.pk)
                tg.save()
            else:
                #not exist
                tg = form_tag.save()
                tg.entrys.add(en)
                tg.save()
            return HttpResponseRedirect("/")
    else:
        if pk:
            #пк указан, в ссылке, это редактирование
            _entry = Entry.objects.get(pk = pk)


            form_entry = EntryForm(instance = _entry, prefix = "entry")
            if _entry.get_tags() :
                form_tag = TagForm(prefix = "tag", instance = _entry.get_tags()[0] )
            else:
                form_tag = TagForm(prefix = "tag")

        else:
            form_entry = EntryForm(initial = {'author': request.user.id}, prefix = "entry")
            form_tag = TagForm(prefix = "tag")

    return render_to_response('blog/add_entry.html', locals(), context_instance=RequestContext(request))
示例#3
0
def add_modify_entry(request, pk=None):
    if request.method == "POST":
        if pk:
            #пк указан, в ссылке, это редактирование
            _entry = Entry.objects.get(pk=pk)

            form_entry = EntryForm(data=request.POST,
                                   instance=_entry,
                                   prefix="entry")
            form_tag = TagsForm(data=request.POST,
                                prefix="tag",
                                all_tags=Tag.objects.all())
        else:
            form_entry = EntryForm(request.POST, prefix="entry")
            form_tag = TagsForm(data=request.POST,
                                prefix="tag",
                                all_tags=Tag.objects.all())

        if form_entry.is_valid() and form_tag.is_valid():

            en = form_entry.save()

            #delete all old tags for this entry

            old_tags = en.get_tags()
            if len(old_tags):
                for tag in old_tags:
                    tag.entrys.remove(en)
                    tag.save()

            #add new tags
            new_tags = form_tag.cleaned_data["tags"]
            if len(new_tags):
                for new_tag in new_tags:
                    try:
                        #уже такой есть
                        tag = Tag.objects.get(name=new_tag)
                    except ObjectDoesNotExist:
                        #новый
                        tag = Tag(name=new_tag, )
                        tag.save()
                    tag.entrys.add(en)
                    #незнаю нужно ли еще раз сохранять?
                    tag.save()

            #TODO добавить сообщение что все хорошо, все сохранено

            return HttpResponseRedirect(reverse("view_entry", args=[en.pk]))
    else:
        if pk:
            #пк указан, в ссылке, это редактирование
            _entry = Entry.objects.get(pk=pk)

            form_entry = EntryForm(instance=_entry, prefix="entry")
            if _entry.get_tags():
                form_tag = TagsForm(prefix="tag",
                                    initial={"tags": _entry.get_tags()},
                                    all_tags=Tag.objects.all())
            else:
                form_tag = TagsForm(prefix="tag", all_tags=Tag.objects.all())

        else:
            form_entry = EntryForm(initial={'author': request.user.id},
                                   prefix="entry")
            form_tag = TagsForm(prefix="tag", all_tags=Tag.objects.all())

    return render_to_response('blog/add_entry.html',
                              locals(),
                              context_instance=RequestContext(request))