Skip to content

Commit

Permalink
fixing tests
Browse files Browse the repository at this point in the history
working on scene attaching/detaching
  • Loading branch information
piotrlewalski committed Jan 12, 2014
1 parent 730f6a6 commit 66eeabb
Show file tree
Hide file tree
Showing 6 changed files with 58 additions and 29 deletions.
2 changes: 1 addition & 1 deletion alvi/__init__.py
Expand Up @@ -3,5 +3,5 @@

def context_processor(request):
return {
'scene_classes': scenes.scene_classes,
'scenes': [(key, value.is_default()) for (key, value) in scenes.scene_classes.items()],
}
47 changes: 25 additions & 22 deletions alvi/config/__init__.py
Expand Up @@ -25,33 +25,36 @@ def parse_config_file(config_file):
try:
#config file was not specified try to load local config
config_path = os.path.join(path, CONFIG_LOCAL)
logger.info("parsing options from config file: %s", config_path)
tornado.options.parse_config_file(config_path)
except IOError:
logger.warning("""
cannot find local config file: %s
create one basing on config_local_example.py
cannot find local config file: %s, create one basing on config_local_example.py
starting with default options""", config_path)


def configure(_already_loaded=[]):
def configure(config_path=None, already_loaded=[]):
"""loads default and user defined config options, subsequent calls are ignored"""
if _already_loaded:
if already_loaded and not config_path:
return
_already_loaded.append(True)

tornado.options.define("port", help="server port", default=8000, type=int)
tornado.options.define("address", help="server address", default="127.0.0.1", type=str)
tornado.options.define("default_scenes", help="list of auto-loaded scenes", multiple=True)

#configure logging
logging.basicConfig(
format="%(levelname)s:%(name)s: %(message)s",
level=logging.INFO,
)

#setup django settings
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "alvi.config.django_settings")

#parse options
config_file = sys.argv[1] if len(sys.argv) > 1 else None
parse_config_file(config_file)
if not already_loaded:
already_loaded.append(True)

tornado.options.define("config", help="config file", type=str)
tornado.options.define("port", help="server port", default=8000, type=int)
tornado.options.define("address", help="server address", default="127.0.0.1", type=str)
tornado.options.define("default_scenes", help="list of auto-loaded scenes", multiple=True)

#configure logging
logging.basicConfig(
format="%(levelname)s:%(name)s: %(message)s",
level=logging.INFO,
)

#setup django settings
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "alvi.config.django_settings")

if not config_path:
tornado.options.parse_command_line()
config_path = tornado.options.options.config
parse_config_file(config_path)
15 changes: 14 additions & 1 deletion alvi/scenes/__init__.py
Expand Up @@ -4,15 +4,18 @@
from .base import Scene
from .. import containers
import logging
import tornado.options


logger = logging.getLogger(__file__)


def register(data, request):
#FIXME don't allow to overwrite already loaded scene
name = data['name']
logger.info("registering new scene: %s" % name)
scene_classes[name] = make_scene(data, request)
scene = make_scene(data, request)
return scene


def make_scene(data, request):
Expand Down Expand Up @@ -82,6 +85,16 @@ def run(self, notify_callback):
self.evaluate_message(message)
self._message_backlog = self._message_backlog.__class__() # Python 3.2 does not support clear()

@staticmethod
def is_default():
names = [key.split('.')[-1] for key in tornado.options.options.default_scenes]
return name in names

@staticmethod
def close():
del scene_classes[name]

scene_classes[name] = SceneWrapper
return SceneWrapper


Expand Down
9 changes: 7 additions & 2 deletions alvi/server.py
Expand Up @@ -31,7 +31,10 @@ class RegisterSceneHandler(tornado.web.RequestHandler):
@tornado.web.asynchronous
def post(self, *args, **kwargs):
data = get_json_data(self)
scenes.register(data=data, request=self)
self.scene = scenes.register(data=data, request=self)

def on_connection_close(self):
self.scene.close()


class SyncSceneHandler(tornado.web.RequestHandler):
Expand All @@ -49,7 +52,9 @@ def post(self, *args, **kwargs):
# raise x


def run():
def run(config_path=""):
if config_path:
alvi.config.configure(config_path)
wsgi_app = tornado.wsgi.WSGIContainer(django.core.handlers.wsgi.WSGIHandler())
router = connections.sockjs.tornado.SockJSRouter(
connections.Connection,
Expand Down
13 changes: 11 additions & 2 deletions alvi/templates/index.html
Expand Up @@ -49,12 +49,21 @@
<div class="well sidebar-nav">
<ul class="nav nav-list scenes">
<li class="nav-header">Default Algorithms</li>
{% for scene in scene_classes.keys %}
{% for name, is_default in scenes %}
{% if is_default %}
<li>
<a href="{% url 'alvi.views.run' scene %}">{{ scene }}</a>
<a href="{% url 'alvi.views.run' name %}">{{ name }}</a>
</li>
{% endif %}
{% endfor %}
<li class="nav-header">Loaded Algorithms</li>
{% for name, is_default in scenes %}
{% if not is_default %}
<li>
<a href="{% url 'alvi.views.run' name %}">{{ name }}</a>
</li>
{% endif %}
{% endfor %}
</ul>
</div>
{% endblock %}
Expand Down
1 change: 0 additions & 1 deletion alvi/tests/test_client/base.py
@@ -1,5 +1,4 @@
import logging
logging.basicConfig(level=logging.INFO)

import os
import unittest
Expand Down

0 comments on commit 66eeabb

Please sign in to comment.