diff --git a/areas/migrations/0001_initial.py b/areas/migrations/0001_initial.py new file mode 100644 index 0000000..b36a9e2 --- /dev/null +++ b/areas/migrations/0001_initial.py @@ -0,0 +1,27 @@ +# Generated by Django 2.2.7 on 2019-12-11 20:58 + +import colorful.fields +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Areas', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=200)), + ('color', colorful.fields.RGBColorField(blank=True, colors=['#FFB900', '#E74856', '#0078D7', '#0099BC', '#7A7574'], default='#0099BC')), + ('desc', models.TextField(blank=True, max_length=3000)), + ('created_area_date', models.DateField(blank=True, default=datetime.date.today)), + ('visible', models.BooleanField(default=True)), + ], + ), + ] diff --git a/areas/migrations/0002_auto_20191211_2158.py b/areas/migrations/0002_auto_20191211_2158.py new file mode 100644 index 0000000..952384b --- /dev/null +++ b/areas/migrations/0002_auto_20191211_2158.py @@ -0,0 +1,34 @@ +# Generated by Django 2.2.7 on 2019-12-11 20:58 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('users', '0001_initial'), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('areas', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='areas', + name='agency', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='users.Agency'), + ), + migrations.AddField( + model_name='areas', + name='created_area_by', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL), + ), + migrations.AddField( + model_name='areas', + name='usersfield', + field=models.ManyToManyField(blank=True, related_name='users_in_area', to=settings.AUTH_USER_MODEL), + ), + ] diff --git a/areas/migrations/__init__.py b/areas/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/areas/migrations/__pycache__/0001_initial.cpython-38.pyc b/areas/migrations/__pycache__/0001_initial.cpython-38.pyc new file mode 100644 index 0000000..460ee67 Binary files /dev/null and b/areas/migrations/__pycache__/0001_initial.cpython-38.pyc differ diff --git a/areas/migrations/__pycache__/0002_auto_20191211_2158.cpython-38.pyc b/areas/migrations/__pycache__/0002_auto_20191211_2158.cpython-38.pyc new file mode 100644 index 0000000..4d06fe9 Binary files /dev/null and b/areas/migrations/__pycache__/0002_auto_20191211_2158.cpython-38.pyc differ diff --git a/areas/migrations/__pycache__/__init__.cpython-38.pyc b/areas/migrations/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000..ed6c0ec Binary files /dev/null and b/areas/migrations/__pycache__/__init__.cpython-38.pyc differ diff --git a/media/userprofilepics/Seinwill_Steffen.jpg b/media/userprofilepics/Seinwill_Steffen.jpg index 391af70..54dd2cf 100644 Binary files a/media/userprofilepics/Seinwill_Steffen.jpg and b/media/userprofilepics/Seinwill_Steffen.jpg differ diff --git a/news/migrations/0001_initial.py b/news/migrations/0001_initial.py new file mode 100644 index 0000000..94d9d0c --- /dev/null +++ b/news/migrations/0001_initial.py @@ -0,0 +1,28 @@ +# Generated by Django 2.2.7 on 2019-12-11 20:58 + +import ckeditor_uploader.fields +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='News', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(default='', max_length=200)), + ('content', ckeditor_uploader.fields.RichTextUploadingField(blank=True, verbose_name='Inhalt')), + ('created_date', models.DateTimeField(blank=True, default=datetime.datetime(2019, 12, 11, 21, 58, 18, 144449))), + ('go_online_on', models.DateTimeField(blank=True, default=datetime.datetime(2019, 12, 11, 21, 58, 18, 144449))), + ('go_offline_on', models.DateTimeField(blank=True, default=datetime.datetime(2019, 12, 11, 21, 58, 18, 144449))), + ('last_modified_on', models.DateTimeField(blank=True, default=datetime.datetime(2019, 12, 11, 21, 58, 18, 144449))), + ], + ), + ] diff --git a/news/migrations/0002_auto_20191211_2158.py b/news/migrations/0002_auto_20191211_2158.py new file mode 100644 index 0000000..f992dbd --- /dev/null +++ b/news/migrations/0002_auto_20191211_2158.py @@ -0,0 +1,34 @@ +# Generated by Django 2.2.7 on 2019-12-11 20:58 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('users', '0001_initial'), + ('news', '0001_initial'), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.AddField( + model_name='news', + name='agency', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='users.Agency'), + ), + migrations.AddField( + model_name='news', + name='created_by', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL), + ), + migrations.AddField( + model_name='news', + name='last_modified_by', + field=models.ForeignKey(default=None, on_delete=django.db.models.deletion.PROTECT, related_name='news_mod_by', to=settings.AUTH_USER_MODEL), + ), + ] diff --git a/news/migrations/0003_auto_20191211_2159.py b/news/migrations/0003_auto_20191211_2159.py new file mode 100644 index 0000000..e6ca1f8 --- /dev/null +++ b/news/migrations/0003_auto_20191211_2159.py @@ -0,0 +1,34 @@ +# Generated by Django 2.2.7 on 2019-12-11 20:59 + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('news', '0002_auto_20191211_2158'), + ] + + operations = [ + migrations.AlterField( + model_name='news', + name='created_date', + field=models.DateTimeField(blank=True, default=datetime.datetime(2019, 12, 11, 21, 59, 30, 816176)), + ), + migrations.AlterField( + model_name='news', + name='go_offline_on', + field=models.DateTimeField(blank=True, default=datetime.datetime(2019, 12, 11, 21, 59, 30, 816176)), + ), + migrations.AlterField( + model_name='news', + name='go_online_on', + field=models.DateTimeField(blank=True, default=datetime.datetime(2019, 12, 11, 21, 59, 30, 816176)), + ), + migrations.AlterField( + model_name='news', + name='last_modified_on', + field=models.DateTimeField(blank=True, default=datetime.datetime(2019, 12, 11, 21, 59, 30, 816176)), + ), + ] diff --git a/news/migrations/0004_auto_20191211_2200.py b/news/migrations/0004_auto_20191211_2200.py new file mode 100644 index 0000000..054e858 --- /dev/null +++ b/news/migrations/0004_auto_20191211_2200.py @@ -0,0 +1,34 @@ +# Generated by Django 2.2.7 on 2019-12-11 21:00 + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('news', '0003_auto_20191211_2159'), + ] + + operations = [ + migrations.AlterField( + model_name='news', + name='created_date', + field=models.DateTimeField(blank=True, default=datetime.datetime(2019, 12, 11, 22, 0, 29, 106830)), + ), + migrations.AlterField( + model_name='news', + name='go_offline_on', + field=models.DateTimeField(blank=True, default=datetime.datetime(2019, 12, 11, 22, 0, 29, 106830)), + ), + migrations.AlterField( + model_name='news', + name='go_online_on', + field=models.DateTimeField(blank=True, default=datetime.datetime(2019, 12, 11, 22, 0, 29, 106830)), + ), + migrations.AlterField( + model_name='news', + name='last_modified_on', + field=models.DateTimeField(blank=True, default=datetime.datetime(2019, 12, 11, 22, 0, 29, 106830)), + ), + ] diff --git a/news/migrations/0005_auto_20191211_2222.py b/news/migrations/0005_auto_20191211_2222.py new file mode 100644 index 0000000..24a7920 --- /dev/null +++ b/news/migrations/0005_auto_20191211_2222.py @@ -0,0 +1,34 @@ +# Generated by Django 2.2.7 on 2019-12-11 21:22 + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('news', '0004_auto_20191211_2200'), + ] + + operations = [ + migrations.AlterField( + model_name='news', + name='created_date', + field=models.DateTimeField(blank=True, default=datetime.datetime(2019, 12, 11, 22, 22, 22, 194586)), + ), + migrations.AlterField( + model_name='news', + name='go_offline_on', + field=models.DateTimeField(blank=True, default=datetime.datetime(2019, 12, 11, 22, 22, 22, 194586)), + ), + migrations.AlterField( + model_name='news', + name='go_online_on', + field=models.DateTimeField(blank=True, default=datetime.datetime(2019, 12, 11, 22, 22, 22, 194586)), + ), + migrations.AlterField( + model_name='news', + name='last_modified_on', + field=models.DateTimeField(blank=True, default=datetime.datetime(2019, 12, 11, 22, 22, 22, 194586)), + ), + ] diff --git a/news/migrations/__init__.py b/news/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/news/migrations/__pycache__/0001_initial.cpython-38.pyc b/news/migrations/__pycache__/0001_initial.cpython-38.pyc new file mode 100644 index 0000000..659cdfb Binary files /dev/null and b/news/migrations/__pycache__/0001_initial.cpython-38.pyc differ diff --git a/news/migrations/__pycache__/0002_auto_20191211_2158.cpython-38.pyc b/news/migrations/__pycache__/0002_auto_20191211_2158.cpython-38.pyc new file mode 100644 index 0000000..bf07143 Binary files /dev/null and b/news/migrations/__pycache__/0002_auto_20191211_2158.cpython-38.pyc differ diff --git a/news/migrations/__pycache__/0003_auto_20191211_2159.cpython-38.pyc b/news/migrations/__pycache__/0003_auto_20191211_2159.cpython-38.pyc new file mode 100644 index 0000000..04cf3c8 Binary files /dev/null and b/news/migrations/__pycache__/0003_auto_20191211_2159.cpython-38.pyc differ diff --git a/news/migrations/__pycache__/0004_auto_20191211_2200.cpython-38.pyc b/news/migrations/__pycache__/0004_auto_20191211_2200.cpython-38.pyc new file mode 100644 index 0000000..a74f8b6 Binary files /dev/null and b/news/migrations/__pycache__/0004_auto_20191211_2200.cpython-38.pyc differ diff --git a/news/migrations/__pycache__/0005_auto_20191211_2222.cpython-38.pyc b/news/migrations/__pycache__/0005_auto_20191211_2222.cpython-38.pyc new file mode 100644 index 0000000..c124ef2 Binary files /dev/null and b/news/migrations/__pycache__/0005_auto_20191211_2222.cpython-38.pyc differ diff --git a/news/migrations/__pycache__/__init__.cpython-38.pyc b/news/migrations/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000..22b20a8 Binary files /dev/null and b/news/migrations/__pycache__/__init__.cpython-38.pyc differ diff --git a/orga/templates/orga/orga_main.html b/orga/templates/orga/orga_main.html index 0e47ba1..13077dd 100644 --- a/orga/templates/orga/orga_main.html +++ b/orga/templates/orga/orga_main.html @@ -1,89 +1,89 @@ {% extends "users/base.html" %} {% block content %} + +

