summaryrefslogtreecommitdiff
path: root/server/locations/views.py
blob: f509c7a763af3e164287f5ebdd71a0600602264c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
import settings
from django.shortcuts import render_to_response
from locations.models import *
from locations.xmlrpc import *
from django.http import HttpResponse
from django.contrib.auth.models import User
from django.db.models import Q
import simplejson
import time

def index(request):
	addlocationform = LocationForm(auto_id="addlocation_")
	editlocationform = LocationForm(auto_id="editlocation_")

	return render_to_response("locations/index.html", 
                                  {"addlocationform": addlocationform, 
                                   "editlocationform": editlocationform, 
                                   "user": request.user, 
                                   "userauthed": request.user.is_authenticated()})

def search(request):
	# Handle search requests
	
	query = request.GET['q']
	if not query or query == "":
		return HttpResponse(simplejson.encode(GetLocationList()))
	else:
		q = Q()
		for qs in query.split(" "):
			q &= Q(name__contains=qs) | Q(locname__contains=qs)

		try:
			locations = Location.objects.get(q)
		except:
			return HttpResponse("[]")

		results = []

		for location in locations:
			results.append({
			        'id': location.id,
				'lat': location.lat,
				'lon': location.lon,
				'name': location.name,
				'city': location.locname,
				'website': location.website
			})
		
		return HttpResponse(simplejson.encode(results))

def setlocation(request):
	if not request.has_key('locationid'):
		return HttpResponse(simplejson.encode({'error': 'Must supply location ID'}))
	
	locationid = request.GET['locationid']
	vars = {}
	for a in ('name', 'locname', 'latitude', 'longitude', 'website', 'access'):
		if request.GET.has_key(a):
			vars[a] = request.GET[a]
		else:
			vars[a] = None
			
	SetLocation(locationid, **vars)

def getlocation(request):
	if not request.GET['locationid']:
		return HttpResponse(simplejson.encode({'error': 'Must supply location ID'}))
	return HttpResponse(simplejson.encode(GetLocationDetails(request.GET['locationid'])))

def addlocation(request):
	# Handle Add Location requests
	response = {'saved': False, 'error': "Not handled"}

	locationform = LocationForm(request.GET)
	
	if not request.user.is_authenticated():
		response["error"] = "You must be logged in to register locations."
		return HttpResponse(simplejson.encode(response))
		
	if locationform.is_valid():
		location = locationform.save(commit=False)
		location.manager = request.user
		location.save()
		response["saved"] = True
		return HttpResponse(simplejson.encode(response))
	else:
		response["error"] = "Must fill required fields."
		response["newtable"] = locationform.as_table()
		return HttpResponse(simplejson.encode(response))

def locationdetails(request):
	# Return very detailed information about a location.
	if not request.GET.has_key('locationid'):
		return HttpResponse(simplejson.encode({'error': 'Must supply ID'}))
	
	return HttpResponse(simplejson.encode(GetLocationDetails(request.GET['locationid'])))
	

def addequipment(request):
	return HttpResponse("")
	
def addequipmenttype(request):
	return HttpResponse("")

def locationoutput(request):
	if type(request) == int:
		locationid = request
	else:
		locationid = request.GET['locationid']
		
	location = GetLocationDetails(locationid)
	datetime = time.ctime()

	return {"location": location, "time": datetime}

def locationtoxml(request):	
	return render_to_response("locations/location.xml", locationoutput(request))

def locationtoyaml(request):
	return render_to_response("locations/location.yaml", locationoutput(request))