def clean_subkey(self): subkey = self.cleaned_data["subkey"] sub = Subscription.all().filter("subkey =", subkey).get() if sub is None: raise forms.ValidationError("You don't have a valid Seriesly Subscription Key") self._subscription = sub return subkey
def add_next_airtime_task(request): for key in Subscription.all(keys_only=True).filter("activated_mail =", True): t = taskqueue.Task(url="/subscription/next-airtime/", params={"key": str(key)}) t.add(queue_name="webhook-queue") return HttpResponse("Done: ")
def show(request, subkey, extra_context=None): subscription = Subscription.all().filter("subkey =", subkey).get() if subscription is None: raise Http404 if extra_context is None: extra_context = {} if "mail_form" in extra_context: subscription.mail_form = extra_context["mail_form"] else: subscription.mail_form = MailSubscriptionForm({"email": subscription.email, "subkey": subkey}) if "xmpp_form" in extra_context: subscription.xmpp_form = extra_context["xmpp_form"] else: subscription.xmpp_form = XMPPSubscriptionForm({"xmpp": subscription.xmpp, "subkey": subkey}) if "webhook_form" in extra_context: subscription.webhook_form = extra_context["webhook_form"] else: subscription.webhook_form = WebHookSubscriptionForm({"webhook": subscription.webhook, "subkey": subkey}) if "public_id_form" in extra_context: subscription.public_id_form = extra_context["public_id_form"] else: subscription.public_id_form = SubscriptionKeyForm({"subkey": subkey}) subscription.sub_settings = subscription.get_settings() response = render_to_response("subscription.html", RequestContext(request, {"shows": subscription.get_shows(), "subscription":subscription})) response.set_cookie("subkey", subkey, max_age=31536000) return response
def subscriptions(request): now = datetime.datetime.now() threshold = now - datetime.timedelta(days=30*3) subcount = 0 for subscription in Subscription.all(): if subscription.last_visited is not None and subscription.last_visited > threshold: subcount += 1 return HttpResponse("Done: \n%d" % subcount)
def clean(self): cleaned_data = self.cleaned_data if cleaned_data["xmpp"] != "": sub = Subscription.all().filter("xmpp =", cleaned_data["xmpp"]).filter("subkey !=", self._subscription.subkey).get() if sub is not None: self._errors["xmpp"] = forms.util.ErrorList(["This XMPP address already belongs to a subscription."]) del cleaned_data["xmpp"] return cleaned_data
def webhook_task(request): """BadFilterError: invalid filter: Only one property per query may have inequality filters (<=, >=, <, >)..""" subscriptions = Subscription.all().filter("webhook !=", None) counter = 0 for obj in subscriptions: Subscription.add_webhook_task(obj.key()) counter += 1 return HttpResponse("Done: added %d" % counter)
def test_webhook(request, subkey): subscription = Subscription.all().filter("subkey =", subkey).get() if subscription is None or subscription.webhook is None: raise Http404 Subscription.add_webhook_task(subscription.key()) return HttpResponse( "Task for posting to %s added. Will run in some seconds. Be reminded of The Rules on http://www.seriesly.com/webhook-xml/#the-rules" % subscription.webhook)
def guide_public(request, public_id): subscription = Subscription.all().filter("public_id =", public_id).get() if subscription is None: raise Http404 return _guide(request, subscription, template="guide_public.html", public=True)
def json_public(request, public_id): subscription = Subscription.all().filter("public_id =", public_id).get() if subscription is None: raise Http404 response = _guide(request, subscription, template="widget.json", public=True, extra_context=get_extra_json_context(request)) response["Content-Type"] = 'application/json' return response
def xmpp_task(request): subscription_keys = Subscription.all(keys_only=True).filter("activated_xmpp =", True) # .filter("next_airtime <", datetime.datetime.now().date()) counter = 0 for key in subscription_keys: Subscription.add_xmpp_task(key) counter += 1 return HttpResponse("Done: added %d" % counter)
def subscriptions(request): now = datetime.datetime.now() threshold = now - datetime.timedelta(days=30 * 3) subcount = 0 for subscription in Subscription.all(): if subscription.last_visited is not None and subscription.last_visited > threshold: subcount += 1 return HttpResponse("Done: \n%d" % subcount)
def feed(request, subkey, template): subscription = Subscription.all().filter("subkey =", subkey).get() if subscription is None: raise Http404 body = _feed(request, subscription, template) mimetype = "application/atom+xml" if "rss" in template: mimetype = "application/rss+xml" return HttpResponse(body, mimetype=mimetype)
def email_task(request): filter_date = datetime.datetime.now().date() + datetime.timedelta(days=1) subscription_keys = Subscription.all(keys_only=True).filter("activated_mail =", True)\ .filter("next_airtime <=", filter_date) counter = 0 for key in subscription_keys: Subscription.add_email_task(key) counter += 1 return HttpResponse("Done: added %d" % counter)
def xmpp_task(request): subscription_keys = Subscription.all(keys_only=True).filter( "activated_xmpp =", True) # .filter("next_airtime <", datetime.datetime.now().date()) counter = 0 for key in subscription_keys: Subscription.add_xmpp_task(key) counter += 1 return HttpResponse("Done: added %d" % counter)
def json(request, subkey): subscription = Subscription.all().filter("subkey =", subkey).get() if subscription is None: raise Http404 response = _guide(request, subscription, template="widget.json", extra_context=get_extra_json_context(request)) response["Content-Type"] = 'application/json' return response
def confirm_mail(request, subkey, confirmkey): subscription = Subscription.all().filter("subkey =", subkey).get() if subscription is None: raise Http404 if subscription.check_confirmation_key(confirmkey): if subscription.activated_mail == False and subscription.email != "": subscription.activated_mail = True subscription.put() return HttpResponseRedirect(subscription.get_absolute_url() + "#email") else: raise Http404
def show_public(request, public_id): subscription = Subscription.all().filter("public_id =", public_id).get() if subscription is None: raise Http404 response = render_to_response( "subscription_public.html", RequestContext(request, { "shows": subscription.get_shows(), "subscription": subscription })) return response
def edit(request, subkey): subscription = Subscription.all().filter("subkey =", subkey).get() if subscription is None: raise Http404 if request.method == "GET": sub_settings = subscription.get_settings() sub_dict = {"email": subscription.email, "shows": map(lambda x: x.idnr, subscription.get_shows()), "subkey": subkey} form = SubscriptionForm(sub_dict) return index(request, form=form, extra_context={"subscription": subscription}) return HttpResponseRedirect(subscription.get_absolute_url())
def show_public(request, public_id): subscription = Subscription.all().filter("public_id =", public_id).get() if subscription is None: raise Http404 response = render_to_response("subscription_public.html", RequestContext( request, { "shows": subscription.get_shows(), "subscription": subscription } )) return response
def feed_atom_public(request, public_id, template="atom_public.xml"): subscription = Subscription.all().filter("public_id =", public_id).get() if subscription is None: raise Http404 now = datetime.datetime.now() if subscription.needs_update(subscription.feed_public_stamp, now): subscription.check_beacon_status(now) # don't specify encoding for unicode strings! subscription.feed_public_cache = db.Text(_feed(request, subscription, template, public=True)) subscription.feed_public_stamp = now try: subscription.put() # this put is not highly relevant except Exception, e: logging.warning(e)
def feed_atom_public(request, public_id, template="atom_public.xml"): subscription = Subscription.all().filter("public_id =", public_id).get() if subscription is None: raise Http404 now = datetime.datetime.now() if subscription.needs_update(subscription.feed_public_stamp, now): subscription.check_beacon_status(now) # don't specify encoding for unicode strings! subscription.feed_public_cache = db.Text( _feed(request, subscription, template, public=True)) subscription.feed_public_stamp = now try: subscription.put() # this put is not highly relevant except Exception, e: logging.warning(e)
def edit(request, subkey): subscription = Subscription.all().filter("subkey =", subkey).get() if subscription is None: raise Http404 if request.method == "GET": sub_settings = subscription.get_settings() sub_dict = { "email": subscription.email, "shows": map(lambda x: x.idnr, subscription.get_shows()), "subkey": subkey } form = SubscriptionForm(sub_dict) return index(request, form=form, extra_context={"subscription": subscription}) return HttpResponseRedirect(subscription.get_absolute_url())
def show(request, subkey, extra_context=None): subscription = Subscription.all().filter("subkey =", subkey).get() if subscription is None: raise Http404 if extra_context is None: extra_context = {} if "mail_form" in extra_context: subscription.mail_form = extra_context["mail_form"] else: subscription.mail_form = MailSubscriptionForm({ "email": subscription.email, "subkey": subkey }) if "xmpp_form" in extra_context: subscription.xmpp_form = extra_context["xmpp_form"] else: subscription.xmpp_form = XMPPSubscriptionForm({ "xmpp": subscription.xmpp, "subkey": subkey }) if "webhook_form" in extra_context: subscription.webhook_form = extra_context["webhook_form"] else: subscription.webhook_form = WebHookSubscriptionForm({ "webhook": subscription.webhook, "subkey": subkey }) if "public_id_form" in extra_context: subscription.public_id_form = extra_context["public_id_form"] else: subscription.public_id_form = SubscriptionKeyForm({"subkey": subkey}) subscription.sub_settings = subscription.get_settings() response = render_to_response( "subscription.html", RequestContext(request, { "shows": subscription.get_shows(), "subscription": subscription })) response.set_cookie("subkey", subkey, max_age=31536000) return response
def calendar_public(request, public_id): subscription = Subscription.all().filter("public_id =", public_id).get() if subscription is None: raise Http404 return _calendar(request, subscription, public=True)
def guide(request, subkey): subscription = Subscription.all().filter("subkey =", subkey).get() if subscription is None: raise Http404 return _guide(request, subscription)
try: subscription.send_invitation_xmpp() except Exception: form.errors["xmpp"] = ["Could not send invitation to this XMPP address"] return show(request, request.POST.get("subkey", ""), extra_context={"xmpp_form":form}) subscription.put() return HttpResponseRedirect(subscription.get_absolute_url() + "#xmpp") def incoming_xmpp(request): try: message = xmpp.Message(request.POST) except Exception, e: logging.warn("Failed to parse XMPP Message: %s" % e) return HttpResponse() sender = message.sender.split("/")[0] subscription = Subscription.all().filter("xmpp =", sender).get() if subscription is None: message.reply("I don't know you. Please create a Seriesly subscription at http://www.seriesly.com") logging.warn("Sender not found: %s" % sender) return HttpResponse() if not subscription.activated_xmpp and message.body == "OK": subscription.activated_xmpp = True subscription.put() message.reply("Your Seriesly XMPP Subscription is now activated.") elif not subscription.activated_xmpp: message.reply("Someone requested this Seriesly Subscription to your XMPP address: %s . Please type 'OK' to confirm." % subscription.get_domain_absolute_url()) else: message.reply("Your Seriesly XMPP Subscription is active. Go to %s to change settings." % subscription.get_domain_absolute_url()) return HttpResponse() @is_post
def test_webhook(request, subkey): subscription = Subscription.all().filter("subkey =", subkey).get() if subscription is None or subscription.webhook is None: raise Http404 Subscription.add_webhook_task(subscription.key()) return HttpResponse("Task for posting to %s added. Will run in some seconds. Be reminded of The Rules on http://www.seriesly.com/webhook-xml/#the-rules" % subscription.webhook)
] return show(request, request.POST.get("subkey", ""), extra_context={"xmpp_form": form}) subscription.put() return HttpResponseRedirect(subscription.get_absolute_url() + "#xmpp") def incoming_xmpp(request): try: message = xmpp.Message(request.POST) except Exception, e: logging.warn("Failed to parse XMPP Message: %s" % e) return HttpResponse() sender = message.sender.split("/")[0] subscription = Subscription.all().filter("xmpp =", sender).get() if subscription is None: message.reply( "I don't know you. Please create a Seriesly subscription at http://www.seriesly.com" ) logging.warn("Sender not found: %s" % sender) return HttpResponse() if not subscription.activated_xmpp and message.body == "OK": subscription.activated_xmpp = True subscription.put() message.reply("Your Seriesly XMPP Subscription is now activated.") elif not subscription.activated_xmpp: message.reply( "Someone requested this Seriesly Subscription to your XMPP address: %s . Please type 'OK' to confirm." % subscription.get_domain_absolute_url()) else:
def feed_rss_public(request, public_id, template="rss_public.xml"): subscription = Subscription.all().filter("public_id =", public_id).get() if subscription is None: raise Http404 return HttpResponse(_feed(request, subscription, template, public=True), mimetype="application/rss+xml")