Example #1
0
 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
Example #2
0
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: ")
Example #3
0
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
Example #4
0
 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
Example #5
0
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)
Example #6
0
 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
Example #7
0
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)
Example #8
0
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)
Example #9
0
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)
Example #10
0
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
Example #11
0
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)
Example #12
0
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)
Example #13
0
 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
Example #14
0
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)
Example #15
0
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)
Example #16
0
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)
Example #17
0
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)
Example #18
0
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)
Example #19
0
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)
Example #20
0
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
Example #21
0
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
Example #22
0
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
Example #23
0
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
Example #24
0
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())
Example #25
0
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
Example #26
0
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)
Example #27
0
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)
Example #28
0
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())
Example #29
0
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
Example #30
0
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)
Example #31
0
def guide(request, subkey):
    subscription = Subscription.all().filter("subkey =", subkey).get()
    if subscription is None:
        raise Http404
    return _guide(request, subscription)
Example #32
0
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)
Example #33
0
        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
Example #34
0
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)
Example #35
0
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: ")
Example #36
0
            ]
            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:
Example #37
0
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")
Example #38
0
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")
Example #39
0
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)
Example #40
0
def guide(request, subkey):
    subscription = Subscription.all().filter("subkey =", subkey).get()
    if subscription is None:
        raise Http404
    return _guide(request, subscription)