first comit
This commit is contained in:
104
hrm/views.py
Executable file
104
hrm/views.py
Executable file
@@ -0,0 +1,104 @@
|
||||
from django.shortcuts import render, get_object_or_404, redirect
|
||||
from django.http import HttpResponseRedirect, HttpResponse, JsonResponse
|
||||
from django.urls import reverse
|
||||
from hrm.models import *
|
||||
from custom_user.models import User
|
||||
from django.contrib.auth.decorators import login_required
|
||||
import json
|
||||
import calendar
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
from api.views import sendMail
|
||||
|
||||
#@login_required
|
||||
def index(request):
|
||||
try:
|
||||
user = User.objects.get(id=request.user.id)
|
||||
employee_object = employee.objects.get(employee=user)
|
||||
context = {
|
||||
"employee": employee_object,#
|
||||
"links": homepage_links.objects.all(),
|
||||
"segment": "index"
|
||||
}
|
||||
return render(request, 'hrm/index.html', context)
|
||||
except Exception as e:
|
||||
print(repr(e))
|
||||
context = {
|
||||
"segment": "index"
|
||||
}
|
||||
return redirect(reverse('404'))
|
||||
|
||||
|
||||
#@login_required
|
||||
def profile(request):
|
||||
user = User.objects.get(id=request.user.id)
|
||||
try:
|
||||
employee_object = employee.objects.get(employee=user)
|
||||
print(f"employee = {employee_object}")
|
||||
context = {
|
||||
"employee": employee_object,
|
||||
"segment": "profile"
|
||||
}
|
||||
return render( request, 'hrm/profile.html', context)
|
||||
except Exception as e:
|
||||
print(repr(e))
|
||||
return redirect(reverse('404'))
|
||||
|
||||
|
||||
|
||||
|
||||
workdays = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
|
||||
def weekday_count(start, end):
|
||||
start_date = datetime.strptime(start, '%Y-%m-%d')
|
||||
end_date = datetime.strptime(end, '%Y-%m-%d')
|
||||
days = 0
|
||||
for i in range((end_date - start_date).days):
|
||||
day = calendar.day_name[(start_date + timedelta(days=i+1)).weekday()]
|
||||
if day in workdays:
|
||||
days += 1
|
||||
return days
|
||||
|
||||
def request_holiday(request):
|
||||
if request.method == 'GET':
|
||||
emp = employee.objects.get(employee=User.objects.get(id=request.user.id))
|
||||
today = datetime.today().strftime('%Y-%m-%d')
|
||||
context ={
|
||||
"segment": "holiday",
|
||||
"today": today,
|
||||
"employee": emp,
|
||||
}
|
||||
return render(request, 'hrm/holiday_request.html', context)
|
||||
elif request.method == 'POST':
|
||||
try:
|
||||
data = json.loads(request.POST.get('data' , ''))
|
||||
days = weekday_count(data['from'], data['to'])
|
||||
emp = employee.objects.get(id=data['employee.id'])
|
||||
requested_days = absence_days.objects.create(
|
||||
days_taken = days,
|
||||
date_from = data['from'],
|
||||
date_to = data['to'],
|
||||
reason = 'hol',
|
||||
is_request=True,
|
||||
taken_by = emp
|
||||
)
|
||||
email_message = """
|
||||
Hello, {{ employee.employee.first_name }}, <br><br>
|
||||
{{ absence_days.requested_by.employee.first_name }} has submitted a new holiday request. <br>
|
||||
Click here to manage this request. <br><br>
|
||||
Thanks,
|
||||
"""
|
||||
sendMail('Holiday Request', email_message, emp.line_manager.email, emp.to_dict(), requested_days.to_dict(), None)
|
||||
message = f"Holiday dates: {data['from']}-{data['to']} <br> has been sent to {emp.line_manager.first_name} {emp.line_manager.last_name} for approval."
|
||||
messageTitle = "Success!"
|
||||
messageStatus = 'text-bg-success'
|
||||
response = JsonResponse({'messageTitle':messageTitle, 'message': message, 'messageStatus':messageStatus})
|
||||
return response
|
||||
except Exception as e:
|
||||
#logger.error(repr(e))
|
||||
print(repr(e))
|
||||
messageTitle = "Oops!"
|
||||
messageStatus = 'text-bg-danger'
|
||||
message = str(e)
|
||||
response = JsonResponse({'messageTitle':messageTitle, 'message': message, 'messageStatus':messageStatus})
|
||||
return response
|
||||
|
||||
Reference in New Issue
Block a user