first comit

This commit is contained in:
2024-02-23 10:30:02 +00:00
commit ddeb07d0ba
12482 changed files with 1857507 additions and 0 deletions

104
hrm/views.py Executable file
View 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