This commit is contained in:
2018-03-23 01:06:48 +01:00
parent 0c0fcec7d0
commit 99f33a05b9
7 changed files with 145 additions and 33 deletions

View File

@@ -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

View File

@@ -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',
},
),

View File

@@ -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')),

View File

@@ -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<pk>\d+)/$'),
url(_(r'^information/(?P<pk>\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'),

View File

@@ -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