Example #1
0
 def new(self, visitor, target_user):
     """ Consigner ou mettre à jour une visite à un profil """
     if visitor.pk != target_user.pk:
         if self.filter(visitor=visitor,
                        user=target_user).update(time=now()) == 0:
             return self.create(visitor=visitor,
                                user=target_user,
                                time=now())
         return self.get(visitor=visitor, user=target_user)
     return False
Example #2
0
 def is_editable(self, request):
     """ Renvoyer si le commentaire peut être modifié par l'utilisateur """
     if request.user.is_authenticated():
         if request.user.is_staff or (self.author == request.user
                                      and now() < self.time + 600):
             return True
     return False
Example #3
0
 def set(self, user, ip):
     """ Enregistrer une nouvelle IP pour un utilisateur """
     if user and user.is_authenticated() and ip:
         if self.filter(user=user, ip=ip).update(time=now()) == 0:
             userip = self.create(user=user, ip=ip)
             userip_created.send(userip)
             return userip
         else:
             return self.get(user=user, ip=ip)
Example #4
0
 def add(self, user, text, purge=0):
     """ Ajouter un post pour un utilisateur """
     self.create(author=user, text=text)
     # Purger les posts anciens de n+ jours
     if purge > 0:
         limit = now() - 86400 * purge
         posts = self.filter(author=user, time__lte=limit).delete()
         return posts
     return True
Example #5
0
    def add(self, request):
        """
        Ajouter une entrée à la liste d'accès par IP

        @param request: objet HttpRequest avec une IP valide
        """
        state = self.get_ip_list()
        state[request.get_ip()] = now()
        self.set_ip_list(state)
Example #6
0
 def countries_for(self, user, as_codes=True, days=None):
     """ Renvoyer les instances de pays d'IP pour l'utilisateur """
     criteria = {} if days is None else {'time__gt': now() - 86400 * days}
     country_list = set(
         self.filter(user=user,
                     **criteria).exclude(ip__country='').values_list(
                         'ip__country', flat=True))
     if not as_codes:
         from scoop.location.models import Country
         # Liste d'objets Country
         country_list = Country.objects.filter(code2__in=country_list)
     return country_list
Example #7
0
    def clean(self, minutes=60):
        """
        Nettoyer les entrées plus anciennes que n minutes

        @param minutes: ancienneté minimum en minutes
        """
        limit = now() - minutes * 60
        state = self.get_ip_list()
        for key in state:
            if state[key] < limit:
                del state[key]
        self.set_ip_list(state)
Example #8
0
 def prune(self, days=120):
     """ Supprimer les visites plus anciennes que n jours """
     timestamp = now() - days * 86400
     self.filter(time__lt=timestamp).delete()
Example #9
0
 def last_messages(self, minutes=30, **kwargs):
     """ Renvoyer les messages des n dernières minutes """
     stamp = now() - minutes * 60
     messages = self.filter(time__gt=stamp, **kwargs)
     return messages
Example #10
0
 def clear_transient(self):
     """ Supprimer les images volatiles (après 24h de délai) """
     time_limit = now() - 86400
     images = self.filter(transient=True, time__lt=time_limit)
     for image in images:
         image.delete(clear=True)