update to python3.7, update dependencies and fix obvious update issues
This commit is contained in:
parent
2946de94f6
commit
c5fc590c2a
16 changed files with 52 additions and 46 deletions
|
@ -2,8 +2,11 @@ language: python
|
||||||
|
|
||||||
cache: pip
|
cache: pip
|
||||||
|
|
||||||
python:
|
matrix:
|
||||||
- "3.6"
|
include:
|
||||||
|
- python: "3.7"
|
||||||
|
dist: xenial
|
||||||
|
sudo: required
|
||||||
|
|
||||||
install:
|
install:
|
||||||
- pip install --upgrade setuptools pip
|
- pip install --upgrade setuptools pip
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
import re
|
import re
|
||||||
from collections import OrderedDict
|
from collections import OrderedDict
|
||||||
|
|
||||||
from compressor.utils.decorators import cached_property
|
|
||||||
from django.conf.urls import include, url
|
from django.conf.urls import include, url
|
||||||
|
from django.utils.functional import cached_property
|
||||||
from rest_framework.generics import GenericAPIView
|
from rest_framework.generics import GenericAPIView
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
from rest_framework.routers import SimpleRouter
|
from rest_framework.routers import SimpleRouter
|
||||||
|
|
|
@ -38,19 +38,21 @@ class ChangeSet(models.Model):
|
||||||
)
|
)
|
||||||
created = models.DateTimeField(auto_now_add=True, verbose_name=_('created'))
|
created = models.DateTimeField(auto_now_add=True, verbose_name=_('created'))
|
||||||
last_change = models.ForeignKey('editor.ChangeSetUpdate', null=True, related_name='+',
|
last_change = models.ForeignKey('editor.ChangeSetUpdate', null=True, related_name='+',
|
||||||
verbose_name=_('last object change'))
|
verbose_name=_('last object change'), on_delete=models.PROTECT)
|
||||||
last_update = models.ForeignKey('editor.ChangeSetUpdate', null=True, related_name='+',
|
last_update = models.ForeignKey('editor.ChangeSetUpdate', null=True, related_name='+',
|
||||||
verbose_name=_('last update'))
|
verbose_name=_('last update'), on_delete=models.PROTECT)
|
||||||
last_state_update = models.ForeignKey('editor.ChangeSetUpdate', null=True, related_name='+',
|
last_state_update = models.ForeignKey('editor.ChangeSetUpdate', null=True, related_name='+',
|
||||||
verbose_name=_('last state update'))
|
verbose_name=_('last state update'), on_delete=models.PROTECT)
|
||||||
state = models.CharField(max_length=20, db_index=True, choices=STATES, default='unproposed')
|
state = models.CharField(max_length=20, db_index=True, choices=STATES, default='unproposed')
|
||||||
author = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, on_delete=models.PROTECT, verbose_name=_('Author'))
|
author = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, on_delete=models.PROTECT, verbose_name=_('Author'))
|
||||||
title = models.CharField(max_length=100, default='', verbose_name=_('Title'))
|
title = models.CharField(max_length=100, default='', verbose_name=_('Title'))
|
||||||
description = models.TextField(max_length=1000, default='', verbose_name=_('Description'))
|
description = models.TextField(max_length=1000, default='', verbose_name=_('Description'))
|
||||||
assigned_to = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, on_delete=models.PROTECT,
|
assigned_to = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, on_delete=models.PROTECT,
|
||||||
related_name='assigned_changesets', verbose_name=_('assigned to'))
|
related_name='assigned_changesets', verbose_name=_('assigned to'))
|
||||||
map_update = models.OneToOneField(MapUpdate, null=True, related_name='changeset', verbose_name=_('map update'))
|
map_update = models.OneToOneField(MapUpdate, null=True, related_name='changeset',
|
||||||
last_cleaned_with = models.ForeignKey(MapUpdate, null=True, related_name='checked_changesets')
|
verbose_name=_('map update'), on_delete=models.PROTECT)
|
||||||
|
last_cleaned_with = models.ForeignKey(MapUpdate, null=True, related_name='checked_changesets',
|
||||||
|
on_delete=models.PROTECT)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = _('Change Set')
|
verbose_name = _('Change Set')
|
||||||
|
|
|
@ -9,8 +9,8 @@ from django.http import Http404
|
||||||
from django.shortcuts import get_object_or_404, redirect, render
|
from django.shortcuts import get_object_or_404, redirect, render
|
||||||
from django.urls import NoReverseMatch, reverse
|
from django.urls import NoReverseMatch, reverse
|
||||||
from django.utils.text import format_lazy
|
from django.utils.text import format_lazy
|
||||||
from django.utils.translation import ugettext_lazy as _
|
|
||||||
from django.utils.translation import get_language_info
|
from django.utils.translation import get_language_info
|
||||||
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
|
||||||
from c3nav.editor.forms import ChangeSetForm, RejectForm
|
from c3nav.editor.forms import ChangeSetForm, RejectForm
|
||||||
from c3nav.editor.models import ChangeSet
|
from c3nav.editor.models import ChangeSet
|
||||||
|
|
|
@ -10,8 +10,8 @@ from django.http import HttpResponse
|
||||||
from django.shortcuts import redirect
|
from django.shortcuts import redirect
|
||||||
from django.utils.cache import get_conditional_response
|
from django.utils.cache import get_conditional_response
|
||||||
from django.utils.http import http_date, quote_etag, urlsafe_base64_encode
|
from django.utils.http import http_date, quote_etag, urlsafe_base64_encode
|
||||||
from django.utils.translation import ugettext_lazy as _
|
|
||||||
from django.utils.translation import get_language
|
from django.utils.translation import get_language
|
||||||
|
from django.utils.translation import ugettext_lazy as _
|
||||||
from rest_framework.decorators import detail_route, list_route
|
from rest_framework.decorators import detail_route, list_route
|
||||||
from rest_framework.exceptions import NotFound, ValidationError
|
from rest_framework.exceptions import NotFound, ValidationError
|
||||||
from rest_framework.mixins import RetrieveModelMixin
|
from rest_framework.mixins import RetrieveModelMixin
|
||||||
|
|
|
@ -8,8 +8,8 @@ from django.core.validators import RegexValidator
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.utils.functional import cached_property, lazy
|
from django.utils.functional import cached_property, lazy
|
||||||
from django.utils.text import format_lazy
|
from django.utils.text import format_lazy
|
||||||
from django.utils.translation import ugettext_lazy as _
|
|
||||||
from django.utils.translation import get_language
|
from django.utils.translation import get_language
|
||||||
|
from django.utils.translation import ugettext_lazy as _
|
||||||
from shapely import validation
|
from shapely import validation
|
||||||
from shapely.geometry import LineString, MultiPolygon, Point, Polygon, mapping, shape
|
from shapely.geometry import LineString, MultiPolygon, Point, Polygon, mapping, shape
|
||||||
from shapely.geometry.base import BaseGeometry
|
from shapely.geometry.base import BaseGeometry
|
||||||
|
|
|
@ -4,8 +4,8 @@ from django.conf import settings
|
||||||
from django.core.exceptions import ValidationError
|
from django.core.exceptions import ValidationError
|
||||||
from django.forms import CharField, ModelForm
|
from django.forms import CharField, ModelForm
|
||||||
from django.utils.text import capfirst, format_lazy
|
from django.utils.text import capfirst, format_lazy
|
||||||
from django.utils.translation import ugettext_lazy as _
|
|
||||||
from django.utils.translation import get_language_info
|
from django.utils.translation import get_language_info
|
||||||
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
|
||||||
from c3nav.mapdata.fields import I18nField
|
from c3nav.mapdata.fields import I18nField
|
||||||
|
|
||||||
|
|
|
@ -240,7 +240,7 @@ class AccessPermission(models.Model):
|
||||||
|
|
||||||
class AccessRestrictionMixin(SerializableMixin, models.Model):
|
class AccessRestrictionMixin(SerializableMixin, models.Model):
|
||||||
access_restriction = models.ForeignKey(AccessRestriction, null=True, blank=True,
|
access_restriction = models.ForeignKey(AccessRestriction, null=True, blank=True,
|
||||||
verbose_name=_('Access Restriction'))
|
verbose_name=_('Access Restriction'), on_delete=models.PROTECT)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
abstract = True
|
abstract = True
|
||||||
|
|
|
@ -3,8 +3,8 @@ from collections import OrderedDict
|
||||||
from django.core.cache import cache
|
from django.core.cache import cache
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.db.models import Q
|
from django.db.models import Q
|
||||||
from django.utils.translation import ugettext_lazy as _
|
|
||||||
from django.utils.translation import get_language, get_language_info
|
from django.utils.translation import get_language, get_language_info
|
||||||
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
|
||||||
from c3nav.mapdata.fields import I18nField
|
from c3nav.mapdata.fields import I18nField
|
||||||
from c3nav.mapdata.models import MapUpdate
|
from c3nav.mapdata.models import MapUpdate
|
||||||
|
|
|
@ -5,7 +5,7 @@ from itertools import chain
|
||||||
from queue import Queue
|
from queue import Queue
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
import ModernGL
|
import moderngl
|
||||||
import numpy as np
|
import numpy as np
|
||||||
from PIL import Image
|
from PIL import Image
|
||||||
from shapely.geometry import CAP_STYLE, JOIN_STYLE, Polygon
|
from shapely.geometry import CAP_STYLE, JOIN_STYLE, Polygon
|
||||||
|
@ -25,14 +25,14 @@ class RenderContext(namedtuple('RenderContext', ('width', 'height', 'ctx', 'prog
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def create(cls, width, height):
|
def create(cls, width, height):
|
||||||
ctx = ModernGL.create_standalone_context()
|
ctx = moderngl.create_standalone_context()
|
||||||
|
|
||||||
color_rbo = ctx.renderbuffer((width, height), samples=ctx.max_samples)
|
color_rbo = ctx.renderbuffer((width, height), samples=ctx.max_samples)
|
||||||
fbo = ctx.framebuffer([color_rbo])
|
fbo = ctx.framebuffer([color_rbo])
|
||||||
fbo.use()
|
fbo.use()
|
||||||
|
|
||||||
prog = ctx.program([
|
prog = ctx.program(
|
||||||
ctx.vertex_shader('''
|
vertex_shader='''
|
||||||
#version 330
|
#version 330
|
||||||
in vec3 in_vert;
|
in vec3 in_vert;
|
||||||
in vec4 in_color;
|
in vec4 in_color;
|
||||||
|
@ -44,18 +44,18 @@ class RenderContext(namedtuple('RenderContext', ('width', 'height', 'ctx', 'prog
|
||||||
gl_Position = mvp * vec4(in_vert, 1.0);
|
gl_Position = mvp * vec4(in_vert, 1.0);
|
||||||
v_color = in_color;
|
v_color = in_color;
|
||||||
}
|
}
|
||||||
'''),
|
''',
|
||||||
ctx.fragment_shader('''
|
fragment_shader='''
|
||||||
#version 330
|
#version 330
|
||||||
in vec4 v_color;
|
in vec4 v_color;
|
||||||
out vec4 f_color;
|
out vec4 f_color;
|
||||||
void main() {
|
void main() {
|
||||||
f_color = v_color;
|
f_color = v_color;
|
||||||
}
|
}
|
||||||
'''),
|
'''
|
||||||
])
|
)
|
||||||
|
|
||||||
ctx.enable(ModernGL.BLEND)
|
ctx.enable(moderngl.BLEND)
|
||||||
|
|
||||||
return cls(width, height, ctx, prog, fbo)
|
return cls(width, height, ctx, prog, fbo)
|
||||||
|
|
||||||
|
@ -115,15 +115,16 @@ class OpenGLWorker(threading.Thread):
|
||||||
ctx = self._get_ctx(task.width, task.height)
|
ctx = self._get_ctx(task.width, task.height)
|
||||||
ctx.ctx.clear(*task.background_rgb)
|
ctx.ctx.clear(*task.background_rgb)
|
||||||
|
|
||||||
ctx.prog.uniforms['mvp'].value = task.mvp
|
ctx.prog['mvp'].value = task.mvp
|
||||||
|
|
||||||
if task.vertices:
|
if task.vertices:
|
||||||
vbo = ctx.ctx.buffer(task.vertices)
|
vbo = ctx.ctx.buffer(task.vertices)
|
||||||
vao = ctx.ctx.simple_vertex_array(ctx.prog, vbo, ['in_vert', 'in_color'])
|
# noinspection PyTypeChecker
|
||||||
|
vao = ctx.ctx.simple_vertex_array(ctx.prog, vbo, 'in_vert', 'in_color')
|
||||||
vao.render()
|
vao.render()
|
||||||
|
|
||||||
color_rbo2 = ctx.ctx.renderbuffer((task.width, task.height))
|
color_rbo2 = ctx.ctx.renderbuffer((task.width, task.height))
|
||||||
fbo2 = ctx.ctx.framebuffer(color_rbo2)
|
fbo2 = ctx.ctx.framebuffer([color_rbo2])
|
||||||
ctx.ctx.copy_framebuffer(fbo2, ctx.fbo)
|
ctx.ctx.copy_framebuffer(fbo2, ctx.fbo)
|
||||||
|
|
||||||
img = Image.frombytes('RGB', (task.width, task.height), fbo2.read(components=3))
|
img = Image.frombytes('RGB', (task.width, task.height), fbo2.read(components=3))
|
||||||
|
|
|
@ -12,7 +12,7 @@ import c3nav.site.urls
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
url(r'^editor/', include(c3nav.editor.urls)),
|
url(r'^editor/', include(c3nav.editor.urls)),
|
||||||
url(r'^api/', include(c3nav.api.urls, namespace='api')),
|
url(r'^api/', include((c3nav.api.urls, 'api'), namespace='api')),
|
||||||
url(r'^map/', include(c3nav.mapdata.urls)),
|
url(r'^map/', include(c3nav.mapdata.urls)),
|
||||||
url(r'^admin/', admin.site.urls),
|
url(r'^admin/', admin.site.urls),
|
||||||
url(r'^control/', include(c3nav.control.urls)),
|
url(r'^control/', include(c3nav.control.urls)),
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
requests>=2.17,<2.18
|
requests>=2.19,<2.20
|
||||||
numpy>=1.13,<1.14
|
numpy>=1.15,<1.16
|
||||||
pylibmc>=1.5,<1.6
|
pylibmc>=1.5,<1.6
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
ModernGL>=4.2,<4.3
|
ModernGL>=5.4,<5.5
|
||||||
|
|
|
@ -1,16 +1,16 @@
|
||||||
Django>=1.11,<1.12
|
Django>=2.1,<2.2
|
||||||
django-bootstrap3>=8.2,<8.3
|
django-bootstrap3>=11.0,<11.1
|
||||||
django-compressor==2.1
|
django-compressor==2.2
|
||||||
csscompressor
|
csscompressor
|
||||||
djangorestframework>=3.6,<3.7
|
djangorestframework>=3.8,<3.9
|
||||||
django-filter>=1.0,<1.1
|
django-filter>=2.0,<2.1
|
||||||
shapely>=1.5,<1.6
|
shapely>=1.6,<1.7
|
||||||
MeshPy>=2016.1,<2016.2
|
-e git://github.com/c3nav/meshpy#egg=MeshPy
|
||||||
rtree>=0.8,<0.9
|
rtree>=0.8,<0.9
|
||||||
celery>=4.0,<4.1
|
celery>=4.2,<4.3
|
||||||
requests>=2.17,<2.18
|
requests>=2.19,<2.20
|
||||||
Pillow>=4.1,<4.2
|
Pillow>=5.2,<5.3
|
||||||
qrcode>=5.3,<5.4
|
qrcode>=6.0,<6.1
|
||||||
matplotlib>=2.0,<2.1
|
matplotlib>=2.2,<2.3
|
||||||
scipy>=0.19,<0.20
|
scipy>=1.1,<1.2
|
||||||
django_libsass>=0.7,<0.8
|
django_libsass>=0.7,<0.8
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
django-redis>=4.8,<4.9
|
django-redis>=4.9,<4.10
|
||||||
redis>=2.10,<2.11
|
redis>=2.10,<2.11
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
pgi==0.0.11.1
|
pgi==0.0.11.2
|
||||||
cairocffi>=0.8,<0.9
|
cairocffi>=0.9,<0.10
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue