def get_object(self): identifier = self.kwargs['identifier'] if '-' in identifier or '_' in identifier or '.' in identifier: return get_object_or_404(Link, identifier=identifier) # decode based on the identifier pk = base64.decode(identifier) try: link = Link.objects.get(Q(pk=pk) | Q(identifier=identifier)) except Link.DoesNotExist: raise Http404 return link
def get_redirect_url(self, **kwargs): identifier = self.kwargs['identifier'] # If identifier includes a link it means we don't need to do a base64 # decode. Just a fetch based on the identifier if '-' in identifier or '_' in identifier or '.' in identifier: link = get_object_or_404(Link, identifier=identifier) link.log(self.request) return link.original_url # decode based on the identifier pk = base64.decode(identifier) try: link = Link.objects.get(Q(pk=pk) | Q(identifier=identifier)) except Link.DoesNotExist: raise Http404 link.log(self.request) return link.original_url
def test_base64(self): self.assertEqual(base64.encode(1234), 'JI') self.assertEqual(base64.decode('JI'), 1234) self.assertEqual(base64.encode(-1234), '$JI') self.assertEqual(base64.decode('$JI'), -1234)
def get_real_uuid(self): """ Renvoyer l'UUID au format UUID """ s = "%x" % base64.decode(self.uuid) uuid = "-".join([s[0:4], s[4:8], s[8:12], s[12:16]]) return uuid
def test_base64(self): self.assertEqual(base64.encode(1234), "JI") self.assertEqual(base64.decode("JI"), 1234) self.assertEqual(base64.encode(-1234), "$JI") self.assertEqual(base64.decode("$JI"), -1234)