from troggle.core.models import Cave, Expedition, Person, LogbookEntry, PersonExpedition, PersonTrip, Photo import troggle.settings as settings from django import forms from django.template import loader, Context from django.db.models import Q import databaseReset import re import randSent from django.http import HttpResponse, HttpResponseRedirect from django.core.urlresolvers import reverse from utils import render_with_context from core.models import * def showrequest(request): return HttpResponse(request.GET) def stats(request): statsDict={} statsDict['expoCount'] = int(Expedition.objects.count()) statsDict['caveCount'] = int(Cave.objects.count()) statsDict['personCount'] = int(Person.objects.count()) statsDict['logbookEntryCount'] = int(LogbookEntry.objects.count()) return render_with_context(request,'statistics.html', statsDict) def frontpage(request): if request.user.is_authenticated: return render_with_context(request,'tasks.html') expeditions = Expedition.objects.order_by("-year") logbookentry = LogbookEntry cave = Cave photo = Photo from django.contrib.admin.templatetags import log return render_with_context(request,'frontpage.html', locals()) def todo(request): message = "no test message" #reverse('personn', kwargs={"name":"hkjhjh"}) if "reloadexpos" in request.GET: message = LoadPersonsExpos() message = "Reloaded personexpos" if "reloadsurvex" in request.POST: message = LoadAllSurvexBlocks() message = "Reloaded survexblocks" #'randSent':randSent.randomLogbookSentence(), expeditions = Expedition.objects.order_by("-year") totallogbookentries = LogbookEntry.objects.count() return render_with_context(request,'index.html', {'expeditions':expeditions, 'all':'all', 'totallogbookentries':totallogbookentries, "message":message}) def calendar(request,year): week=['S','S','M','T','W','T','F'] if year: expedition=Expedition.objects.get(year=year) PersonExpeditions=expedition.personexpedition_set.all() return render_with_context(request,'calendar.html', locals()) def controlPanel(request): jobs_completed=[] if request.method=='POST': if request.user.is_superuser: #importlist is mostly here so that things happen in the correct order. #http post data seems to come in an unpredictable order, so we do it this way. importlist=['reload_db', 'import_people', 'import_cavetab', 'import_logbooks', 'import_surveys', 'import_QMs'] databaseReset.make_dirs() for item in importlist: if item in request.POST: print "running"+ " databaseReset."+item+"()" exec "databaseReset."+item+"()" jobs_completed.append(item) else: if request.user.is_authenticated(): #The user is logged in, but is not a superuser. return render_with_context(request,'controlPanel.html', {'caves':Cave.objects.all(),'error':'You must be a superuser to use that feature.'}) else: return HttpResponseRedirect(reverse('auth_login')) return render_with_context(request,'controlPanel.html', {'caves':Cave.objects.all(),'expeditions':Expedition.objects.all(),'jobs_completed':jobs_completed}) def downloadCavetab(request): from export import tocavetab response = HttpResponse(mimetype='text/csv') response['Content-Disposition'] = 'attachment; filename=CAVETAB2.CSV' tocavetab.writeCaveTab(response) return response def downloadSurveys(request): from export import tosurveys response = HttpResponse(mimetype='text/csv') response['Content-Disposition'] = 'attachment; filename=Surveys.csv' tosurveys.writeCaveTab(response) return response def downloadLogbook(request,year=None,extension=None,queryset=None): if year: expedition=Expedition.objects.get(year=year) logbook_entries=LogbookEntry.objects.filter(expedition=expedition) filename='logbook'+year elif queryset: logbook_entries=queryset filename='logbook' else: return response(r"Error: Logbook downloader doesn't know what year you want") if 'year' in request.GET: year=request.GET['year'] if 'extension' in request.GET: extension=request.GET['extension'] if extension =='txt': response = HttpResponse(mimetype='text/plain') style='2008' elif extension == 'html': response = HttpResponse(mimetype='text/html') style='2005' template='logbook'+style+'style.'+extension response['Content-Disposition'] = 'attachment; filename='+filename+'.'+extension t=loader.get_template(template) c=Context({'logbook_entries':logbook_entries}) response.write(t.render(c)) return response def downloadQMs(request): # Note to self: use get_cave method for the below if request.method=='GET': try: cave=Cave.objects.get(kataster_number=request.GET['cave_id']) except Cave.DoesNotExist: cave=Cave.objects.get(name=cave_id) from export import toqms response = HttpResponse(mimetype='text/csv') response['Content-Disposition'] = 'attachment; filename=qm.csv' toqms.writeQmTable(response,cave) return response def ajax_test(request): post_text = request.POST['post_data'] return HttpResponse("{'response_text': '"+post_text+" recieved.'}", mimetype="application/json") def eyecandy(request): return render_with_context(request,'eyecandy.html', {}) def ajax_QM_number(request): if request.method=='POST': cave=Cave.objects.get(id=request.POST['cave']) print cave exp=Expedition.objects.get(pk=request.POST['year']) print exp res=cave.new_QM_number(exp.year) return HttpResponse(res)