rendered paste bodyfrom django.db import models
# Create your models here.
class Office(models.Model):
location = models.CharField(maxlength=200)
def __str__(self):
return self.location
class Admin: pass
class Department(models.Model):
name = models.CharField("Name", maxlength="100")
class Admin: pass
def __str__(self):
return self.name
class LoginBox(models.Model):
name = models.CharField("Name", maxlength="100")
ip = models.IPAddressField("IP")
class Admin: pass
def __str__(self):
return "%s [%s]" % (self.name, self.ip)
@classmethod
def requestFromLogin(klass, request):
try:
box = LoginBox.objects.get(ip=request.META['REMOTE_ADDR'])
except LoginBox.DoesNotExist:
return False
return True
class Employee(models.Model):
fullname = models.CharField("Full Name", maxlength=200)
email = models.EmailField("Email", null=True)
employeeNumber = models.CharField("Employee Number", maxlength=10)
leaver = models.BooleanField("Leaver")
contracter = models.BooleanField("Contracter")
department = models.ForeignKey(Department, verbose_name = "Department")
defaultLocation = models.ForeignKey(Office, null=True, verbose_name = "Default Location")
class Admin: pass
def __str__(self):
return self.fullname
def logged_in(self):
try:
lastEvent = Event.objects.filter(employee=self).order_by('-event_time')[0]
except IndexError:
return False
return ( lastEvent.event == 'IN' )
class Event(models.Model):
EVENTS = (
('IN', 'Login'),
('OUT', 'Logout'),
)
employee = models.ForeignKey("Employee", verbose_name = "Employee")
event_time = models.DateTimeField("Event Time")
event = models.CharField("Event", choices = EVENTS, maxlength = 5)
class Admin: pass
def __str__(self):
return "%s %s %s" % (self.employee, self.event_time, self.event)
class OutEvent(models.Model):
event = models.ForeignKey(Event, verbose_name = "Event")
breaks = models.IntegerField("Total Breaks")
hadFood = models.BooleanField("Had Food")
hadTaxi = models.BooleanField("Had Taxi")
comment = models.CharField("Comment", maxlength = 200)
class Admin: pass
def __str__(self):
return "%s %s %s %s" % (self.event, self.breaks, self.hadFood, self.hadTaxi)
-------------------------------------------------------------------------------------
# Create your views here.
from django.shortcuts import render_to_response, get_object_or_404
from django.http import HttpResponse, HttpResponseRedirect
from timesite.timesheet.models import *
from datetime import datetime
def index(request):
if LoginBox.requestFromLogin(request):
return HttpResponseRedirect("/login/")
return HttpResponseRedirect("/admin/")
def login(request):
all_emps = Employee.objects.all().order_by('fullname')
return render_to_response('timesheet/login.html', {'all_emps': all_emps})
def login_action(request, employee_id):
employee = get_object_or_404(Employee, pk=employee_id)
if employee.logged_in():
if request.POST.has_key('doOut'):
ev = Event(employee = employee, event_time = datetime.now(), event = "OUT")
ev.save()
outev = OutEvent(event = ev, breaks = int(request.POST['totalBreaks']),
hadFood = request.POST.has_key('hadFood'),
hadTaxi = request.POST.has_key('hadTaxi'),
comment = request.POST['comment'] )
outev.save()
return HttpResponseRedirect("/login/")
return render_to_response('timesheet/login_out.html', {'employee': employee})
else:
ev = Event(employee = employee, event_time = datetime.now(), event = "IN")
ev.save()
return HttpResponseRedirect("/login/")