259 lines
11 KiB
Python
Executable File
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 |