Esempio n. 1
0
 def __call__(self, request):
     """ Traiter la requête """
     if request.user.is_superuser and settings.STATIC_URL not in request.path:
         if IMPERSONATE_PARAMETER in request.GET and SESSION_ITEM not in request.session:
             request.session[SESSION_ITEM] = request.GET[
                 IMPERSONATE_PARAMETER]
             record.send(None,
                         actor=request.user,
                         action='user.impersonate',
                         target=request.GET[IMPERSONATE_PARAMETER])
         elif EXIT_PARAMETER in request.GET and SESSION_ITEM in request.session:
             del request.session[SESSION_ITEM]
             messages.info(
                 request,
                 _("{name}, your impersonation session has been properly shut down."
                   ).format(name=request.user.get_short_name()))
             return HttpResponseRedirect(
                 remove_get_parameter(request, EXIT_PARAMETER))
         if SESSION_ITEM in request.session:
             try:
                 request.user = get_user_model().objects.active().get(
                     username__iexact=request.session[SESSION_ITEM])
                 messages.info(
                     request,
                     _("""You are viewing {path} as {name}. <a href="?{exit}">Quit</a>"""
                       ).format(name=request.session[SESSION_ITEM],
                                path=request.path,
                                exit=EXIT_PARAMETER))
             except ObjectDoesNotExist:
                 messages.error(
                     request,
                     _("There is no active user with the username {name}.").
                     format(name=request.session[SESSION_ITEM]))
                 del request.session[SESSION_ITEM]
     return self.get_response(request)
Esempio n. 2
0
def activation_check(sender, user, request, failed, **kwargs):
    """ Traiter une activation réussie ou échouée """
    if failed is False:
        record.send(None, actor=user, action='user.activation.user')
        if request is not None:
            if getattr(settings, 'USER_LOGIN_ON_ACTIVATION', True) is True:
                # Accueillir l'utilisateur avec un message et le connecter
                from scoop.user.models import User
                messages.success(
                    request,
                    _("Congratulations! Your account is activated, you are now logged in."
                      ))
                User.sign(request,
                          None,
                          logout=False,
                          fake=False,
                          direct_user=user)
            else:
                messages.success(
                    request,
                    _("Congratulations! Your account is activated, you can now log in."
                      ))
    else:
        if request is not None:
            messages.error(request,
                           _("This activation code is invalid."),
                           extra_tags="danger")
Esempio n. 3
0
def flag_creation(sender, flag, **kwargs):
    """ Consigner la création d'un nouveau signalement """
    if flag.author is not None:
        record.send(None,
                    actor=flag.author,
                    action='rogue.create.flag',
                    target=flag.content_object)
Esempio n. 4
0
def picture_deleted(sender, instance, **kwargs):
    """ Traiter une image après sa suppression """
    record.send(None,
                actor=instance.author,
                action='content.delete.picture',
                target=instance)
    if instance.content_object and instance.content_object._meta.model_name not in TARGET_MODELS_EXCLUDE_FROM_UPDATE:
        instance.content_object.save()
Esempio n. 5
0
def lock_content(request, content):
    """ Verrouiller un contenu contre les modifications """
    if content.lock():
        Alert.objects.alert(content.get_authors(), 'content.content.lock', 'notification', {'content': content})
        messages.success(request, _("The content was locked and protected from user interaction."))
        record.send(Content, request.user, 'content.lock.content', content)
        return True
    return False
Esempio n. 6
0
def send_negotiation(sender, source, target, negotiation, **kwargs):
    """ Traiter une nouvelle négociation de discussion """
    record.send(None,
                actor=source,
                action='messaging.send.negotiation',
                target=target)
    # Automatiquement autoriser la négociation si l'utilisateur a la permission
    if source.has_perm('messaging.can_bypass_negotiation'):
        negotiation.accept()
Esempio n. 7
0
 def unlike(self, item, author):
     """ Ne plus liker un objet """
     if author and author.has_perm('social.can_like'):
         item_type = ContentType.objects.get_for_model(item)
         deleted_count = self.filter(author=author, content_type=item_type, object_id=item.pk).delete()
         if deleted_count > 0:
             record.send(None, actor=author, action='social.unlike', target=item)
             return True
     return False
Esempio n. 8
0
 def like(self, item, author):
     """ Liker un objet """
     if author and author.has_perm('social.can_like'):
         item_type = ContentType.objects.get_for_model(item)
         _, created = self.get_or_create(author=author, content_type=item_type, object_id=item.pk)
         if created is True:
             record.send(None, actor=author, action='social.like', target=item)
         return created
     return False
