from django.urls import reverse from boards.utils import cached_result TRIPCODE_VIEW = '' \ '{short_text}' SHORT_TEXT_CHARS = 8 COLOR_CHARS = 6 class Tripcode: def __init__(self, code_str): self.tripcode = code_str def get_color(self): return self.tripcode[:COLOR_CHARS] def get_background(self): code = self.get_color() result = '' for i in range(0, len(code), 2): p = code[i:i+2] background = hex(255 - int(p, 16))[2:] if len(background) < 2: background = '0' + background result += background return result def get_short_text(self): return self.tripcode[:SHORT_TEXT_CHARS] def get_full_text(self): return self.tripcode def _get_cache_key(self): return [self.tripcode] @cached_result(key_method=_get_cache_key) def get_view(self): return TRIPCODE_VIEW.format(url=reverse('feed'), short_text=self.get_short_text(), full_text=self.get_full_text(), color=self.get_color())