Esempio n. 1
0
def add_newsletter_file(request, key):
    newsletter = Newsletter.get(key)
    url = blobstore.create_upload_url(url_for("admin/add_newsletter_file", key=key))
    form = NewsletterFileForm(action=url)
    form.csrf_protected = False
    if request.method == "POST" and form.validate(request.form):
        upload_files = get_uploads(request, "file")
        if not len(upload_files):
            return redirect(url_for("admin/add_newsletter_file", key=key))
        blob_info = upload_files[0]
        bl = blobstore.BlobInfo.get(blob_info.key())
        filename = os.path.basename(bl.filename.replace("\\", "/"))
        file_ = File(
            filename=filename, content_type=blob_info.content_type, blob_key=str(blob_info.key()), length=blob_info.size
        )
        file_.put()
        newsletter.n_price_list.append(str(file_.key()))
        newsletter.put()
        return redirect(url_for("admin/edit_newsletter", key=key))
    return render_to_response(
        "postman/admin/newsletters/add_file.html", {"form": form.as_widget(), "newsletter": newsletter, "key": key}
    )
Esempio n. 2
0
def index(request):
    url = blobstore.create_upload_url(url_for('price_list/admin'))
    form = PriceListForm(action=url)
    form.csrf_protected = False
    if request.method == 'POST' and form.validate(request.form):
        desc = form['description']
        upload_files = get_uploads(request, 'file')
        if len(upload_files):
            blob_info = upload_files[0]
            if blob_info.size:
                file = File(blob=blob_info.key())
                file.name = file.get_name
                file.put()

                price_list = PriceList(file=file.key, description=desc)
                price_list.put()
            else:
                blob_info.delete()

        return redirect(url_for('price_list/admin'))
    prices = PriceList.query()
    return render_to_response('price_list/admins/index.html',
                                {'form': form.as_widget(),
                                'prices': prices})