Commit 64c12b64 authored by Aljaž Srebrnič's avatar Aljaž Srebrnič
Browse files

Migrate project do Django

parent 419aacb6
Loading
Loading
Loading
Loading

.flake8

deleted100644 → 0
+0 −2
Original line number Diff line number Diff line
[flake8]
max-line-length = 100
 No newline at end of file
+1 −1
Original line number Diff line number Diff line
__pycache__/
 No newline at end of file
/bower_components/

app/__init__.py

deleted100644 → 0
+0 −74
Original line number Diff line number Diff line
# -*- coding: utf-8 -*-

import os
import types

import cherrypy
import jinja2
import psycopg2

import config


class TemplateTool(cherrypy.Tool):

    _engine = None
    '''Jinja environment instance'''

    def __init__(self):
        viewLoader = jinja2.FileSystemLoader(os.path.join(config.path, 'app', 'view'))
        self._engine = jinja2.Environment(loader=viewLoader)

        cherrypy.Tool.__init__(self, 'before_handler', self.render)

    def __call__(self, *args, **kwargs):
        if args and isinstance(args[0], (types.FunctionType, types.MethodType)):
            # @template
            args[0].exposed = True
            return cherrypy.Tool.__call__(self, **kwargs)(args[0])
        else:
            # @template()
            def wrap(f):
                f.exposed = True
                return cherrypy.Tool.__call__(self, *args, **kwargs)(f)
        return wrap

    def render(self, name=None):
        cherrypy.request.config['template'] = name

        handler = cherrypy.serving.request.handler

        def wrap(*args, **kwargs):
            return self._render(handler, *args, **kwargs)
        cherrypy.serving.request.handler = wrap

    def _render(self, handler, *args, **kwargs):
        template = cherrypy.request.config['template']
        if not template:
            parts = []
            if hasattr(handler.callable, '__self__'):
                parts.append(handler.callable.__self__.__class__.__name__.lower())
            if hasattr(handler.callable, '__name__'):
                parts.append(handler.callable.__name__.lower())
            template = '/'.join(parts)

        data = handler(*args, **kwargs) or {}
        renderer = self._engine.get_template('page/{0}.html'.format(template))

        return renderer.render(**data) if template and isinstance(data, dict) else data


def db_connect(thread_index):
    cherrypy.thread_data.db = psycopg2.connect("dbname=inventory user=mittelab password=mittelab")


def bootstrap():
    cherrypy.tools.template = TemplateTool()

    cherrypy.config.update(config.config)
    cherrypy.engine.subscribe('start_thread', db_connect)

    from . import controller

    cherrypy.config.update({'error_page.default': controller.errorPage})
    cherrypy.tree.mount(controller.Index(), '/', config.config)

app/controller.py

deleted100644 → 0
+0 −42
Original line number Diff line number Diff line
# -*- coding: utf-8 -*-

import datetime

import cherrypy


class Index:

    news = None
    user = None

    @cherrypy.tools.template
    def index(self):
        pass

    @cherrypy.expose
    def broken(self):
        raise RuntimeError('Pretend something has broken')

    @cherrypy.expose
    def item(self, **kwargs):
        from psycopg2.extensions import AsIs
        data = kwargs
        if 'cameraInput' in data.keys():
            del data['cameraInput']

        for k in data.keys():
            if len(data[k]) == 0:
                data[k] = None

        cur = cherrypy.thread_data.db.cursor()
        columns = data.keys()
        values = [data[column] for column in columns]
        insert_statement = 'INSERT INTO object (%s) VALUES %s'
        cur.execute(insert_statement, (AsIs(",".join(columns)), tuple(values)))
        cherrypy.thread_data.db.commit()
        return


def errorPage(status, message, **kwargs):
    return cherrypy.tools.template._engine.get_template('page/error.html').render()

app/view/page/error.html

deleted100644 → 0
+0 −4
Original line number Diff line number Diff line
{% extends 'layout/main.html' %}
{% block content %}
<h1>Error!</h1>
{% endblock %}
Loading