From c5fc590c2af12d7eaf6b11358236f2a367865e41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Sun, 16 Sep 2018 20:08:01 +0200 Subject: [PATCH] update to python3.7, update dependencies and fix obvious update issues --- .travis.yml | 7 ++++-- src/c3nav/api/urls.py | 2 +- src/c3nav/editor/models/changeset.py | 12 +++++----- src/c3nav/editor/views/changes.py | 2 +- src/c3nav/mapdata/api.py | 2 +- src/c3nav/mapdata/fields.py | 2 +- src/c3nav/mapdata/forms.py | 2 +- src/c3nav/mapdata/models/access.py | 2 +- src/c3nav/mapdata/models/base.py | 2 +- src/c3nav/mapdata/render/engines/opengl.py | 25 +++++++++++---------- src/c3nav/urls.py | 2 +- src/requirements-tileserver.txt | 4 ++-- src/requirements/opengl.txt | 2 +- src/requirements/production.txt | 26 +++++++++++----------- src/requirements/redis.txt | 2 +- src/requirements/rsvg.txt | 4 ++-- 16 files changed, 52 insertions(+), 46 deletions(-) diff --git a/.travis.yml b/.travis.yml index c00481fd..70ac3e6f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,8 +2,11 @@ language: python cache: pip -python: - - "3.6" +matrix: + include: + - python: "3.7" + dist: xenial + sudo: required install: - pip install --upgrade setuptools pip diff --git a/src/c3nav/api/urls.py b/src/c3nav/api/urls.py index c6cd3a39..13dba941 100644 --- a/src/c3nav/api/urls.py +++ b/src/c3nav/api/urls.py @@ -1,8 +1,8 @@ import re from collections import OrderedDict -from compressor.utils.decorators import cached_property from django.conf.urls import include, url +from django.utils.functional import cached_property from rest_framework.generics import GenericAPIView from rest_framework.response import Response from rest_framework.routers import SimpleRouter diff --git a/src/c3nav/editor/models/changeset.py b/src/c3nav/editor/models/changeset.py index 2daf15ae..bfe5425f 100644 --- a/src/c3nav/editor/models/changeset.py +++ b/src/c3nav/editor/models/changeset.py @@ -38,19 +38,21 @@ class ChangeSet(models.Model): ) created = models.DateTimeField(auto_now_add=True, verbose_name=_('created')) 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='+', - verbose_name=_('last update')) + verbose_name=_('last update'), on_delete=models.PROTECT) 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') 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')) description = models.TextField(max_length=1000, default='', verbose_name=_('Description')) assigned_to = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, on_delete=models.PROTECT, related_name='assigned_changesets', verbose_name=_('assigned to')) - map_update = models.OneToOneField(MapUpdate, null=True, related_name='changeset', verbose_name=_('map update')) - last_cleaned_with = models.ForeignKey(MapUpdate, null=True, related_name='checked_changesets') + map_update = models.OneToOneField(MapUpdate, null=True, related_name='changeset', + 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: verbose_name = _('Change Set') diff --git a/src/c3nav/editor/views/changes.py b/src/c3nav/editor/views/changes.py index 7d163e8e..4a3b377e 100644 --- a/src/c3nav/editor/views/changes.py +++ b/src/c3nav/editor/views/changes.py @@ -9,8 +9,8 @@ from django.http import Http404 from django.shortcuts import get_object_or_404, redirect, render from django.urls import NoReverseMatch, reverse 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 ugettext_lazy as _ from c3nav.editor.forms import ChangeSetForm, RejectForm from c3nav.editor.models import ChangeSet diff --git a/src/c3nav/mapdata/api.py b/src/c3nav/mapdata/api.py index 21ee53df..7a605a6f 100644 --- a/src/c3nav/mapdata/api.py +++ b/src/c3nav/mapdata/api.py @@ -10,8 +10,8 @@ from django.http import HttpResponse from django.shortcuts import redirect from django.utils.cache import get_conditional_response 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 ugettext_lazy as _ from rest_framework.decorators import detail_route, list_route from rest_framework.exceptions import NotFound, ValidationError from rest_framework.mixins import RetrieveModelMixin diff --git a/src/c3nav/mapdata/fields.py b/src/c3nav/mapdata/fields.py index a6b8b59e..199b664f 100644 --- a/src/c3nav/mapdata/fields.py +++ b/src/c3nav/mapdata/fields.py @@ -8,8 +8,8 @@ from django.core.validators import RegexValidator from django.db import models from django.utils.functional import cached_property, 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 ugettext_lazy as _ from shapely import validation from shapely.geometry import LineString, MultiPolygon, Point, Polygon, mapping, shape from shapely.geometry.base import BaseGeometry diff --git a/src/c3nav/mapdata/forms.py b/src/c3nav/mapdata/forms.py index d5885911..c58d20c5 100644 --- a/src/c3nav/mapdata/forms.py +++ b/src/c3nav/mapdata/forms.py @@ -4,8 +4,8 @@ from django.conf import settings from django.core.exceptions import ValidationError from django.forms import CharField, ModelForm 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 ugettext_lazy as _ from c3nav.mapdata.fields import I18nField diff --git a/src/c3nav/mapdata/models/access.py b/src/c3nav/mapdata/models/access.py index daf5568a..f25e1a48 100644 --- a/src/c3nav/mapdata/models/access.py +++ b/src/c3nav/mapdata/models/access.py @@ -240,7 +240,7 @@ class AccessPermission(models.Model): class AccessRestrictionMixin(SerializableMixin, models.Model): access_restriction = models.ForeignKey(AccessRestriction, null=True, blank=True, - verbose_name=_('Access Restriction')) + verbose_name=_('Access Restriction'), on_delete=models.PROTECT) class Meta: abstract = True diff --git a/src/c3nav/mapdata/models/base.py b/src/c3nav/mapdata/models/base.py index 06562c09..3ce57fa2 100644 --- a/src/c3nav/mapdata/models/base.py +++ b/src/c3nav/mapdata/models/base.py @@ -3,8 +3,8 @@ from collections import OrderedDict from django.core.cache import cache from django.db import models 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 ugettext_lazy as _ from c3nav.mapdata.fields import I18nField from c3nav.mapdata.models import MapUpdate diff --git a/src/c3nav/mapdata/render/engines/opengl.py b/src/c3nav/mapdata/render/engines/opengl.py index e6625d63..67b700e0 100644 --- a/src/c3nav/mapdata/render/engines/opengl.py +++ b/src/c3nav/mapdata/render/engines/opengl.py @@ -5,7 +5,7 @@ from itertools import chain from queue import Queue from typing import Optional -import ModernGL +import moderngl import numpy as np from PIL import Image from shapely.geometry import CAP_STYLE, JOIN_STYLE, Polygon @@ -25,14 +25,14 @@ class RenderContext(namedtuple('RenderContext', ('width', 'height', 'ctx', 'prog @classmethod 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) fbo = ctx.framebuffer([color_rbo]) fbo.use() - prog = ctx.program([ - ctx.vertex_shader(''' + prog = ctx.program( + vertex_shader=''' #version 330 in vec3 in_vert; in vec4 in_color; @@ -44,18 +44,18 @@ class RenderContext(namedtuple('RenderContext', ('width', 'height', 'ctx', 'prog gl_Position = mvp * vec4(in_vert, 1.0); v_color = in_color; } - '''), - ctx.fragment_shader(''' + ''', + fragment_shader=''' #version 330 in vec4 v_color; out vec4 f_color; void main() { f_color = v_color; } - '''), - ]) + ''' + ) - ctx.enable(ModernGL.BLEND) + ctx.enable(moderngl.BLEND) return cls(width, height, ctx, prog, fbo) @@ -115,15 +115,16 @@ class OpenGLWorker(threading.Thread): ctx = self._get_ctx(task.width, task.height) ctx.ctx.clear(*task.background_rgb) - ctx.prog.uniforms['mvp'].value = task.mvp + ctx.prog['mvp'].value = task.mvp if 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() 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) img = Image.frombytes('RGB', (task.width, task.height), fbo2.read(components=3)) diff --git a/src/c3nav/urls.py b/src/c3nav/urls.py index 66399054..6bbc8fb9 100644 --- a/src/c3nav/urls.py +++ b/src/c3nav/urls.py @@ -12,7 +12,7 @@ import c3nav.site.urls urlpatterns = [ 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'^admin/', admin.site.urls), url(r'^control/', include(c3nav.control.urls)), diff --git a/src/requirements-tileserver.txt b/src/requirements-tileserver.txt index 79399790..32227c6c 100644 --- a/src/requirements-tileserver.txt +++ b/src/requirements-tileserver.txt @@ -1,3 +1,3 @@ -requests>=2.17,<2.18 -numpy>=1.13,<1.14 +requests>=2.19,<2.20 +numpy>=1.15,<1.16 pylibmc>=1.5,<1.6 diff --git a/src/requirements/opengl.txt b/src/requirements/opengl.txt index 5531bc3a..09a4976d 100644 --- a/src/requirements/opengl.txt +++ b/src/requirements/opengl.txt @@ -1 +1 @@ -ModernGL>=4.2,<4.3 +ModernGL>=5.4,<5.5 diff --git a/src/requirements/production.txt b/src/requirements/production.txt index a96555d8..50ee4238 100644 --- a/src/requirements/production.txt +++ b/src/requirements/production.txt @@ -1,16 +1,16 @@ -Django>=1.11,<1.12 -django-bootstrap3>=8.2,<8.3 -django-compressor==2.1 +Django>=2.1,<2.2 +django-bootstrap3>=11.0,<11.1 +django-compressor==2.2 csscompressor -djangorestframework>=3.6,<3.7 -django-filter>=1.0,<1.1 -shapely>=1.5,<1.6 -MeshPy>=2016.1,<2016.2 +djangorestframework>=3.8,<3.9 +django-filter>=2.0,<2.1 +shapely>=1.6,<1.7 +-e git://github.com/c3nav/meshpy#egg=MeshPy rtree>=0.8,<0.9 -celery>=4.0,<4.1 -requests>=2.17,<2.18 -Pillow>=4.1,<4.2 -qrcode>=5.3,<5.4 -matplotlib>=2.0,<2.1 -scipy>=0.19,<0.20 +celery>=4.2,<4.3 +requests>=2.19,<2.20 +Pillow>=5.2,<5.3 +qrcode>=6.0,<6.1 +matplotlib>=2.2,<2.3 +scipy>=1.1,<1.2 django_libsass>=0.7,<0.8 diff --git a/src/requirements/redis.txt b/src/requirements/redis.txt index 8a1c0350..0db31905 100644 --- a/src/requirements/redis.txt +++ b/src/requirements/redis.txt @@ -1,2 +1,2 @@ -django-redis>=4.8,<4.9 +django-redis>=4.9,<4.10 redis>=2.10,<2.11 diff --git a/src/requirements/rsvg.txt b/src/requirements/rsvg.txt index 2f6e448e..d93b0758 100644 --- a/src/requirements/rsvg.txt +++ b/src/requirements/rsvg.txt @@ -1,2 +1,2 @@ -pgi==0.0.11.1 -cairocffi>=0.8,<0.9 +pgi==0.0.11.2 +cairocffi>=0.9,<0.10