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 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 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 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 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 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")
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)