Esempio n. 1
0
	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())
Esempio n. 2
0
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