Compare commits
No commits in common. "98abab560e1ecafc1c9e36b53a3982e729282704" and "93c522037f55bc7a395e486db089eca18014e8ca" have entirely different histories.
98abab560e
...
93c522037f
@ -1,5 +1,5 @@
|
|||||||
"""Site processors to add additional template tags and whatnot."""
|
"""Site processors to add additional template tags and whatnot."""
|
||||||
from django.conf import settings
|
|
||||||
from django.contrib.sites.shortcuts import get_current_site
|
from django.contrib.sites.shortcuts import get_current_site
|
||||||
from django.utils.functional import SimpleLazyObject
|
from django.utils.functional import SimpleLazyObject
|
||||||
|
|
||||||
@ -11,5 +11,4 @@ def site(request):
|
|||||||
return {
|
return {
|
||||||
'site': site,
|
'site': site,
|
||||||
'site_root': SimpleLazyObject(lambda: "{0}://{1}".format(protocol, site.domain)),
|
'site_root': SimpleLazyObject(lambda: "{0}://{1}".format(protocol, site.domain)),
|
||||||
'WEB_ENABLED_APPS': settings.WEB_ENABLED_APPS,
|
|
||||||
}
|
}
|
||||||
|
@ -145,16 +145,6 @@ BOOTSTRAP3 = {
|
|||||||
'javascript_in_head': True,
|
'javascript_in_head': True,
|
||||||
}
|
}
|
||||||
|
|
||||||
###############
|
|
||||||
# web options #
|
|
||||||
###############
|
|
||||||
|
|
||||||
# choose which apps to display in the web UI, for those that support this config
|
|
||||||
WEB_ENABLED_APPS = [
|
|
||||||
'karma',
|
|
||||||
'races',
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
# IRC module stuff
|
# IRC module stuff
|
||||||
|
|
||||||
@ -182,6 +172,10 @@ STORYCRAFT_DEFAULT_GAME_LENGTH = 20
|
|||||||
STORYCRAFT_DEFAULT_LINE_LENGTH = 140
|
STORYCRAFT_DEFAULT_LINE_LENGTH = 140
|
||||||
STORYCRAFT_DEFAULT_LINES_PER_TURN = 2
|
STORYCRAFT_DEFAULT_LINES_PER_TURN = 2
|
||||||
|
|
||||||
|
# weather
|
||||||
|
|
||||||
|
WEATHER_WEATHER_UNDERGROUND_API_KEY = None
|
||||||
|
|
||||||
|
|
||||||
# load local settings
|
# load local settings
|
||||||
|
|
||||||
|
@ -30,9 +30,9 @@
|
|||||||
{% block navbar_menu %}
|
{% block navbar_menu %}
|
||||||
<ul class="nav navbar-nav">
|
<ul class="nav navbar-nav">
|
||||||
<li><a href="{% url 'facts_index' %}">Item Sets</a></li>
|
<li><a href="{% url 'facts_index' %}">Item Sets</a></li>
|
||||||
{% if "karma" in WEB_ENABLED_APPS %}<li><a href="{% url 'karma_index' %}">Karma</a></li>{% endif %}
|
<li><a href="{% url 'karma_index' %}">Karma</a></li>
|
||||||
<li><a href="{% url 'markov_index' %}">Markov</a></li>
|
<li><a href="{% url 'markov_index' %}">Markov</a></li>
|
||||||
{% if "races" in WEB_ENABLED_APPS %}<li><a href="{% url 'races_index' %}">Races</a></li>{% endif %}
|
<li><a href="{% url 'races_index' %}">Races</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
<div class="navbar-right">
|
<div class="navbar-right">
|
||||||
|
@ -1,32 +1,27 @@
|
|||||||
"""Present karma data."""
|
"""Present karma data."""
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from django.conf import settings
|
|
||||||
from django.core.exceptions import PermissionDenied
|
|
||||||
from django.shortcuts import get_object_or_404, render
|
from django.shortcuts import get_object_or_404, render
|
||||||
from rest_framework import viewsets
|
from rest_framework import viewsets
|
||||||
|
|
||||||
from karma.models import KarmaKey
|
from karma.models import KarmaKey
|
||||||
from karma.serializers import KarmaKeySerializer
|
from karma.serializers import KarmaKeySerializer
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger('karma.views')
|
||||||
|
|
||||||
|
|
||||||
def index(request):
|
def index(request):
|
||||||
"""Display all karma keys."""
|
"""Display all karma keys."""
|
||||||
if 'karma' not in settings.WEB_ENABLED_APPS:
|
|
||||||
raise PermissionDenied()
|
|
||||||
|
|
||||||
entries = KarmaKey.objects.all().order_by('key')
|
entries = KarmaKey.objects.all().order_by('key')
|
||||||
|
|
||||||
return render(request, 'karma/index.html', {'entries': entries})
|
return render(request, 'karma/index.html', {'entries': entries})
|
||||||
|
|
||||||
|
|
||||||
def key_detail(request, karma_key):
|
def key_detail(request, karma_key):
|
||||||
"""Display the requested karma key."""
|
"""Display the requested karma key."""
|
||||||
if 'karma' not in settings.WEB_ENABLED_APPS:
|
|
||||||
raise PermissionDenied()
|
|
||||||
|
|
||||||
entry = get_object_or_404(KarmaKey, key=karma_key.lower())
|
entry = get_object_or_404(KarmaKey, key=karma_key.lower())
|
||||||
|
|
||||||
return render(request, 'karma/karma_key.html', {'entry': entry, 'entry_history': entry.history(mode='date')})
|
return render(request, 'karma/karma_key.html', {'entry': entry, 'entry_history': entry.history(mode='date')})
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,28 +1,26 @@
|
|||||||
"""Display race statuses and whatnot."""
|
"""Display race statuses and whatnot."""
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from django.conf import settings
|
|
||||||
from django.core.exceptions import PermissionDenied
|
|
||||||
from django.shortcuts import get_object_or_404, render
|
from django.shortcuts import get_object_or_404, render
|
||||||
|
|
||||||
from races.models import Race, Racer, RaceUpdate
|
from races.models import Race, Racer, RaceUpdate
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
|
||||||
|
log = logging.getLogger('races.views')
|
||||||
|
|
||||||
|
|
||||||
def index(request):
|
def index(request):
|
||||||
"""Display a list of races."""
|
"""Display a list of races."""
|
||||||
if 'races' not in settings.WEB_ENABLED_APPS:
|
|
||||||
raise PermissionDenied()
|
|
||||||
|
|
||||||
races = Race.objects.all()
|
races = Race.objects.all()
|
||||||
|
|
||||||
return render(request, 'races/index.html', {'races': races})
|
return render(request, 'races/index.html', {'races': races})
|
||||||
|
|
||||||
|
|
||||||
def race_detail(request, race_id):
|
def race_detail(request, race_id):
|
||||||
"""Display a race detail."""
|
"""Display a race detail."""
|
||||||
if 'races' not in settings.WEB_ENABLED_APPS:
|
|
||||||
raise PermissionDenied()
|
|
||||||
|
|
||||||
race = get_object_or_404(Race, pk=race_id)
|
race = get_object_or_404(Race, pk=race_id)
|
||||||
|
|
||||||
return render(request, 'races/race_detail.html', {'race': race})
|
return render(request, 'races/race_detail.html', {'race': race})
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
"""Test the race views."""
|
"""Test the race views."""
|
||||||
|
from unittest import mock
|
||||||
|
|
||||||
from django.test import TestCase
|
from django.test import TestCase
|
||||||
|
from django.utils.timezone import now
|
||||||
|
|
||||||
from races.models import Race, Racer, RaceUpdate
|
from races.models import Race, Racer, RaceUpdate
|
||||||
|
|
||||||
|
@ -1,46 +0,0 @@
|
|||||||
"""Test views and templates' adherence to WEB_ENABLED_APPS."""
|
|
||||||
from django.conf import settings
|
|
||||||
from django.test import TestCase
|
|
||||||
|
|
||||||
|
|
||||||
class WebEnabledAppsAPITest(TestCase):
|
|
||||||
"""Test that certain display elements and views can be enabled/disabled via settings."""
|
|
||||||
|
|
||||||
def setUp(self):
|
|
||||||
"""Store the old setting so that we can restore it later."""
|
|
||||||
self.old_sites_list = settings.WEB_ENABLED_APPS
|
|
||||||
print("butt")
|
|
||||||
|
|
||||||
def tearDown(self):
|
|
||||||
"""Restore the old setting stored earlier."""
|
|
||||||
settings.WEB_ENABLED_APPS = self.old_sites_list
|
|
||||||
print("butt")
|
|
||||||
|
|
||||||
def test_default_enabled(self):
|
|
||||||
"""Test that the expected sites can be reached and displayed by default."""
|
|
||||||
resp = self.client.get('/karma/')
|
|
||||||
self.assertEqual(resp.status_code, 200)
|
|
||||||
self.assertIn(b'<a href="/karma/">', resp.content)
|
|
||||||
resp = self.client.get('/races/')
|
|
||||||
self.assertEqual(resp.status_code, 200)
|
|
||||||
self.assertIn(b'<a href="/races/">', resp.content)
|
|
||||||
|
|
||||||
def test_one_disabled(self):
|
|
||||||
"""Test that we can disable one site but not all sites using this setting."""
|
|
||||||
settings.WEB_ENABLED_APPS = ['karma']
|
|
||||||
resp = self.client.get('/karma/')
|
|
||||||
self.assertEqual(resp.status_code, 200)
|
|
||||||
self.assertIn(b'<a href="/karma/">', resp.content)
|
|
||||||
resp = self.client.get('/races/')
|
|
||||||
self.assertEqual(resp.status_code, 403)
|
|
||||||
self.assertNotIn(b'<a href="/races/">', resp.content)
|
|
||||||
|
|
||||||
def test_all_disabled(self):
|
|
||||||
"""Test that we can disable all sites using this setting."""
|
|
||||||
settings.WEB_ENABLED_APPS = []
|
|
||||||
resp = self.client.get('/karma/')
|
|
||||||
self.assertEqual(resp.status_code, 403)
|
|
||||||
self.assertNotIn(b'<a href="/karma/">', resp.content)
|
|
||||||
resp = self.client.get('/races/')
|
|
||||||
self.assertEqual(resp.status_code, 403)
|
|
||||||
self.assertNotIn(b'<a href="/races/">', resp.content)
|
|
2
tox.ini
2
tox.ini
@ -181,7 +181,7 @@ exclude =
|
|||||||
.tox/
|
.tox/
|
||||||
versioneer.py
|
versioneer.py
|
||||||
_version.py
|
_version.py
|
||||||
**/migrations/
|
instance/
|
||||||
extend-ignore = T101
|
extend-ignore = T101
|
||||||
max-complexity = 10
|
max-complexity = 10
|
||||||
max-line-length = 120
|
max-line-length = 120
|
||||||
|
@ -1,17 +1,20 @@
|
|||||||
"""Report on the weather via wttr.in."""
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from ircbot.lib import Plugin
|
from ircbot.lib import Plugin
|
||||||
|
|
||||||
from weather.lib import weather_summary
|
from weather.lib import weather_summary
|
||||||
|
|
||||||
|
|
||||||
log = logging.getLogger('weather.ircplugin')
|
log = logging.getLogger('weather.ircplugin')
|
||||||
|
|
||||||
|
|
||||||
class Weather(Plugin):
|
class Weather(Plugin):
|
||||||
|
|
||||||
"""Have IRC commands to do IRC things (join channels, quit, etc.)."""
|
"""Have IRC commands to do IRC things (join channels, quit, etc.)."""
|
||||||
|
|
||||||
def start(self):
|
def start(self):
|
||||||
"""Set up the handlers."""
|
"""Set up the handlers."""
|
||||||
|
|
||||||
self.connection.reactor.add_global_regex_handler(['pubmsg', 'privmsg'], r'^!weather\s+(.*)$',
|
self.connection.reactor.add_global_regex_handler(['pubmsg', 'privmsg'], r'^!weather\s+(.*)$',
|
||||||
self.handle_weather, -20)
|
self.handle_weather, -20)
|
||||||
|
|
||||||
@ -19,12 +22,12 @@ class Weather(Plugin):
|
|||||||
|
|
||||||
def stop(self):
|
def stop(self):
|
||||||
"""Tear down handlers."""
|
"""Tear down handlers."""
|
||||||
|
|
||||||
self.connection.reactor.remove_global_regex_handler(['pubmsg', 'privmsg'], self.handle_weather)
|
self.connection.reactor.remove_global_regex_handler(['pubmsg', 'privmsg'], self.handle_weather)
|
||||||
|
|
||||||
super(Weather, self).stop()
|
super(Weather, self).stop()
|
||||||
|
|
||||||
def handle_weather(self, connection, event, match):
|
def handle_weather(self, connection, event, match):
|
||||||
"""Make the weather query and format it for IRC."""
|
|
||||||
query = match.group(1)
|
query = match.group(1)
|
||||||
queryitems = query.split(" ")
|
queryitems = query.split(" ")
|
||||||
if len(queryitems) <= 0:
|
if len(queryitems) <= 0:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user