def handle(self, *args, **options): """Handles the check_tinylink_targets admin command.""" interval = settings.TINYLINK_CHECK_INTERVAL period = settings.TINYLINK_CHECK_PERIOD url_amount = Tinylink.objects.all().count() check_amount = (url_amount / (period / interval)) or 1 for link in Tinylink.objects.order_by('last_checked')[:check_amount]: validate_long_url(link) print('[' + timezone.now().strftime('%d.%m.%Y - %H:%M') + '] Checked ' + str(check_amount) + ' of ' + str(url_amount) + ' total URLs.')
def dispatch(self, request, *args, **kwargs): if request.method == 'POST': for key in request.POST: if key.startswith('validate'): try: link_id = int(key.replace('validate', '')) except ValueError: raise Http404 try: link = Tinylink.objects.get(pk=link_id) except Tinylink.DoesNotExist: raise Http404 validate_long_url(link) return super(TinylinkListView, self).dispatch(request, *args, **kwargs)
def test_model(self): obj = TinylinkFactory() self.assertTrue(obj.pk) link = TinylinkFactory(long_url="http://www.google.com/", short_url="v4bG4S") validate_long_url(link) self.assertEqual(Tinylink.objects.get(pk=link.pk).validation_error, "") link.long_url = "http://www.a1b2c3d4e5000.com:8888/" link.save() validate_long_url(link) self.assertEqual( Tinylink.objects.get(pk=link.pk).validation_error, "URL not accessible.") link.long_url = "%s/redirect-fail/" % self.live_server_url link.save() validate_long_url(link) self.assertTrue(Tinylink.objects.get(pk=link.pk).is_broken) link.long_url = "%s/redirect-test/" % self.live_server_url link.save() validate_long_url(link) self.assertTrue(Tinylink.objects.get(pk=link.pk).is_broken) link.last_checked = timezone.now() - timezone.timedelta(minutes=61) self.assertTrue(link.can_be_validated())
def test_model(self): obj = TinylinkFactory() self.assertTrue(obj.pk) link = TinylinkFactory(long_url="http://www.google.com/", short_url="v4bG4S") validate_long_url(link) self.assertEqual(Tinylink.objects.get(pk=link.pk).validation_error, "") link.long_url = "http://www.a1b2c3d4e5000.com/" link.save() validate_long_url(link) self.assertEqual( Tinylink.objects.get(pk=link.pk).validation_error, "URL not accessible.") #--------------------------------------------- # IMPORTANT: Start runserver before testing. #--------------------------------------------- try: urlopen('http://localhost:8000/admin/') except URLError: self.fail('Start runserver before testing.') link.long_url = "http://localhost:8000/redirect-fail/" link.save() validate_long_url(link) self.assertTrue(Tinylink.objects.get(pk=link.pk).is_broken) link.long_url = "http://localhost:8000/redirect-test/" link.save() validate_long_url(link) self.assertTrue(Tinylink.objects.get(pk=link.pk).is_broken) link.last_checked = timezone.now() - timezone.timedelta(minutes=61) self.assertTrue(link.can_be_validated())
def test_model(self): obj = TinylinkFactory() self.assertTrue(obj.pk) link = TinylinkFactory(long_url="http://www.google.com/", short_url="v4bG4S") validate_long_url(link) self.assertEqual(Tinylink.objects.get(pk=link.pk).validation_error, "") link.long_url = "http://www.a1b2c3d4e5000.com/" link.save() validate_long_url(link) self.assertEqual(Tinylink.objects.get(pk=link.pk).validation_error, "URL not accessible.") #--------------------------------------------- # IMPORTANT: Start runserver before testing. #--------------------------------------------- try: urlopen('http://localhost:8000/admin/') except URLError: self.fail('Start runserver before testing.') link.long_url = "http://localhost:8000/redirect-fail/" link.save() validate_long_url(link) self.assertTrue(Tinylink.objects.get(pk=link.pk).is_broken) link.long_url = "http://localhost:8000/redirect-test/" link.save() validate_long_url(link) self.assertTrue(Tinylink.objects.get(pk=link.pk).is_broken) link.last_checked = timezone.now() - timezone.timedelta(minutes=61) self.assertTrue(link.can_be_validated())
def test_model(self): obj = TinylinkFactory() self.assertTrue(obj.pk) link = TinylinkFactory(long_url="http://www.google.com/", short_url="v4bG4S") validate_long_url(link) self.assertEqual(Tinylink.objects.get(pk=link.pk).validation_error, "") link.long_url = "http://www.a1b2c3d4e5000.com:8888/" link.save() validate_long_url(link) self.assertEqual(Tinylink.objects.get(pk=link.pk).validation_error, "URL not accessible.") link.long_url = "%s/redirect-fail/" % self.live_server_url link.save() validate_long_url(link) self.assertTrue(Tinylink.objects.get(pk=link.pk).is_broken) link.long_url = "%s/redirect-test/" % self.live_server_url link.save() validate_long_url(link) self.assertTrue(Tinylink.objects.get(pk=link.pk).is_broken) link.last_checked = timezone.now() - timezone.timedelta(minutes=61) self.assertTrue(link.can_be_validated())
def save(self, *args, **kwargs): if not self.instance.pk: self.instance.user = self.user self.instance = super(TinylinkForm, self).save(*args, **kwargs) return validate_long_url(self.instance)