From 99f33a05b94fb979b3eb5fbf4e2f66c0e41cb165 Mon Sep 17 00:00:00 2001 From: Simon Caminada Date: Fri, 23 Mar 2018 01:06:48 +0100 Subject: [PATCH] fixes --- requirements.txt | 115 ++++++++++++++++++++++++++ settings.py | 4 +- src/portal/admin.py | 4 +- src/portal/migrations/0001_initial.py | 28 +++---- src/portal/models.py | 8 +- src/portal/urls.py | 16 ++-- src/portal/views.py | 3 +- 7 files changed, 145 insertions(+), 33 deletions(-) create mode 100644 requirements.txt diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..8ab11e6 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,115 @@ +# +# This file is autogenerated by pip-compile +# Make changes in requirements.in, then run this to update: +# +# pip-compile requirements.in +# +--index-url https://wheels.aldryn.net/v1/aldryn-extras+pypi/aldryn-baseproject-py3/+simple/ + +https://control.divio.com/api/v1/apps/serve/aldryn-addons/1.0.2/24f5d1c8-66fe-43b2-a540-17d61045a72b/aldryn-addons-1.0.2.tar.gz#egg=aldryn-addons==1.0.2 +aldryn-boilerplates==0.7.7 # via aldryn-common +aldryn-client==2.3.5 +aldryn-common==1.0.4 # via aldryn-search +https://control.divio.com/api/v1/apps/serve/aldryn-django-cms/3.5.1.3/2dd6f80a-825c-4aaf-b37f-519a6c46108e/aldryn-django-cms-3.5.1.3.tar.gz#egg=aldryn-django-cms==3.5.1.3 +https://control.divio.com/api/v1/apps/serve/aldryn-django/1.10.8.4/2e6f0c94-2f00-42dc-9db2-9f15727b6616/aldryn-django-1.10.8.4.tar.gz#egg=aldryn-django==1.10.8.4 +https://control.divio.com/api/v1/apps/serve/aldryn-forms/2.2.8/fbefab76-74bf-445a-8288-7937b5750aa4/aldryn-forms-2.2.8.tar.gz#egg=aldryn-forms==2.2.8 +aldryn-search==0.5.0 +aldryn-sites==0.5.8 +aldryn-snake==0.0.2 +https://control.divio.com/api/v1/apps/serve/aldryn-sso/1.1.16/dbe0c45a-c981-4beb-8624-b0d2c4196aa0/aldryn-sso-1.1.16.tar.gz#egg=aldryn-sso==1.1.16 +argparse==1.4.0 # via djeese-fs +asn1crypto==0.24.0 # via cryptography +boto==2.48.0 +certifi==2018.1.18 # via djeese-fs, opbeat, requests +cffi==1.11.5 # via cryptography +chardet==3.0.4 # via djeese-fs, requests +click==6.7 # via aldryn-client +cryptography==2.2.1 # via pyopenssl +cssselect==1.0.3 # via premailer +cssutils==1.0.2 # via premailer +dj-database-url==0.5.0 +dj-email-url==0.0.10 +dj-redis-url==0.1.4 +dj-static==0.0.6 +django-absolute==0.3 # via django-emailit +django-anymail[mailgun]==1.4 +django-appconf==1.0.1 # via aldryn-boilerplates, aldryn-search, aldryn-sites, django-compressor, django-image-cropping, django-select2 +django-cache-url==2.0.0 +django-classy-tags==0.8.0 # via django-cms, django-sekizai, django-standard-form +django-cms==3.5.1 # via aldryn-search +django-compressor==2.2 +django-emailit==0.2.3 +https://control.divio.com/api/v1/apps/serve/django-filer/1.3.0.1/bcb7d25b-6922-48a9-a252-9bc165f6403e/django-filer-1.3.0.1.tar.gz#egg=django-filer==1.3.0.1 +django-fontawesome==0.3.1 +django-formtools==2.1 # via django-cms +django-getenv==1.3.2 +django-haystack==2.7.0 +django-image-cropping==1.1.0 +django-mptt==0.8.7 +django-parler==1.9.2 +django-polymorphic==1.3 +django-ranged-response==0.2.0 # via django-simple-captcha +django-robots==3.0 +django-sekizai==0.10.0 # via django-cms +django-select2==6.0.2 +django-simple-captcha==0.5.6 +django-simple-sso==0.12.0 +django-sizefield==0.9.1 +django-sortedm2m==1.5.0 # via aldryn-common +django-spurl==0.6.4 # via aldryn-search +django-standard-form==1.1.4 # via aldryn-search +django-storages-redux==1.3.3 +django-tablib==3.2 +django-treebeard==4.2.1 # via django-cms +Django==1.10.8.post1 +djangocms-admin-style==1.2.7 # via django-cms +djangocms-attributes-field==0.3.0 +https://control.divio.com/api/v1/apps/serve/djangocms-history/0.5.3/05803675-6e8d-4637-b14b-1bb8d18b24b3/djangocms-history-0.5.3.tar.gz#egg=djangocms-history==0.5.3 +https://control.divio.com/api/v1/apps/serve/djangocms-link/2.1.2/35b986c1-fafb-46ee-b665-aa36603f233a/djangocms-link-2.1.2.tar.gz#egg=djangocms-link==2.1.2 +https://control.divio.com/api/v1/apps/serve/djangocms-picture/2.0.6/005e8663-d1cc-4667-936c-30709edad076/djangocms-picture-2.0.6.tar.gz#egg=djangocms-picture==2.0.6 +https://control.divio.com/api/v1/apps/serve/djangocms-text-ckeditor/3.5.3/a7b5179f-cea5-4af8-b235-6b7f709c4e6a/djangocms-text-ckeditor-3.5.3.tar.gz#egg=djangocms-text-ckeditor==3.5.3 +djeese-fs==0.1.21 +easy-thumbnails==2.4.2 +et-xmlfile==1.0.1 # via openpyxl +furl==1.0.1 +html5lib==0.9999999 +idna==2.6 # via cryptography, requests +itsdangerous==0.24 # via django-simple-sso, webservices +jdcal==1.3 # via openpyxl +lxml==4.2.1 # via aldryn-search, premailer +mailchimp3==2.1.0 +ndg-httpsclient==0.4.4 +odfpy==1.3.6 # via tablib +opbeat==3.6.1 +openpyxl==2.5.1 # via tablib +orderedmultidict==0.7.11 # via furl +Pillow==5.0.0 +premailer==3.1.1 # via django-emailit +psycopg2==2.7.4 +pyasn1==0.4.2 # via ndg-httpsclient +pycparser==2.18 # via cffi +PyOpenSSL==17.5.0 +PyYAML==3.12 +raven==6.6.0 +rcssmin==1.0.6 # via django-compressor +requests==2.18.4 # via aldryn-client, django-anymail, mailchimp3, premailer, webservices +rjsmin==1.0.12 # via django-compressor +six==1.11.0 # via aldryn-client, aldryn-common, cryptography, django-anymail, django-appconf, django-image-cropping, django-simple-captcha, django-spurl, django-tablib, furl, html5lib, orderedmultidict, pyopenssl, structlog +static3==0.7.0 # via dj-static +structlog==18.1.0 +tablib==0.12.1 # via django-tablib +tabulate==0.8.1 # via aldryn-client +unicodecsv==0.14.1 # via tablib +Unidecode==0.4.21 +urllib3==1.22 # via opbeat, requests +urlobject==2.4.3 # via django-spurl +uwsgi==2.0.17 +webservices[django]==0.7 # via django-simple-sso +Whoosh==2.7.4 +xlrd==1.1.0 # via tablib +xlwt==1.3.0 # via tablib +yurl==0.13 # via aldryn-boilerplates, aldryn-sites + +# The following packages are commented out because they are +# considered to be unsafe in a requirements file: +# setuptools # via aldryn-search, django-simple-captcha diff --git a/settings.py b/settings.py index 3f2061f..054f23b 100644 --- a/settings.py +++ b/settings.py @@ -24,8 +24,8 @@ aldryn_addons.settings.load(locals()) # all django settings can be altered here INSTALLED_APPS.extend([ - 'project', 'portal', + 'project', 'fontawesome', 'haystack', 'aldryn_search', @@ -34,7 +34,7 @@ INSTALLED_APPS.extend([ ]) -LOGIN_REDIRECT_URL = 'memberzone:overview' +LOGIN_REDIRECT_URL = 'portal:overview' MIDDLEWARE_CLASSES.extend([ # add your own middlewares here diff --git a/src/portal/admin.py b/src/portal/admin.py index 4c4015d..aa5b728 100644 --- a/src/portal/admin.py +++ b/src/portal/admin.py @@ -1,14 +1,12 @@ # -*- coding: utf-8 -*- -from aldryn_forms.utils import get_user_model from django.contrib import admin +from django.contrib.auth.models import User from django.utils.translation import ugettext_lazy as _ from parler.admin import TranslatableAdmin from django.contrib.auth.admin import UserAdmin as BaseUserAdmin from portal.models import Profile, Information, DownloadSection, DownloadTag, DownloadFile -User = get_user_model() - class ProfileInline(admin.StackedInline): model = Profile diff --git a/src/portal/migrations/0001_initial.py b/src/portal/migrations/0001_initial.py index 5197254..d487f66 100644 --- a/src/portal/migrations/0001_initial.py +++ b/src/portal/migrations/0001_initial.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Generated by Django 1.11.11 on 2018-03-22 16:36 +# Generated by Django 1.11.11 on 2018-03-22 18:37 from __future__ import unicode_literals import cms.models.fields @@ -16,10 +16,10 @@ class Migration(migrations.Migration): initial = True dependencies = [ - migrations.swappable_dependency(settings.FILER_IMAGE_MODEL), - ('cms', '0018_pagenode'), ('auth', '0008_alter_user_username_max_length'), + migrations.swappable_dependency(settings.FILER_IMAGE_MODEL), migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('cms', '0018_pagenode'), ] operations = [ @@ -31,8 +31,8 @@ class Migration(migrations.Migration): ('groups', models.ManyToManyField(related_name='files', to='auth.Group', verbose_name='Mitgliedergruppen')), ], options={ - 'ordering': ['ordering'], 'verbose_name_plural': 'Download Files', + 'ordering': ['ordering'], 'verbose_name': 'Download File', }, bases=(parler.models.TranslatableModelMixin, models.Model), @@ -48,10 +48,10 @@ class Migration(migrations.Migration): ('master', models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='translations', to='portal.DownloadFile')), ], options={ - 'default_permissions': (), 'db_tablespace': '', - 'managed': True, + 'default_permissions': (), 'db_table': 'portal_downloadfile_translation', + 'managed': True, 'verbose_name': 'Download File Translation', }, ), @@ -62,8 +62,8 @@ class Migration(migrations.Migration): ('ordering', models.IntegerField(default=50, verbose_name='Sortierung')), ], options={ - 'ordering': ['ordering'], 'verbose_name_plural': 'Download Sections', + 'ordering': ['ordering'], 'verbose_name': 'Download Section', }, bases=(parler.models.TranslatableModelMixin, models.Model), @@ -77,10 +77,10 @@ class Migration(migrations.Migration): ('master', models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='translations', to='portal.DownloadSection')), ], options={ - 'default_permissions': (), 'db_tablespace': '', - 'managed': True, + 'default_permissions': (), 'db_table': 'portal_downloadsection_translation', + 'managed': True, 'verbose_name': 'Download Section Translation', }, ), @@ -104,10 +104,10 @@ class Migration(migrations.Migration): ('master', models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='translations', to='portal.DownloadTag')), ], options={ - 'default_permissions': (), 'db_tablespace': '', - 'managed': True, + 'default_permissions': (), 'db_table': 'portal_downloadtag_translation', + 'managed': True, 'verbose_name': 'Download Tag Translation', }, ), @@ -124,8 +124,8 @@ class Migration(migrations.Migration): ('placeholder', cms.models.fields.PlaceholderField(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, slotname='content', to='cms.Placeholder')), ], options={ - 'ordering': ['-updated'], 'verbose_name_plural': 'Informationen', + 'ordering': ['-updated'], 'verbose_name': 'Information', }, bases=(parler.models.TranslatableModelMixin, models.Model), @@ -139,10 +139,10 @@ class Migration(migrations.Migration): ('master', models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='translations', to='portal.Information')), ], options={ - 'default_permissions': (), 'db_tablespace': '', - 'managed': True, + 'default_permissions': (), 'db_table': 'portal_information_translation', + 'managed': True, 'verbose_name': 'Information Translation', }, ), diff --git a/src/portal/models.py b/src/portal/models.py index 0dd5a83..f8116e6 100644 --- a/src/portal/models.py +++ b/src/portal/models.py @@ -1,8 +1,7 @@ # -*- coding: utf-8 -*- from cms.models.fields import PlaceholderField import os -from django.contrib.auth import get_user_model -from django.contrib.auth.models import Group +from django.contrib.auth.models import Group, User from django.core.files.storage import default_storage from django.conf import settings from django.db import models @@ -17,7 +16,7 @@ from project.utils import CroppableFilerImageField class Profile(models.Model): - user = models.OneToOneField(get_user_model(), related_name='profile', on_delete=models.CASCADE) + user = models.OneToOneField(User, related_name='profile', on_delete=models.CASCADE) first_name = models.CharField(verbose_name=_('Vorname'), max_length=255) last_name = models.CharField(verbose_name=_('Nachname'), max_length=255) street = models.CharField(verbose_name=_('Strasse'), max_length=255, null=True, blank=True) @@ -46,8 +45,7 @@ class Information(TranslatableModel): published = models.BooleanField(verbose_name='Veröffentlicht', default=False) updated = models.DateTimeField(verbose_name='Aktualisiert', auto_now=True) - informed_users = models.ManyToManyField(get_user_model(), verbose_name='Als gelesen markiert von:', - null=True, blank=True) + informed_users = models.ManyToManyField(User, verbose_name='Als gelesen markiert von:', null=True, blank=True) translations = TranslatedFields( title=models.CharField(max_length=100, verbose_name=_('Title')), diff --git a/src/portal/urls.py b/src/portal/urls.py index e858000..b8e6121 100644 --- a/src/portal/urls.py +++ b/src/portal/urls.py @@ -1,23 +1,23 @@ # -*- coding: utf-8 -*- from django.conf.urls import url from django.contrib.auth.decorators import login_required -from django.contrib.auth.views import LoginView, LogoutView, PasswordChangeView from django.core.urlresolvers import reverse_lazy from django.utils.translation import ugettext_lazy as _ from django.views.generic import TemplateView +from django.contrib.auth import views as auth_views from portal.forms import LoginForm from portal.views import ProfileEditView, OverviewView, InformationDetailView urlpatterns = [ - url(_(r'^login/$'), LoginView.as_view(form_class=LoginForm), name='login'), + url(_(r'^login/$'), auth_views.login, {'authentication_form': LoginForm}, name='login'), - url(_(r'^logout/$'), LogoutView.as_view(next_page=reverse_lazy('portal:overview')), name='logout'), + url(_(r'^logout/$'), auth_views.logout, {'next_page': reverse_lazy('portal:overview')}, name='logout'), - url(_(r'^account/change/password/$'), login_required(PasswordChangeView.as_view( - template_name='portal/edit_form.html', - success_url=reverse_lazy('portal:change_password_success') - ), login_url=reverse_lazy('portal:login')), name='change_password'), + url(_(r'^account/change/password/$'), auth_views.password_change, { + 'template_name': 'portal/edit_form.html', + 'post_change_redirect': reverse_lazy('portal:change_password_success') + }, name='change_password'), url(_(r'^account/change/password/success/$'), login_required(TemplateView.as_view( template_name='portal/edit_success.html' @@ -30,7 +30,7 @@ urlpatterns = [ template_name='portal/edit_success.html' ), login_url=reverse_lazy('portal:login')), name='edit_profile_success'), - url(_(r'^info/(?P\d+)/$'), + url(_(r'^information/(?P\d+)/$'), login_required(InformationDetailView.as_view(), login_url=reverse_lazy('portal:login')), name='information'), url(_(r'^$'), login_required(OverviewView.as_view(), login_url=reverse_lazy('portal:login')), name='overview'), diff --git a/src/portal/views.py b/src/portal/views.py index aab6eaf..509a514 100644 --- a/src/portal/views.py +++ b/src/portal/views.py @@ -10,8 +10,9 @@ from portal.models import Information, DownloadFile class InformationQuerysetMixin(object): def get_queryset(self): - queryset = Information.objects.filter(groups__in=self.request.user.groups.all()) + queryset = Information.objects.all() if not self.request.user.is_superuser: + queryset = queryset.filter(groups__in=self.request.user.groups.all()) queryset = queryset.filter(published=True) return queryset