diff --git a/aleksis/core/forms.py b/aleksis/core/forms.py index 208cbff93f76b7d44451550b73d3b5659ba4aa59..e1c0be7ef4f28e609c93f3b58208aa0ea4d58b3a 100644 --- a/aleksis/core/forms.py +++ b/aleksis/core/forms.py @@ -80,10 +80,7 @@ class EditPersonForm(ExtensibleForm): Fieldset(_("Address"), Row("street", "housenumber"), Row("postal_code", "place")), Fieldset(_("Contact data"), "email", Row("phone_number", "mobile_number")), Fieldset( - _("Advanced personal data"), - Row("sex", "date_of_birth"), - Row("photo", "photo_cropping"), - "guardians", + _("Advanced personal data"), Row("sex", "date_of_birth"), Row("photo"), "guardians", ), ) @@ -106,11 +103,12 @@ class EditPersonForm(ExtensibleForm): "date_of_birth", "sex", "photo", - "photo_cropping", "guardians", "primary_group", ] - widgets = {"user": Select2Widget} + widgets = { + "user": Select2Widget, + } new_user = forms.CharField( required=False, label=_("New user"), help_text=_("Create a new account") diff --git a/aleksis/core/migrations/0003_drop_image_cropping.py b/aleksis/core/migrations/0003_drop_image_cropping.py new file mode 100644 index 0000000000000000000000000000000000000000..1fecda4aeed0c9c0c0075bc8972f648a8ec981a0 --- /dev/null +++ b/aleksis/core/migrations/0003_drop_image_cropping.py @@ -0,0 +1,22 @@ +# Generated by Django 3.0.7 on 2020-06-28 11:37 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0002_school_term'), + ] + + operations = [ + migrations.RemoveField( + model_name='person', + name='photo_cropping', + ), + migrations.AlterField( + model_name='person', + name='photo', + field=models.ImageField(blank=True, null=True, upload_to='', verbose_name='Photo'), + ), + ] diff --git a/aleksis/core/models.py b/aleksis/core/models.py index fa24519076a2cb1951aabe01e973d9f1380c1588..e4fd8b5514223c5b4a6542f1664e2ad320f382f0 100644 --- a/aleksis/core/models.py +++ b/aleksis/core/models.py @@ -20,7 +20,6 @@ from django.utils.translation import gettext_lazy as _ import jsonstore from dynamic_preferences.models import PerInstancePreferenceModel -from image_cropping import ImageCropField, ImageRatioField from phonenumber_field.modelfields import PhoneNumberField from polymorphic.models import PolymorphicModel @@ -149,8 +148,7 @@ class Person(ExtensibleModel): date_of_birth = models.DateField(verbose_name=_("Date of birth"), blank=True, null=True) sex = models.CharField(verbose_name=_("Sex"), max_length=1, choices=SEX_CHOICES, blank=True) - photo = ImageCropField(verbose_name=_("Photo"), blank=True, null=True) - photo_cropping = ImageRatioField("photo", "600x800", size_warning=True) + photo = models.ImageField(verbose_name=_("Photo"), blank=True, null=True) guardians = models.ManyToManyField( "self", diff --git a/aleksis/core/settings.py b/aleksis/core/settings.py index ad5d7077eba8bccb0981f70b2ea7fffce7c9474c..e6de512b3be12e211fbc7f91453848f326e17da3 100644 --- a/aleksis/core/settings.py +++ b/aleksis/core/settings.py @@ -70,7 +70,6 @@ INSTALLED_APPS = [ "django_yarnpkg", "django_tables2", "easy_thumbnails", - "image_cropping", "maintenance_mode", "menu_generator", "reversion", @@ -157,12 +156,7 @@ TEMPLATES = [ }, ] -THUMBNAIL_PROCESSORS = ( - "image_cropping.thumbnail_processors.crop_corners", -) + thumbnail_settings.THUMBNAIL_PROCESSORS - -# Already included by base template / Bootstrap -IMAGE_CROPPING_JQUERY_URL = None +THUMBNAIL_PROCESSORS = () + thumbnail_settings.THUMBNAIL_PROCESSORS WSGI_APPLICATION = "aleksis.core.wsgi.application" diff --git a/aleksis/core/templates/core/person/edit.html b/aleksis/core/templates/core/person/edit.html index 8f854610e3424b9da47f142cef41b71c9e0fb097..261249f6867a4370745f66d3bd0abc05891442cf 100644 --- a/aleksis/core/templates/core/person/edit.html +++ b/aleksis/core/templates/core/person/edit.html @@ -4,6 +4,9 @@ {% load material_form i18n %} +{% block extra_head %} + {{ edit_person_form.media }} +{% endblock %} {% block browser_title %}{% blocktrans %}Edit person{% endblocktrans %}{% endblock %} {% block page_title %}{% blocktrans %}Edit person{% endblocktrans %}{% endblock %} diff --git a/aleksis/core/templates/core/person/full.html b/aleksis/core/templates/core/person/full.html index 73d2a4cf663999b2648e497e25559e83df69bb24..01dccc43e3b580eeef858dfe0d4602bae97b793e 100644 --- a/aleksis/core/templates/core/person/full.html +++ b/aleksis/core/templates/core/person/full.html @@ -2,7 +2,7 @@ {% extends "core/base.html" %} -{% load i18n static cropping rules %} +{% load i18n static rules %} {% load render_table from django_tables2 %} {% block browser_title %}{{ person.first_name }} {{ person.last_name }}{% endblock %} @@ -44,7 +44,7 @@ <div class="col s12 m4"> {% has_perm 'core.view_photo' user person as can_view_photo %} {% if person.photo and can_view_photo %} - <img class="person-img" src="{% cropped_thumbnail person 'photo_cropping' max_size='300x400' %}" + <img class="person-img" src="{{ person.photo.url }}" alt="{{ person.first_name }} {{ person.last_name }}"/> {% else %} <img class="person-img" src="{% static 'img/fallback.png' %}" diff --git a/aleksis/core/views.py b/aleksis/core/views.py index 391867c9bd3ab54b89cfb58d7bc4120ac5c2d7cb..33db765bb8b709b2725d6679718dc37b56f0a73b 100644 --- a/aleksis/core/views.py +++ b/aleksis/core/views.py @@ -285,11 +285,11 @@ def edit_person(request: HttpRequest, id_: Optional[int] = None) -> HttpResponse if id_: # Edit form for existing group - edit_person_form = EditPersonForm(request.POST or None, instance=person) + edit_person_form = EditPersonForm(request.POST, request.FILES or None, instance=person) else: # Empty form to create a new group if request.user.has_perm("core.create_person"): - edit_person_form = EditPersonForm(request.POST or None) + edit_person_form = EditPersonForm(request.POST, request.FILES or None) else: raise PermissionDenied() @@ -299,9 +299,6 @@ def edit_person(request: HttpRequest, id_: Optional[int] = None) -> HttpResponse edit_person_form.save(commit=True) messages.success(request, _("The person has been saved.")) - # Redirect to self to ensure post-processed data is displayed - return redirect("edit_person_by_id", id_=person.id) - context["edit_person_form"] = edit_person_form return render(request, "core/person/edit.html", context)