# Create your views here. from netsec.dayinlife.models import * from netsec.dayinlife.forms import * from django.http import HttpResponseRedirect,HttpResponse from django.shortcuts import get_object_or_404, render_to_response from django.core.mail import send_mail from django.contrib import auth from django.contrib.auth.models import User,Group def start(request): if request.method == 'POST': form = ParticipantForm(request.POST) if form.is_valid(): vdate = form.cleaned_data['date'] pname = form.cleaned_data['pname'] department = form.cleaned_data['department'] email = form.cleaned_data['email'] # create participant participant = Participant( name = form.cleaned_data['pname'], email = form.cleaned_data['email'], department = form.cleaned_data['department'] ) participant.save() # create visit v = Visit( date = form.cleaned_data['date'], who = participant ) # check if it is booked if isbooked(v.date): return render_to_response('dayinlife/error.html', { 'error' : 'Sorry but this day is already booked. Please go back and select another day' }) v.save() # confirmation request email to managers msg = """ %s requested his/her day in life with NetSec team. Please take an action to approve or reject request on http://%s/dayinlife/approval/%d Requested date: %s Participant name: %s Department: %s email: %s thanks!""" % (pname, request.META['SERVER_NAME'], v.id, vdate, pname, department, email) # get list of approvers gr = Group.objects.get(name='Dayinlife approvers') recipients = map(lambda x: x.email, gr.user_set.filter(is_active=True)) send_mail( 'NEW request for DayInLife with Netsec', msg, 'Netsec-dayinlife@rackspace.co.uk', recipients) # registration confirmation msg = """ Hello! We have received your request to spend one day with NetSec. You will get confirmation email with all details once manager approve your request. thanks! """ send_mail('Netsec has received your request', msg, 'Netsec-UK@rackspace.co.uk', [participant.email]) return render_to_response('dayinlife/thanks.html') else: form = ParticipantForm() return render_to_response('dayinlife/start.html', { 'form' : form }) def feedback(request, visitid): if request.method == 'POST': form = FeedbackForm(request.POST) if form.is_valid(): # tutaj wszystkie akcje email = form.cleaned_data['email'] feedtxt = form.cleaned_data['text'] try: v = Visit.objects.get(pk=visitid, who__email=email) if v.feedback != None: return render_to_response('dayinlife/error.html', { 'error' : 'You have already provided us with feedback for your visit.' }) elif v.status != 'A': # if visit was not rejected / unverified return render_to_response('dayinlife/error.html', { 'error' : "You can not provide feedback for visit which has not been approved. Sorry.%s "%v.status }) else: fbck = Feedback(content=feedtxt) fbck.save() v.feedback = fbck v.save() return render_to_response('dayinlife/thanks.html', { 'visit' : v } ) except Visit.DoesNotExist: return render_to_response('dayinlife/error.html', {'error': 'There is no visit associated with this email. Please go back and fix it.' }) else: form = FeedbackForm() return render_to_response('dayinlife/feedback.html', { 'form' : form, 'visitid' : visitid }) def msgusernotify(visit, action, comment=""): msg = """ Hello! We would like to inform you that your request to spend one day with us on %s has been %s. %s If you have any questions please give us a call or drop an email at Netsec-UK@rackspace.co.uk thanks, Netsec Team """ % (visit.date, action, comment) #return send_mail("Netsec has %s your request"%action, msg, # 'Netsec-UK@rackspace.co.uk', ['marek.skrobacki@rackspace.co.uk']) return send_mail("Netsec has %s your request"%action, msg, 'Netsec-UK@rackspace.co.uk', [visit.who.email]) def approval(request, visitid): import datetime if not request.user.is_authenticated(): return HttpResponseRedirect("/dayinlife/login/?next=%s" % request.path) if request.user.has_perm("dayinlife.can_approve"): form = ApprovalForm(request.POST) v = Visit.objects.get(pk=visitid) if form.is_valid(): # detect if there is an optional comment if len(request.POST['comment']) > 0: comm = "Comments: %s" % request.POST['comment'] else: comm = '' if form.cleaned_data['answer'] == 'yes': action = 'approved' v.status = 'A' elif form.cleaned_data['answer'] == 'no': v.status = 'R' action = 'rejected' v.verifyed_date = datetime.datetime.today() v.verifyier = request.user v.save() msgusernotify(visit=v, action=action, comment=comm) return render_to_response("dayinlife/thanks_approval.html", { 'action': action }) else: aform = ApprovalForm() return render_to_response("dayinlife/ask.html", dict(form=aform, visit = v)) else: return render_to_response("dayinlife/error.html", { 'error' : "Brrrr! You don't have permissions to approve requests! Speak to the administrator." }) return HttpResponse("Blaaa!") #@login_required def listauth(request): pass ## time functions def isworkingday(tstamp): day = tstamp.date().weekday() if day < 5: return True else: return False def isfuture(tstamp): if tstamp > datetime.datetime.now(): return True else: return False def isbooked(tstamp): ourdate = tstamp.date() v = Visit.objects.filter(date__gte=ourdate).exclude( date__gte=ourdate + datetime.timedelta(days=1)) if v.count() > 0: return True else: return False