diff --git a/aleksis/core/forms.py b/aleksis/core/forms.py index 459d4d8bb067f5915a41677ff3f941caa1de154d..4f4414b1b64219d95bfc4669f5f99cef670cc7c8 100644 --- a/aleksis/core/forms.py +++ b/aleksis/core/forms.py @@ -56,8 +56,7 @@ class PersonForm(ExtensibleForm): _("Advanced personal data"), Row("date_of_birth", "place_of_birth"), Row("sex"), - Row("photo", "photo_rect", "photo_square"), - Row("avatar", "avatar_rect", "avatar_square"), + Row("photo", "avatar"), "guardians", ), ) @@ -81,11 +80,7 @@ class PersonForm(ExtensibleForm): "place_of_birth", "sex", "photo", - "photo_rect", - "photo_square", "avatar", - "avatar_rect", - "avatar_square", "guardians", "primary_group", ] @@ -162,8 +157,7 @@ class EditGroupForm(SchoolTermRelatedExtensibleForm): Fieldset(_("Common data"), "name", "short_name", "group_type"), Fieldset(_("Persons"), "members", "owners", "parent_groups"), Fieldset(_("Additional data"), "additional_fields"), - Fieldset(_("Photo"), "photo", "photo_rect", "photo_square"), - Fieldset(_("Avatar"), "avatar", "avatar_rect", "avatar_square"), + Fieldset(_("Photo"), "photo", "avatar"), ) class Meta: diff --git a/aleksis/core/migrations/0029_photo_avatar_croppable.py b/aleksis/core/migrations/0029_photo_avatar_croppable.py deleted file mode 100644 index 42deecf9283a2febbaa62689a4074ec14d2ac9d9..0000000000000000000000000000000000000000 --- a/aleksis/core/migrations/0029_photo_avatar_croppable.py +++ /dev/null @@ -1,64 +0,0 @@ -# Generated by Django 3.2.9 on 2021-12-09 14:56 - -from django.db import migrations -import image_cropping.fields - - -class Migration(migrations.Migration): - - dependencies = [ - ('core', '0028_update_photo_avatar'), - ] - - operations = [ - migrations.AddField( - model_name='group', - name='avatar_rect', - field=image_cropping.fields.ImageRatioField('photo', '800x600', adapt_rotation=False, allow_fullsize=False, free_crop=False, help_text=None, hide_image_field=False, size_warning=False, verbose_name='avatar rect'), - ), - migrations.AddField( - model_name='group', - name='avatar_square', - field=image_cropping.fields.ImageRatioField('photo', '400x400', adapt_rotation=False, allow_fullsize=False, free_crop=False, help_text=None, hide_image_field=False, size_warning=False, verbose_name='avatar square'), - ), - migrations.AddField( - model_name='group', - name='photo_rect', - field=image_cropping.fields.ImageRatioField('photo', '800x600', adapt_rotation=False, allow_fullsize=False, free_crop=False, help_text=None, hide_image_field=False, size_warning=False, verbose_name='photo rect'), - ), - migrations.AddField( - model_name='group', - name='photo_square', - field=image_cropping.fields.ImageRatioField('photo', '400x400', adapt_rotation=False, allow_fullsize=False, free_crop=False, help_text=None, hide_image_field=False, size_warning=False, verbose_name='photo square'), - ), - migrations.AddField( - model_name='person', - name='avatar_rect', - field=image_cropping.fields.ImageRatioField('photo', '600x800', adapt_rotation=False, allow_fullsize=False, free_crop=False, help_text=None, hide_image_field=False, size_warning=False, verbose_name='avatar rect'), - ), - migrations.AddField( - model_name='person', - name='avatar_square', - field=image_cropping.fields.ImageRatioField('photo', '400x400', adapt_rotation=False, allow_fullsize=False, free_crop=False, help_text=None, hide_image_field=False, size_warning=False, verbose_name='avatar square'), - ), - migrations.AddField( - model_name='person', - name='photo_rect', - field=image_cropping.fields.ImageRatioField('photo', '600x800', adapt_rotation=False, allow_fullsize=False, free_crop=False, help_text=None, hide_image_field=False, size_warning=False, verbose_name='photo rect'), - ), - migrations.AddField( - model_name='person', - name='photo_square', - field=image_cropping.fields.ImageRatioField('photo', '400x400', adapt_rotation=False, allow_fullsize=False, free_crop=False, help_text=None, hide_image_field=False, size_warning=False, verbose_name='photo square'), - ), - migrations.AlterField( - model_name='group', - name='photo', - field=image_cropping.fields.ImageCropField(blank=True, help_text='This is an official photo, used for official documents and for internal use cases.', null=True, upload_to='', verbose_name='Photo'), - ), - migrations.AlterField( - model_name='person', - name='photo', - field=image_cropping.fields.ImageCropField(blank=True, help_text='This is an official photo, used for official documents and for internal use cases.', null=True, upload_to='', verbose_name='Photo'), - ), - ] diff --git a/aleksis/core/migrations/0028_update_photo_avatar.py b/aleksis/core/migrations/0032_update_photo_avatar.py similarity index 96% rename from aleksis/core/migrations/0028_update_photo_avatar.py rename to aleksis/core/migrations/0032_update_photo_avatar.py index 7dd0dba29c41d027e434e07b3f513b96393ab2d8..30f8fcca3677ac5a5b8c12a026e660916a106a5b 100644 --- a/aleksis/core/migrations/0028_update_photo_avatar.py +++ b/aleksis/core/migrations/0032_update_photo_avatar.py @@ -6,7 +6,7 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('core', '0027_person_place_of_birth'), + ('core', '0031_remove_person_is_active'), ] operations = [ diff --git a/aleksis/core/models.py b/aleksis/core/models.py index cac2d9d950e9d968983584ab3dbd0bf59405269b..4d2ec4b39a45f7a924fb753eacb8d3a0e8bba7cd 100644 --- a/aleksis/core/models.py +++ b/aleksis/core/models.py @@ -30,7 +30,6 @@ from cache_memoize import cache_memoize from django_celery_results.models import TaskResult from django_cte import CTEQuerySet, With from dynamic_preferences.models import PerInstancePreferenceModel -from image_cropping import ImageCropField, ImageRatioField from invitations import signals from invitations.adapters import get_invitations_adapter from invitations.base_invitation import AbstractBaseInvitation @@ -202,7 +201,7 @@ class Person(ExtensibleModel): place_of_birth = models.CharField(verbose_name=_("Place of birth"), max_length=255, blank=True) sex = models.CharField(verbose_name=_("Sex"), max_length=1, choices=SEX_CHOICES, blank=True) - photo = ImageCropField( + photo = ImageField( verbose_name=_("Photo"), blank=True, null=True, @@ -210,8 +209,6 @@ class Person(ExtensibleModel): "This is an official photo, used for official documents and for internal use cases." ), ) - photo_rect = ImageRatioField("photo", "600x800") - photo_square = ImageRatioField("photo", "400x400") avatar = models.ImageField( verbose_name=_("Display picture / Avatar"), @@ -219,8 +216,6 @@ class Person(ExtensibleModel): null=True, help_text=_("This is a picture or an avatar for public display."), ) - avatar_rect = ImageRatioField("photo", "600x800") - avatar_square = ImageRatioField("photo", "400x400") guardians = models.ManyToManyField( "self", @@ -497,7 +492,7 @@ class Group(SchoolTermRelatedExtensibleModel): AdditionalField, verbose_name=_("Additional fields"), blank=True ) - photo = ImageCropField( + photo = ImageField( verbose_name=_("Photo"), blank=True, null=True, @@ -505,17 +500,12 @@ class Group(SchoolTermRelatedExtensibleModel): "This is an official photo, used for official documents and for internal use cases." ), ) - photo_rect = ImageRatioField("photo", "800x600") - photo_square = ImageRatioField("photo", "400x400") - avatar = models.ImageField( verbose_name=_("Display picture / Avatar"), blank=True, null=True, help_text=_("This is a picture or an avatar for public display."), ) - avatar_rect = ImageRatioField("photo", "800x600") - avatar_square = ImageRatioField("photo", "400x400") def get_absolute_url(self) -> str: return reverse("group_by_id", args=[self.id]) diff --git a/aleksis/core/settings.py b/aleksis/core/settings.py index 8e1207d490b839bbbdc9a7bda328451724779a83..3e1bb53785fe44247a1d2b276299011f1e667942 100644 --- a/aleksis/core/settings.py +++ b/aleksis/core/settings.py @@ -147,8 +147,6 @@ INSTALLED_APPS = [ "django_filters", "oauth2_provider", "rest_framework", - "easy_thumbnails", - "image_cropping", ] merge_app_settings("INSTALLED_APPS", INSTALLED_APPS, True) @@ -978,12 +976,6 @@ if SENTRY_ENABLED: **SENTRY_SETTINGS, ) -THUMBNAIL_PROCESSORS = ( - "image_cropping.thumbnail_processors.crop_corners", -) + thumbnail_settings.THUMBNAIL_PROCESSORS - -IMAGE_CROPPING_JQUERY_URL = None - SHELL_PLUS_MODEL_IMPORTS_RESOLVER = "django_extensions.collision_resolvers.AppLabelPrefixCR" SHELL_PLUS_APP_PREFIXES = { "auth": "auth", diff --git a/pyproject.toml b/pyproject.toml index f0cfec6f98e15956eabf2efa6abc60651b16504e..b5c5929b32289fccc65b3ad0f67c57994e06eb2b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -123,8 +123,6 @@ django-titofisto = "^0.2.0" haystack-redis = "^0.0.1" python-gnupg = "^0.4.7" sentry-sdk = {version = "^1.4.3", optional = true} -django-image-cropping = "^1.6.1" -easy-thumbnails = "^2.8" django-cte = "^1.1.5" pycountry = "^20.7.3"