Browse Source

init commit

devel
Dmitry 9 years ago
parent
commit
a3fe88ebee
  1. 0
      mapapp/__init__.py
  2. 4
      mapapp/admin.py
  3. 4
      mapapp/apps.py
  4. 14
      mapapp/forms.py
  5. 26
      mapapp/migrations/0001_initial.py
  6. 0
      mapapp/migrations/__init__.py
  7. 13
      mapapp/models.py
  8. 3
      mapapp/tests.py
  9. 16
      mapapp/urls.py
  10. 98
      mapapp/views.py

0
gmap/__init__.py → mapapp/__init__.py

4
mapapp/admin.py

@ -0,0 +1,4 @@
from django.contrib import admin
from .models import Dot
admin.site.register(Dot)

4
gmap/apps.py → mapapp/apps.py

@ -1,7 +1,5 @@
from django.apps import AppConfig
class MapappConfig(AppConfig):
name = 'gmap'
name = 'mapapp'

14
mapapp/forms.py

@ -0,0 +1,14 @@
# -*- coding: utf-8 -*-
from django import forms
from .models import Dot
class DotForm(forms.ModelForm):
class Meta:
model = Dot
fields = '__all__'
widgets = {
'title': forms.TextInput(attrs={'class': 'form-control', 'required': '', 'autofocus':''}),
'latitude': forms.NumberInput(attrs={'class': 'form-control', 'required': ''}),
'longitude': forms.NumberInput(attrs={'class': 'form-control', 'required': ''})
}

26
mapapp/migrations/0001_initial.py

@ -0,0 +1,26 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9 on 2017-01-25 16:02
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='Dot',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(max_length=127)),
('latitude', models.FloatField()),
('longitude', models.FloatField()),
],
options={
'db_table': 'dots',
},
),
]

0
gmap/migrations/__init__.py → mapapp/migrations/__init__.py

13
mapapp/models.py

@ -0,0 +1,13 @@
from django.db import models
class Dot(models.Model):
title = models.CharField(max_length=127)
latitude = models.FloatField()
longitude = models.FloatField()
class Meta:
db_table = 'dots'
def __str__(self):
return self.title

3
mapapp/tests.py

@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

16
mapapp/urls.py

@ -0,0 +1,16 @@
# -*- coding:utf-8 -*-
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$', views.home, name='home'),
url(r'^options$', views.options, name='options'),
url(r'^options/add$', views.dot, name='add_dot'),
url(r'^options/(?P<did>\d+)/edit$', views.dot, name='edit_dot'),
url(r'^options/(?P<did>\d+)/remove$', views.remove, name='remove_dot'),
url(r'^get_dots$', views.get_dots, name='get_dots'),
url(r'^modal_add_dot$', views.modal_add_dot, name='modal_add_dot')
]

98
mapapp/views.py

@ -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)
Loading…
Cancel
Save