def url_str_to_user_pk(s): User = get_user_model() # TODO: Ugh, isn't there a cleaner way to determine whether or not # the PK is a str-like field? if getattr(User._meta.pk, 'remote_field', None): pk_field = User._meta.pk.remote_field.to._meta.pk else: pk_field = User._meta.pk if issubclass(type(pk_field), models.UUIDField): return pk_field.to_python(s) try: pk_field.to_python('a') pk = s except ValidationError: pk = base36_to_int(s) return pk
def test_int_to_base36(self): n = 55798679658823689999 b36 = 'brxk553wvxbf3' assert int_to_base36(n) == b36 assert base36_to_int(b36) == n