You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

26 lines
875 B

from django.conf import settings
2 years ago
from django.db import models
from django.utils.translation import gettext_lazy as _
from django_scopes import ScopedManager
from scopedsites.models import Domain
from xenua.django.models import RandomSlugPKMixin
class ShortLink(RandomSlugPKMixin, models.Model):
class Meta:
unique_together = ('domain', 'location')
domain = models.ForeignKey(Domain, related_name='links', on_delete=models.CASCADE)
location = models.CharField(_("short link"), max_length=100)
to = models.URLField(_("redirect to"), max_length=2500)
click_count = models.IntegerField(default=0)
objects = ScopedManager(domain='domain')
def click(self): # todo: replace with cache + regular cleanup impl
self.click_count += 1
self.save()
def link(self):
return f"https://{self.domain.fqdn}/{self.location}"