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.
98 lines
2.9 KiB
98 lines
2.9 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
|
|
|
|
|
|
@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)
|