diff --git a/private/scss/modules/_control-panel.scss b/private/scss/modules/_control-panel.scss
index 3a5f6bd..4c080df 100644
--- a/private/scss/modules/_control-panel.scss
+++ b/private/scss/modules/_control-panel.scss
@@ -5,7 +5,7 @@
text-align: left;
}
-.task__form {
+.information__form {
margin-top: em(50px);
}
diff --git a/settings.py b/settings.py
index eec11ff..3f2061f 100644
--- a/settings.py
+++ b/settings.py
@@ -25,7 +25,7 @@ aldryn_addons.settings.load(locals())
INSTALLED_APPS.extend([
'project',
- 'memberzone',
+ 'portal',
'fontawesome',
'haystack',
'aldryn_search',
diff --git a/src/memberzone/migrations/0001_initial.py b/src/memberzone/migrations/0001_initial.py
deleted file mode 100644
index ac9a6fa..0000000
--- a/src/memberzone/migrations/0001_initial.py
+++ /dev/null
@@ -1,158 +0,0 @@
-# -*- coding: utf-8 -*-
-# Generated by Django 1.11.11 on 2018-03-21 12:32
-from __future__ import unicode_literals
-
-from django.conf import settings
-from django.db import migrations, models
-import django.db.models.deletion
-import django.utils.timezone
-import djangocms_text_ckeditor.fields
-import filer.fields.folder
-import filer.fields.image
-
-
-class Migration(migrations.Migration):
-
- initial = True
-
- dependencies = [
- migrations.swappable_dependency(settings.AUTH_USER_MODEL),
- ('auth', '0008_alter_user_username_max_length'),
- migrations.swappable_dependency(settings.FILER_IMAGE_MODEL),
- ('filer', '0007_auto_20161016_1055'),
- ]
-
- operations = [
- migrations.CreateModel(
- name='MemberDownloadFile',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('name', models.CharField(blank=True, max_length=512, null=True, verbose_name='Name')),
- ('file', models.FileField(max_length=512, upload_to='protected_files')),
- ('thumbnail', models.FileField(blank=True, null=True, upload_to='protected_thumbnails')),
- ('ordering', models.IntegerField(default=50, verbose_name='Sortierung')),
- ('groups', models.ManyToManyField(related_name='files', to='auth.Group', verbose_name='Mitgliedergruppen')),
- ],
- options={
- 'verbose_name_plural': 'Mitglieder Downloads',
- 'verbose_name': 'Mitglieder Download',
- 'ordering': ['ordering', 'name'],
- },
- ),
- migrations.CreateModel(
- name='MemberDownloadSection',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('title', models.CharField(max_length=100, verbose_name='Title')),
- ('ordering', models.IntegerField(default=50, verbose_name='Sortierung')),
- ],
- options={
- 'verbose_name_plural': 'Mitglieder Download Sections',
- 'verbose_name': 'Mitglieder Download Section',
- 'ordering': ['ordering'],
- },
- ),
- migrations.CreateModel(
- name='MemberDownloadTag',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('name', models.CharField(max_length=100, verbose_name='Name')),
- ],
- options={
- 'verbose_name_plural': 'Mitglieder Download Tags',
- 'verbose_name': 'Mitglieder Download Tag',
- },
- ),
- migrations.CreateModel(
- name='MemberTask',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('title', models.CharField(max_length=100, verbose_name='Title')),
- ('slug', models.SlugField(unique=True, verbose_name='slug')),
- ('sub_title', models.CharField(blank=True, max_length=100, verbose_name='Untertitle')),
- ('bodytext', djangocms_text_ckeditor.fields.HTMLField(verbose_name='Inhalt')),
- ('publish_date', models.DateTimeField(default=django.utils.timezone.now, verbose_name='Veröffentlichungsdatum')),
- ('deadline', models.DateTimeField(blank=True, null=True, verbose_name='Anmeldeschluss')),
- ('max_num', models.IntegerField(default=1, verbose_name='max. Formulare')),
- ('submit_text', models.CharField(default='Als gelesen markieren', max_length=100, verbose_name='Formular Button Text')),
- ('form_bodytext', djangocms_text_ckeditor.fields.HTMLField(blank=True, default='
Jetzt anmelden
', verbose_name='Formular Beschreibung')),
- ('success_title', models.CharField(default='Ihre Anmeldung wurde erfasst', max_length=200, verbose_name='Bestätigungstitel')),
- ('success_bodytext', djangocms_text_ckeditor.fields.HTMLField(verbose_name='Bestätigungstext')),
- ('folder', filer.fields.folder.FilerFolderField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='filer.Folder', verbose_name='Bilder')),
- ('groups', models.ManyToManyField(related_name='tasks', to='auth.Group', verbose_name='Mitglieder Gruppe')),
- ('image', filer.fields.image.FilerImageField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.FILER_IMAGE_MODEL, verbose_name='Bild')),
- ],
- options={
- 'verbose_name_plural': 'Mitglieder Aufgaben',
- 'verbose_name': 'Mitglieder Aufgabe',
- 'ordering': ['-publish_date'],
- },
- ),
- migrations.CreateModel(
- name='MemberTaskFormField',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('type', models.CharField(choices=[('text', 'Text Feld (einzeilig)'), ('textarea', 'Text Feld (mehrzeilig)'), ('email', 'E-Mail Feld'), ('radio', 'Auswahlfeld (eine auswahl)'), ('checkbox', 'Auswahlfeld (mehrere auswahlen)')], max_length=30)),
- ('label', models.CharField(max_length=100, verbose_name='Label')),
- ('name', models.SlugField(verbose_name='Name')),
- ('choices', models.TextField(blank=True, help_text='Werte die bei einem Auswahlfeld zur verfügung stehen sollen. Ein wert pro Zeile', verbose_name='Auswahlwerte')),
- ('required', models.BooleanField(default=False, verbose_name='Pflichtfeld')),
- ('ordering', models.IntegerField(default=50, verbose_name='Sortierung')),
- ('task', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='fields', to='memberzone.MemberTask', verbose_name='Mitglieder Aufgabe')),
- ],
- options={
- 'verbose_name_plural': 'Formularfelder',
- 'verbose_name': 'Formularfeld',
- 'ordering': ['ordering'],
- },
- ),
- migrations.CreateModel(
- name='MemberTaskRegistration',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('form_data', models.TextField(verbose_name='Form Content')),
- ('cdate', models.DateTimeField(auto_now_add=True)),
- ('task', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='registrations', to='memberzone.MemberTask', verbose_name='Mitglieder Aufgabe')),
- ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='registrations', to=settings.AUTH_USER_MODEL)),
- ],
- options={
- 'verbose_name_plural': 'Mitglieder Aufgaben Registierungen',
- 'verbose_name': 'Mitglieder Aufgabe Registierung',
- },
- ),
- migrations.CreateModel(
- name='Profile',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('first_name', models.CharField(blank=True, max_length=255, null=True, verbose_name='Vorname')),
- ('last_name', models.CharField(blank=True, max_length=255, null=True, verbose_name='Nachname')),
- ('street', models.CharField(blank=True, max_length=255, null=True, verbose_name='Strasse')),
- ('zip', models.IntegerField(blank=True, null=True, verbose_name='PLZ')),
- ('place', models.CharField(blank=True, max_length=255, null=True, verbose_name='Ort')),
- ('email', models.EmailField(blank=True, max_length=254, null=True, verbose_name='E-Mail')),
- ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='profile', to=settings.AUTH_USER_MODEL)),
- ],
- options={
- 'verbose_name_plural': 'User Profile',
- 'verbose_name': 'User Profil',
- },
- ),
- migrations.AddField(
- model_name='memberdownloadfile',
- name='section',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='files', to='memberzone.MemberDownloadSection', verbose_name='Download Section'),
- ),
- migrations.AddField(
- model_name='memberdownloadfile',
- name='tags',
- field=models.ManyToManyField(blank=True, null=True, related_name='files', to='memberzone.MemberDownloadTag', verbose_name='Suchbegriffe'),
- ),
- migrations.AlterUniqueTogether(
- name='membertaskregistration',
- unique_together=set([('user', 'task')]),
- ),
- migrations.AlterUniqueTogether(
- name='membertaskformfield',
- unique_together=set([('task', 'name')]),
- ),
- ]
diff --git a/src/memberzone/migrations/0002_auto_20180321_1256.py b/src/memberzone/migrations/0002_auto_20180321_1256.py
deleted file mode 100644
index c171b8b..0000000
--- a/src/memberzone/migrations/0002_auto_20180321_1256.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# -*- coding: utf-8 -*-
-# Generated by Django 1.11.11 on 2018-03-21 12:56
-from __future__ import unicode_literals
-
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('memberzone', '0001_initial'),
- ]
-
- operations = [
- migrations.RemoveField(
- model_name='memberdownloadfile',
- name='thumbnail',
- ),
- migrations.AddField(
- model_name='memberdownloadfile',
- name='description',
- field=models.TextField(blank=True, null=True, verbose_name='Beschreibung'),
- ),
- ]
diff --git a/src/memberzone/migrations/0003_auto_20180322_1052.py b/src/memberzone/migrations/0003_auto_20180322_1052.py
deleted file mode 100644
index e087925..0000000
--- a/src/memberzone/migrations/0003_auto_20180322_1052.py
+++ /dev/null
@@ -1,240 +0,0 @@
-# -*- coding: utf-8 -*-
-# Generated by Django 1.11.11 on 2018-03-22 10:52
-from __future__ import unicode_literals
-
-import cms.models.fields
-from django.conf import settings
-from django.db import migrations, models
-import django.db.models.deletion
-import image_cropping.fields
-import project.utils
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('cms', '0018_pagenode'),
- ('memberzone', '0002_auto_20180321_1256'),
- ]
-
- operations = [
- migrations.CreateModel(
- name='MemberDownloadFileTranslation',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('language_code', models.CharField(db_index=True, max_length=15, verbose_name='Language')),
- ('name', models.CharField(blank=True, max_length=512, null=True, verbose_name='Name')),
- ('description', models.TextField(blank=True, null=True, verbose_name='Beschreibung')),
- ('file', models.FileField(max_length=512, upload_to='protected_files')),
- ],
- options={
- 'db_table': 'memberzone_memberdownloadfile_translation',
- 'default_permissions': (),
- 'managed': True,
- 'db_tablespace': '',
- 'verbose_name': 'Mitglieder Download Translation',
- },
- ),
- migrations.CreateModel(
- name='MemberDownloadSectionTranslation',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('language_code', models.CharField(db_index=True, max_length=15, verbose_name='Language')),
- ('title', models.CharField(max_length=100, verbose_name='Title')),
- ],
- options={
- 'db_table': 'memberzone_memberdownloadsection_translation',
- 'default_permissions': (),
- 'managed': True,
- 'db_tablespace': '',
- 'verbose_name': 'Mitglieder Download Section Translation',
- },
- ),
- migrations.CreateModel(
- name='MemberDownloadTagTranslation',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('language_code', models.CharField(db_index=True, max_length=15, verbose_name='Language')),
- ('name', models.CharField(max_length=100, verbose_name='Name')),
- ],
- options={
- 'db_table': 'memberzone_memberdownloadtag_translation',
- 'default_permissions': (),
- 'managed': True,
- 'db_tablespace': '',
- 'verbose_name': 'Mitglieder Download Tag Translation',
- },
- ),
- migrations.CreateModel(
- name='MemberTaskTranslation',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('language_code', models.CharField(db_index=True, max_length=15, verbose_name='Language')),
- ('title', models.CharField(max_length=100, verbose_name='Title')),
- ],
- options={
- 'db_table': 'memberzone_membertask_translation',
- 'default_permissions': (),
- 'managed': True,
- 'db_tablespace': '',
- 'verbose_name': 'Mitglieder Aufgabe Translation',
- },
- ),
- migrations.AlterUniqueTogether(
- name='membertaskformfield',
- unique_together=set([]),
- ),
- migrations.RemoveField(
- model_name='membertaskformfield',
- name='task',
- ),
- migrations.AlterUniqueTogether(
- name='membertaskregistration',
- unique_together=set([]),
- ),
- migrations.RemoveField(
- model_name='membertaskregistration',
- name='task',
- ),
- migrations.RemoveField(
- model_name='membertaskregistration',
- name='user',
- ),
- migrations.AlterModelOptions(
- name='memberdownloadfile',
- options={'ordering': ['ordering'], 'verbose_name': 'Mitglieder Download', 'verbose_name_plural': 'Mitglieder Downloads'},
- ),
- migrations.RemoveField(
- model_name='memberdownloadfile',
- name='description',
- ),
- migrations.RemoveField(
- model_name='memberdownloadfile',
- name='file',
- ),
- migrations.RemoveField(
- model_name='memberdownloadfile',
- name='name',
- ),
- migrations.RemoveField(
- model_name='memberdownloadsection',
- name='title',
- ),
- migrations.RemoveField(
- model_name='memberdownloadtag',
- name='name',
- ),
- migrations.RemoveField(
- model_name='membertask',
- name='bodytext',
- ),
- migrations.RemoveField(
- model_name='membertask',
- name='deadline',
- ),
- migrations.RemoveField(
- model_name='membertask',
- name='folder',
- ),
- migrations.RemoveField(
- model_name='membertask',
- name='form_bodytext',
- ),
- migrations.RemoveField(
- model_name='membertask',
- name='max_num',
- ),
- migrations.RemoveField(
- model_name='membertask',
- name='slug',
- ),
- migrations.RemoveField(
- model_name='membertask',
- name='sub_title',
- ),
- migrations.RemoveField(
- model_name='membertask',
- name='submit_text',
- ),
- migrations.RemoveField(
- model_name='membertask',
- name='success_bodytext',
- ),
- migrations.RemoveField(
- model_name='membertask',
- name='success_title',
- ),
- migrations.RemoveField(
- model_name='membertask',
- name='title',
- ),
- migrations.AddField(
- model_name='membertask',
- name='cropping',
- field=image_cropping.fields.ImageRatioField('image', '1200x800', adapt_rotation=False, allow_fullsize=False, free_crop=True, help_text=None, hide_image_field=False, size_warning=False, verbose_name='cropping'),
- ),
- migrations.AddField(
- model_name='membertask',
- name='placeholder',
- field=cms.models.fields.PlaceholderField(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, slotname='task_placeholder', to='cms.Placeholder'),
- ),
- migrations.AlterField(
- model_name='membertask',
- name='image',
- field=project.utils.CroppableFilerImageField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.FILER_IMAGE_MODEL, verbose_name='Bild'),
- ),
- migrations.AlterField(
- model_name='profile',
- name='first_name',
- field=models.CharField(default='', max_length=255, verbose_name='Vorname'),
- preserve_default=False,
- ),
- migrations.AlterField(
- model_name='profile',
- name='last_name',
- field=models.CharField(default='', max_length=255, verbose_name='Nachname'),
- preserve_default=False,
- ),
- migrations.DeleteModel(
- name='MemberTaskFormField',
- ),
- migrations.DeleteModel(
- name='MemberTaskRegistration',
- ),
- migrations.AddField(
- model_name='membertasktranslation',
- name='master',
- field=models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='translations', to='memberzone.MemberTask'),
- ),
- migrations.AddField(
- model_name='memberdownloadtagtranslation',
- name='master',
- field=models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='translations', to='memberzone.MemberDownloadTag'),
- ),
- migrations.AddField(
- model_name='memberdownloadsectiontranslation',
- name='master',
- field=models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='translations', to='memberzone.MemberDownloadSection'),
- ),
- migrations.AddField(
- model_name='memberdownloadfiletranslation',
- name='master',
- field=models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='translations', to='memberzone.MemberDownloadFile'),
- ),
- migrations.AlterUniqueTogether(
- name='membertasktranslation',
- unique_together=set([('language_code', 'master')]),
- ),
- migrations.AlterUniqueTogether(
- name='memberdownloadtagtranslation',
- unique_together=set([('language_code', 'master')]),
- ),
- migrations.AlterUniqueTogether(
- name='memberdownloadsectiontranslation',
- unique_together=set([('language_code', 'master')]),
- ),
- migrations.AlterUniqueTogether(
- name='memberdownloadfiletranslation',
- unique_together=set([('language_code', 'master')]),
- ),
- ]
diff --git a/src/memberzone/migrations/0004_membertask_published.py b/src/memberzone/migrations/0004_membertask_published.py
deleted file mode 100644
index af806c1..0000000
--- a/src/memberzone/migrations/0004_membertask_published.py
+++ /dev/null
@@ -1,20 +0,0 @@
-# -*- coding: utf-8 -*-
-# Generated by Django 1.11.11 on 2018-03-22 11:21
-from __future__ import unicode_literals
-
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('memberzone', '0003_auto_20180322_1052'),
- ]
-
- operations = [
- migrations.AddField(
- model_name='membertask',
- name='published',
- field=models.BooleanField(default=False, verbose_name='Veröffentlichen'),
- ),
- ]
diff --git a/src/memberzone/migrations/0005_auto_20180322_1205.py b/src/memberzone/migrations/0005_auto_20180322_1205.py
deleted file mode 100644
index a1b2cbd..0000000
--- a/src/memberzone/migrations/0005_auto_20180322_1205.py
+++ /dev/null
@@ -1,29 +0,0 @@
-# -*- coding: utf-8 -*-
-# Generated by Django 1.11.11 on 2018-03-22 12:05
-from __future__ import unicode_literals
-
-import cms.models.fields
-from django.conf import settings
-from django.db import migrations, models
-import django.db.models.deletion
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- migrations.swappable_dependency(settings.AUTH_USER_MODEL),
- ('memberzone', '0004_membertask_published'),
- ]
-
- operations = [
- migrations.AddField(
- model_name='membertask',
- name='informed_users',
- field=models.ManyToManyField(blank=True, null=True, to=settings.AUTH_USER_MODEL, verbose_name='Als gelesen markiert von:'),
- ),
- migrations.AlterField(
- model_name='membertask',
- name='placeholder',
- field=cms.models.fields.PlaceholderField(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, slotname='content', to='cms.Placeholder'),
- ),
- ]
diff --git a/src/memberzone/urls.py b/src/memberzone/urls.py
deleted file mode 100644
index 1baaf0f..0000000
--- a/src/memberzone/urls.py
+++ /dev/null
@@ -1,38 +0,0 @@
-# -*- 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 memberzone.forms import LoginForm
-from memberzone.views import OverviewView, MemberTaskDetailView, MemberTaskDetailSuccessView, ProfileEditView
-
-urlpatterns = [
- url(_(r'^login/$'), LoginView.as_view(form_class=LoginForm), name='login'),
-
- url(_(r'^logout/$'), LogoutView.as_view(next_page=reverse_lazy('memberzone:overview')), name='logout'),
-
- url(_(r'^account/change/password/$'), login_required(PasswordChangeView.as_view(
- template_name='memberzone/change_form.html',
- success_url=reverse_lazy('memberzone:change_password_done')
- ), login_url=reverse_lazy('memberzone:login')), name='change_password'),
-
- url(_(r'^account/change/password/success/$'), login_required(TemplateView.as_view(
- template_name='memberzone/change_success.html'
- ), login_url=reverse_lazy('memberzone:login')), name='change_password_done'),
-
- url(_(r'^profile/edit/$'), login_required(ProfileEditView.as_view(
- ), login_url=reverse_lazy('memberzone:login')), name='profile_edit'),
-
- url(_(r'^profile/edit/success/$'), login_required(TemplateView.as_view(
- template_name='memberzone/change_success.html'
- ), login_url=reverse_lazy('memberzone:login')), name='profile_edit_done'),
-
- url(_(r'^info/(?P\d+)/$'), login_required(MemberTaskDetailView.as_view(
- ), login_url=reverse_lazy('memberzone:login')), name='task'),
-
- url(_(r'^$'), login_required(OverviewView.as_view(), login_url=reverse_lazy('memberzone:login')),
- name='overview'),
-]
diff --git a/src/memberzone/__init__.py b/src/portal/__init__.py
similarity index 100%
rename from src/memberzone/__init__.py
rename to src/portal/__init__.py
diff --git a/src/memberzone/admin.py b/src/portal/admin.py
similarity index 75%
rename from src/memberzone/admin.py
rename to src/portal/admin.py
index 2fd52f8..f772aaf 100644
--- a/src/memberzone/admin.py
+++ b/src/portal/admin.py
@@ -5,7 +5,7 @@ from django.utils.translation import ugettext_lazy as _
from parler.admin import TranslatableAdmin
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
-from memberzone.models import Profile, MemberTask, MemberDownloadSection, MemberDownloadTag, MemberDownloadFile
+from portal.models import Profile, Information, DownloadSection, DownloadTag, DownloadFile
User = get_user_model()
@@ -27,8 +27,8 @@ admin.site.unregister(User)
admin.site.register(User, UserAdmin)
-@admin.register(MemberTask)
-class MemberTaskAdmin(TranslatableAdmin):
+@admin.register(Information)
+class InformationAdmin(TranslatableAdmin):
list_display = ('title', 'published', 'publish_date')
list_filter = ('groups',)
filter_horizontal = ('groups',)
@@ -41,19 +41,19 @@ class MemberTaskAdmin(TranslatableAdmin):
)
-@admin.register(MemberDownloadSection)
-class MemberDownloadSectionAdmin(TranslatableAdmin):
+@admin.register(DownloadSection)
+class DownloadSectionAdmin(TranslatableAdmin):
list_display = ('title', 'ordering')
list_editable = ['ordering']
-@admin.register(MemberDownloadTag)
-class MemberDownloadTagAdmin(TranslatableAdmin):
+@admin.register(DownloadTag)
+class DownloadTagAdmin(TranslatableAdmin):
pass
-@admin.register(MemberDownloadFile)
-class MemberDownloadFileAdmin(TranslatableAdmin):
+@admin.register(DownloadFile)
+class DownloadFileAdmin(TranslatableAdmin):
list_display = ('label', 'ordering')
list_editable = ['ordering']
list_filter = ('section', 'groups')
diff --git a/src/memberzone/forms.py b/src/portal/forms.py
similarity index 87%
rename from src/memberzone/forms.py
rename to src/portal/forms.py
index d8c4c18..985aa49 100644
--- a/src/memberzone/forms.py
+++ b/src/portal/forms.py
@@ -2,7 +2,7 @@
from django import forms
from django.contrib.auth.forms import AuthenticationForm
-from memberzone.models import Profile
+from portal.models import Profile
class LoginForm(AuthenticationForm):
diff --git a/src/memberzone/migrations/__init__.py b/src/portal/migrations/__init__.py
similarity index 100%
rename from src/memberzone/migrations/__init__.py
rename to src/portal/migrations/__init__.py
diff --git a/src/memberzone/models.py b/src/portal/models.py
similarity index 83%
rename from src/memberzone/models.py
rename to src/portal/models.py
index 15650b0..55c332f 100644
--- a/src/memberzone/models.py
+++ b/src/portal/models.py
@@ -12,7 +12,7 @@ from django.utils.translation import ugettext_lazy as _
from image_cropping import ImageRatioField
from parler.models import TranslatableModel, TranslatedFields
-from memberzone.storage import PrivateS3MediaStorage
+from portal.storage import PrivateS3MediaStorage
from project.utils import CroppableFilerImageField
@@ -37,7 +37,7 @@ class Profile(models.Model):
return '{} {}'.format(self.first_name, self.last_name)
-class MemberTask(TranslatableModel):
+class Information(TranslatableModel):
groups = models.ManyToManyField(Group, verbose_name='Mitglieder Gruppe', related_name='tasks')
image = CroppableFilerImageField(verbose_name='Bild', blank=True, null=True)
cropping = ImageRatioField('image', '1200x800', free_crop=True)
@@ -63,32 +63,32 @@ class MemberTask(TranslatableModel):
return self.title
def get_absolute_url(self):
- return reverse_lazy('memberzone:task', args=[self.pk])
+ return reverse_lazy('portal:information', args=[self.pk])
-class MemberDownloadSection(TranslatableModel):
+class DownloadSection(TranslatableModel):
translations = TranslatedFields(
title=models.CharField(max_length=100, verbose_name='Title')
)
ordering = models.IntegerField(default=50, verbose_name='Sortierung')
class Meta:
- verbose_name = 'Mitglieder Download Section'
- verbose_name_plural = 'Mitglieder Download Sections'
+ verbose_name = 'Download Section'
+ verbose_name_plural = 'Download Sections'
ordering = ['ordering']
def __str__(self):
return self.title
-class MemberDownloadTag(TranslatableModel):
+class DownloadTag(TranslatableModel):
translations = TranslatedFields(
name=models.CharField(max_length=100, verbose_name='Name')
)
class Meta:
- verbose_name = 'Mitglieder Download Tag'
- verbose_name_plural = 'Mitglieder Download Tags'
+ verbose_name = 'Download Tag'
+ verbose_name_plural = 'Download Tags'
def __str__(self):
return self.name
@@ -100,10 +100,10 @@ else:
protected_file_storage = default_storage
-class MemberDownloadFile(TranslatableModel):
- section = models.ForeignKey(MemberDownloadSection, verbose_name='Download Section', related_name='files')
+class DownloadFile(TranslatableModel):
+ section = models.ForeignKey(DownloadSection, verbose_name='Download Section', related_name='files')
groups = models.ManyToManyField(Group, verbose_name='Mitgliedergruppen', related_name='files')
- tags = models.ManyToManyField(MemberDownloadTag, verbose_name='Suchbegriffe', related_name='files',
+ tags = models.ManyToManyField(DownloadTag, verbose_name='Suchbegriffe', related_name='files',
blank=True, null=True)
translations = TranslatedFields(
@@ -115,8 +115,8 @@ class MemberDownloadFile(TranslatableModel):
ordering = models.IntegerField(default=50, verbose_name='Sortierung')
class Meta:
- verbose_name = 'Mitglieder Download'
- verbose_name_plural = 'Mitglieder Downloads'
+ verbose_name = 'Download File'
+ verbose_name_plural = 'Download Files'
ordering = ['ordering']
def __str__(self):
diff --git a/src/memberzone/storage.py b/src/portal/storage.py
similarity index 100%
rename from src/memberzone/storage.py
rename to src/portal/storage.py
diff --git a/src/memberzone/templates/memberzone/change_form.html b/src/portal/templates/portal/edit_form.html
similarity index 100%
rename from src/memberzone/templates/memberzone/change_form.html
rename to src/portal/templates/portal/edit_form.html
diff --git a/src/memberzone/templates/memberzone/change_success.html b/src/portal/templates/portal/edit_success.html
similarity index 100%
rename from src/memberzone/templates/memberzone/change_success.html
rename to src/portal/templates/portal/edit_success.html
diff --git a/src/memberzone/templates/memberzone/task.html b/src/portal/templates/portal/information.html
similarity index 86%
rename from src/memberzone/templates/memberzone/task.html
rename to src/portal/templates/portal/information.html
index a00d76d..677b011 100644
--- a/src/memberzone/templates/memberzone/task.html
+++ b/src/portal/templates/portal/information.html
@@ -7,7 +7,7 @@
{{ object.title }}
-
+
{% include 'project/assets/arrow-left-long.svg' %}
{% trans 'Zurück zur Übersicht' %}
@@ -25,11 +25,11 @@
{% block content_main %}
{% render_placeholder object.placeholder language LANGUAGE_CODE %}
-
@@ -49,7 +49,7 @@
{% if page_obj.has_next or paginator.count > 0 and open_object_list %}
-
{% include 'project/assets/dots.svg' %}
diff --git a/src/memberzone/templates/registration/login.html b/src/portal/templates/registration/login.html
similarity index 100%
rename from src/memberzone/templates/registration/login.html
rename to src/portal/templates/registration/login.html
diff --git a/src/portal/urls.py b/src/portal/urls.py
new file mode 100644
index 0000000..e858000
--- /dev/null
+++ b/src/portal/urls.py
@@ -0,0 +1,37 @@
+# -*- 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 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'^logout/$'), LogoutView.as_view(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/success/$'), login_required(TemplateView.as_view(
+ template_name='portal/edit_success.html'
+ ), login_url=reverse_lazy('portal:login')), name='change_password_success'),
+
+ url(_(r'^account/edit/profile/$'), login_required(ProfileEditView.as_view(
+ ), login_url=reverse_lazy('portal:login')), name='edit_profile'),
+
+ url(_(r'^account/edit/profile/success/$'), login_required(TemplateView.as_view(
+ template_name='portal/edit_success.html'
+ ), login_url=reverse_lazy('portal:login')), name='edit_profile_success'),
+
+ url(_(r'^info/(?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/memberzone/views.py b/src/portal/views.py
similarity index 62%
rename from src/memberzone/views.py
rename to src/portal/views.py
index 2d02dca..aab6eaf 100644
--- a/src/memberzone/views.py
+++ b/src/portal/views.py
@@ -4,32 +4,25 @@ from django.core.urlresolvers import reverse_lazy
from django.utils.translation import ugettext_lazy as _
from django.views.generic import UpdateView, ListView, DetailView
-from memberzone.forms import ProfileEditForm
-from memberzone.models import MemberTask, MemberDownloadFile
+from portal.forms import ProfileEditForm
+from portal.models import Information, DownloadFile
-class MemeberTaskQuerysetMixin(object):
+class InformationQuerysetMixin(object):
def get_queryset(self):
- queryset = MemberTask.objects.filter(groups__in=self.request.user.groups.all())
+ queryset = Information.objects.filter(groups__in=self.request.user.groups.all())
if not self.request.user.is_superuser:
queryset = queryset.filter(published=True)
return queryset
-class OverviewView(MemeberTaskQuerysetMixin, ListView):
- template_name = 'memberzone/overview.html'
+class OverviewView(InformationQuerysetMixin, ListView):
+ template_name = 'portal/overview.html'
open_tasks = None
-
paginate_by = 5
- def get_title(self):
- return _('Grüezi, {first_name} {last_name}').format(
- first_name=self.request.user.first_name,
- last_name=self.request.user.last_name,
- )
-
def get_download_sections(self):
- file_list = MemberDownloadFile.objects.filter(groups__in=self.request.user.groups.all())
+ file_list = DownloadFile.objects.filter(groups__in=self.request.user.groups.all())
sections = {}
for file in file_list:
if not sections.get(file.section_id, None):
@@ -49,13 +42,13 @@ class OverviewView(MemeberTaskQuerysetMixin, ListView):
return queryset.filter(informed_users__in=[self.request.user])
def get_open_tasks(self):
- queryset = MemeberTaskQuerysetMixin.get_queryset(self).exclude(informed_users__in=[self.request.user])
+ queryset = InformationQuerysetMixin.get_queryset(self).exclude(informed_users__in=[self.request.user])
return queryset
def get_settings(self):
settings = (
- (_('Benutzerdaten'), reverse_lazy('memberzone:profile_edit')),
- (_('Passwort'), reverse_lazy('memberzone:change_password')),
+ (_('Benutzerdaten'), reverse_lazy('portal:edit_profile')),
+ (_('Passwort'), reverse_lazy('portal:change_password')),
)
return settings
@@ -74,26 +67,18 @@ class OverviewView(MemeberTaskQuerysetMixin, ListView):
return context
-class MemberTaskDetailView(MemeberTaskQuerysetMixin, DetailView):
- template_name = 'memberzone/task.html'
+class InformationDetailView(InformationQuerysetMixin, DetailView):
+ template_name = 'portal/information.html'
def post(self, request, *args, **kwargs):
self.get_object().informed_users.add(self.request.user)
- return redirect('memberzone:overview')
-
-
-class MemberTaskDetailSuccessView(MemeberTaskQuerysetMixin, DetailView):
- template_name = 'memberzone/task_success.html'
- model = MemberTask
-
- def get_title(self):
- return self.object.success_title
+ return redirect('portal:overview')
class ProfileEditView(UpdateView):
form_class = ProfileEditForm
- template_name = 'memberzone/change_form.html'
- success_url = reverse_lazy('memberzone:profile_edit_done')
+ template_name = 'portal/edit_form.html'
+ success_url = reverse_lazy('portal:edit_profile_success')
def get_object(self, queryset=None):
return self.request.user.profile
diff --git a/src/project/templates/main.html b/src/project/templates/main.html
index 03f0389..b0272fc 100644
--- a/src/project/templates/main.html
+++ b/src/project/templates/main.html
@@ -121,7 +121,7 @@
-