{{request.user.profile.agency.name}}


Organigramm

- - - - - - - - - {%if external|length > 0%} - - {%endif%} - {%if indoor|length > 0%} - - {%endif%} - {%if trainee|length > 0%} - - {%endif%} - - - {% if external|length > 0 %} - - {%endif%} - - {%if indoor|length > 0%} - - {% endif %} - {%if trainee|length > 0%} - - {% endif %} - - -
- {% if leader != None %} - - {% endif %} - -
- -
-
{{ leader.first_name }} {{ leader.last_name }}
- {{ leader.profile.get_func_display }} -
-

Außendienst

Innendienst

Auszubildende

- {% for us in external %} - -
-
- -
-
{{ us.first_name }} {{ us.last_name }}
- {{ us.profile.get_func_display }} -
-
- {% endfor %} -
- {% for us in indoor %} - -
-
- -
-
{{ us.first_name }} {{ us.last_name }}
- {{ us.profile.get_func_display }} -
-
- {% endfor %} -
- {% for us in trainee %} - -
-
- -
-
{{ us.first_name }} {{ us.last_name }}
- {{ us.profile.get_func_display }} -
-
- {% endfor %} -
- - +
+ + + + + + + + + + + + + + {% endblock content %} \ No newline at end of file diff --git a/orga/templates/orga/orga_main_OLD.html b/orga/templates/orga/orga_main_OLD.html new file mode 100644 index 0000000..c89d436 --- /dev/null +++ b/orga/templates/orga/orga_main_OLD.html @@ -0,0 +1,167 @@ +{% extends "users/base.html" %} +{% block content %} + + +
+

{{request.user.profile.agency.name}}

+
+

Organigramm

+ + + + + + + + + {%if external|length > 0%} + + {%endif%} + {%if indoor|length > 0%} + + {%endif%} + {%if trainee|length > 0%} + + {%endif%} + + + {% if external|length > 0 %} + + {%endif%} + + {%if indoor|length > 0%} + + {% endif %} + {%if trainee|length > 0%} + + {% endif %} + + +
+ {% if leader != None %} + + {% endif %} + +
+ +
+
{{ leader.first_name }} {{ leader.last_name }}
+ {{ leader.profile.get_func_display }} +
+

Außendienst

Innendienst

Auszubildende

+ {% for us in external %} + +
+
+ +
+
{{ us.first_name }} {{ us.last_name }}
+ {{ us.profile.get_func_display }} +
+
+ {% endfor %} +
+ {% for us in indoor %} + +
+
+ +
+
{{ us.first_name }} {{ us.last_name }}
+ {{ us.profile.get_func_display }} +
+
+ {% endfor %} +
+ {% for us in trainee %} + +
+
+ +
+
{{ us.first_name }} {{ us.last_name }}
+ {{ us.profile.get_func_display }} +
+
+ {% endfor %} +
+
+
+ + + + + + + + + + + + + +{% endblock content %} \ No newline at end of file diff --git a/standards/migrations/0001_initial.py b/standards/migrations/0001_initial.py new file mode 100644 index 0000000..18128d1 --- /dev/null +++ b/standards/migrations/0001_initial.py @@ -0,0 +1,28 @@ +# Generated by Django 2.2.7 on 2019-12-11 20:58 + +import ckeditor_uploader.fields +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Standards', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(default='', max_length=200)), + ('content', ckeditor_uploader.fields.RichTextUploadingField(blank=True, verbose_name='Inhalt')), + ('created_standard_date', models.DateTimeField(blank=True, default=datetime.datetime(2019, 12, 11, 21, 58, 18, 142447))), + ('published_on', models.DateTimeField(blank=True, default=datetime.datetime(2019, 12, 11, 21, 58, 18, 142447))), + ('last_modified_on', models.DateTimeField(blank=True, default=datetime.datetime(2019, 12, 11, 21, 58, 18, 142447))), + ('public', models.BooleanField(default=False)), + ], + ), + ] diff --git a/standards/migrations/0002_auto_20191211_2158.py b/standards/migrations/0002_auto_20191211_2158.py new file mode 100644 index 0000000..7f48d58 --- /dev/null +++ b/standards/migrations/0002_auto_20191211_2158.py @@ -0,0 +1,51 @@ +# Generated by Django 2.2.7 on 2019-12-11 20:58 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('areas', '0002_auto_20191211_2158'), + ('users', '0001_initial'), + ('tasks', '0001_initial'), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('standards', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='standards', + name='agency', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='users.Agency'), + ), + migrations.AddField( + model_name='standards', + name='area', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='areas.Areas'), + ), + migrations.AddField( + model_name='standards', + name='created_standard_by', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL), + ), + migrations.AddField( + model_name='standards', + name='last_modified_by', + field=models.ForeignKey(default=None, on_delete=django.db.models.deletion.PROTECT, related_name='user_modified_standard', to=settings.AUTH_USER_MODEL), + ), + migrations.AddField( + model_name='standards', + name='published_by', + field=models.ForeignKey(default=None, on_delete=django.db.models.deletion.PROTECT, related_name='user_published_standard', to=settings.AUTH_USER_MODEL), + ), + migrations.AddField( + model_name='standards', + name='task', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='tasks.Tasks'), + ), + ] diff --git a/standards/migrations/0003_auto_20191211_2159.py b/standards/migrations/0003_auto_20191211_2159.py new file mode 100644 index 0000000..c98190a --- /dev/null +++ b/standards/migrations/0003_auto_20191211_2159.py @@ -0,0 +1,29 @@ +# Generated by Django 2.2.7 on 2019-12-11 20:59 + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('standards', '0002_auto_20191211_2158'), + ] + + operations = [ + migrations.AlterField( + model_name='standards', + name='created_standard_date', + field=models.DateTimeField(blank=True, default=datetime.datetime(2019, 12, 11, 21, 59, 30, 814174)), + ), + migrations.AlterField( + model_name='standards', + name='last_modified_on', + field=models.DateTimeField(blank=True, default=datetime.datetime(2019, 12, 11, 21, 59, 30, 814174)), + ), + migrations.AlterField( + model_name='standards', + name='published_on', + field=models.DateTimeField(blank=True, default=datetime.datetime(2019, 12, 11, 21, 59, 30, 814174)), + ), + ] diff --git a/standards/migrations/0004_auto_20191211_2200.py b/standards/migrations/0004_auto_20191211_2200.py new file mode 100644 index 0000000..1f4ef94 --- /dev/null +++ b/standards/migrations/0004_auto_20191211_2200.py @@ -0,0 +1,29 @@ +# Generated by Django 2.2.7 on 2019-12-11 21:00 + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('standards', '0003_auto_20191211_2159'), + ] + + operations = [ + migrations.AlterField( + model_name='standards', + name='created_standard_date', + field=models.DateTimeField(blank=True, default=datetime.datetime(2019, 12, 11, 22, 0, 29, 104828)), + ), + migrations.AlterField( + model_name='standards', + name='last_modified_on', + field=models.DateTimeField(blank=True, default=datetime.datetime(2019, 12, 11, 22, 0, 29, 104828)), + ), + migrations.AlterField( + model_name='standards', + name='published_on', + field=models.DateTimeField(blank=True, default=datetime.datetime(2019, 12, 11, 22, 0, 29, 104828)), + ), + ] diff --git a/standards/migrations/0005_auto_20191211_2222.py b/standards/migrations/0005_auto_20191211_2222.py new file mode 100644 index 0000000..220a9ce --- /dev/null +++ b/standards/migrations/0005_auto_20191211_2222.py @@ -0,0 +1,29 @@ +# Generated by Django 2.2.7 on 2019-12-11 21:22 + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('standards', '0004_auto_20191211_2200'), + ] + + operations = [ + migrations.AlterField( + model_name='standards', + name='created_standard_date', + field=models.DateTimeField(blank=True, default=datetime.datetime(2019, 12, 11, 22, 22, 22, 193586)), + ), + migrations.AlterField( + model_name='standards', + name='last_modified_on', + field=models.DateTimeField(blank=True, default=datetime.datetime(2019, 12, 11, 22, 22, 22, 193586)), + ), + migrations.AlterField( + model_name='standards', + name='published_on', + field=models.DateTimeField(blank=True, default=datetime.datetime(2019, 12, 11, 22, 22, 22, 193586)), + ), + ] diff --git a/standards/migrations/__init__.py b/standards/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/standards/migrations/__pycache__/0001_initial.cpython-38.pyc b/standards/migrations/__pycache__/0001_initial.cpython-38.pyc new file mode 100644 index 0000000..ead38f3 Binary files /dev/null and b/standards/migrations/__pycache__/0001_initial.cpython-38.pyc differ diff --git a/standards/migrations/__pycache__/0002_auto_20191211_2158.cpython-38.pyc b/standards/migrations/__pycache__/0002_auto_20191211_2158.cpython-38.pyc new file mode 100644 index 0000000..e657aa3 Binary files /dev/null and b/standards/migrations/__pycache__/0002_auto_20191211_2158.cpython-38.pyc differ diff --git a/standards/migrations/__pycache__/0003_auto_20191211_2159.cpython-38.pyc b/standards/migrations/__pycache__/0003_auto_20191211_2159.cpython-38.pyc new file mode 100644 index 0000000..710fcc5 Binary files /dev/null and b/standards/migrations/__pycache__/0003_auto_20191211_2159.cpython-38.pyc differ diff --git a/standards/migrations/__pycache__/0004_auto_20191211_2200.cpython-38.pyc b/standards/migrations/__pycache__/0004_auto_20191211_2200.cpython-38.pyc new file mode 100644 index 0000000..9e82f0c Binary files /dev/null and b/standards/migrations/__pycache__/0004_auto_20191211_2200.cpython-38.pyc differ diff --git a/standards/migrations/__pycache__/0005_auto_20191211_2222.cpython-38.pyc b/standards/migrations/__pycache__/0005_auto_20191211_2222.cpython-38.pyc new file mode 100644 index 0000000..90ff658 Binary files /dev/null and b/standards/migrations/__pycache__/0005_auto_20191211_2222.cpython-38.pyc differ diff --git a/standards/migrations/__pycache__/__init__.cpython-38.pyc b/standards/migrations/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000..e82ea6c Binary files /dev/null and b/standards/migrations/__pycache__/__init__.cpython-38.pyc differ diff --git a/tasks/migrations/0001_initial.py b/tasks/migrations/0001_initial.py new file mode 100644 index 0000000..75e9148 --- /dev/null +++ b/tasks/migrations/0001_initial.py @@ -0,0 +1,25 @@ +# Generated by Django 2.2.7 on 2019-12-11 20:58 + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Tasks', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(default='', max_length=200)), + ('desc', models.TextField(blank=True, max_length=3000)), + ('created_area_date', models.DateField(blank=True, default=datetime.date.today)), + ('visible', models.BooleanField(default=True)), + ], + ), + ] diff --git a/tasks/migrations/0002_auto_20191211_2158.py b/tasks/migrations/0002_auto_20191211_2158.py new file mode 100644 index 0000000..83f0ed1 --- /dev/null +++ b/tasks/migrations/0002_auto_20191211_2158.py @@ -0,0 +1,40 @@ +# Generated by Django 2.2.7 on 2019-12-11 20:58 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('areas', '0002_auto_20191211_2158'), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('users', '0001_initial'), + ('tasks', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='tasks', + name='agency', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='users.Agency'), + ), + migrations.AddField( + model_name='tasks', + name='area', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='areas.Areas'), + ), + migrations.AddField( + model_name='tasks', + name='created_area_by', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL), + ), + migrations.AddField( + model_name='tasks', + name='usersfield', + field=models.ManyToManyField(blank=True, related_name='users_in_task', to=settings.AUTH_USER_MODEL), + ), + ] diff --git a/tasks/migrations/__init__.py b/tasks/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tasks/migrations/__pycache__/0001_initial.cpython-38.pyc b/tasks/migrations/__pycache__/0001_initial.cpython-38.pyc new file mode 100644 index 0000000..bcaadac Binary files /dev/null and b/tasks/migrations/__pycache__/0001_initial.cpython-38.pyc differ diff --git a/tasks/migrations/__pycache__/0002_auto_20191211_2158.cpython-38.pyc b/tasks/migrations/__pycache__/0002_auto_20191211_2158.cpython-38.pyc new file mode 100644 index 0000000..0f75c54 Binary files /dev/null and b/tasks/migrations/__pycache__/0002_auto_20191211_2158.cpython-38.pyc differ diff --git a/tasks/migrations/__pycache__/__init__.cpython-38.pyc b/tasks/migrations/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000..e20bbac Binary files /dev/null and b/tasks/migrations/__pycache__/__init__.cpython-38.pyc differ diff --git a/users/__pycache__/models.cpython-38.pyc b/users/__pycache__/models.cpython-38.pyc index 0ec8d15..73aaa63 100644 Binary files a/users/__pycache__/models.cpython-38.pyc and b/users/__pycache__/models.cpython-38.pyc differ diff --git a/users/__pycache__/signals.cpython-38.pyc b/users/__pycache__/signals.cpython-38.pyc index 8eaf08a..509f19d 100644 Binary files a/users/__pycache__/signals.cpython-38.pyc and b/users/__pycache__/signals.cpython-38.pyc differ diff --git a/users/__pycache__/urls.cpython-38.pyc b/users/__pycache__/urls.cpython-38.pyc index 0daf14b..25c1847 100644 Binary files a/users/__pycache__/urls.cpython-38.pyc and b/users/__pycache__/urls.cpython-38.pyc differ diff --git a/users/__pycache__/usersforms.cpython-38.pyc b/users/__pycache__/usersforms.cpython-38.pyc index 9f87820..5c6ab62 100644 Binary files a/users/__pycache__/usersforms.cpython-38.pyc and b/users/__pycache__/usersforms.cpython-38.pyc differ diff --git a/users/__pycache__/views.cpython-38.pyc b/users/__pycache__/views.cpython-38.pyc index 3e4f567..b96a4df 100644 Binary files a/users/__pycache__/views.cpython-38.pyc and b/users/__pycache__/views.cpython-38.pyc differ diff --git a/users/migrations/0001_initial.py b/users/migrations/0001_initial.py new file mode 100644 index 0000000..daa3101 --- /dev/null +++ b/users/migrations/0001_initial.py @@ -0,0 +1,56 @@ +# Generated by Django 2.2.7 on 2019-12-11 20:58 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('tasks', '0001_initial'), + ] + + operations = [ + migrations.CreateModel( + name='Agency', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(default='', max_length=200)), + ('inhaber', models.CharField(blank=True, default='', max_length=200)), + ('street', models.CharField(blank=True, default='', max_length=200)), + ('city', models.CharField(blank=True, default='', max_length=200)), + ('email', models.EmailField(blank=True, default='', max_length=254)), + ('phone', models.CharField(blank=True, default='', max_length=20)), + ('agencypic', models.ImageField(blank=True, default='default.jpg', upload_to='agencymain')), + ], + ), + migrations.CreateModel( + name='Profile', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('phoneland', models.CharField(blank=True, max_length=60)), + ('phonemobile', models.CharField(blank=True, max_length=60)), + ('func', models.CharField(choices=[('lead', 'Agenturleitung'), ('external', 'Außendienst'), ('indoor', 'Innendienst'), ('trainee', 'Azubi')], default='', max_length=50)), + ('image', models.ImageField(blank=True, default='default.jpg', upload_to='userprofilepics')), + ('compfunc', models.CharField(blank=True, max_length=60)), + ('agency', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='users.Agency')), + ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + options={ + 'permissions': [('agency_change', 'Agenturinformationen verändern'), ('users_usermanagement', 'Benutzer bearbeiten'), ('areas_management', 'Bereiche bearbeiten'), ('tasks_management', 'Aufgabenbereiche bearbeiten'), ('standard_management', 'Standards bearbeiten und freischalten'), ('news_management', 'News bearbeiten und veröffentlichen')], + }, + ), + migrations.CreateModel( + name='Prio', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('prio', models.IntegerField(default=0)), + ('task', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='tasks.Tasks')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + ), + ] diff --git a/users/migrations/0002_profile_parent.py b/users/migrations/0002_profile_parent.py new file mode 100644 index 0000000..0151958 --- /dev/null +++ b/users/migrations/0002_profile_parent.py @@ -0,0 +1,21 @@ +# Generated by Django 2.2.7 on 2019-12-11 20:59 + +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), + ('users', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='profile', + name='parent', + field=models.ForeignKey(blank=True, default=None, on_delete=django.db.models.deletion.CASCADE, related_name='parent_user', to=settings.AUTH_USER_MODEL), + ), + ] diff --git a/users/migrations/0003_auto_20191211_2200.py b/users/migrations/0003_auto_20191211_2200.py new file mode 100644 index 0000000..0820634 --- /dev/null +++ b/users/migrations/0003_auto_20191211_2200.py @@ -0,0 +1,20 @@ +# Generated by Django 2.2.7 on 2019-12-11 21:00 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('users', '0002_profile_parent'), + ] + + operations = [ + migrations.AlterField( + model_name='profile', + name='parent', + field=models.ForeignKey(blank=True, on_delete=django.db.models.deletion.CASCADE, related_name='parent_user', to=settings.AUTH_USER_MODEL), + ), + ] diff --git a/users/migrations/0004_auto_20191211_2222.py b/users/migrations/0004_auto_20191211_2222.py new file mode 100644 index 0000000..e6f8149 --- /dev/null +++ b/users/migrations/0004_auto_20191211_2222.py @@ -0,0 +1,20 @@ +# Generated by Django 2.2.7 on 2019-12-11 21:22 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('users', '0003_auto_20191211_2200'), + ] + + operations = [ + migrations.AlterField( + model_name='profile', + name='parent', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='parent_user', to=settings.AUTH_USER_MODEL), + ), + ] diff --git a/users/migrations/__init__.py b/users/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/users/migrations/__pycache__/0001_initial.cpython-38.pyc b/users/migrations/__pycache__/0001_initial.cpython-38.pyc new file mode 100644 index 0000000..8708d32 Binary files /dev/null and b/users/migrations/__pycache__/0001_initial.cpython-38.pyc differ diff --git a/users/migrations/__pycache__/0002_profile_parent.cpython-38.pyc b/users/migrations/__pycache__/0002_profile_parent.cpython-38.pyc new file mode 100644 index 0000000..edc86d4 Binary files /dev/null and b/users/migrations/__pycache__/0002_profile_parent.cpython-38.pyc differ diff --git a/users/migrations/__pycache__/0003_auto_20191211_2200.cpython-38.pyc b/users/migrations/__pycache__/0003_auto_20191211_2200.cpython-38.pyc new file mode 100644 index 0000000..a1d2d3a Binary files /dev/null and b/users/migrations/__pycache__/0003_auto_20191211_2200.cpython-38.pyc differ diff --git a/users/migrations/__pycache__/0004_auto_20191211_2222.cpython-38.pyc b/users/migrations/__pycache__/0004_auto_20191211_2222.cpython-38.pyc new file mode 100644 index 0000000..ad42da4 Binary files /dev/null and b/users/migrations/__pycache__/0004_auto_20191211_2222.cpython-38.pyc differ diff --git a/users/migrations/__pycache__/__init__.cpython-38.pyc b/users/migrations/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000..04d680f Binary files /dev/null and b/users/migrations/__pycache__/__init__.cpython-38.pyc differ diff --git a/users/models.py b/users/models.py index e90880a..449fc25 100644 --- a/users/models.py +++ b/users/models.py @@ -71,13 +71,16 @@ class Profile(models.Model): # Wenn der User gelöscht wird, wird auch das Profil gelöscht user = models.OneToOneField(User, on_delete=models.CASCADE) + parent = models.ForeignKey(User, on_delete=models.CASCADE, related_name='parent_user') phoneland = models.CharField(max_length=60, blank=True) phonemobile = models.CharField(max_length=60, blank=True) - func = models.CharField(choices=agency_task, default="lead", max_length=50) + func = models.CharField(choices=agency_task, default="", max_length=50) # Wenn dieses Profil gelöscht wird, wird NICHT die Agency geslöscht agency = models.ForeignKey(Agency, on_delete=models.PROTECT) image = models.ImageField(default='default.jpg', upload_to='userprofilepics', blank=True) compfunc = models.CharField(max_length=60, blank=True) + + def __str__(self): return f'{self.user.last_name}' diff --git a/users/signals.py b/users/signals.py index 4e26c1e..a7c37ac 100644 --- a/users/signals.py +++ b/users/signals.py @@ -8,7 +8,7 @@ from django.contrib.auth.models import Permission @receiver(post_save, sender=User) def create_profile(sender, instance, created, **kwargs): if created: - Profile.objects.create(user=instance, agency=instance.agency) + Profile.objects.create(user=instance, agency=instance.agency, parent=instance.parent) ''' Wenn ein neuer Nutzer angelegt wird und dies der erste der Agentur ist, @@ -20,10 +20,11 @@ def create_profile(sender, instance, created, **kwargs): temprof = Profile for ele in temprof._meta.permissions: tempperm = Permission.objects.get(codename=ele[0]) - tempuser.user_permissions.add(tempperm) + tempuser.user_permissions.add(tempperm) + tempuser.profile.func = 'lead' tempuser.save() - @receiver(post_save, sender=User) -def save_profile(sender, instance, **kwargs): - instance.profile.save() +def save_profile(sender, instance, **kwargs): + print("PROF SAVED") + instance.profile.save() \ No newline at end of file diff --git a/users/templates/users/base.html b/users/templates/users/base.html index e9a02d3..72f2ef6 100644 --- a/users/templates/users/base.html +++ b/users/templates/users/base.html @@ -28,6 +28,8 @@ + + @@ -316,7 +318,6 @@ - @@ -333,14 +334,15 @@ searchstring: searchstring }, success: function( data ) - { + { $("#searchres").empty(); - for (var i = 0; i < data['res'].length; i++) + for (var i = 0; i < data['standards'].length; i++) { - id = data['res'][i]['id']; - name = data['res'][i]['name'] + " | " + data['res'][i]['content']; - $("#searchres").append(''); - } + id = data['standards'][i]['id']; + name = data['standards'][i]['name'] + " | " + data['standards'][i]['content']; + console.log(name); + $("#searchres").append(''); + } } }); } diff --git a/users/templates/users/profile.html b/users/templates/users/profile.html index f20d890..8ce322d 100644 --- a/users/templates/users/profile.html +++ b/users/templates/users/profile.html @@ -48,12 +48,13 @@ Profil bearbeiten - {{ u_form|crispy }} + {{ u_form|crispy }} + Agenturrelevante Daten werden in der Benutzerverwaltung verändert.
  - Abbrechen + Abbrechen
