Files
tmhr/manager/views.py
2024-02-23 10:30:02 +00:00

259 lines
11 KiB
Python
Executable File

from django.shortcuts import render, get_object_or_404, redirect
from hrm.models import *
from custom_user.models import User
from django.contrib.auth.decorators import login_required
import json
from django.http import HttpResponseRedirect, HttpResponse, JsonResponse
from django.urls import reverse
from datetime import datetime
from api.views import sendMail
@login_required
def add_employee(request):
if request.method == 'GET':
context = {
"companies": company.objects.all(),
"department": department.objects.all(),
"pay_structure": pay_choices,
"managers": employee.objects.filter(groups__name='Manager'),
"segment": "add_employee"
}
return render(request, 'manager/add_employee.html', context)
@login_required
def select_employee(request):
employees = employee.objects.all()
context = {
'employees': employees,
"segment": "edit_employee"
}
return render(request, 'manager/select_employee.html', context)
@login_required
def edit_employee(request):
if request.method == 'GET':
employee_id = request.GET.get('employee_id')
user = User.objects.get(email='josh@themainframe.co.uk')
employee_object = get_object_or_404(employee, id=employee_id)
context = {
"employee": employee_object,
"companies": company.objects.all(),
"department": department.objects.all(),
"pay_structure": pay_choices,
"managers": employee.objects.filter(groups__name='Manager'),
"segment": "edit_employee"
}
return render(request, 'manager/edit_employee.html', context)
elif (request.method == 'POST' and request.user.is_staff):
try:
data = json.loads(request.POST.get('data', ''))
formData = data['formData']
employee_object = employee.objects.get(id=formData['employee_id'])
u = User.objects.get(id=employee_object.employee.id)
for key,value in formData.items():
if key == 'employee_id':
pass
elif (not key.startswith('User') and 'date' not in key):
setattr(employee_object, key, value)
elif 'date' in key:
print(value)
if value != "None":
date = datetime.strptime(value, "%d %b %Y").strftime("%Y-%m-%d")
setattr(employee_object, key, date)
elif key.startswith('User'):
key = key.split('__')[1]
setattr(u, key, value)
employee_object.save()
u.save()
message = f"{employee_object.employee.first_name} {employee_object.employee.last_name} has been saved."
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(repr(e))
response = JsonResponse({'messageTitle':messageTitle, 'message': message, 'messageStatus':messageStatus})
return response
@login_required
def select_department(request):
departments = department.objects.all()
context = {
'departments': departments,
"segment": "departments"
}
return render(request, 'manager/select_departments.html', context)
@login_required
def edit_department(request):
if request.method == 'GET':
d = department.objects.get(id=request.GET.get('department_id'))
emp = employee.objects.filter(company__id=d.company_set.first().id)
empl = []
for e in emp:
empl.append(f"{e.id}")
context = {
"department": d,
"employees": employee.objects.all(),
"emp": empl,
"managers": employee.objects.filter(groups__name='Manager'),
"segment": "department"
}
return render(request, 'manager/edit_department.html', context)
elif request.method == 'POST':
try:
data = json.loads(request.POST.get('data', ''))
dept = department.objects.get(id=data['department_id'])
dept.name=data['departmentName']
dept.line_manager = employee.objects.get(id=data['lineManager']).employee
dept.save()
message = f"{data['departmentName']} has been saved."
messageTitle = "Success!"
messageStatus = 'text-bg-success'
response = JsonResponse({'messageTitle':messageTitle, 'message': message, 'messageStatus':messageStatus, 'department_id': dept.id})
return response
except Exception as e:
#logger.error(repr(e))
print(repr(e))
messageTitle = "Oops!"
messageStatus = 'text-bg-danger'
message = str(repr(e))
response = JsonResponse({'messageTitle':messageTitle, 'message': message, 'messageStatus':messageStatus})
return response
@login_required
def add_department(request):
try:
user = employee.objects.get(employee__id=request.user.id)
print(user)
if request.method == 'POST':
data = json.loads(request.POST.get('data', ''))
department.objects.create(name=data['departmentName'], manager=employee.objects.get(id=data['lineManager']).employee)
dept = department.objects.get(name=data['departmentName'], manager=employee.objects.get(id=data['lineManager']).employee)
message = f"{data['departmentName']} has been added."
messageTitle = "Success!"
messageStatus = 'text-bg-success'
response = JsonResponse({'messageTitle':messageTitle, 'message': message, 'messageStatus':messageStatus, 'department_id': dept.id})
return response
except Exception as e:
#logger.error(repr(e))
print(repr(e))
messageTitle = "Oops!"
messageStatus = 'text-bg-danger'
message = str(repr(e))
response = JsonResponse({'messageTitle':messageTitle, 'message': message, 'messageStatus':messageStatus})
return response
# approve holidays
#
def company_editor(request):
context = {
'segment': 'company',
"companies": company.objects.all()
}
return render(request, "manager/company.html", context)
def add_company(request):
if request.method == 'GET':
context = {
'segment': 'company',
"departments": department.objects.all(),
"managers": employee.objects.filter(groups__name='Manager'),
}
return render(request, 'manager/add_company.html', context)
if request.method == 'POST':
def check_exists(name):
try:
test = company.objects.get(name = name)
return True
except:
return False
try:
data = json.loads(request.POST.get('data', ''))
formData = data['formData']
if check_exists(formData['name']) == False:
comp = company.objects.create(
name = formData['name'],
address_street = formData['address_street'],
address_city = formData['address_city'],
address_country = formData['address_country'],
address_postcode = formData['address_postcode']
)
if 'vat_number' in formData:
comp.vat_number = formData['vat_number']
if 'contact_number' in formData:
comp.contact_number = formData['contact_number']
if formData['departments'] != []:
for value in formData['departments']:
dept = department.objects.get(id = value)
comp.departments.add(dept)
comp.save()
message = f"{formData['name']} has been added."
messageTitle = "Success!"
messageStatus = 'text-bg-success'
response = JsonResponse({'messageTitle':messageTitle, 'message': message, 'messageStatus':messageStatus})
return response
else:
raise Exception(f"A company with the name: {formData['name']} <br> Already exists")
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
def edit_company(request):
if request.method == 'GET':
comp = company.objects.get(id=request.GET.get('company_id'))
d = comp.departments.all()
departments = []
for dep in d:
departments.append(f"{dep.id}")
context = {
'segment': 'company',
'company': comp,
"depts": departments,
"departments": department.objects.all(),
"managers": employee.objects.filter(groups__name='Manager'),
}
return render(request, 'manager/edit_company.html', context)
if request.method == 'POST':
try:
data = json.loads(request.POST.get('data', ''))
formData = data['formData']
comp = company.objects.get(id=request.get('company_id'))
for key,value in formData.items():
if 'department' in key:
pass
else:
setattr(comp, key, value)
if formData['departments'] != []:
for value in formData['departments']:
dept = department.objects.get(id = value)
comp.departments.add(dept)
comp.save()
message = f"{formData['name']} has been added."
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