This commit is contained in:
Holger Trampe 2020-05-19 22:59:07 +02:00
parent 7a56d56c30
commit 53c4830051
10 changed files with 120 additions and 8 deletions

View File

@ -69,7 +69,16 @@
<div style="float: left;" class="col-12 ">
<div class='icon-container mr-2'>
<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>
<h5 class="mt-3">{{user.first_name}} {{user.last_name}}</h5>
@ -130,6 +139,8 @@
console.log(data);
$( ".status-circle" ).each(function( index ) {
if(data["onlineusers"].indexOf($(this)[0]["id"].split("_")[2]) !== -1){
console.log(data["onlineusers"][index+1]);
$("#" + $(this)[0]["id"]).css("background-color", "green");
}
else{

View File

@ -52,6 +52,7 @@ def getloggedusersdata(request):
for u in users_agency:
if(u in users_online):
user_online_final.append("" + str(u.pk))
user_online_final.append("" + str(u.pk) + "_" + u.profile.onlinestatus)
return JsonResponse({"onlineusers" : user_online_final})
else:

View File

@ -440,3 +440,18 @@ def getsomeyears(start):
@register.simple_tag
def getsomemonths():
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

View File

@ -212,6 +212,17 @@ class Profile(models.Model):
user_messages_mail = 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):
return f'{self.user.last_name}'

View File

@ -54,9 +54,10 @@ def loadingFreeDays(plz):
# CHECK SOMETHING WHEN USER LOGGED IN
@receiver(signal=user_logged_in, sender=User)
def checkForWorkDays(sender, user, request, **kwargs):
user.profile.onlinestatus = 0
user.save()
today = date.today()
wd = Workday.objects.filter(user=user, end=None, start__day__lte=today.day)
for d in wd:
d.end = datetime.datetime(d.start.year, d.start.month, d.start.day, 23, 59, 00)
d.save()

View File

@ -332,11 +332,13 @@
</div>
</li>
<style type="text/css">
.roundimg {
{% getonlinestatuscolor request.user as onlinecolor %}
.roundimg_base {
border-radius: 50%;
-webkit-box-shadow: 0px 0px 4px 5px red;
-moz-box-shadow: 0px 0px 4px 5px red;
box-shadow: 0px 0px 4px 5px red;
-webkit-box-shadow: 0px 0px 4px 5px {{onlinecolor}};
-moz-box-shadow: 0px 0px 4px 5px {{onlinecolor}};
box-shadow: 0px 0px 4px 5px {{onlinecolor}};
}
</style>
<div class="topbar-divider d-none d-sm-block"></div>
@ -344,10 +346,29 @@
<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">
<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>
<!-- Dropdown - User Information -->
<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()" href="#/">
<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 -->
<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(){
$("#chat_alluserscontent").hide();

View File

@ -35,6 +35,7 @@ urlpatterns = [
path('impressum/', views.impressum, name="impressumda"),
path('setuserparent/', views.setuserparent, name="users-setuserparent"),
path('sendpassmail/', views.sendpassmail, name="users-sendpassmail"),
path('changeonlinestat/', views.changeonlinestat, name="users-updateonlinestat"),
path('dacron/<slug:code>', views.cronactions, name="cronmain")
]

View File

@ -471,6 +471,13 @@ def setuserparent(request):
else:
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