diff --git a/cloud/__pycache__/models.cpython-38.pyc b/cloud/__pycache__/models.cpython-38.pyc
index 8da8345..1d819fd 100644
Binary files a/cloud/__pycache__/models.cpython-38.pyc and b/cloud/__pycache__/models.cpython-38.pyc differ
diff --git a/cloud/models.py b/cloud/models.py
index 8df113e..12cf7a5 100644
--- a/cloud/models.py
+++ b/cloud/models.py
@@ -8,7 +8,7 @@ from django.utils import timezone
def user_directory_path(instance, filename):
# file will be uploaded to MEDIA_ROOT/agency_/files//
- return 'agency_{0}/files/{1}/{2}'.format(instance.agency.pk, instance.subdir, filename)
+ return 'agencydata/agency_{0}/files/{1}/{2}'.format(instance.agency.pk, instance.subdir, filename)
class Data(models.Model):
diff --git a/media/agency_2/FeedbackWPU10.txt b/media/agency_2/FeedbackWPU10.txt
deleted file mode 100644
index bebf28b..0000000
--- a/media/agency_2/FeedbackWPU10.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-3D-Druck
-+ Gute Struktur
-+ Shortucts
-+ Planemodellierung - Als VIdeo noch ein
-
-HTML
-- Erweiterten Kurs
-
diff --git a/media/agency_2/subdir1/subdir2/FeedbackWPU10.txt b/media/agency_2/subdir1/subdir2/FeedbackWPU10.txt
deleted file mode 100644
index bebf28b..0000000
--- a/media/agency_2/subdir1/subdir2/FeedbackWPU10.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-3D-Druck
-+ Gute Struktur
-+ Shortucts
-+ Planemodellierung - Als VIdeo noch ein
-
-HTML
-- Erweiterten Kurs
-
diff --git a/media/agency_2/subdir1/subdir2/FeedbackWPU10_Ry9eQsX.txt b/media/agency_2/subdir1/subdir2/FeedbackWPU10_Ry9eQsX.txt
deleted file mode 100644
index bebf28b..0000000
--- a/media/agency_2/subdir1/subdir2/FeedbackWPU10_Ry9eQsX.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-3D-Druck
-+ Gute Struktur
-+ Shortucts
-+ Planemodellierung - Als VIdeo noch ein
-
-HTML
-- Erweiterten Kurs
-
diff --git a/media/userprofilepics/default.jpg b/media/userprofilepics/default.jpg
index 8648915..d471740 100644
Binary files a/media/userprofilepics/default.jpg and b/media/userprofilepics/default.jpg differ
diff --git a/news/__pycache__/views.cpython-38.pyc b/news/__pycache__/views.cpython-38.pyc
index 8b0d744..f8fd71b 100644
Binary files a/news/__pycache__/views.cpython-38.pyc and b/news/__pycache__/views.cpython-38.pyc differ
diff --git a/news/templates/news/news_management.html b/news/templates/news/news_management.html
index ed9b4c2..7a08a08 100644
--- a/news/templates/news/news_management.html
+++ b/news/templates/news/news_management.html
@@ -9,7 +9,7 @@
diff --git a/news/views.py b/news/views.py
index bc261fb..c9c408e 100644
--- a/news/views.py
+++ b/news/views.py
@@ -21,7 +21,7 @@ class NewsManagement(LoginRequiredMixin, ListView):
news = News.objects.filter(agency__pk=self.request.user.profile.agency.pk).filter(go_online_on__lt=filterdate).filter(go_offline_on__gt=filterdate).order_by('-created_date')
news_arch = News.objects.filter(agency__pk=self.request.user.profile.agency.pk).filter(go_offline_on__lt=filterdate).order_by('-created_date')
context = super().get_context_data(**kwargs)
- context.update({'active_link' : 'newsmanagement', 'news' : news, 'news_arch' : news_arch})
+ context.update({'active_link' : 'dashboard', 'news' : news, 'news_arch' : news_arch})
return context
'''
class NewsAddNews(LoginRequiredMixin, CreateView):
@@ -57,7 +57,7 @@ def NewsAdd(request):
new_news.save()
messages.success(request, f'News gespeichert!')
- return redirect('news-management')
+ return redirect('users-dashboard')
else:
normalForm = NewsAddNews(instance=request.user)
@@ -67,7 +67,7 @@ def NewsAdd(request):
context = {
'normalForm' : normalForm,
#'editorForm' : editorForm,
- 'active_link' : 'newsmanagement'
+ 'active_link' : 'dashboard'
}
return render(request, 'news/news_addnews.html', context)
@@ -98,7 +98,7 @@ def NewsUpdate(request, id):
context = {
'normalForm' : normalForm,
#'editorForm' : editorForm,
- 'active_link' : 'newsmanagement',
+ 'active_link' : 'dashboard',
'news_id' : news.pk,
}
return render(request, 'news/news_update.html', context)
@@ -118,7 +118,7 @@ class NewsDeleteView(LoginRequiredMixin, DeleteView):
def NewsSingle(request, pk):
news = News.objects.get(pk=pk)
context = {
- 'active_link':'newsmanagement',
+ 'active_link':'dashboard',
'news' : news
}
diff --git a/orga/__pycache__/views.cpython-38.pyc b/orga/__pycache__/views.cpython-38.pyc
index f1cf44f..dc9bf9d 100644
Binary files a/orga/__pycache__/views.cpython-38.pyc and b/orga/__pycache__/views.cpython-38.pyc differ
diff --git a/orga/views.py b/orga/views.py
index e066fce..2e97410 100644
--- a/orga/views.py
+++ b/orga/views.py
@@ -17,9 +17,12 @@ def mainorga(request):
# Check, if parented users are invisible. Remove them and give user an info!
for ele in nonvisibleuser:
for vis in agencyuser:
- if vis.profile.parent.profile.pk == ele.pk:
- agencyuser.remove(vis)
- invisible_users += 1
+ try:
+ if vis.profile.parent.profile.pk == ele.pk:
+ agencyuser.remove(vis)
+ invisible_users += 1
+ except:
+ pass
context = {
'active_link' : 'orga',
diff --git a/standards/templatetags/__pycache__/counter_tag.cpython-38.pyc b/standards/templatetags/__pycache__/counter_tag.cpython-38.pyc
index 89b03f7..321d86b 100644
Binary files a/standards/templatetags/__pycache__/counter_tag.cpython-38.pyc and b/standards/templatetags/__pycache__/counter_tag.cpython-38.pyc differ
diff --git a/standards/templatetags/counter_tag.py b/standards/templatetags/counter_tag.py
index 6cad104..f4884d3 100644
--- a/standards/templatetags/counter_tag.py
+++ b/standards/templatetags/counter_tag.py
@@ -1,5 +1,5 @@
from django import template
-from django.contrib.auth.models import Group
+from django.contrib.auth.models import Group, User
from users.models import AgencyGroup
register = template.Library()
@@ -22,7 +22,7 @@ def incvar():
b += 1
return ''
-
+
@register.filter(name='has_group')
def has_group(user, group_name):
group = Group.objects.get(name=group_name)
@@ -45,6 +45,11 @@ def usergperm(user, perm):
if user.has_perm('users.'+perm):
stat = True
return stat
+
+@register.filter(name="useringroupbyid")
+def is_member(id, groupname):
+ usertocheck = User.objects.get(pk=id)
+ return usertocheck.groups.filter(name=groupname).exists()
'''
class Counter:
count = 0
diff --git a/users/__pycache__/admin.cpython-38.pyc b/users/__pycache__/admin.cpython-38.pyc
index 9455fd4..2b0a3e7 100644
Binary files a/users/__pycache__/admin.cpython-38.pyc and b/users/__pycache__/admin.cpython-38.pyc differ
diff --git a/users/__pycache__/models.cpython-38.pyc b/users/__pycache__/models.cpython-38.pyc
index 9784006..99b664c 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 b4d6f09..3a5da63 100644
Binary files a/users/__pycache__/signals.cpython-38.pyc and b/users/__pycache__/signals.cpython-38.pyc differ
diff --git a/users/__pycache__/views.cpython-38.pyc b/users/__pycache__/views.cpython-38.pyc
index c13658f..253c642 100644
Binary files a/users/__pycache__/views.cpython-38.pyc and b/users/__pycache__/views.cpython-38.pyc differ
diff --git a/users/admin.py b/users/admin.py
index 482ccba..e12db48 100644
--- a/users/admin.py
+++ b/users/admin.py
@@ -1,10 +1,11 @@
from django.contrib import admin
-from .models import Profile, Agency, AgencyGroup
+from .models import Profile, Agency, AgencyGroup, AgencyJob
from .priomodel import Prio
from django.contrib.auth.models import Permission
admin.site.register(Permission)
admin.site.register(Profile)
admin.site.register(Agency)
admin.site.register(AgencyGroup)
+admin.site.register(AgencyJob)
admin.site.register(Prio)
diff --git a/users/models.py b/users/models.py
index 97208ec..95aca19 100644
--- a/users/models.py
+++ b/users/models.py
@@ -1,5 +1,5 @@
from django.db import models
-from django.contrib.auth.models import User, AbstractBaseUser
+from django.contrib.auth.models import User, AbstractUser
from django.conf import settings
from PIL import Image
from django.utils import timezone
@@ -17,12 +17,11 @@ User._meta.get_field('last_name').blank = False
# PATH FOR AGENCYPIC
def picturepath_agency(instance, filename):
# file will be uploaded to MEDIA_ROOT/agency_//
- return 'agency_{0}/agencystats/{1}'.format(instance.pk, filename)
+ return 'agencydata/agency_{0}/agencystats/{1}'.format(instance.pk, filename)
# PATH FOR PROFILEPICS
def picturepath_user(instance, filename):
- # file will be uploaded to MEDIA_ROOT/agency_//
- return 'agency_{0}/agencystats/profilepics/{1}'.format(instance.pk, filename)
+ return 'agencydata/agency_{0}/agencystats/profilepics/{1}'.format(instance.agency.pk, filename)
'''
Class Agency
@@ -101,7 +100,7 @@ Klasse für die Zusatzinfos eines Nutzers.
class Profile(models.Model):
# Wenn der User gelöscht wird, wird auch das Profil gelöscht
- user = models.OneToOneField(User, on_delete=models.CASCADE)
+ user = models.OneToOneField(User, on_delete=models.CASCADE, blank=True, null=True, default=None)
parent = models.ForeignKey(User, on_delete=models.PROTECT, blank=True, null=True, related_name='parent_user')
phoneland = models.CharField(max_length=60, blank=True)
phonemobile = models.CharField(max_length=60, blank=True)
@@ -165,11 +164,11 @@ class Profile(models.Model):
'''
@property
def get_photo_url(self):
- if self.image and hasattr(self.image, 'url'):
- return self.image.url
- else:
- return "/media/userprofilepics/default.jpg"
-
+ if self.image and hasattr(self.image, 'url'):
+ return self.image.url
+ else:
+ return "/media/default.jpg"
+
@@ -184,9 +183,8 @@ class AgencyGroup(models.Model):
agency = models.ForeignKey(Agency, on_delete=models.PROTECT)
agencygroupname = models.CharField(max_length=60, blank=True)
savefordel = models.BooleanField(default=False)
-
- # PERMISSIONS - Über alle Modelle hinweg, in der url.py wird dann die route verhindert!
-
+ is_admin = models.BooleanField(default=False)
+
class Meta:
permissions = [
@@ -199,4 +197,4 @@ class AgencyGroup(models.Model):
('modulenews', 'News bearbeiten und veröffentlichen'),
('modulesconfig', 'Module verwalten'),
('modulequicklinks', 'Quicklinks bearbeiten')
- ]
+ ]
\ No newline at end of file
diff --git a/users/signals.py b/users/signals.py
index 6f0bc10..7e6dc92 100644
--- a/users/signals.py
+++ b/users/signals.py
@@ -8,14 +8,15 @@ from notificsys.models import UserNotification
from django.core.mail import send_mail
from django.template.loader import render_to_string
# SIGNALS FOR USER
+'''
@receiver(post_save, sender=User)
-def create_profile(sender, instance, created, **kwargs):
+def create_profile(sender, instance, created, **kwargs):
+ print(instance)
if created:
Profile.objects.create(user=instance, agency=instance.agency, parent=instance.parent)
- '''
- Wenn ein neuer Nutzer angelegt wird und dies der erste der Agentur ist,
- erhält dieser automatisch alle verfügbaren Rechte!
- '''
+
+ #Wenn ein neuer Nutzer angelegt wird und dies der erste der Agentur ist,
+ #erhält dieser automatisch alle verfügbaren Rechte!
user_agency = User.objects.filter(profile__agency__pk=instance.agency.pk)
if len(user_agency) == 1:
tempuser = user_agency[0]
@@ -25,7 +26,7 @@ def create_profile(sender, instance, created, **kwargs):
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()
diff --git a/users/templates/users/base.html b/users/templates/users/base.html
index 43d95d0..0fde475 100644
--- a/users/templates/users/base.html
+++ b/users/templates/users/base.html
@@ -138,9 +138,6 @@
-
-
-
{% if perms.users.users_usermanagement or perms.users.areas_management or perms.users.tasks_management or perms.user.news_management %}
@@ -148,7 +145,7 @@
Agenturorga
{%endif%}
-
+
{% if perms.users.areas_management %}
{% if active_link == 'areasmanagement' %}
@@ -186,7 +183,7 @@
{%endif%}
-
+
diff --git a/users/templates/users/dashboard.html b/users/templates/users/dashboard.html
index 5f751fc..16c8e77 100644
--- a/users/templates/users/dashboard.html
+++ b/users/templates/users/dashboard.html
@@ -11,7 +11,13 @@
{% if request.user.profile.agency.module_news %}
-
News
+
News
+ {% if perms.users.modulenews %}
+
+
+
+ {% endif %}
+
diff --git a/users/views.py b/users/views.py
index 3f9a9b4..b48aa17 100644
--- a/users/views.py
+++ b/users/views.py
@@ -68,7 +68,7 @@ def toUpdate(request):
# VERWALTUNG
temgroup_verwaltung = Group(name=str(request.user.profile.agency.pk) + "_" + randomString(8))
temgroup_verwaltung.save()
- temgroup_verwaltung_ag = AgencyGroup(savefordel=True, group=temgroup_verwaltung, agency=request.user.profile.agency, agencygroupname="Verwaltung")
+ temgroup_verwaltung_ag = AgencyGroup(savefordel=True, is_admin=True, group=temgroup_verwaltung, agency=request.user.profile.agency, agencygroupname="Verwaltung")
temgroup_verwaltung_ag.save()
print("default groups created...adding users...")
users_of_agency = User.objects.filter(profile__agency__pk=request.user.profile.agency.pk)
@@ -83,8 +83,6 @@ def toUpdate(request):
for p in perms:
tempperm = Permission.objects.get(codename=p[0])
temgroup_verwaltung_ag.group.permissions.add(tempperm)
-
-
print("default groups created and users added")
else:
print("default groups existing")
@@ -175,23 +173,24 @@ class UsersManagement(LoginRequiredMixin, ListView):
'''
class UsersCreateUser(LoginRequiredMixin, CreateView):
model = User
- fields = ['first_name', 'last_name','username', 'email']
- success_url = '/dashboard/usersman/'
+ fields = ['first_name', 'last_name', 'email']
+ success_url = '/settings/newuser/s2/'
# Adding active_link
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
- context.update({'active_link' : 'usersmanagement'})
+ context.update({'active_link' : 'settings'})
return context
def form_valid(self, form):
# Send message to the site
- messages.success(self.request, f'Benutzer angelegt!')
+ messages.success(self.request, f'Neuer Mitarbeiter angelegt!')
# SAVE OBJECTS TO SIGNALE!
form.instance.agency = self.request.user.profile.agency
form.instance.parent = None
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})
+ '''
if(self.request.POST.get("sendmailnewuser")):
send_mail(
self.request.user.profile.agency.name + ' Account',
@@ -201,6 +200,7 @@ class UsersCreateUser(LoginRequiredMixin, CreateView):
html_message=msg_html,
fail_silently=False,
)
+ '''
return super().form_valid(form)
# USER muss eingeloggt sein, um diese Seite zu sehen
@@ -346,7 +346,7 @@ def setuserparent(request):
'''
class ProfileDeleteView(LoginRequiredMixin, DeleteView):
model = User
- success_url = '/dashboard/usersman'
+ success_url = '/dasettings/main'
template_name = 'users/user_confirm_delete.html'