Settings Agenturfunktionen vollständig implementiert, Bugs gefixed
This commit is contained in:
parent
06a1428ce9
commit
04cc3802f5
Binary file not shown.
|
|
@ -121,7 +121,7 @@ CKEDITOR_CONFIGS = {
|
||||||
}
|
}
|
||||||
# Database
|
# Database
|
||||||
# https://docs.djangoproject.com/en/2.2/ref/settings/#databases
|
# https://docs.djangoproject.com/en/2.2/ref/settings/#databases
|
||||||
|
'''
|
||||||
DATABASES = {
|
DATABASES = {
|
||||||
'default': {
|
'default': {
|
||||||
'ENGINE': 'django.db.backends.mysql',
|
'ENGINE': 'django.db.backends.mysql',
|
||||||
|
|
@ -131,6 +131,16 @@ DATABASES = {
|
||||||
'PORT' : 3306
|
'PORT' : 3306
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
'''
|
||||||
|
DATABASES = {
|
||||||
|
'default': {
|
||||||
|
'ENGINE': 'django.db.backends.mysql',
|
||||||
|
'NAME' : 'digitaleagentur',
|
||||||
|
'USER' : 'root',
|
||||||
|
'PASSWORD' : '',
|
||||||
|
'PORT' : 3306
|
||||||
|
}
|
||||||
|
}
|
||||||
# Password validation
|
# Password validation
|
||||||
# https://docs.djangoproject.com/en/2.2/ref/settings/#auth-password-validators
|
# https://docs.djangoproject.com/en/2.2/ref/settings/#auth-password-validators
|
||||||
|
|
||||||
|
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -23,6 +23,8 @@ def picturepath_user(instance, filename):
|
||||||
# file will be uploaded to MEDIA_ROOT/agency_<id>/<subdirs>/<filename>
|
# file will be uploaded to MEDIA_ROOT/agency_<id>/<subdirs>/<filename>
|
||||||
return 'agency_{0}/agencystats/profilepics/{1}'.format(instance.pk, filename)
|
return 'agency_{0}/agencystats/profilepics/{1}'.format(instance.pk, filename)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
'''
|
'''
|
||||||
Class Agency
|
Class Agency
|
||||||
|
|
||||||
|
|
@ -47,8 +49,8 @@ class Agency(models.Model):
|
||||||
return f'{self.name}'
|
return f'{self.name}'
|
||||||
|
|
||||||
# Hier wird definiert, welche Parameter in der URL übertragen werden inkl. Bezeichner
|
# Hier wird definiert, welche Parameter in der URL übertragen werden inkl. Bezeichner
|
||||||
def get_absolute_url(self):
|
#def get_absolute_url(self):
|
||||||
return reverse('agency-update', kwargs={'pk':self.pk})
|
# return reverse('agency-update', kwargs={'pk':self.pk})
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def get_photo_url(self):
|
def get_photo_url(self):
|
||||||
|
|
@ -57,6 +59,17 @@ class Agency(models.Model):
|
||||||
else:
|
else:
|
||||||
return "/media/agencymain/default.jpg"
|
return "/media/agencymain/default.jpg"
|
||||||
|
|
||||||
|
'''
|
||||||
|
|
||||||
|
Class AgencyJob
|
||||||
|
|
||||||
|
'''
|
||||||
|
class AgencyJob(models.Model):
|
||||||
|
name = models.CharField(default="", max_length=80)
|
||||||
|
agency = models.ForeignKey(Agency, on_delete=models.PROTECT)
|
||||||
|
def __str__(self):
|
||||||
|
return f'{self.name}'
|
||||||
|
|
||||||
'''
|
'''
|
||||||
Class Profile
|
Class Profile
|
||||||
|
|
||||||
|
|
@ -76,25 +89,15 @@ Klasse für die Zusatzinfos eines Nutzers.
|
||||||
- Aufgaben
|
- Aufgaben
|
||||||
|
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
|
||||||
class Profile(models.Model):
|
class Profile(models.Model):
|
||||||
|
|
||||||
# AGENCY TASKS
|
|
||||||
agency_task = [
|
|
||||||
("", ""),
|
|
||||||
("lead", "Agenturleitung"),
|
|
||||||
("external", "Außendienst"),
|
|
||||||
("indoor", "Innendienst"),
|
|
||||||
("trainee", "Azubi"),
|
|
||||||
]
|
|
||||||
|
|
||||||
# Wenn der User gelöscht wird, wird auch das Profil gelöscht
|
# 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)
|
||||||
parent = models.ForeignKey(User, on_delete=models.PROTECT, blank=True, null=True, related_name='parent_user')
|
parent = models.ForeignKey(User, on_delete=models.PROTECT, blank=True, null=True, related_name='parent_user')
|
||||||
phoneland = models.CharField(max_length=60, blank=True)
|
phoneland = models.CharField(max_length=60, blank=True)
|
||||||
phonemobile = models.CharField(max_length=60, blank=True)
|
phonemobile = models.CharField(max_length=60, blank=True)
|
||||||
func = models.CharField(choices=agency_task, default="", max_length=50)
|
# Wenn die Funktion gelöscht wird, wird die FUNC auf NULL gesetzt
|
||||||
|
func = models.ForeignKey(AgencyJob, blank=True, null=True, on_delete=models.SET_NULL)
|
||||||
# Wenn dieses Profil gelöscht wird, wird NICHT die Agency geslöscht
|
# Wenn dieses Profil gelöscht wird, wird NICHT die Agency geslöscht
|
||||||
agency = models.ForeignKey(Agency, on_delete=models.PROTECT)
|
agency = models.ForeignKey(Agency, on_delete=models.PROTECT)
|
||||||
image = models.ImageField(default='userprofilepics/default.jpg', upload_to=picturepath_user, blank=True)
|
image = models.ImageField(default='userprofilepics/default.jpg', upload_to=picturepath_user, blank=True)
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,9 @@ html h1 {
|
||||||
}
|
}
|
||||||
body{
|
body{
|
||||||
background-color: #f8f9fc;
|
background-color: #f8f9fc;
|
||||||
|
padding-top: 70px;
|
||||||
}
|
}
|
||||||
|
.modal-open {overflow-y: auto}
|
||||||
|
|
||||||
.preview {
|
.preview {
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
|
@ -65,10 +67,6 @@ body{
|
||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
body {
|
|
||||||
padding-top: 70px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.default_content_style {
|
.default_content_style {
|
||||||
margin-left: 212px !important;
|
margin-left: 212px !important;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,31 +0,0 @@
|
||||||
{% extends "users/base.html" %}
|
|
||||||
{% block content %}
|
|
||||||
<div class="content-section col-12">
|
|
||||||
<h3>Agentur <b>{{ request.user.profile.agency.name }}</b></h3>
|
|
||||||
<hr>
|
|
||||||
<div class="col-md-6">
|
|
||||||
<h6><b>Inhaber</b></h6>
|
|
||||||
<p>
|
|
||||||
{{ request.user.profile.agency.inhaber }}
|
|
||||||
</p>
|
|
||||||
<h6><b>Adresse</b></h6>
|
|
||||||
<p>
|
|
||||||
{{ request.user.profile.agency.street }}
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
{{ request.user.profile.agency.plz }} {{ request.user.profile.agency.city }}
|
|
||||||
</p>
|
|
||||||
<h6><b>Kontaktdaten</b></h6>
|
|
||||||
<p>
|
|
||||||
{{ request.user.profile.agency.agency_email }}
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
{{ request.user.profile.agency.phone }}
|
|
||||||
</p>
|
|
||||||
<h6><b>Agenturbild</b></h6>
|
|
||||||
<p>
|
|
||||||
<img class="img-profile" width="75%" src="{{ request.user.profile.agency.get_photo_url }}">
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endblock content %}
|
|
||||||
|
|
@ -56,7 +56,7 @@
|
||||||
<!-- Sidebar - Brand -->
|
<!-- Sidebar - Brand -->
|
||||||
<a class="sidebar-brand d-flex align-items-center justify-content-center" href="{% url 'users-dashboard' %}">
|
<a class="sidebar-brand d-flex align-items-center justify-content-center" href="{% url 'users-dashboard' %}">
|
||||||
<i class="fas fa-laptop"></i>
|
<i class="fas fa-laptop"></i>
|
||||||
<div class="sidebar-brand-text mx-3">Digitale Agentur</div>
|
<div class="sidebar-brand-text mx-2" style="">Digitale Agentur</div>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<!-- Divider -->
|
<!-- Divider -->
|
||||||
|
|
@ -102,18 +102,18 @@
|
||||||
<span>Organigramm</span>
|
<span>Organigramm</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
<!--
|
||||||
{% if active_link == 'agencyinfo' %}
|
{% if active_link == 'agencyinfo' %}
|
||||||
<li class="nav-item active">
|
<li class="nav-item active">
|
||||||
{% else%}
|
{% else%}
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
{%endif%}
|
{%endif%}
|
||||||
<a class="nav-link " href="{% url 'agencyinfo' %}" aria-expanded="true">
|
<a class="nav-link " href="#" aria-expanded="true">
|
||||||
<i class="fas fa-fw fa-info"></i>
|
<i class="fas fa-fw fa-info"></i>
|
||||||
<span>Agentur</span>
|
<span>Agentur</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
-->
|
||||||
{% if active_link == 'quicklinks' %}
|
{% if active_link == 'quicklinks' %}
|
||||||
<li class="nav-item active">
|
<li class="nav-item active">
|
||||||
{% else%}
|
{% else%}
|
||||||
|
|
|
||||||
|
|
@ -23,8 +23,8 @@ urlpatterns = [
|
||||||
#path('usersman/<int:pk>/', permission_required('users.users_usermanagement')(ProfileUpdateView.as_view()), name='users-update'),
|
#path('usersman/<int:pk>/', permission_required('users.users_usermanagement')(ProfileUpdateView.as_view()), name='users-update'),
|
||||||
path('usersman/<int:pk>/perms', permission_required('users.users_usermanagement')(UsersPermUpdateView.as_view()), name='users-perm-update'),
|
path('usersman/<int:pk>/perms', permission_required('users.users_usermanagement')(UsersPermUpdateView.as_view()), name='users-perm-update'),
|
||||||
path('usersman/<int:pk>/delete', permission_required('users.users_usermanagement')(ProfileDeleteView.as_view()), name='users-delete'),
|
path('usersman/<int:pk>/delete', permission_required('users.users_usermanagement')(ProfileDeleteView.as_view()), name='users-delete'),
|
||||||
path('agencyinfo/', views.agency, name='agencyinfo'),
|
#path('agencyinfo/', views.agency, name='agencyinfo'),
|
||||||
path('agencyinfo/<int:pk>/', permission_required('users.agency_change')(AgencyUpdateView.as_view()), name='agency-manage'),
|
#path('agencyinfo/<int:pk>/', permission_required('users.agency_change')(AgencyUpdateView.as_view()), name='agency-manage'),
|
||||||
path('usersman/<int:pk>/prio', views.UsersPrio, name='users-prio'),
|
path('usersman/<int:pk>/prio', views.UsersPrio, name='users-prio'),
|
||||||
#path('prioupdate/', views.UsersPrioUpdate, name="users-prioupdate"),
|
#path('prioupdate/', views.UsersPrioUpdate, name="users-prioupdate"),
|
||||||
path('areataskupdate/<int:pk>/', views.UsersAreaTaskUpdate, name="users-areataskupdate"),
|
path('areataskupdate/<int:pk>/', views.UsersAreaTaskUpdate, name="users-areataskupdate"),
|
||||||
|
|
|
||||||
|
|
@ -80,7 +80,7 @@ class AgencyUpdateForm(forms.ModelForm):
|
||||||
"phone" : "Telefon",
|
"phone" : "Telefon",
|
||||||
"agencypic" : "Agenturbild"
|
"agencypic" : "Agenturbild"
|
||||||
}
|
}
|
||||||
fields = ['name','inhaber','street', 'plz', 'city', 'agency_email', 'phone', 'agencypic', 'x', 'y', 'width', 'height', 'rotation']
|
fields = ['name','inhaber','agency_email', 'phone', 'street', 'plz', 'city', 'agencypic', 'x', 'y', 'width', 'height', 'rotation']
|
||||||
|
|
||||||
def save(self):
|
def save(self):
|
||||||
photo = super(AgencyUpdateForm, self).save()
|
photo = super(AgencyUpdateForm, self).save()
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,28 @@ from django.template.loader import render_to_string
|
||||||
from django.contrib.auth.forms import PasswordResetForm
|
from django.contrib.auth.forms import PasswordResetForm
|
||||||
from django.template.loader import render_to_string
|
from django.template.loader import render_to_string
|
||||||
from io import StringIO
|
from io import StringIO
|
||||||
|
from users.models import AgencyJob
|
||||||
|
|
||||||
|
@login_required
|
||||||
|
def toUpdate(request):
|
||||||
|
# NO AGENVYJOBS
|
||||||
|
# CREATE DEFAULT
|
||||||
|
'''
|
||||||
|
|
||||||
|
Agenturleiter
|
||||||
|
Außendienst
|
||||||
|
Innendienst
|
||||||
|
Auszubildender
|
||||||
|
|
||||||
|
'''
|
||||||
|
agencyjobsobject = AgencyJob.objects.filter(agency__pk=request.user.profile.agency.pk)
|
||||||
|
if(len(agencyjobsobject) == 0):
|
||||||
|
defaultAgencyJobs = ['Agenturleiter', 'Außendienst', 'Innendienst', 'Auszubildender']
|
||||||
|
for ele in defaultAgencyJobs:
|
||||||
|
tempAgencyJob = AgencyJob(name=ele, agency=request.user.profile.agency)
|
||||||
|
tempAgencyJob.save()
|
||||||
|
|
||||||
|
|
||||||
'''
|
'''
|
||||||
|
|
||||||
DASHBOARD-View
|
DASHBOARD-View
|
||||||
|
|
@ -61,8 +83,16 @@ class AgencyCreateView(CreateView):
|
||||||
)
|
)
|
||||||
return super().form_valid(form)
|
return super().form_valid(form)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
def dashboard(request):
|
def dashboard(request):
|
||||||
|
|
||||||
|
# UPDATE FUNCTIONS BY NEW MODEL-CHANGES FOR COPIEN SOME DATA
|
||||||
|
toUpdate(request)
|
||||||
|
|
||||||
|
|
||||||
context = {
|
context = {
|
||||||
'active_link' : 'dashboard'
|
'active_link' : 'dashboard'
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue