コード例 #1
0
ファイル: WebSocket.py プロジェクト: mrozekma/Sprint
	def on_close(self):
		for channel in self.channels:
			channels[channel].remove(self)
			if len(channels[channel]) == 0:
				del channels[channel]
		handlers.remove(self)
		console('websocket', "Closed")

verbs = {
	'status': "Status set",
	'name': "Renamed",
	'goal': "Goal set",
	'assigned': "Reassigned",
	'hours': "Hours updated",
}

from Event import EventHandler, addEventHandler
class ShareTaskChanges(EventHandler):
	def newTask(self, handler, task):
		WebSocket.sendChannel("backlog#%d" % task.sprint.id, {'type': 'new'}); #TODO

	def taskUpdate(self, handler, task, field, value):
		if field == 'assigned': # Convert set of Users to list of usernames
			value = [user.username for user in value]
		elif field == 'goal': # Convert Goal to goal ID
			value = value.id if value else 0
		description = ("%s by %s" % (verbs[field], task.creator)) if field in verbs else None
		WebSocket.sendChannel("backlog#%d" % task.sprint.id, {'type': 'update', 'id': task.id, 'revision': task.revision, 'field': field, 'value': value, 'description': description, 'creator': task.creator.username})
addEventHandler(ShareTaskChanges())
コード例 #2
0
ファイル: sprint.py プロジェクト: mrozekma/Sprint
from Log import console
from Cron import Cron
from HTTPServer import server as getServer, ServerError
from Settings import PORT, settings
from WebSocket import WebSocket
from Event import addEventHandler
from event_handlers import *

from rorn.Session import setSerializer
from SessionSerializer import SessionSerializer
setSerializer(SessionSerializer())

currentThread().name = 'main'

# addEventHandler(DebugLogger.DebugLogger())
addEventHandler(DBLogger.DBLogger())
addEventHandler(ErrorCounter.errorCounter)
addEventHandler(MessageDispatcher.MessageDispatcher())
if settings.redis:
	host, port = settings.redis.split(':', 1)
	port = int(port)
	addEventHandler(EventPublisher.EventPublisher(host, port))

# When python is started in the background it ignores SIGINT instead of throwing a KeyboardInterrupt
def signal_die(signum, frame):
	signals = dict((getattr(signal, name), name) for name in dir(signal) if name.startswith('SIG') and '_' not in name)
	raise SystemExit("Caught %s; exiting" % signals.get(signum, "signal %d" % signum))
signal.signal(signal.SIGINT, signal.default_int_handler)
signal.signal(signal.SIGTERM, signal_die)

# Daemonize