def test_feed_updated_date_format(self): """Tests XML feed <updated> field format.""" feed = xml_etree.fromstring(utils.GenerateFeed()) updated = feed.find( "{http://www.w3.org/2005/Atom}updated").text.strip() self.assertEqual(len(self.FEED_DATE_FORMAT_RE.findall(updated)), 1) self.assertEqual(self.FEED_DATE_FORMAT_RE.findall(updated)[0], updated)
def get(self, request, *args, **kwargs): feed_type = kwargs["feed_type"] audience = request.GET.get('audience', '') # print(audience) if "alert_id" in kwargs: try: alert = models.Alert.objects.get(uuid=kwargs["alert_id"]) except models.Alert.DoesNotExist: raise Http404 if feed_type == "html": context = { "alert": utils.ParseAlert(alert.content, feed_type, alert.uuid) } response = render_to_string("core/alert.html.tmpl", context) return HttpResponse( BeautifulSoup(response, feed_type).prettify()) return HttpResponse(alert.content, content_type="text/xml") feed_data = utils.GenerateFeed(feed_type) if feed_type == "json": if audience == "": return JsonResponse(feed_data, safe=False) new_feed = [] for alert in feed_data: if alert["audience"] == audience: new_feed.append(alert) return JsonResponse(new_feed, safe=False) return HttpResponse(feed_data, content_type="text/%s" % feed_type)
def test_generate_feed_inactive_alert(self): """Tests XML feed with date after alert expiration date. Expiration date is 2014-08-10T23:55:12+00:00. """ uuid, _, _ = utils.CreateAlert(self.draft_alert_content, self.TEST_USER_NAME) self.assertFalse(uuid in utils.GenerateFeed())
def test_generate_feed_alerts_db_query(self): """Tests XML feed alerts order.""" feed = xml_etree.fromstring(utils.GenerateFeed()) # Deals with Unicode. entries = [] for entry in feed.findall(".//{http://www.w3.org/2005/Atom}entry"): entries.append(entry) self.assertEqual(len(entries), 2) # Check the feed length. # Make sure alerts order is correct - most recent go first. last_alert = entries[0] previous_alert = entries[1] last_alert_created_at = last_alert.find( "{http://www.w3.org/2005/Atom}updated").text.strip() previous_alert_created_at = previous_alert.find( "{http://www.w3.org/2005/Atom}updated").text.strip() self.assertTrue(last_alert_created_at > previous_alert_created_at)
def get(self, request, *args, **kwargs): feed_type = kwargs["feed_type"] if "alert_id" in kwargs: try: alert = models.Alert.objects.get(uuid=kwargs["alert_id"]) except models.Alert.DoesNotExist: raise Http404 if feed_type == "html": context = { "alert": utils.ParseAlert(alert.content, feed_type, alert.uuid) } response = render_to_string("core/alert.html.tmpl", context) return HttpResponse(BeautifulSoup(response, feed_type).prettify()) return HttpResponse(alert.content, content_type="text/xml") return HttpResponse(utils.GenerateFeed(feed_type), content_type="text/%s" % feed_type)