You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

114 lines
3.3 KiB

from django.contrib import messages
from django.contrib.auth.decorators import login_required, permission_required
from django.contrib.gis.shortcuts import render_to_text
from django.core.exceptions import PermissionDenied
from django.http import HttpResponse
from django.shortcuts import render, redirect
from django.core.serializers import serialize
from .models import Dot
from .forms import DotForm
from mydefs import pag_mn
from devapp.models import Device
@login_required
def home(request):
dots = Dot.objects.all()
return render(request, 'maps/ya_index.html', {
'dots': dots
})
@login_required
def options(request):
dots = Dot.objects.all()
dots = pag_mn(request, dots)
return render(request, 'maps/options.html', {
'dots': dots
})
@login_required
def dot(request, did=0):
try:
if did == 0:
dot = Dot()
if not request.user.has_perm('mapapp.add_dot'):
raise PermissionDenied
else:
if not request.user.has_perm('mapapp.change_dot'):
raise PermissionDenied
dot = Dot.objects.get(id=did)
if request.method == 'POST':
frm = DotForm(request.POST, instance=dot)
if frm.is_valid():
frm.save()
messages.success(request, 'Точка топологии сохранена')
else:
messages.error(request, 'ошибки в форме')
else:
frm = DotForm(instance=dot)
return render(request, 'maps/dot.html', {
'dot': dot,
'form': frm
})
except Dot.DoesNotExist:
messages.error(request, 'Эта точка топологии не существует')
return redirect('mapapp:options')
@login_required
@permission_required('mapapp.delete_dot')
def remove(request, did):
try:
dot = Dot.objects.get(id=did)
title = dot.title
dot.delete()
messages.success(request, "Точка топологии '%s' успешно удалена" % title)
except Dot.DoesNotExist:
messages.error(request, 'Эта точка топологии не существует')
return redirect('mapapp:options')
def get_dots(request):
dots = Dot.objects.all()
return HttpResponse(serialize('json', dots, ensure_ascii=False), content_type='application/json')
@login_required
@permission_required('mapapp.add_dot')
def modal_add_dot(request):
if request.method == 'POST':
coords = request.POST.get('coords')
title = request.POST.get('title')
lat, lon = coords.split(',')
print(lat, lon)
Dot.objects.create(
title=title,
latitude=float(lat),
longitude=float(lon)
)
return redirect('mapapp:home')
else:
coords = request.GET.get('coords')
return render_to_text('maps/modal_add_dot.html', {
'coords': coords
}, request=request)
@login_required
def dot_tooltip(request):
d = request.GET.get('d')
devs, dot = None, None
try:
dot = Dot.objects.get(id=d)
devs = Device.objects.filter(map_dot=dot)
except Dot.DoesNotExist:
pass
return render_to_text('maps/map_tooltip.html', {
'devs': devs,
'dot': dot
})