コード例 #1
0
def comic_site(request):
    """ Find out in which comic site this request is loaded. If you cannot
    figure it out. Use main project. 
    
    """

    try:
        resolution = resolve(request.path)
    except Http404 as e:
        #fail silently beacuse any exeception here will cause a 500 server error
        # on page. Let views show errors but not the context processor
        resolution = resolve("/")
                        
    if resolution.kwargs.has_key("site_short_name"):
        sitename = resolution.kwargs["site_short_name"]
    elif resolution.kwargs.has_key("project_name"):
        sitename = resolution.kwargs["project_name"]
    else:
        sitename = settings.MAIN_PROJECT_NAME

    try:
        [site, pages, metafooterpages] = site_get_standard_vars(sitename)
    except ComicSite.DoesNotExist:
        # Don't crash the system here, if a site cannot be found it will crash 
        # in a more appropriate location
        return {}
    
    return {"site":site,"pages":pages,"metafooterpages":metafooterpages}
コード例 #2
0
ファイル: views.py プロジェクト: sjoerdk/comic-django
def upload_handler(request, site_short_name):
    """ Upload a file to the given comicsite, display files previously uploaded"""

    view_url = reverse("comicmodels.views.upload_handler", kwargs={"site_short_name": site_short_name})

    if request.method == "POST":
        # set values excluded from form here to make the model validate
        site = getSite(site_short_name)
        uploadedFile = UploadModel(comicsite=site, permission_lvl=UploadModel.ADMIN_ONLY, user=request.user)
        # ADMIN_ONLY

        form = UserUploadForm(request.POST, request.FILES, instance=uploadedFile)
        if form.is_valid():
            form.save()
            filename = ntpath.basename(form.instance.file.file.name)
            messages.success(
                request,
                "File '%s' sucessfully uploaded. An email has been sent to this\
                                       projects organizers."
                % filename,
            )

            # send signal to be picked up by email notifier 03/2013 - Sjoerd. I'm not sure that sending
            # signals is the best way to do this. Why not just call the method directly?
            # typical case for a refactoring round.
            file_uploaded.send(
                sender=UploadModel,
                uploader=request.user,
                filename=filename,
                comicsite=site,
                site=get_current_site(request),
            )

            return HttpResponseRedirect(view_url)
        else:
            # continue to showing errors
            pass
    else:
        form = UserUploadForm()

    upload_url, upload_data = prepare_upload(request, view_url)

    [site, pages, metafooterpages] = site_get_standard_vars(site_short_name)

    if not (site.is_admin(request.user) or site.is_participant(request.user)):

        p = Page(comicsite=site, title="files")
        currentpage = permissionMessage(request, site, p)

        response = render_to_response(
            "page.html",
            {"site": site, "currentpage": currentpage, "pages": pages, "metafooterpages": metafooterpages},
            context_instance=CurrentAppRequestContext(request),
        )

        response.status_code = 403
        return response

    if request.user.is_superuser or site.is_admin(request.user):
        uploadsforcurrentsite = UploadModel.objects.filter(comicsite=site).order_by("modified").reverse()
    else:
        uploadsforcurrentsite = (
            UploadModel.objects.filter(user=request.user, comicsite=site).order_by("modified").reverse()
        )

    # return direct_to_template(request, 'upload/comicupload.html',
    return render_to_response(
        "upload/comicupload.html",
        {
            "form": form,
            "upload_url": upload_url,
            "upload_data": upload_data,
            "uploads": uploadsforcurrentsite,
            "site": site,
            "pages": pages,
            "metafooterpages": metafooterpages,
        },
        context_instance=CurrentAppRequestContext(request),
    )