Source code for openassembly.oa_location.views

from oa_location.models import Place, Point, Location
import simplejson
from django.http import HttpResponse
from django.contrib.contenttypes.models import ContentType
from pirate_permissions.models import has_permission
from django.template.loader import render_to_string


[docs]def access_location(obj, user): try: ifpop = (user == obj.user) except: ifpop = False if user == obj or ifpop or has_permission(obj, user): return True else: return False
[docs]def create_location(request): if not request.user.is_authenticated() or not request.user.is_active or request.method != 'POST': #needs to popup registration dialog instead return HttpResponse(simplejson.dumps({'FAIL': True}), mimetype='application/json') if request.method == 'POST': object_pk = request.POST[u'object_pk'] content_pk = request.POST[u'content_type'] lat = request.POST[u'lat'] lon = request.POST[u'lon'] text = request.POST['desc'] content_type = ContentType.objects.get(pk=content_pk) obj = content_type.get_object_for_this_type(pk=object_pk) if access_location(obj, request.user): pt, is_new = Point.objects.get_or_create(latitude=lat, longtitude=lon) pt.save() loc, is_new = Location.objects.get_or_create(description = text) if Place.objects.filter(object_pk=object_pk, content_type=content_type).count() > 0: pl= Place.objects.get(object_pk=object_pk, content_type=content_type) pl.summary = loc pl.location = pt pl.save() else: loc = Place(summary=loc, location=pt, object_pk=object_pk, content_type=content_type) loc.save() return HttpResponse(simplejson.dumps({'FAIL': False, 'lat': lat, 'long': lon}), mimetype='application/json') else: return HttpResponse(simplejson.dumps({'FAIL': True, 'Permission': False}), mimetype='application/json')
[docs]def delete_location(request): if not request.user.is_authenticated() or not request.user.is_active or request.method != 'POST': #needs to popup registration dialog instead return HttpResponse(simplejson.dumps({'FAIL': True}), mimetype='application/json') if request.method == 'POST': object_pk = request.POST[u'object_pk'] pl = Place.objects.get(object_pk=object_pk) if access_location(pl.content_object, request.user): pl.delete() return HttpResponse(simplejson.dumps({'FAIL': False}), mimetype='application/json') else: return HttpResponse(simplejson.dumps({'FAIL': True, 'Permission': False}), mimetype='application/json')
[docs]def load_markers(request): if not request.user.is_authenticated() or not request.user.is_active: #needs to popup registration dialog instead return HttpResponse(simplejson.dumps({'FAIL': True}), mimetype='application/json') if request.method == 'GET': object_pk = request.GET[u'object_pk'] content_pk = request.GET[u'content_type'] start = request.GET[u'start'] end = request.GET[u'end'] dpk = request.GET[u'dashobj_pk'] dim = request.GET[u'dimension'] #generate context if object_pk != '': content_type = ContentType.objects.get(pk=content_pk) obj = content_type.get_object_for_this_type(pk=object_pk) else: obj = None context = {'request': request, 'object': obj, 'dashobj_pk': dpk, 'start': int(end), 'end': int(end)+1, 'dimension': dim } newmarkers = render_to_string('etc/markers.html', context) context = {'request': request, 'object': obj, 'dashobj_pk': dpk, 'start': int(end)+1, 'end': int(end)+2, 'dimension': dim } newlink = render_to_string('etc/load_markers.html', context) return HttpResponse(simplejson.dumps({'FAIL': False, 'html': newmarkers, 'link': newlink}), mimetype='application/json')