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()
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()
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()
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)