Merge branch 'master' of ssh://localhost:12347/home/trac/git

This commit is contained in:
Axel Uhl committed 2011-06-21 03:31:51 +02:00
commit 7b1d010f85
9 files changed
+44 -31

No files matched your search

@@ -43,7 +43,9 @@ class LiveDataReceiver(threading.Thread):
# make it possible to pause listener
if self.paused is True:
time.sleep(1)
print >>sys.stderr, '#',
sys.stderr.flush()
time.sleep(5)
continue
conf = URIConfigurator(self.host, self.port)
@@ -62,7 +64,7 @@ class LiveDataReceiver(threading.Thread):
else:
conf.setParameters(dict(eventname=self.eventname, racename=self.racename, sinceupdate=self.updatecount))
conf.setLogging(True)
conf.setLogging(False)
try:
# need to lock because other threads could overwrite information
@@ -231,13 +231,16 @@ class BaseView(object):
if name[0] == 'ETASEC':
val = '%.f:%d' % (int(value) / 60, int(value)-( (int(value)/60)*60 ))
if len(val.split(':')[-1]) == 1:
val = '%s0' % val
val = '0%s' % val
if val == '00:0':
val = '0:0'
if name[0] == 'GLP':
if value > 0:
val = '<img height="9" src="/moderator-static/arrow-gain.png"/>%s' % value
val = '<img style="padding-right: 2px;" src="/moderator-static/arrow-gain.png"/>%s' % value
elif value < 0:
val = '<img height="9" src="/moderator-static/arrow-loss.png"/>%s' % abs(value)
val = '<img style="padding-right: 2px;" src="/moderator-static/arrow-loss.png"/>%s' % abs(value)
else: val = '0'
return val
@@ -180,6 +180,12 @@ def configureListener(context, request):
view.session['listener-started'] = True
view.session.save()
elif request.POST.get('emergency-reload', None):
state = reloadData(context, request)
if state is True:
return view.yieldMessage('Data refreshed! Can take a while until listener threads recover. Make sure to also reload running Leaderboards!')
return view.yieldMessage('Could not refresh data - this should NEVER happen :-)')
elif request.POST.get('disconnect-server', None):
# disconnect does not stop listeners but just disconnects the
# session of the user from server
@@ -696,21 +702,28 @@ def reloadData(context, request):
# drops all data in database and reload all running listeners
view = core.BaseView(context, request)
event = view.currentEvent()
if event:
# pause all listener threads
for listener in threaded_listener.values():
if listener.paused == False:
listener.paused = True
# pause all listener threads
for listener in threaded_listener.values():
if listener.paused == False:
listener.paused = True
# give threads time to pause
time.sleep(10)
# remove competitors matching the event
model.CompetitorImpl.removeAllBy(event=event.name)
# drop DB with all data in it
from sailing.db.monitoring import dropDB
dropDB()
# reload event data completely
configurator = view.listenerConf()
configurator.setContext(config.MODERATOR)
configurator.setCommand(config.LIST_EVENTS)
provider.eventConfiguration(configurator)
# reload event data completely
configurator = view.listenerConf()
configurator.setContext(config.MODERATOR)
configurator.setCommand(config.LIST_EVENTS)
provider.eventConfiguration(configurator)
# start threads again
for listener in threaded_listener.values():
if listener.paused == True:
listener.paused = False
return True
@@ -108,14 +108,13 @@ function sortBy(param, element) {
}
function yieldValue(element, newvalue, ignore_zeros, alternate_value) {
if (element.html() != newvalue) {
if (ignore_zeros == true && (newvalue == '0' || newvalue == 0)) {
// show alternate value
if (alternate_value != undefined && alternate_value != '' && alternate_value != 'None') {
element.html(alternate_value);
} else {
element.html('&nbsp;');
element.html('&mdash;');
}
return;
}
@@ -132,11 +131,6 @@ function yieldValue(element, newvalue, ignore_zeros, alternate_value) {
else
element.html(newvalue);
} else {
if (alternate_value != undefined && alternate_value != '' && alternate_value != 'None') {
element.html(alternate_value);
}
}
}
/**
Binary file not shown.

Before

Width:  |  Height:  |  Size: 201 B

After

Width:  |  Height:  |  Size: 172 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 205 B

After

Width:  |  Height:  |  Size: 177 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 398 B

@@ -29,8 +29,9 @@ When <i>stopping listener</i> it will trigger two methods: If you select a race
<fieldset>
<legend>Handling</legend>
<input type="submit" name="listener-event-refresh" value="(Re) load event data"/>&nbsp;
<input type="submit" name="disconnect-server" value="Disconnect your session"/>&nbsp;&nbsp;&nbsp;
<input type="submit" name="disconnect-server" value="Disconnect your browser session"/>&nbsp;&nbsp;&nbsp;
<input type="submit" name="emergency-reload" value="Emergency reload" style="background-color: orange;"/>&nbsp;&nbsp;&nbsp;
<input type="submit" name="listener-stop" value="Stop Server (for whole event or single race)" style="background-color: #cc3300;"/>
</fieldset>
@@ -73,7 +73,7 @@
</div>
<!-- / YIELD THE MAIN INTERFACE -->
<!-- / MAIN INTERFACE -->
<div id='main-interface'>
<div id='main-interface' tal:define="indexbase int(request.params.get('r', 0))*3">
<div class='blue-table'>
<a id="refresh-button" class='pause-btn' href='javascript:;' onclick='toggleListener($(this));'><img src='/static/images/ajax-loader-greybg.gif'/></a>
<a class='sort-rank sort-desc' href='javascript:;' onclick='sortBy("current_rank", $(this))'></a>
@@ -117,7 +117,7 @@
</ul>
<span id="race-">${racebundles[int(request.params.get('r', 0))].index(bundle)+1+(int(request.params.get('r', 0))*3)}</span>
</a>
<a class='main-box-sort sort-desc' href='javascript:;' onclick='sortBy("${raceid}", $(this))'></a>
<a class='main-box-sort sort-desc' href='javascript:;' onclick='sortBy("${indexbase+raceid}", $(this))'></a>
</div>
<!-- START POINT -->
@@ -148,7 +148,7 @@
<tr rowid='0'>
<tal:for repeat="column columns">
<td class='table-sorting' colid='${repeat["column"].number}'>
<a class='sort-desc' href='javascript:;' onclick='sortBy("${raceid},${markid},${repeat["column"].number}", $(this))'></a>
<a class='sort-desc' href='javascript:;' onclick='sortBy("${indexbase+raceid},${markid},${repeat["column"].number}", $(this))'></a>
</td>
</tal:for>
</tr>
@@ -172,7 +172,7 @@
<span tal:condition="not repeat['leg'].end">M${markid-1}</span>
<span tal:condition="repeat['leg'].end">F</span>
<a class='leg-box-sort sort-desc' href='javascript:;' onclick='sortBy("${raceid},${markid-1}", $(this))'></a>
<a class='leg-box-sort sort-desc' href='javascript:;' onclick='sortBy("${indexbase+raceid},${markid-1}", $(this))'></a>
<a tal:omit-tag="repeat['leg'].end" class='leg-box-active' href='javascript:;' onclick='$(this).closest(".leg-wrap").find(".race-table").toggle();'>
<ul>
<tal:for repeat="markrow range(1,21)">
@@ -196,7 +196,7 @@
<tr rowid='0'>
<tal:for repeat="column columns">
<td class='table-sorting' colid='${repeat["column"].number}'>
<a class='sort-desc' href='javascript:;' onclick='sortBy("${raceid},${markid},${repeat["column"].number}", $(this))'></a>
<a class='sort-desc' href='javascript:;' onclick='sortBy("${indexbase+raceid},${markid},${repeat["column"].number}", $(this))'></a>
</td>
</tal:for>
</tr>