From 7398bed060a241c503c1a1a0832f27825220d14e Mon Sep 17 00:00:00 2001 From: Jorran de Wit <jorrandewit@outlook.com> Date: Mon, 26 Jun 2017 21:12:40 +0200 Subject: [PATCH] Add basic working Logo field to Institution --- .bootstraprc | 1 + SciPost_v1/urls.py | 6 ++--- partners/constants.py | 2 ++ partners/forms.py | 3 ++- .../migrations/0021_auto_20170626_2014.py | 26 +++++++++++++++++++ .../migrations/0022_auto_20170626_2104.py | 20 ++++++++++++++ partners/models.py | 1 + partners/templates/partners/dashboard.html | 12 ++++++--- .../templates/partners/institution_edit.html | 2 +- partners/views.py | 5 +++- 10 files changed, 69 insertions(+), 9 deletions(-) create mode 100644 partners/migrations/0021_auto_20170626_2014.py create mode 100644 partners/migrations/0022_auto_20170626_2104.py diff --git a/.bootstraprc b/.bootstraprc index 6c92d1c23..34dcfd0ae 100644 --- a/.bootstraprc +++ b/.bootstraprc @@ -23,6 +23,7 @@ "grid": true, "input-group": true, "list-group": true, + "media": true, "modal": true, "mixins": true, "nav": true, diff --git a/SciPost_v1/urls.py b/SciPost_v1/urls.py index 13711bb78..adf26e3aa 100644 --- a/SciPost_v1/urls.py +++ b/SciPost_v1/urls.py @@ -1,5 +1,6 @@ from django.conf import settings from django.conf.urls import include, url +from django.conf.urls.static import static from django.contrib import admin from ajax_select import urls as ajax_select_urls @@ -34,6 +35,5 @@ urlpatterns = [ if settings.DEBUG: import debug_toolbar - urlpatterns += [ - url(r'^__debug__/', include(debug_toolbar.urls)), - ] + urlpatterns += [url(r'^__debug__/', include(debug_toolbar.urls))] + urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) diff --git a/partners/constants.py b/partners/constants.py index 7cbc74d95..3349c8aff 100644 --- a/partners/constants.py +++ b/partners/constants.py @@ -74,8 +74,10 @@ PARTNER_EVENTS = ( CONTACT_TYPES = ( + ('gen', 'General Contact'), ('tech', 'Technical Contact'), ('fin', 'Financial Contact'), + ('leg', 'Legal Contact') ) diff --git a/partners/forms.py b/partners/forms.py index 09d849ca6..96e898acb 100644 --- a/partners/forms.py +++ b/partners/forms.py @@ -112,7 +112,8 @@ class InstitutionForm(forms.ModelForm): 'name', 'acronym', 'address', - 'country' + 'country', + 'logo' ) diff --git a/partners/migrations/0021_auto_20170626_2014.py b/partners/migrations/0021_auto_20170626_2014.py new file mode 100644 index 000000000..c55b21c25 --- /dev/null +++ b/partners/migrations/0021_auto_20170626_2014.py @@ -0,0 +1,26 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.3 on 2017-06-26 18:14 +from __future__ import unicode_literals + +from django.db import migrations, models +import scipost.fields + + +class Migration(migrations.Migration): + + dependencies = [ + ('partners', '0020_auto_20170624_2013'), + ] + + operations = [ + migrations.AddField( + model_name='institution', + name='logo', + field=models.ImageField(blank=True, upload_to='UPLOADS/INSTITUTIONS/LOGOS/%Y/%m/'), + ), + migrations.AlterField( + model_name='contact', + name='kind', + field=scipost.fields.ChoiceArrayField(base_field=models.CharField(choices=[('gen', 'General Contact'), ('tech', 'Technical Contact'), ('fin', 'Financial Contact'), ('leg', 'Legal Contact')], max_length=4), size=None), + ), + ] diff --git a/partners/migrations/0022_auto_20170626_2104.py b/partners/migrations/0022_auto_20170626_2104.py new file mode 100644 index 000000000..678678be6 --- /dev/null +++ b/partners/migrations/0022_auto_20170626_2104.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.3 on 2017-06-26 19:04 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('partners', '0021_auto_20170626_2014'), + ] + + operations = [ + migrations.AlterField( + model_name='institution', + name='logo', + field=models.ImageField(blank=True, upload_to='institutions/logo/%Y/'), + ), + ] diff --git a/partners/models.py b/partners/models.py index 89cd1660d..65652eca6 100644 --- a/partners/models.py +++ b/partners/models.py @@ -108,6 +108,7 @@ class Institution(models.Model): """ kind = models.CharField(max_length=32, choices=PARTNER_KINDS) name = models.CharField(max_length=256) + logo = models.ImageField(upload_to='institutions/logo/%Y/', blank=True) acronym = models.CharField(max_length=16) address = models.TextField(blank=True) country = CountryField() diff --git a/partners/templates/partners/dashboard.html b/partners/templates/partners/dashboard.html index 17ae1a2f1..48809ccd7 100644 --- a/partners/templates/partners/dashboard.html +++ b/partners/templates/partners/dashboard.html @@ -57,10 +57,16 @@ {% include "partners/_contact_info_table.html" with contact=request.user.partner_contact %} </div> <div class="col-md-6"> - <h3>My Partners</h3> - <ul> + <h3 class="mb-2">My Partners</h3> + <ul class="list-unstyled mb-5"> {% for partner in request.user.partner_contact.partners.all %} - <li>{{partner.institution}}</li> + <li class="media mb-2"> + <img class="d-flex mr-3" width="64" src="{% if partner.institution.logo %}{{partner.institution.logo.url}}{% endif %}" alt="Partner Logo"> + <div class="media-body"> + <h3 class="mt-0 mb-1"><strong>{{partner.institution.name}}</strong></h3> + {{partner.institution.acronym}} ({{partner.institution.get_kind_display}}) + </div> + </li> {% empty %} <li>No partners found. Please contact the SciPost admin.</li> {% endfor %} diff --git a/partners/templates/partners/institution_edit.html b/partners/templates/partners/institution_edit.html index 69133f284..46fed7ad3 100644 --- a/partners/templates/partners/institution_edit.html +++ b/partners/templates/partners/institution_edit.html @@ -19,7 +19,7 @@ <div class="row"> <div class="col-12"> - <form method="post"> + <form method="post" enctype="multipart/form-data"> {% csrf_token %} <div class="mb-5"> {{ form|bootstrap }} diff --git a/partners/views.py b/partners/views.py index f0d8dfc60..2580012c3 100644 --- a/partners/views.py +++ b/partners/views.py @@ -177,9 +177,12 @@ def partner_add_contact(request, partner_id): @permission_required('scipost.can_manage_SPB', return_403=True) def institution_edit(request, institution_id): institution = get_object_or_404(Institution, id=institution_id) - form = InstitutionForm(request.POST or None, instance=institution) + form = InstitutionForm(request.POST or None, request.FILES or None, instance=institution) + r = request.FILES + # raise if form.is_valid(): form.save() + messages.success(request, 'Institution has been updated.') return redirect(reverse('partners:dashboard')) context = { 'form': form -- GitLab