diff --git a/users/templates/users/profile_update.html b/users/templates/users/profile_update.html index 4c778a7..c950b10 100644 --- a/users/templates/users/profile_update.html +++ b/users/templates/users/profile_update.html @@ -3,37 +3,37 @@ {% block content %}
- +
- +
Name

- {{ object.user.first_name}} {{ object.user.last_name }} + {{ prof_user.first_name}} {{ prof_user.last_name }}

E-Mail

- {{ object.user.email }} + {{ prof_user.email }}

Agenturfunktion

- {{ object.get_func_display }} + {{ prof_user.profile.get_func_display }}

Tätigkeit

- {{ object.compfunc }} + {{ prof_user.profile.compfunc }}

Fesetznetz

- {{ object.phoneland }} + {{ prof_user.profile.phoneland }}

Mobil

- {{ object.phonemobile }} + {{ prof_user.profile.phonemobile }}

@@ -48,8 +48,22 @@ Profil bearbeiten - {{ form|crispy }} + {{ profileform_form|crispy }} + Übergeordneter Mitarbeiter: {{prof_user.profile.parent.first_name}} {{prof_user.profile.parent.last_name}} +
+ +
+ + +
+ + {% for us in possible_users %} + + {% endfor %} + + +

  @@ -58,4 +72,51 @@
