Beispiel #1
0
def ping(request):
    akey = request.REQUEST.get("key", "")
    mstr = request.REQUEST.get("monitor", "")

    apiKey = ApiKey.query(ApiKey.akey == akey).get()
    if apiKey:
        mkey = ndb.Key(urlsafe=mstr)
        monitor = mkey.get()
        if mkey.kind() == "Monitor" and monitor:
            if apiKey.organization.urlsafe() == monitor.organization.urlsafe():
                ping = Ping(monitor=mkey)
                ping.put()

                return http.HttpResponse("So long and thanks for all the fish!", content_type="text/plain")

    raise http.Http404
Beispiel #2
0
 def retrieve(self, request, *args, **kwargs):
     hashtag = self.get_object()
     return Response(
         self.get_serializer(
             Ping.filter_unblocked(hashtag.in_pings.select_related('user'),
                                   self.request),
             many=True,
             context={
                 'request': request
             },
         ).data)
Beispiel #3
0
def check_pings(request):
    for monitor in Monitor.query(Monitor.active == True).fetch():
        now = datetime.datetime.utcnow()
        old = now - datetime.timedelta(minutes=6)

        ping = Ping.query(Ping.created >= old).get()
        kw = {"name": monitor.name, "key": monitor.key.urlsafe(), "ts": now.strftime("%m/%d/%Y %H:%M UTC")}

        if ping:
            logging.info("Ping Good: {name} {key}".format(**kw))

        else:
            logging.info("Ping Missing: {name} {key}".format(**kw))
            mail.send_mail(
                settings.DEFAULT_FROM_EMAIL,
                settings.PING_REPORT_EMAIL,
                '"{name}" failed to report - {ts}'.format(**kw),
                'Monitor "{name}" failed to report in the last 5 minutes.\n\n'.format(**kw),
            )

    return http.HttpResponse("OK", content_type="text/plain")
Beispiel #4
0
 def get_queryset(self):
     follows = Follow.objects.filter(follower=self.request.user)
     return Ping.objects_unblocked(self.request).filter(
         Q(user=self.request.user)
         | Q(user__in=Subquery(follows.values('followed')))).select_related(
             'user', 'replying_to')
Beispiel #5
0
 def get_queryset(self):
     return Ping.filter_unblocked(
         self.request.user.mentioned_by.select_related('user'),
         self.request)