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 }},

{{ absence_days.requested_by.employee.first_name }} has submitted a new holiday request.
Click here to manage this request.

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']}
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