def add_blob_content(): response_object = { 'status': 'success', 'now': datetime.utcnow().isoformat(), 'filelink': None, } folder = Folder.retrieve_by_id(3001) if not folder: response_object['status'] = 'failure' return util.jsonpify(response_object) upload_files = get_uploads(flask.request, 'file') if len(upload_files): blob_info = upload_files[0] if blob_info.size: f = File.create( blob_info.key(), size=blob_info.size, filename=os.path.basename(blob_info.filename.replace('\\','/')), content_type=blob_info.content_type) f.put() if f.get_cached_url(): folder.files.append(f.key) folder.put() response_object['filelink'] = f.get_cached_url() else: blob_info.delete() return util.jsonpify(response_object)
def preview_newsletter(request, key): newsletter = Newsletter.get(key) gifts = [] if newsletter.gifts: gifts_split = newsletter.gifts.split(",") for gift in gifts_split: try: gift = gift.strip() obj = Gift.all().filter("uid =", gift).get() if obj: gifts.append(obj) except Exception: pass managers = [] users = UserProfile.all().filter("is_send_newsletter =", True).filter("email !=", None) if newsletter.type != 999: users = users.filter("newsletter_type =", newsletter.type) files = [] for file_key in newsletter.n_price_list: file_ = File.get(file_key) if file_: files.append(file_) return render_to_response( "postman/admin/newsletters/preview.html", {"newsletter": newsletter, "gifts": gifts, "key": key, "files": files, "managers": managers, "users": users}, )
def upload_price(): form = PriceFileForm() if request.method == 'POST' and form.validate_on_submit(): upload_files = get_uploads(request, 'attach_file_') if len(upload_files): blob_info = upload_files[0] if blob_info.size: price_file = PriceFile() form.populate_obj(price_file) file_ = File.create(blob_info.key(), size=blob_info.size, filename=os.path.basename( blob_info.filename.replace('\\', '/')), content_type=blob_info.content_type, is_public=True, description=form.description.data) file_.put() price_file.file = file_.key price_file.put() else: blob_info.delete() return redirect(url_for('admin.price.index')) prices = PriceFile.query().order(-PriceFile.order_id) return render_template('admin/price/index.html', prices=prices, form=form, upload_url=blobstore.create_upload_url( url_for('admin.price.upload_price')))
def get_file_w_name(file_key, name): file = File.query(File.uid==file_key).get() if not file or not file.blob_key: return render_template('file/not_found.html') if not _check_owner(file): return render_template('file/is_private.html') return send_blob(file.blob_key, content_type=file.content_type)
def upload_price(): form = PriceFileForm() if request.method == 'POST' and form.validate_on_submit(): upload_files = get_uploads(request, 'attach_file_') if len(upload_files): blob_info = upload_files[0] if blob_info.size: price_file = PriceFile() form.populate_obj(price_file) file_ = File.create( blob_info.key(), size=blob_info.size, filename=os.path.basename(blob_info.filename.replace('\\','/')), content_type=blob_info.content_type, is_public=True, description = form.description.data ) file_.put() price_file.file = file_.key price_file.put() else: blob_info.delete() return redirect(url_for('admin.price.index')) prices = PriceFile.query().order(-PriceFile.order_id) return render_template( 'admin/price/index.html', prices=prices, form=form, upload_url=blobstore.create_upload_url(url_for('admin.price.upload_price')) )
def upload_resume(key_id): job = Job.retrieve_by_id(key_id) if not job or not job.is_public: return redirect(url_for('about.jobs')) form = ResumeForm() if request.method == 'POST' and form.validate_on_submit(): resume = Resume() form.populate_obj(resume) resume.vacancy = job.key upload_files = get_uploads(request, 'attach_file_') if len(upload_files): blob_info = upload_files[0] if blob_info.size: file_ = File.create( blob_info.key(), size=blob_info.size, filename=os.path.basename(blob_info.filename.replace('\\','/')), content_type=blob_info.content_type) file_.put() resume.attach_file = file_.key else: blob_info.delete() resume.put() return render_template('about/resume_thanks.html', html_class='about_class') upload_url = blobstore.create_upload_url(url_for('about.upload_resume', key_id=key_id)) return render_template( 'about/job.html', html_class='about_page', job=job, form=form, upload_url=upload_url, is_send_form=True )
def get_file(file_key): file = File.query(File.uid==file_key).get() if not file or not file.blob_key: return render_template('file/not_found.html') if file.title_filename: return redirect(url_for('file.get_w_name', file_key=file_key, name=file.title_filename)) return send_blob(file.blob_key, content_type=file.content_type)
def get_responce(f_key, f_name, save_as=False): file_ = File.get_by_id(f_key) if file_ and file_.blob: bi = BlobInfo(file_.blob) if save_as: return send_blob(file_.blob, content_type=bi.content_type, save_as=f_name) return send_blob(file_.blob, content_type=bi.content_type) return Response(status=404)
def employee_add(): form = EmployeeForm(request.form) upload_files = get_uploads(request, 'photo_file') file_ = None if len(upload_files): blob_info = upload_files[0] else: blob_info = None if form.validate_on_submit(): if blob_info: blob_info = blobstore.BlobInfo.get(blob_info.key()) if blob_info.size: file_ = File.create( blob_key=blob_info.key(), title=form.name.data, description=form.description.data, is_public=form.is_public.data, filename=os.path.basename(blob_info.filename.replace('\\', '/')), size=blob_info.size, content_type=blob_info.content_type) file_.put() else: blob_info.delete() employee = Employee() employee.name = form.name.data employee.post = form.post.data employee.description = form.description.data employee.is_public = form.is_public.data employee.telephone = form.telephone.data employee.telephone_m = form.telephone_m.data employee.email = form.email.data employee.icq = form.icq.data employee.skype = form.skype.data employee.country = form.country.data employee.city = form.city.data employee.address = form.address.data if file_: employee.photo_key = file_.key employee.put() return redirect(url_for('about.admins.employee')) else: if blob_info: blob_info.delete() add_url = blobstore.create_upload_url(url_for('about.admins.employee_add')) return render_template( 'about/admins/employee/add.html', form=form, add_url=add_url )
def get_file_w_name(request, file_key, name): file = File.all().filter("uid =", file_key) if file.count(): file = file.get() else: file = None if not file or not file.blob_key: return render_to_response("file/not_found.html") return send_blob(file.blob_key, content_type=file.content_type)
def get_file(file_key): file_ = File.query(File.uid == file_key).get() if not file_ or not file_.blob_key: return render_template('file/not_found.html') if file_.title_filename: return redirect( url_for('file.get_w_name', file_key=file_key, name=file_.title_filename)) if not _check_owner(file_): return render_template('file/is_private.html') return send_blob(file_.blob_key, content_type=file_.content_type)
def get_file(file_key): file_ = File.query(File.uid == file_key).get() if not file_ or not file_.blob_key: return render_template('file/not_found.html') if file_.title_filename: return redirect( url_for( 'file.get_w_name', file_key=file_key, name=file_.title_filename) ) if not _check_owner(file_): return render_template('file/is_private.html') return send_blob(file_.blob_key, content_type=file_.content_type)
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} )
def delete_newsletter_file(request, key, file_key): if request.method == "POST": newsletter = Newsletter.get(key) if not newsletter: return redirect("/admin/postman/newsletters/") for i, file_key_ in enumerate(newsletter.n_price_list): if file_key_ == file_key_: file = File.get(file_key) if file: file.delete() del newsletter.n_price_list[i] newsletter.put() break return redirect(url_for("admin/edit_newsletter", key=key))
def delete_file2(request, key_id, file_key_id): if request.method == "POST": newsletter = Newsletter2.get_by_id(key_id) if not newsletter: return redirect("postman/admin/newsletters2") for i, file_key_ in enumerate(newsletter.n_price_list): if file_key_ == file_key_: file = File.get_by_id(file_key_id) if file: file.delete() del newsletter.n_price_list[i] newsletter.put() break return redirect(url_for("postman/admin/newsletters2/edit", key_id=key_id))
def employee_upload(key_id): employee = Employee.retrieve_by_id(key_id) if not employee: return redirect(url_for('about.admins.employee')) if 'delete_contact' in request.form: employee.key.delete() return redirect(url_for('about.admins.employee')) upload_files = get_uploads(request, 'photo_file') file_ = None if len(upload_files): blob_info = upload_files[0] else: blob_info = None form = EmployeeForm() if form.validate_on_submit(): if blob_info: blob_info = blobstore.BlobInfo.get(blob_info.key()) if blob_info.size: file_ = File.create( blob_key=blob_info.key(), title=form.name.data, description=form.description.data, is_public=form.is_public.data, filename=os.path.basename(blob_info.filename.replace('\\', '/')), size=blob_info.size, content_type=blob_info.content_type) file_ = file_.put_async() else: blob_info.delete() form.populate_obj(employee) if employee.photo_key and file_: employee.photo_key.delete_async() employee.photo_key = file_.get_result() employee.put_async() return redirect(url_for('about.admins.employee')) else: if blob_info: blob_info.delete() edit_url = blobstore.create_upload_url(url_for('about.admins.employee_update', key_id=key_id)) return render_template( 'about/admins/employee/edit.html', employee=employee, form=form, edit_url=edit_url)
def tenancy_edit(key_id): tenancy = Tenancy.retrieve_by_id(key_id) if not tenancy: return redirect(url_for('tenancy.admin.tenancy')) if request.method == 'POST' and 'delete_tenancy' in request.form: tenancy.key.delete() return redirect(url_for('tenancy.admin.tenancy')) url = blobstore.create_upload_url( url_for('tenancy.admin.edit', key_id=key_id) ) form = TenancyForm(obj=tenancy) if request.method == 'POST': upload_files = get_uploads(request, 'attach_file') file_ = None if len(upload_files): blob_info = upload_files[0] else: blob_info = None if form.validate_on_submit(): if blob_info: blob_info = blobstore.BlobInfo.get(blob_info.key()) if blob_info.size: file_ = File.create( blob_key=blob_info.key(), title=form.name.data, description=form.description.data, is_public=form.is_public.data, filename=os.path.basename(blob_info.filename.replace('\\', '/')), size=blob_info.size, content_type=blob_info.content_type) file_.put() else: blob_info.delete() form.populate_obj(tenancy) if file_: if tenancy.file: tenancy.file.delete() tenancy.file = file_.key tenancy.put() return redirect(url_for('tenancy.admin.tenancy')) return render_template( 'tenancy/admin/tenancy_edit.html', tenancy=tenancy, form=form, url=url )
def edit_newsletter(request, key): newsletter = Newsletter.get(key) form = AddNewsletter(instance=newsletter) if request.method == "POST" and request.form and form.validate(request.form, request.files): newsletter = form.save(commit=False) newsletter.put() return redirect("/admin/postman/newsletters/") files = [] for file_key in newsletter.n_price_list: file_ = File.get(file_key) if file_: files.append(file_) return render_to_response( "postman/admin/newsletters/edit.html", {"form": form.as_widget(), "key": key, "files": files} )
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})
def edit_newsletter2(request, key_id): newsletter = Newsletter2.get_by_id(key_id) form = AddNewsletter2(instance=newsletter) form.managers.choices = get_managers() if request.method == "POST" and form.validate(request.form): newsletter = form.save(commit=False) newsletter.put() return redirect(url_for("postman/admin/newsletters2")) files = [] for file_key in newsletter.n_price_list: file_ = File.get(file_key) if file_: files.append(file_) return render_to_response( "postman/admin/newsletters2/edit.html", {"form": form.as_widget(), "key_id": key_id, "files": files} )
def send_newsletter_task(request, user_key, newsletter_key): newsletter = Newsletter.get(newsletter_key) managers = [] message = mail.EmailMessage(sender=settings.DEFAULT_MAIL_FROM, subject=newsletter.title) user = UserProfile.get(user_key) message.to = user.email if not message.to: return Response("Ok") gifts = [] gifts_images = {} if newsletter.gifts: gifts_split = newsletter.gifts.split(",") for gift in gifts_split: try: gift = gift.strip() obj = Gift.all().filter("uid =", gift).get() if obj: gifts.append(obj) if obj.main_thumb: try: img = ThumbImage.get(obj.main_thumb) img = Image.get(img.thumb_200x200) if img: gifts_images[obj.uid] = base64.b64encode(str(img.image)) except Exception: pass except Exception: pass message_text = render_to_string( "postman/send_newsletter.html", {"newsletter": newsletter, "gifts": gifts, "managers": managers, "gifts_images": gifts_images}, ) message.html = message_text attachments = [] for file_key in newsletter.n_price_list: file_ = File.get(file_key) if file_ and file_.blob_key: bi = blobstore.BlobInfo.get(file_.blob_key) if bi: attachments.append(("%s" % file_.title_filename, bi.open().read())) message.attachments = attachments message.send() return Response("OK")
def edit_investment(key_id): investment = Investment.retrieve_by_id(key_id) if not investment: return redirect(url_for('investment.admin.index')) if request.method == 'POST' and 'delete_investment' in request.form: investment.key.delete() return redirect(url_for('investment.admin.index')) url = blobstore.create_upload_url( url_for('investment.admin.edit', key_id=key_id)) form = InvestmentForm(obj=investment) if request.method == 'POST': upload_files = get_uploads(request, 'attach_file') file_ = None if len(upload_files): blob_info = upload_files[0] else: blob_info = None if form.validate_on_submit(): if blob_info: blob_info = blobstore.BlobInfo.get(blob_info.key()) if blob_info.size: file_ = File.create( blob_key=blob_info.key(), filename=os.path.basename(blob_info.filename.replace('\\', '/')), size=blob_info.size, content_type=blob_info.content_type) file_.put() else: blob_info.delete() form.populate_obj(investment) if file_: if investment.file: investment.file.delete() investment.file = file_.key investment.put() return redirect(url_for('investment.admin.index')) return render_template( 'investment/admin/edit.html', form=form, url=url, investment=investment )
def tenancy_add(): form = TenancyForm() url = blobstore.create_upload_url( url_for('tenancy.admin.add') ) if request.method == 'POST': upload_files = get_uploads(request, 'attach_file') file_ = None if len(upload_files): blob_info = upload_files[0] else: blob_info = None if form.validate_on_submit(): if blob_info: blob_info = blobstore.BlobInfo.get(blob_info.key()) if blob_info.size: file_ = File.create( blob_key=blob_info.key(), title=form.name.data, description=form.description.data, is_public=form.is_public.data, filename=os.path.basename(blob_info.filename.replace('\\', '/')), size=blob_info.size, content_type=blob_info.content_type) file_.put() else: blob_info.delete() tenancy = Tenancy() form.populate_obj(tenancy) if file_: tenancy.file = file_.key tenancy.put() return redirect(url_for('tenancy.admin.tenancy')) tenancies = Tenancy.query() return render_template( 'tenancy/admin/add.html', add_active='active', form=form, tenancies=tenancies, url=url )
def add_file(key_id): folder = Folder.retrieve_by_id(key_id) if not folder: return flask.redirect(flask.url_for('admin.file.index')) upload_files = get_uploads(flask.request, 'file') if len(upload_files): blob_info = upload_files[0] if blob_info.size: file = File.create( blob_info.key(), size=blob_info.size, filename=os.path.basename(blob_info.filename.replace('\\','/')), content_type=blob_info.content_type) file.put() if file.get_cached_url(): folder.files.append(file.key) folder.put() else: blob_info.delete() return flask.redirect(flask.url_for('admin.file.edit_folder', key_id=key_id))
def add_investment(): form = InvestmentForm() url = blobstore.create_upload_url( url_for('investment.admin.add')) if request.method == 'POST': upload_files = get_uploads(request, 'attach_file') file_ = None if len(upload_files): blob_info = upload_files[0] else: blob_info = None if form.validate_on_submit(): if blob_info: blob_info = blobstore.BlobInfo.get(blob_info.key()) if blob_info.size: file_ = File.create( blob_key=blob_info.key(), title=form.name.data, description=form.description.data, is_public=form.is_public.data, filename=os.path.basename(blob_info.filename.replace('\\', '/')), size=blob_info.size, content_type=blob_info.content_type) file_.put() else: blob_info.delete() investment = Investment() form.populate_obj(investment) if file_: investment.file = file_.key investment.put() return redirect(url_for('investment.admin.index')) return render_template( 'investment/admin/add.html', form=form, url=url )
def preview2(request, key_id): newsletter = Newsletter2.get_by_id(key_id) gifts = [] if newsletter.gifts: gifts_split = newsletter.gifts.split(",") for gift in gifts_split: try: gift = gift.strip() obj = Gift.all().filter("uid =", gift).get() if obj: gifts.append(obj) except Exception: pass managers = [] for mgr_id in newsletter.managers: mgr = Manager.get_by_id(mgr_id) if mgr: managers.append(mgr) emails = newsletter.emails files = [] for file_key in newsletter.n_price_list: file_ = File.get(file_key) if file_: files.append(file_) return render_to_response( "postman/admin/newsletters2/preview.html", { "newsletter": newsletter, "gifts": gifts, "key_id": key_id, "files": files, "managers": managers, "emails": emails, }, )
def admin_files_upload(): form = AboutFileForm() if form.validate_on_submit(): upload_files = get_uploads(request, 'file') if len(upload_files): blob_info = upload_files[0] blob_info = blobstore.BlobInfo.get(blob_info.key()) if blob_info.size: file_ = File.create( blob_key=blob_info.key(), title=form.title.data, description=form.description.data, is_public=form.is_public.data, # wtf? for fix unicode filenames filename=os.path.basename(blob_info.filename.replace('\\','/')), size=blob_info.size, content_type=blob_info.content_type) file_.put() about_file = AboutFile(file_key=file_.key) about_file.put() else: blob_info.delete() return redirect(url_for('about.admin_files'))
def delete(self, **kwargs): for file_key in self.n_price_list: f = File.get(file_key) if f: f.delete() super(Newsletter, self).delete(**kwargs)
def send_newsletter_task2(request, email, newsletter_key_id): newsletter = Newsletter2.get_by_id(newsletter_key_id) managers = [] for mgr_id in newsletter.managers: mgr = Manager.get_by_id(mgr_id) if mgr: managers.append(mgr) message = mail.EmailMessage(sender=settings.DEFAULT_MAIL_FROM, subject=newsletter.title) message.to = email if not message.to: return Response("Ok") mangers_emails = [manager.email for manager in managers] if mangers_emails: message.reply_to = ",".join(mangers_emails) gifts = [] gifts_images = {} if newsletter.gifts: gifts_split = newsletter.gifts.split(",") for gift in gifts_split: try: gift = gift.strip() obj = Gift.all().filter("uid =", gift).get() if obj: gifts.append(obj) if obj.main_thumb: try: img = ThumbImage.get(obj.main_thumb) img = Image.get(img.thumb_200x200) if img: gifts_images[obj.uid] = base64.b64encode(str(img.image)) except Exception: pass except Exception: pass message_text = render_to_string( "postman/send_newsletter2.html", {"newsletter": newsletter, "gifts": gifts, "managers": managers, "gifts_images": gifts_images}, ) message.html = message_text attachments = [] for file_key in newsletter.n_price_list: file_ = File.get(file_key) if file_ and file_.blob_key: bi = blobstore.BlobInfo.get(file_.blob_key) if bi: attachments.append(("%s" % file_.title_filename, bi.open().read())) if attachments: message.attachments = attachments try: message.send() except apiproxy_errors.OverQuotaError: def txn(): taskqueue.add( url=url_for("postman/send_newsletter_task2", email=email, newsletter_key_id=newsletter_key_id), transactional=True, ) db.run_in_transaction(txn) return Response("OK")