views.py 文件源码

python
阅读 28 收藏 0 点赞 0 评论 0

项目:letters 作者: whatisjasongoldstein 项目源码 文件源码
def dashboard(request):
    newsletter, _ = Newsletter.objects.get_or_create(user=request.user,
        defaults={
            "email": request.user.email,
        })

    # Set forms on existing sources
    sources = newsletter.source_set.all().order_by(Lower('name'))
    for source in sources:

        # Handle updates
        is_updating = False
        try:
            is_updating = (int(request.GET.get("update", None)) == source.id)
        except (ValueError, TypeError):
            pass

        # Only bind the form to POST if its the one being updated
        source.form = SourceForm(request.POST if is_updating else None,
            instance=source,
            prefix="source-%s" % source.id)

        if request.POST and is_updating and source.form.is_valid():

            # Handle deletes
            if source.form.cleaned_data["delete"]:
                source.delete()
                return form_complete(request, "Removed %s!" % source.name)

            source.form.save()
            source.refresh_from_db()
            return form_complete(request, "Updated %s!" % source.name)

    # Set up new source form
    is_adding = "add" in request.GET
    add_form = SourceForm(request.POST if is_adding else None,
        prefix="new-source",
        initial={"newsletter": newsletter})

    if add_form.is_valid():
        obj = add_form.save(commit=False)
        obj.newsletter = newsletter
        obj.save()
        return form_complete(request, "Added %s!" % obj.name)

    return render(request, "dashboard.html", {
        "newsletter": newsletter,
        "add_form": add_form,
        "sources": sources,
    })
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号