Esempio n. 9
0
def login_actions(sender, request, user, **kwargs):
    """ Traiter la connexion d'un utilisateur """
    # Changer l'expiration de la session
    timeout = ConfigurationForm.get_option_for(user, 'session_timeout')
    request.session.set_expiry(timedelta(seconds=timeout))
    logins = user.profile.get_data('logins', 0)
    user.profile.set_data('logins', logins + 1, save=True)
    messages.success(request, _("Hello, {name}!").format(name=capfirst(user)))
    # Actions publiques et enregistrements
    record.send(None, actor=user, action='user.login')
Esempio n. 10
0
def default_post_send(sender, author, message, request, **kwargs):
    """ Traiter un message qui vient d'être envoyé """
    if request is not None:
        messages.success(request, _("Message sent successfully"))
    getattr(check_message, 'delay')(sender)
    # Mettre à jour le nombre de messages envoyés par user
    Recipient.objects.update_counter(author, message.thread)
    record.send(None,
                actor=author,
                action='messaging.create.message',
                target=message)
    return True
Esempio n. 11
0
def picture_created(sender, instance, raw, created, using, update_fields,
                    **kwargs):
    """ Traiter une image après son enregistrement """
    if created:
        Animation.objects.create_from_animation(instance)
        instance.resize()
        instance.fix_exif()
        instance.optimize()
        instance.set_correct_extension()
        instance.update_size()
        record.send(sender,
                    actor=instance.author,
                    action='content.create.picture',
                    target=instance)
    # Réenregistrer l'objet lié (généralement Picturable)
    if instance.content_object and instance.content_object._meta.model_name not in TARGET_MODELS_EXCLUDE_FROM_UPDATE:
        instance.content_object.save()
Esempio n. 12
0
def remove_pictures(request, users):
    """ Retirer toutes les images d'un profil """
    users = make_iterable(users)
    destroyed = []
    for user in users:
        pictures = user.profile.get_pictures()
        count = pictures.count()
        if count > 0:
            Alert.objects.alert(user, 'user.profile.picture.invalid', 'notification', {'count': count, 'pictures': pictures})
            record.send(get_user_model(), request.user, 'content.delete.picture', user)
            pictures.delete()
            destroyed.append(user)
    if destroyed:
        messages.success(request, humanize_join(destroyed, 3, _("user has images removed;users have images removed")))
        return True
    else:
        messages.info(request, _("No picture has to be deleted."))
        return False
Esempio n. 13
0
def accept_negotiation(sender, source, target, negotiation, **kwargs):
    """ Traiter une négociation acceptée """
    from scoop.messaging.models import Thread
    # Créer un enregistrement
    record.send(None,
                actor=target,
                action='messaging.accept.negotiation',
                target=source)
    subject = _("Discussion between {0} and {1}").format(target, source)
    # Créer le nouveau sujet entre les deux participants
    thread_info = Thread.objects.new(target, [source],
                                     subject,
                                     None,
                                     None,
                                     closed=False,
                                     unique=False,
                                     as_mail=False,
                                     force=False)
    thread_info['thread'].add_bot_message('negotiation-accepted',
                                          as_mail=False,
                                          data={'target': target})
    return thread_info['thread']
Esempio n. 14
0
def deny_negotiation(sender, source, target, negotiation, **kwargs):
    """ Traiter une négociation refusée """
    record.send(None,
                actor=target,
                action='messaging.deny.negotiation',
                target=source)
Esempio n. 15
0
def default_post_thread(sender, author, thread, **kwargs):
    """ Traiter la création d'un nouveau thread """
    record.send(None, actor=author, action='messaging.create.thread', target=thread)
Esempio n. 16
0
def logout_actions(sender, request, user, **kwargs):
    """ Traiter la déconnexion d'un utilisateur """
    messages.success(request, _("Thanks for visiting."))
    record.send(None, actor=user, action='user.logout')
Esempio n. 17
0
def demotion_actions(sender, user, **kwargs):
    """ Traiter un utilisateur déchu de son statut """
    record.send(None, actor=user, action='user.demote')
Esempio n. 18
0
def profile_is_banned(sender, user, **kwargs):
    """ Traiter lorsqu'un profil est banni """
    record.send(user, 'user.ban.user', user)