+ {% endblock content %} \ No newline at end of file diff --git a/users/templates/users/profile_update_DONTKNOW.html b/users/templates/users/profile_update_DONTKNOW.html new file mode 100644 index 0000000..4489168 --- /dev/null +++ b/users/templates/users/profile_update_DONTKNOW.html @@ -0,0 +1,61 @@ +{% extends "users/base.html" %} +{% load crispy_forms_tags %} +{% block content %} +
+
+ +
+ +
+
+
+
Name
+

+ {{ user.first_name}} {{ user.last_name }} +

+
E-Mail
+

+ {{ user.email }} +

+
Agenturfunktion
+

+ {{ get_func_display }} +

+
+
+
Tätigkeit
+

+ {{ compfunc }} +

+
Fesetznetz
+

+ {{ phoneland }} +

+
Mobil
+

+ {{ phonemobile }} +

+
+
+
+
+ +
+
+ {% csrf_token %} +
+ + Profil bearbeiten + + + {{ profileform_form|crispy }} +
+
+
+   + Abbrechen +
+
+
+
+{% endblock content %} \ No newline at end of file diff --git a/users/urls.py b/users/urls.py index d12acf5..ef38cc3 100644 --- a/users/urls.py +++ b/users/urls.py @@ -1,6 +1,7 @@ from django.urls import path from django.contrib.auth import views as auth_views -from .views import UsersCreateUser, UsersManagement, UserManagementUpdateForm, ProfileUpdateView, ProfileDeleteView, AgencyUpdateView, UsersPermUpdateView +#from .views import UsersCreateUser, UsersManagement, UserManagementUpdateForm, ProfileUpdateView, ProfileDeleteView, AgencyUpdateView, UsersPermUpdateView +from .views import UsersCreateUser, UsersManagement, UserManagementUpdateForm, ProfileDeleteView, AgencyUpdateView, UsersPermUpdateView from . import views from django.contrib.auth.decorators import login_required, permission_required @@ -18,7 +19,8 @@ urlpatterns = [ path('usersman/', permission_required('users.users_usermanagement')(UsersManagement.as_view(template_name="users/users_management.html")), name='users-management'), path('usersman/adduser/', permission_required('users.users_usermanagement')(UsersCreateUser.as_view(template_name="users/users_adduser.html")), name='users-adduser'), path('usersman/profile/', views.profile, name='users-profile'), - path('usersman//', permission_required('users.users_usermanagement')(ProfileUpdateView.as_view()), name='users-update'), + path('usersman//', views.ProfileUpdateView, name='users-update'), + #path('usersman//', permission_required('users.users_usermanagement')(ProfileUpdateView.as_view()), name='users-update'), path('usersman//perms', permission_required('users.users_usermanagement')(UsersPermUpdateView.as_view()), name='users-perm-update'), path('usersman//delete', permission_required('users.users_usermanagement')(ProfileDeleteView.as_view()), name='users-delete'), path('agencyinfo/', views.agency, name='agencyinfo'), @@ -28,7 +30,9 @@ urlpatterns = [ path('areataskupdate//', views.UsersAreaTaskUpdate, name="users-areataskupdate"), path('globalsearch/', views.GlobalSearch, name="globalsearch"), path('standardrout/', views.searchStandardRouter, name="standardrouter"), - path('support/', views.support, name="supportda") + path('support/', views.support, name="supportda"), + path('setuserparent/', views.setuserparent, name="users-setuserparent") + ] diff --git a/users/usersforms.py b/users/usersforms.py index 2929092..49afb06 100644 --- a/users/usersforms.py +++ b/users/usersforms.py @@ -37,6 +37,15 @@ class UsersAddProfileForm(forms.ModelForm): } fields = ['phoneland','phonemobile','func', 'compfunc', 'image'] +#class UsersAddProfileFormParents(forms.ModelForm): + + +# def __init__(self, user, *args, **kwargs): +# super().__init__(*args, **kwargs) +# possibleUsers = Profile + + + # Formular zum hinzufügen neuer Agentur-Mitglieder class AgencyUpdateForm(forms.ModelForm): diff --git a/users/views.py b/users/views.py index ac29b46..9313115 100644 --- a/users/views.py +++ b/users/views.py @@ -114,6 +114,7 @@ class UsersCreateUser(LoginRequiredMixin, CreateView): messages.success(self.request, f'Benutzer angelegt!') # SAVE OBJECTS TO SIGNALE! form.instance.agency = self.request.user.profile.agency + form.instance.parent = self.request.user newuser_name = form.cleaned_data.get('first_name') + " " + form.cleaned_data.get('last_name') msg_html = render_to_string('users/newusers_email.html', {'username': newuser_name}) # E-Mail für Passwort-Setzung! @@ -205,6 +206,7 @@ class UsersPermUpdateView(LoginRequiredMixin, View): # Benutzerprofil wird aktualisiert +''' class ProfileUpdateView(LoginRequiredMixin, UpdateView): model = Profile form_class = UsersAddProfileForm @@ -216,6 +218,72 @@ class ProfileUpdateView(LoginRequiredMixin, UpdateView): context['active_link'] = 'usersmanagement' return context +''' +@login_required +def ProfileUpdateView(request, pk): + prof_user = User.objects.get(profile__pk=pk) + + if request.method == 'POST': + profileform_form = UsersAddProfileForm(request.POST, instance=prof_user.profile) + #profileform_parents = UsersAddProfileFormParents(request.POST, instance=request.user) + + if profileform_form.is_valid(): + + print(profileform_form) + + profileform_form.save() + #prename = request.user.first_name + #name = request.user.last_name + #messages.success(request, f'Daten für {prename} {name} aktualisiert!') + # Daten neu laden und nicht die "Mächten sie die Daten speichern...?" + return redirect('users-management') + + else: + # Form in Klammern sind die aktuellen Daten :) + profileform_form = UsersAddProfileForm(instance=prof_user.profile) + possible_users = User.objects.filter(profile__agency__pk=prof_user.profile.agency.pk) + + + context = { + 'prof_user' : prof_user, + 'profileform_form' : profileform_form, + 'active_link' : 'usersmanagement', + 'possible_users' : possible_users + } + + + return render(request, 'users/profile_update.html', context) + +''' + + Set users Parent by AJAX + +''' +@login_required +def setuserparent(request): + if request.method == 'GET': + + if request.GET['action'] == 'adduserp': + + userid = request.GET['objectid'] + toadd = request.GET['userid'] + toadd_user = User.objects.get(pk=toadd) + workinguser = User.objects.get(pk=userid) + username_clean = toadd_user.first_name + " " + toadd_user.last_name + workinguser.profile.parent = toadd_user + workinguser.save() + # Getting Remaining-Users + possible_users = User.objects.filter(profile__agency__pk=request.user.profile.agency.pk) + possible_users_js = list(possible_users.values()) + # Cleaned out, that only data is neede will send to the side (first/last-name and id) + final_possible_users = {} + for ele in possible_users_js: + final_possible_users.update({'first_name':ele['first_name'],'last_name':ele['last_name'],'id':ele['id']}) + # Counter for remaining users to show/hide "Keine Mitarbeiter"-Div + return JsonResponse({'userid' : userid, 'username_clean' : username_clean, 'remaining_users':possible_users_js}) + else: + return HttpResponse("Request method is not a GET") + ''' # DELETE A USER @@ -342,10 +410,10 @@ def GlobalSearch(request): ag = request.user.profile.agency.pk results = Standards.objects.filter(agency__pk=ag, public=True).filter(name__icontains=searchfor) | Standards.objects.filter(agency__pk=ag, public=True).filter(content__contains=searchfor) | Standards.objects.filter(agency__pk=ag, public=True).filter(area__name__icontains=searchfor) | Standards.objects.filter(agency__pk=ag, public=True).filter(task__name__icontains=searchfor) | Standards.objects.filter(agency__pk=ag, public=True).filter(created_standard_by__last_name__icontains=searchfor)|Standards.objects.filter(agency__pk=ag, public=True).filter(created_standard_by__first_name__icontains=searchfor) - results = list(results) - final_results = [] + results_st = list(results) + final_results_st = [] i = 0 - for ele in results: + for ele in results_st: tempele = {} tempele['id'] = ele.pk tempele['name'] = ele.name @@ -357,9 +425,14 @@ def GlobalSearch(request): tempele['last_name_mod'] = ele.last_modified_by.last_name tempele['created'] = formats.date_format(ele.created_standard_date, "d.m.Y") tempele['last_modified_on'] = formats.date_format(ele.last_modified_on, "d.m.Y") - final_results.append(tempele) + final_results_st.append(tempele) i += 1 - return JsonResponse({'res' : final_results}) + + + + + + return JsonResponse({'standards' : final_results_st}) else: return HttpResponse("Request method is not a GET")