Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 2 additions & 13 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,22 +1,11 @@
FROM debian:stretch
FROM python:3.8.1-buster
MAINTAINER nobody@nowhere.ws

RUN set -x \
&& apt-get update && apt-get install -y --no-install-recommends \
gir1.2-poppler-0.18 \
python-cairo \
python-gi \
python-gi-cairo \
python-gobject \
python-pip \
python-setuptools \
python-wheel

RUN mkdir /srv/eventmap
WORKDIR /srv/eventmap
COPY requirements.txt /srv/eventmap/requirements.txt

RUN pip install -r requirements.txt
RUN pip3 install -r requirements.txt

COPY ./ /srv/eventmap

Expand Down
44 changes: 17 additions & 27 deletions read_layers.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,10 @@
#

import cairo
import fitz
import json
import math
import io
import os
import shutil
import stat
Expand Down Expand Up @@ -59,47 +61,35 @@ def draw(self, context):
def _load_file(self, path):
raise NotImplementedError

def __cmp__(self, other):
return cmp(self.name, other.name)
def __lt__(self, other):
return self.name < other.name


class PdfLayer(Layer):
def _load_file(self, path):
import gi
gi.require_version('Poppler', '0.18')
from gi.repository import Poppler
document = Poppler.Document.new_from_file('file://{0}'.format(path), None)
self._page = document.get_page(0)
class ImageLayer(Layer):

@property
def _orig_width(self):
return self._page.get_size()[0]
return self._image.get_width()

@property
def _orig_height(self):
return self._page.get_size()[1]
return self._image.get_height()

def draw(self, context):
super(PdfLayer, self).draw(context)
self._page.render(context)
super().draw(context)
context.set_source_surface(self._image)
context.paint()


class PngLayer(Layer):
class PdfLayer(ImageLayer):
def _load_file(self, path):
self._image = cairo.ImageSurface.create_from_png(path)
document = fitz.open(path)
image = io.BytesIO(document.loadPage(0).getPixmap().getPNGData())
self._image = cairo.ImageSurface.create_from_png(image)

@property
def _orig_width(self):
return self._image.get_width()

@property
def _orig_height(self):
return self._image.get_height()

def draw(self, context):
super(PngLayer, self).draw(context)
context.set_source_surface(self._image)
context.paint()
class PngLayer(ImageLayer):
def _load_file(self, path):
self._image = cairo.ImageSurface.create_from_png(path)


class LayerLoader(object):
Expand Down
2 changes: 2 additions & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ jaraco.functools==1.20
more-itertools==4.3.0
portend==2.3
pytz==2018.7
pycairo==1.19.1
PyMuPDF==1.16.11
PyYAML==3.13
six==1.12.0
tempora==1.14
Expand Down
15 changes: 8 additions & 7 deletions run_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
#

import os
from cStringIO import StringIO
from io import StringIO
import hashlib
import threading
import json
Expand All @@ -25,13 +25,13 @@ def __init__(self, synchronized_json):
super(SynchronizedJSONAutoLoader, self).__init__()

def run(self):
print "Autoloader Starting up"
print("Autoloader Starting up")
time.sleep(2)
while cherrypy.engine.state == cherrypy.engine.states.STARTED:
time.sleep(1)
with self._synchronized_json.lock:
self._synchronized_json.load()
print "Autoloader Exiting"
print("Autoloader Exiting")

class SynchronizedJSON(object):
def __init__(self, filename):
Expand Down Expand Up @@ -73,7 +73,7 @@ def _update_sync_id(self):
del doc['sync-id']
hashed_data = json.dumps(doc)
h = hashlib.sha256()
h.update(hashed_data)
h.update(hashed_data.encode('utf-8'))
doc['sync-id'] = h.hexdigest()
self._new['data'] = json.dumps(doc, indent=4)
self._new['sync-id'] = h.hexdigest()
Expand All @@ -89,7 +89,7 @@ def set_data(self, data):
self._update_sync_id()

with open(self._filename + '.new', 'wb') as f:
f.write(self._new['data'])
f.write(self._new['data'].encode("utf-8"))
f.flush()
os.fsync(f.fileno())
os.rename(self._filename + '.new', self._filename)
Expand Down Expand Up @@ -140,7 +140,7 @@ def __init__(self, path):
self.markers = EventMapMarkerApi(path)

def test_log(msg, level):
print "%s, %s" % (msg, level)
print("%s, %s" % (msg, level))

if __name__ == '__main__':
publish = len(sys.argv) >= 2 and sys.argv[1] == '-P'
Expand All @@ -151,7 +151,8 @@ def test_log(msg, level):
'server.socket_port': 8023,
'server.thread_pool_max': 500,
'server.thread_pool': 100,
'log.screen': True
'log.screen': True,
'tools.encode.text_only': False
})

cherrypy.tree.mount(None, '/', {
Expand Down