Example #1
0
def image_pre_save(sender, instance, **kwargs):
    if instance.uploader_in_progress:
        return

    if not instance.pk and not instance.is_wip:
        instance.published = datetime.datetime.now()

    try:
        image = sender.objects_including_wip.get(pk=instance.pk)
    except sender.DoesNotExist:
        user_scores_index = instance.user.userprofile.get_scores(
        )['user_scores_index']
        if user_scores_index >= 1.00 or is_any_premium_subscription(
                instance.user):
            instance.moderated_when = datetime.date.today()
            instance.moderator_decision = 1
    else:
        if image.moderator_decision != 1 and instance.moderator_decision == 1:
            # This image is being approved
            if not instance.is_wip:
                add_story(instance.user,
                          verb='VERB_UPLOADED_IMAGE',
                          action_object=instance)

        if not instance.is_wip and not instance.published:
            instance.published = datetime.datetime.now()
Example #2
0
def image_pre_save(sender, instance, **kwargs):
    if instance.uploader_in_progress:
        return

    if not instance.pk and not instance.is_wip:
        instance.published = datetime.datetime.now()

    try:
        image = sender.objects_including_wip.get(pk=instance.pk)
    except sender.DoesNotExist:
        # Image is being created.

        last_image: Image = Image.objects_including_wip.filter(
            user=instance.user).order_by('-pk').first()
        if last_image:
            instance.watermark = last_image.watermark
            instance.watermark_text = last_image.watermark_text
            instance.watermark_position = last_image.watermark_position
            instance.watermark_size = last_image.watermark_size
            instance.watermark_opacity = last_image.watermark_opacity

        user_scores_index = instance.user.userprofile.get_scores(
        )['user_scores_index'] or 0
        if user_scores_index >= 1.00 or \
                is_any_premium_subscription(instance.user) or \
                ModerationService.auto_approve(instance.user):
            instance.moderated_when = datetime.date.today()
            instance.moderator_decision = 1
    else:
        if image.moderator_decision != 1 and instance.moderator_decision == 1:
            # This image is being approved
            if not instance.is_wip:
                add_story(instance.user,
                          verb='VERB_UPLOADED_IMAGE',
                          action_object=instance)

        if not instance.is_wip and not instance.published:
            # This image is being published
            instance.published = datetime.datetime.now()

        previous_mentions = MentionsService.get_mentions(
            image.description_bbcode)
        current_mentions = MentionsService.get_mentions(
            instance.description_bbcode)
        mentions = [
            item for item in current_mentions if item not in previous_mentions
        ]
        cache.set("image.%d.image_pre_save_mentions" % instance.pk, mentions,
                  2)

        if (instance.watermark_text != image.watermark_text
                or instance.watermark != image.watermark
                or instance.watermark_position != image.watermark_position
                or instance.watermark_size != image.watermark_size
                or instance.watermark_opacity != image.watermark_opacity):
            ImageService(image).invalidate_all_thumbnails()
Example #3
0
def image_post_save(sender, instance, created, **kwargs):
    # type: (object, Image, bool, object) -> None

    profile_saved = False

    groups = instance.user.joined_group_set.filter(autosubmission=True)
    for group in groups:
        if instance.is_wip:
            group.images.remove(instance)
        else:
            group.images.add(instance)

    if created:
        user_scores_index = instance.user.userprofile.get_scores(
        )['user_scores_index']
        if user_scores_index >= 1.00 or is_any_premium_subscription(
                instance.user):
            instance.moderated_when = datetime.date.today()
            instance.moderator_decision = 1
            instance.save(keep_deleted=True)

        instance.user.userprofile.premium_counter += 1
        instance.user.userprofile.save(keep_deleted=True)
        profile_saved = True

        if not instance.is_wip and not instance.skip_notifications:
            followers = [
                x.user for x in ToggleProperty.objects.filter(
                    property_type="follow",
                    content_type=ContentType.objects.get_for_model(User),
                    object_id=instance.user.pk)
            ]

            push_notification(
                followers, 'new_image', {
                    'object_url':
                    settings.BASE_URL + instance.get_absolute_url(),
                    'originator': instance.user.userprofile.get_display_name(),
                })

            if instance.moderator_decision == 1:
                add_story(instance.user,
                          verb='VERB_UPLOADED_IMAGE',
                          action_object=instance)

    if not profile_saved:
        # Trigger update of auto_add fields
        try:
            instance.user.userprofile.save(keep_deleted=True)
        except UserProfile.DoesNotExist:
            pass

    # Trigger real time search index
    instance.user.save()
Example #4
0
def image_pre_save(sender, instance, **kwargs):
    if instance.uploader_in_progress:
        return

    if not instance.pk and not instance.is_wip:
        instance.published = datetime.datetime.now()

    try:
        image = sender.objects_including_wip.get(pk=instance.pk)
    except sender.DoesNotExist:
        user_scores_index = instance.user.userprofile.get_scores(
        )['user_scores_index'] or 0
        if user_scores_index >= 1.00 or \
                is_any_premium_subscription(instance.user) or \
                ModerationService.auto_approve(instance.user):
            instance.moderated_when = datetime.date.today()
            instance.moderator_decision = 1
    else:
        if image.moderator_decision != 1 and instance.moderator_decision == 1:
            # This image is being approved
            if not instance.is_wip:
                add_story(instance.user,
                          verb='VERB_UPLOADED_IMAGE',
                          action_object=instance)

        if not instance.is_wip and not instance.published:
            instance.published = datetime.datetime.now()

        previous_mentions = MentionsService.get_mentions(
            image.description_bbcode)
        current_mentions = MentionsService.get_mentions(
            instance.description_bbcode)
        mentions = [
            item for item in current_mentions if item not in previous_mentions
        ]
        cache.set("image.%d.image_pre_save_mentions" % instance.pk, mentions,
                  2)