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
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)
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")
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')
def get_queryset(self): return Ping.filter_unblocked( self.request.user.mentioned_by.select_related('user'), self.request)