|
|
@ -0,0 +1,98 @@ |
|
|
|
|
|
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) |