csrf
This commit is contained in:
parent
7a56d56c30
commit
53c4830051
|
|
@ -69,7 +69,16 @@
|
||||||
<div style="float: left;" class="col-12 ">
|
<div style="float: left;" class="col-12 ">
|
||||||
<div class='icon-container mr-2'>
|
<div class='icon-container mr-2'>
|
||||||
<img class="img-profile roundimg" src="{{ user.profile.get_photo_url }}">
|
<img class="img-profile roundimg" src="{{ user.profile.get_photo_url }}">
|
||||||
<div class='status-circle' id="userstatus_circle_{{user.pk}}" style="background-color: {% if user in onlineusers %} green {% else %} grey {% endif %};">
|
<div class='status-circle' id="userstatus_circle_{{user.pk}}" style="background-color: {% if user in onlineusers %}
|
||||||
|
{% if user.profile.onlinestatus == 0 %}
|
||||||
|
green
|
||||||
|
{% elif user.profile.onlinestatus == 1 %}
|
||||||
|
red
|
||||||
|
{% elif user.profile.onlinestatus == 2 %}
|
||||||
|
orange
|
||||||
|
{% elif user.profile.onlinestatus == 3 %}
|
||||||
|
grey
|
||||||
|
{% else %} grey {% endif %};">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<h5 class="mt-3">{{user.first_name}} {{user.last_name}}</h5>
|
<h5 class="mt-3">{{user.first_name}} {{user.last_name}}</h5>
|
||||||
|
|
@ -130,6 +139,8 @@
|
||||||
console.log(data);
|
console.log(data);
|
||||||
$( ".status-circle" ).each(function( index ) {
|
$( ".status-circle" ).each(function( index ) {
|
||||||
if(data["onlineusers"].indexOf($(this)[0]["id"].split("_")[2]) !== -1){
|
if(data["onlineusers"].indexOf($(this)[0]["id"].split("_")[2]) !== -1){
|
||||||
|
|
||||||
|
console.log(data["onlineusers"][index+1]);
|
||||||
$("#" + $(this)[0]["id"]).css("background-color", "green");
|
$("#" + $(this)[0]["id"]).css("background-color", "green");
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
|
|
||||||
|
|
@ -52,6 +52,7 @@ def getloggedusersdata(request):
|
||||||
for u in users_agency:
|
for u in users_agency:
|
||||||
if(u in users_online):
|
if(u in users_online):
|
||||||
user_online_final.append("" + str(u.pk))
|
user_online_final.append("" + str(u.pk))
|
||||||
|
user_online_final.append("" + str(u.pk) + "_" + u.profile.onlinestatus)
|
||||||
|
|
||||||
return JsonResponse({"onlineusers" : user_online_final})
|
return JsonResponse({"onlineusers" : user_online_final})
|
||||||
else:
|
else:
|
||||||
|
|
|
||||||
Binary file not shown.
Binary file not shown.
|
|
@ -440,3 +440,18 @@ def getsomeyears(start):
|
||||||
@register.simple_tag
|
@register.simple_tag
|
||||||
def getsomemonths():
|
def getsomemonths():
|
||||||
return ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"]
|
return ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"]
|
||||||
|
|
||||||
|
@register.simple_tag
|
||||||
|
def getonlinestatuscolor(user):
|
||||||
|
maincolor = "red"
|
||||||
|
|
||||||
|
if(user.profile.onlinestatus == 0):
|
||||||
|
maincolor = "green"
|
||||||
|
elif(user.profile.onlinestatus == 1):
|
||||||
|
maincolor = "red"
|
||||||
|
elif(user.profile.onlinestatus == 2):
|
||||||
|
maincolor = "orange"
|
||||||
|
elif(user.profile.onlinestatus == 3):
|
||||||
|
maincolor = "grey"
|
||||||
|
|
||||||
|
return maincolor
|
||||||
|
|
@ -212,6 +212,17 @@ class Profile(models.Model):
|
||||||
user_messages_mail = models.BooleanField(default=True)
|
user_messages_mail = models.BooleanField(default=True)
|
||||||
user_messages_push = models.BooleanField(default=True)
|
user_messages_push = models.BooleanField(default=True)
|
||||||
|
|
||||||
|
# ONLINESTATUS
|
||||||
|
'''
|
||||||
|
|
||||||
|
0 = ONLINE - green
|
||||||
|
1 = BESCHAFTIGT - red
|
||||||
|
2 = ABWESEND - orange
|
||||||
|
3 = OFFLINE - grey
|
||||||
|
|
||||||
|
'''
|
||||||
|
onlinestatus = models.IntegerField(default=0)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f'{self.user.last_name}'
|
return f'{self.user.last_name}'
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -54,9 +54,10 @@ def loadingFreeDays(plz):
|
||||||
# CHECK SOMETHING WHEN USER LOGGED IN
|
# CHECK SOMETHING WHEN USER LOGGED IN
|
||||||
@receiver(signal=user_logged_in, sender=User)
|
@receiver(signal=user_logged_in, sender=User)
|
||||||
def checkForWorkDays(sender, user, request, **kwargs):
|
def checkForWorkDays(sender, user, request, **kwargs):
|
||||||
|
user.profile.onlinestatus = 0
|
||||||
|
user.save()
|
||||||
today = date.today()
|
today = date.today()
|
||||||
wd = Workday.objects.filter(user=user, end=None, start__day__lte=today.day)
|
wd = Workday.objects.filter(user=user, end=None, start__day__lte=today.day)
|
||||||
|
|
||||||
for d in wd:
|
for d in wd:
|
||||||
d.end = datetime.datetime(d.start.year, d.start.month, d.start.day, 23, 59, 00)
|
d.end = datetime.datetime(d.start.year, d.start.month, d.start.day, 23, 59, 00)
|
||||||
d.save()
|
d.save()
|
||||||
|
|
|
||||||
|
|
@ -332,11 +332,13 @@
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
.roundimg {
|
{% getonlinestatuscolor request.user as onlinecolor %}
|
||||||
|
|
||||||
|
.roundimg_base {
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
-webkit-box-shadow: 0px 0px 4px 5px red;
|
-webkit-box-shadow: 0px 0px 4px 5px {{onlinecolor}};
|
||||||
-moz-box-shadow: 0px 0px 4px 5px red;
|
-moz-box-shadow: 0px 0px 4px 5px {{onlinecolor}};
|
||||||
box-shadow: 0px 0px 4px 5px red;
|
box-shadow: 0px 0px 4px 5px {{onlinecolor}};
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<div class="topbar-divider d-none d-sm-block"></div>
|
<div class="topbar-divider d-none d-sm-block"></div>
|
||||||
|
|
@ -344,10 +346,29 @@
|
||||||
<li class="nav-item dropdown no-arrow">
|
<li class="nav-item dropdown no-arrow">
|
||||||
<a class="nav-link dropdown-toggle" href="#" id="userDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
<a class="nav-link dropdown-toggle" href="#" id="userDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||||
<span class="mr-2 d-none d-lg-inline text-gray-600 small">{{request.user.first_name}} {{request.user.last_name}}</span>
|
<span class="mr-2 d-none d-lg-inline text-gray-600 small">{{request.user.first_name}} {{request.user.last_name}}</span>
|
||||||
<img class="img-profile roundimg ml-2" src="{{ user.profile.get_photo_url }}">
|
<img id="userbaseprofilepicture" class="img-profile roundimg_base ml-2" src="{{ user.profile.get_photo_url }}">
|
||||||
</a>
|
</a>
|
||||||
<!-- Dropdown - User Information -->
|
<!-- Dropdown - User Information -->
|
||||||
<div class="dropdown-menu dropdown-menu-right shadow animated--grow-in" aria-labelledby="userDropdown">
|
<div class="dropdown-menu dropdown-menu-right shadow animated--grow-in" aria-labelledby="userDropdown">
|
||||||
|
<a class="dropdown-item" onclick="javascript:changeOnlineStatus(0)" href="#/">
|
||||||
|
<i class="fas fa-circle mr-2" style="color: green"></i>
|
||||||
|
Online
|
||||||
|
</a>
|
||||||
|
<a class="dropdown-item" onclick="javascript:changeOnlineStatus(1)" href="#/">
|
||||||
|
<i class="fas fa-circle mr-2" style="color: red"></i>
|
||||||
|
Beschäftigt
|
||||||
|
</a>
|
||||||
|
<a class="dropdown-item" onclick="javascript:changeOnlineStatus(2)" href="#/">
|
||||||
|
<i class="fas fa-circle mr-2" style="color: yellow"></i>
|
||||||
|
Abwesend
|
||||||
|
</a>
|
||||||
|
<a class="dropdown-item" onclick="javascript:changeOnlineStatus(3)" href="#/">
|
||||||
|
<i class="fas fa-circle mr-2" style="color: grey"></i>
|
||||||
|
Offline anzeigen
|
||||||
|
</a>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="dropdown-divider"></div>
|
||||||
<!--<a class="dropdown-item" onclick="userGoToSettings({{user.pk}})" href="{% url 'orga-single' user.pk %}">-->
|
<!--<a class="dropdown-item" onclick="userGoToSettings({{user.pk}})" href="{% url 'orga-single' user.pk %}">-->
|
||||||
<a class="dropdown-item" onclick="userGoToSettings()" href="#/">
|
<a class="dropdown-item" onclick="userGoToSettings()" href="#/">
|
||||||
<i class="fas fa-user fa-sm fa-fw mr-2 text-gray-400"></i>
|
<i class="fas fa-user fa-sm fa-fw mr-2 text-gray-400"></i>
|
||||||
|
|
@ -653,6 +674,50 @@ $(document).on('click', function (e) {
|
||||||
|
|
||||||
<!-- WEBSOCKETS -->
|
<!-- WEBSOCKETS -->
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
|
function changeOnlineStatus(newstat){
|
||||||
|
$.ajax(
|
||||||
|
{
|
||||||
|
type: "GET",
|
||||||
|
url: "{% url 'users-updateonlinestat' %}",
|
||||||
|
data : {
|
||||||
|
newstat : newstat
|
||||||
|
},
|
||||||
|
success: function( data )
|
||||||
|
{
|
||||||
|
if(data["newstat"] == "0"){
|
||||||
|
$("#userbaseprofilepicture").css({
|
||||||
|
'-webkit-box-shadow' : '0px 0px 4px 5px green',
|
||||||
|
'-moz-box-shadow': '0px 0px 4px 5px green',
|
||||||
|
'box-shadow': '0px 0px 4px 5px green'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
else if(data["newstat"] == "1"){
|
||||||
|
$("#userbaseprofilepicture").css({
|
||||||
|
'-webkit-box-shadow' : '0px 0px 4px 5px red',
|
||||||
|
'-moz-box-shadow': '0px 0px 4px 5px red',
|
||||||
|
'box-shadow': '0px 0px 4px 5px red'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
else if(data["newstat"] == "2"){
|
||||||
|
$("#userbaseprofilepicture").css({
|
||||||
|
'-webkit-box-shadow' : '0px 0px 4px 5px orange',
|
||||||
|
'-moz-box-shadow': '0px 0px 4px 5px orange',
|
||||||
|
'box-shadow': '0px 0px 4px 5px orange'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
else if(data["newstat"] == "3"){
|
||||||
|
$("#userbaseprofilepicture").css({
|
||||||
|
'-webkit-box-shadow' : '0px 0px 4px 5px grey',
|
||||||
|
'-moz-box-shadow': '0px 0px 4px 5px grey',
|
||||||
|
'box-shadow': '0px 0px 4px 5px grey'
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
$(document).ready(function(){
|
$(document).ready(function(){
|
||||||
|
|
||||||
$("#chat_alluserscontent").hide();
|
$("#chat_alluserscontent").hide();
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,7 @@ urlpatterns = [
|
||||||
path('impressum/', views.impressum, name="impressumda"),
|
path('impressum/', views.impressum, name="impressumda"),
|
||||||
path('setuserparent/', views.setuserparent, name="users-setuserparent"),
|
path('setuserparent/', views.setuserparent, name="users-setuserparent"),
|
||||||
path('sendpassmail/', views.sendpassmail, name="users-sendpassmail"),
|
path('sendpassmail/', views.sendpassmail, name="users-sendpassmail"),
|
||||||
|
path('changeonlinestat/', views.changeonlinestat, name="users-updateonlinestat"),
|
||||||
path('dacron/<slug:code>', views.cronactions, name="cronmain")
|
path('dacron/<slug:code>', views.cronactions, name="cronmain")
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -471,6 +471,13 @@ def setuserparent(request):
|
||||||
else:
|
else:
|
||||||
return HttpResponse("Request method is not a GET")
|
return HttpResponse("Request method is not a GET")
|
||||||
|
|
||||||
|
@login_required
|
||||||
|
def changeonlinestat(request):
|
||||||
|
if request.method == 'GET':
|
||||||
|
request.user.profile.onlinestatus = request.GET["newstat"]
|
||||||
|
request.user.save()
|
||||||
|
return JsonResponse({"newstat" : request.GET["newstat"]})
|
||||||
|
|
||||||
'''
|
'''
|
||||||
|
|
||||||
# DELETE A USER
|
# DELETE A USER
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue