Compare commits
No commits in common. "1cf0364268452ccc8470d082de3abd87eda337b1" and "76bcdd5fefdd95ac7bbb9d7f4adfaca17a2886eb" have entirely different histories.
1cf0364268
...
76bcdd5fef
@ -1,8 +1,2 @@
|
|||||||
include versioneer.py
|
include versioneer.py
|
||||||
include dr_botzo/_version.py
|
include dr_botzo/_version.py
|
||||||
graft dr_botzo/templates
|
|
||||||
graft facts/templates
|
|
||||||
graft ircbot/templates
|
|
||||||
graft karma/templates
|
|
||||||
graft markbot/templates
|
|
||||||
graft races/templates
|
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
"""URL patterns for the countdown views."""
|
"""URL patterns for the countdown views."""
|
||||||
from django.conf.urls import include
|
from django.conf.urls import include, url
|
||||||
from django.urls import path
|
|
||||||
from rest_framework.routers import DefaultRouter
|
from rest_framework.routers import DefaultRouter
|
||||||
|
|
||||||
from countdown.views import CountdownItemViewSet
|
from countdown.views import CountdownItemViewSet
|
||||||
@ -9,5 +8,5 @@ router = DefaultRouter()
|
|||||||
router.register(r'items', CountdownItemViewSet)
|
router.register(r'items', CountdownItemViewSet)
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('api/', include(router.urls)),
|
url(r'^api/', include(router.urls)),
|
||||||
]
|
]
|
||||||
|
@ -1,16 +1,20 @@
|
|||||||
"""URL patterns for the dispatcher API."""
|
"""URL patterns for the dispatcher API."""
|
||||||
from django.urls import path
|
|
||||||
|
|
||||||
from dispatch.views import (DispatcherActionDetail, DispatcherActionList, DispatcherDetail, DispatcherDetailByKey,
|
from django.conf.urls import url
|
||||||
DispatcherList, DispatchMessage, DispatchMessageByKey)
|
|
||||||
|
from dispatch.views import (DispatchMessage, DispatchMessageByKey, DispatcherList, DispatcherDetail,
|
||||||
|
DispatcherDetailByKey, DispatcherActionList, DispatcherActionDetail)
|
||||||
|
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('api/dispatchers/', DispatcherList.as_view(), name='dispatch_api_dispatchers'),
|
url(r'^api/dispatchers/$', DispatcherList.as_view(), name='dispatch_api_dispatchers'),
|
||||||
path('api/dispatchers/<pk>/', DispatcherDetail.as_view(), name='dispatch_api_dispatcher_detail'),
|
url(r'^api/dispatchers/(?P<pk>[0-9]+)/$', DispatcherDetail.as_view(), name='dispatch_api_dispatcher_detail'),
|
||||||
path('api/dispatchers/<pk>/message', DispatchMessage.as_view(), name='dispatch_api_dispatch_message'),
|
url(r'^api/dispatchers/(?P<pk>[0-9]+)/message$', DispatchMessage.as_view(), name='dispatch_api_dispatch_message'),
|
||||||
path('api/dispatchers/<key>/', DispatcherDetailByKey.as_view(), name='dispatch_api_dispatcher_detail'),
|
url(r'^api/dispatchers/(?P<key>[A-Za-z-]+)/$', DispatcherDetailByKey.as_view(),
|
||||||
path('api/dispatchers/<key>/message', DispatchMessageByKey.as_view(), name='dispatch_api_dispatch_message'),
|
name='dispatch_api_dispatcher_detail'),
|
||||||
|
url(r'^api/dispatchers/(?P<key>[A-Za-z-]+)/message$', DispatchMessageByKey.as_view(),
|
||||||
|
name='dispatch_api_dispatch_message'),
|
||||||
|
|
||||||
path('api/actions/', DispatcherActionList.as_view(), name='dispatch_api_actions'),
|
url(r'^api/actions/$', DispatcherActionList.as_view(), name='dispatch_api_actions'),
|
||||||
path('api/actions/<pk>/', DispatcherActionDetail.as_view(), name='dispatch_api_action_detail'),
|
url(r'^api/actions/(?P<pk>[0-9]+)/$', DispatcherActionDetail.as_view(), name='dispatch_api_action_detail'),
|
||||||
]
|
]
|
||||||
|
@ -68,7 +68,7 @@ ROOT_URLCONF = 'dr_botzo.urls'
|
|||||||
TEMPLATES = [
|
TEMPLATES = [
|
||||||
{
|
{
|
||||||
'BACKEND': 'django.template.backends.django.DjangoTemplates',
|
'BACKEND': 'django.template.backends.django.DjangoTemplates',
|
||||||
'DIRS': [os.path.join(BASE_DIR, 'dr_botzo', 'templates')],
|
'DIRS': [os.path.join(BASE_DIR, 'templates')],
|
||||||
'APP_DIRS': True,
|
'APP_DIRS': True,
|
||||||
'OPTIONS': {
|
'OPTIONS': {
|
||||||
'context_processors': [
|
'context_processors': [
|
||||||
|
@ -1,8 +1,7 @@
|
|||||||
"""General/baselite/site-wide URLs."""
|
"""General/baselite/site-wide URLs."""
|
||||||
from adminplus.sites import AdminSitePlus
|
from adminplus.sites import AdminSitePlus
|
||||||
from django.conf.urls import include
|
from django.conf.urls import include, url
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from django.urls import path
|
|
||||||
from django.views.generic import TemplateView
|
from django.views.generic import TemplateView
|
||||||
|
|
||||||
admin.site = AdminSitePlus()
|
admin.site = AdminSitePlus()
|
||||||
@ -10,17 +9,17 @@ admin.sites.site = admin.site
|
|||||||
admin.autodiscover()
|
admin.autodiscover()
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('', TemplateView.as_view(template_name='index.html'), name='index'),
|
url(r'^$', TemplateView.as_view(template_name='index.html'), name='index'),
|
||||||
|
|
||||||
path('countdown/', include('countdown.urls')),
|
url(r'^countdown/', include('countdown.urls')),
|
||||||
path('dice/', include('dice.urls')),
|
url(r'^dice/', include('dice.urls')),
|
||||||
path('dispatch/', include('dispatch.urls')),
|
url(r'^dispatch/', include('dispatch.urls')),
|
||||||
path('itemsets/', include('facts.urls')),
|
url(r'^itemsets/', include('facts.urls')),
|
||||||
path('karma/', include('karma.urls')),
|
url(r'^karma/', include('karma.urls')),
|
||||||
path('markov/', include('markov.urls')),
|
url(r'^markov/', include('markov.urls')),
|
||||||
path('pi/', include('pi.urls')),
|
url(r'^pi/', include('pi.urls')),
|
||||||
path('races/', include('races.urls')),
|
url(r'^races/', include('races.urls')),
|
||||||
path('weather/', include('weather.urls')),
|
url(r'^weather/', include('weather.urls')),
|
||||||
|
|
||||||
path('admin/', admin.site.urls),
|
url(r'^admin/', admin.site.urls),
|
||||||
]
|
]
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
"""URL patterns for the facts web views."""
|
"""URL patterns for the facts web views."""
|
||||||
|
from django.conf.urls import url
|
||||||
from django.urls import path
|
from django.urls import path
|
||||||
|
|
||||||
from facts.views import factcategory_detail, index, rpc_get_facts, rpc_get_random_fact
|
from facts.views import factcategory_detail, index, rpc_get_facts, rpc_get_random_fact
|
||||||
@ -7,6 +8,6 @@ urlpatterns = [
|
|||||||
path('rpc/<category>/', rpc_get_facts, name='weather_rpc_get_facts'),
|
path('rpc/<category>/', rpc_get_facts, name='weather_rpc_get_facts'),
|
||||||
path('rpc/<category>/random/', rpc_get_random_fact, name='weather_rpc_get_random_fact'),
|
path('rpc/<category>/random/', rpc_get_random_fact, name='weather_rpc_get_random_fact'),
|
||||||
|
|
||||||
path('', index, name='facts_index'),
|
url(r'^$', index, name='facts_index'),
|
||||||
path('<factcategory_name>/', factcategory_detail, name='facts_factcategory_detail'),
|
url(r'^(?P<factcategory_name>.+)/$', factcategory_detail, name='facts_factcategory_detail'),
|
||||||
]
|
]
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
"""URL patterns for the karma views."""
|
"""URL patterns for the karma views."""
|
||||||
from django.conf.urls import include
|
|
||||||
from django.urls import path
|
from django.conf.urls import url, include
|
||||||
from rest_framework.routers import DefaultRouter
|
from rest_framework.routers import DefaultRouter
|
||||||
|
|
||||||
from karma.views import KarmaKeyViewSet, index, key_detail
|
from karma.views import key_detail, index, KarmaKeyViewSet
|
||||||
|
|
||||||
router = DefaultRouter()
|
router = DefaultRouter()
|
||||||
router.register(r'keys', KarmaKeyViewSet)
|
router.register(r'keys', KarmaKeyViewSet)
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('', index, name='karma_index'),
|
url(r'^$', index, name='karma_index'),
|
||||||
path('key/<karma_key>/', key_detail, name='karma_key_detail'),
|
url(r'^key/(?P<karma_key>.+)/', key_detail, name='karma_key_detail'),
|
||||||
|
|
||||||
path('api/', include(router.urls)),
|
url(r'^api/', include(router.urls)),
|
||||||
]
|
]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
"""URL patterns for the pi views."""
|
"""URL patterns for the pi views."""
|
||||||
from django.conf.urls import include
|
from django.conf.urls import include, url
|
||||||
from django.urls import path
|
|
||||||
from rest_framework.routers import DefaultRouter
|
from rest_framework.routers import DefaultRouter
|
||||||
|
|
||||||
from pi.views import PiLogViewSet
|
from pi.views import PiLogViewSet
|
||||||
@ -9,5 +8,5 @@ router = DefaultRouter()
|
|||||||
router.register(r'simulations', PiLogViewSet)
|
router.register(r'simulations', PiLogViewSet)
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('api/', include(router.urls)),
|
url(r'^api/', include(router.urls)),
|
||||||
]
|
]
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
from django.urls import path
|
from django.conf.urls import url
|
||||||
|
|
||||||
from races.views import index, race_detail
|
from races.views import index, race_detail
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('', index, name='races_index'),
|
url(r'^$', index, name='races_index'),
|
||||||
path('race/<race_id>/', race_detail, name='race_detail'),
|
url(r'^race/(?P<race_id>[A-Za-z0-9]+)/$', race_detail, name='race_detail'),
|
||||||
]
|
]
|
||||||
|
@ -17,10 +17,9 @@ flake8-fixme
|
|||||||
flake8-isort
|
flake8-isort
|
||||||
flake8-logging-format
|
flake8-logging-format
|
||||||
flake8-mutable
|
flake8-mutable
|
||||||
safety
|
|
||||||
|
|
||||||
# maintenance utilities and tox
|
# maintenance utilities and tox
|
||||||
pip-tools # pip-compile
|
pip-tools # pip-compile
|
||||||
tox<4 # CI stuff
|
tox # CI stuff
|
||||||
tox-wheel # build wheels in tox
|
tox-wheel # build wheels in tox
|
||||||
versioneer # automatic version numbering
|
versioneer # automatic version numbering
|
||||||
|
@ -1,32 +1,28 @@
|
|||||||
#
|
#
|
||||||
# This file is autogenerated by pip-compile with Python 3.8
|
# This file is autogenerated by pip-compile with python 3.8
|
||||||
# by the following command:
|
# To update, run:
|
||||||
#
|
#
|
||||||
# pip-compile --output-file=requirements/requirements-dev.txt requirements/requirements-dev.in
|
# pip-compile --output-file=requirements/requirements-dev.txt requirements/requirements-dev.in
|
||||||
#
|
#
|
||||||
asgiref==3.6.0
|
asgiref==3.4.1
|
||||||
# via django
|
# via django
|
||||||
attrs==22.2.0
|
attrs==21.2.0
|
||||||
# via pytest
|
# via pytest
|
||||||
autocommand==2.2.2
|
backports.entry-points-selectable==1.1.0
|
||||||
# via jaraco-text
|
|
||||||
bandit==1.7.4
|
|
||||||
# via -r requirements/requirements-dev.in
|
|
||||||
build==0.10.0
|
|
||||||
# via pip-tools
|
|
||||||
certifi==2022.12.7
|
|
||||||
# via requests
|
|
||||||
charset-normalizer==3.0.1
|
|
||||||
# via requests
|
|
||||||
click==8.1.3
|
|
||||||
# via
|
|
||||||
# pip-tools
|
|
||||||
# safety
|
|
||||||
coverage[toml]==7.1.0
|
|
||||||
# via pytest-cov
|
|
||||||
distlib==0.3.6
|
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
django==3.2.18
|
bandit==1.7.0
|
||||||
|
# via -r requirements/requirements-dev.in
|
||||||
|
certifi==2021.10.8
|
||||||
|
# via requests
|
||||||
|
charset-normalizer==2.0.7
|
||||||
|
# via requests
|
||||||
|
click==8.0.3
|
||||||
|
# via pip-tools
|
||||||
|
coverage[toml]==6.0.2
|
||||||
|
# via pytest-cov
|
||||||
|
distlib==0.3.3
|
||||||
|
# via virtualenv
|
||||||
|
django==3.2.8
|
||||||
# via
|
# via
|
||||||
# -r requirements/requirements.in
|
# -r requirements/requirements.in
|
||||||
# django-bootstrap3
|
# django-bootstrap3
|
||||||
@ -34,23 +30,19 @@ django==3.2.18
|
|||||||
# djangorestframework
|
# djangorestframework
|
||||||
django-adminplus==0.5
|
django-adminplus==0.5
|
||||||
# via -r requirements/requirements.in
|
# via -r requirements/requirements.in
|
||||||
django-bootstrap3==22.2
|
django-bootstrap3==15.0.0
|
||||||
# via -r requirements/requirements.in
|
# via -r requirements/requirements.in
|
||||||
django-extensions==3.2.1
|
django-extensions==3.1.3
|
||||||
# via -r requirements/requirements.in
|
# via -r requirements/requirements.in
|
||||||
djangorestframework==3.14.0
|
djangorestframework==3.12.4
|
||||||
# via -r requirements/requirements.in
|
# via -r requirements/requirements.in
|
||||||
dlint==0.14.0
|
dlint==0.11.0
|
||||||
# via -r requirements/requirements-dev.in
|
# via -r requirements/requirements-dev.in
|
||||||
dparse==0.6.2
|
filelock==3.3.1
|
||||||
# via safety
|
|
||||||
exceptiongroup==1.1.0
|
|
||||||
# via pytest
|
|
||||||
filelock==3.9.0
|
|
||||||
# via
|
# via
|
||||||
# tox
|
# tox
|
||||||
# virtualenv
|
# virtualenv
|
||||||
flake8==6.0.0
|
flake8==3.9.2
|
||||||
# via
|
# via
|
||||||
# -r requirements/requirements-dev.in
|
# -r requirements/requirements-dev.in
|
||||||
# dlint
|
# dlint
|
||||||
@ -59,84 +51,76 @@ flake8==6.0.0
|
|||||||
# flake8-executable
|
# flake8-executable
|
||||||
# flake8-isort
|
# flake8-isort
|
||||||
# flake8-mutable
|
# flake8-mutable
|
||||||
flake8-blind-except==0.2.1
|
flake8-blind-except==0.2.0
|
||||||
# via -r requirements/requirements-dev.in
|
# via -r requirements/requirements-dev.in
|
||||||
flake8-builtins==2.1.0
|
flake8-builtins==1.5.3
|
||||||
# via -r requirements/requirements-dev.in
|
# via -r requirements/requirements-dev.in
|
||||||
flake8-docstrings==1.7.0
|
flake8-docstrings==1.6.0
|
||||||
# via -r requirements/requirements-dev.in
|
# via -r requirements/requirements-dev.in
|
||||||
flake8-executable==2.1.3
|
flake8-executable==2.1.1
|
||||||
# via -r requirements/requirements-dev.in
|
# via -r requirements/requirements-dev.in
|
||||||
flake8-fixme==1.1.1
|
flake8-fixme==1.1.1
|
||||||
# via -r requirements/requirements-dev.in
|
# via -r requirements/requirements-dev.in
|
||||||
flake8-isort==6.0.0
|
flake8-isort==4.1.1
|
||||||
# via -r requirements/requirements-dev.in
|
# via -r requirements/requirements-dev.in
|
||||||
flake8-logging-format==0.9.0
|
flake8-logging-format==0.6.0
|
||||||
# via -r requirements/requirements-dev.in
|
# via -r requirements/requirements-dev.in
|
||||||
flake8-mutable==1.2.0
|
flake8-mutable==1.2.0
|
||||||
# via -r requirements/requirements-dev.in
|
# via -r requirements/requirements-dev.in
|
||||||
gitdb==4.0.10
|
gitdb==4.0.9
|
||||||
# via gitpython
|
# via gitpython
|
||||||
gitpython==3.1.30
|
gitpython==3.1.24
|
||||||
# via bandit
|
# via bandit
|
||||||
idna==3.4
|
idna==3.3
|
||||||
# via requests
|
# via requests
|
||||||
importlib-resources==5.10.2
|
inflect==5.3.0
|
||||||
# via jaraco-text
|
# via jaraco.itertools
|
||||||
inflect==6.0.2
|
iniconfig==1.1.1
|
||||||
# via
|
|
||||||
# jaraco-itertools
|
|
||||||
# jaraco-text
|
|
||||||
iniconfig==2.0.0
|
|
||||||
# via pytest
|
# via pytest
|
||||||
irc==15.0.6
|
irc==15.0.6
|
||||||
# via -r requirements/requirements.in
|
# via -r requirements/requirements.in
|
||||||
isort==5.12.0
|
isort==5.9.3
|
||||||
# via flake8-isort
|
# via flake8-isort
|
||||||
jaraco-classes==3.2.3
|
jaraco.classes==3.2.1
|
||||||
# via jaraco-collections
|
# via jaraco.collections
|
||||||
jaraco-collections==3.8.0
|
jaraco.collections==3.4.0
|
||||||
# via irc
|
# via irc
|
||||||
jaraco-context==4.3.0
|
jaraco.functools==3.3.0
|
||||||
# via jaraco-text
|
|
||||||
jaraco-functools==3.5.2
|
|
||||||
# via
|
# via
|
||||||
# irc
|
# irc
|
||||||
# jaraco-text
|
# jaraco.text
|
||||||
# tempora
|
# tempora
|
||||||
jaraco-itertools==6.2.1
|
jaraco.itertools==6.0.3
|
||||||
# via irc
|
# via irc
|
||||||
jaraco-logging==3.1.2
|
jaraco.logging==3.1.0
|
||||||
# via irc
|
# via irc
|
||||||
jaraco-stream==3.0.3
|
jaraco.stream==3.0.3
|
||||||
# via irc
|
# via irc
|
||||||
jaraco-text==3.11.1
|
jaraco.text==3.5.1
|
||||||
# via
|
# via
|
||||||
# irc
|
# irc
|
||||||
# jaraco-collections
|
# jaraco.collections
|
||||||
mccabe==0.7.0
|
mccabe==0.6.1
|
||||||
# via flake8
|
# via flake8
|
||||||
more-itertools==9.0.0
|
more-itertools==8.10.0
|
||||||
# via
|
# via
|
||||||
# irc
|
# irc
|
||||||
# jaraco-classes
|
# jaraco.classes
|
||||||
# jaraco-functools
|
# jaraco.functools
|
||||||
# jaraco-itertools
|
# jaraco.itertools
|
||||||
# jaraco-text
|
packaging==21.0
|
||||||
packaging==21.3
|
|
||||||
# via
|
# via
|
||||||
# build
|
|
||||||
# dparse
|
|
||||||
# pytest
|
# pytest
|
||||||
# safety
|
|
||||||
# tox
|
# tox
|
||||||
parsedatetime==2.6
|
parsedatetime==2.6
|
||||||
# via -r requirements/requirements.in
|
# via -r requirements/requirements.in
|
||||||
pbr==5.11.1
|
pbr==5.6.0
|
||||||
# via stevedore
|
# via stevedore
|
||||||
pip-tools==6.12.2
|
pep517==0.12.0
|
||||||
|
# via pip-tools
|
||||||
|
pip-tools==6.4.0
|
||||||
# via -r requirements/requirements-dev.in
|
# via -r requirements/requirements-dev.in
|
||||||
platformdirs==3.0.0
|
platformdirs==2.4.0
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
pluggy==1.0.0
|
pluggy==1.0.0
|
||||||
# via
|
# via
|
||||||
@ -144,105 +128,96 @@ pluggy==1.0.0
|
|||||||
# tox
|
# tox
|
||||||
ply==3.11
|
ply==3.11
|
||||||
# via -r requirements/requirements.in
|
# via -r requirements/requirements.in
|
||||||
py==1.11.0
|
py==1.10.0
|
||||||
# via tox
|
# via
|
||||||
pycodestyle==2.10.0
|
# pytest
|
||||||
|
# tox
|
||||||
|
pycodestyle==2.7.0
|
||||||
# via flake8
|
# via flake8
|
||||||
pydantic==1.10.5
|
pydocstyle==6.1.1
|
||||||
# via inflect
|
|
||||||
pydocstyle==6.3.0
|
|
||||||
# via flake8-docstrings
|
# via flake8-docstrings
|
||||||
pyflakes==3.0.1
|
pyflakes==2.3.1
|
||||||
# via flake8
|
# via flake8
|
||||||
pyparsing==3.0.9
|
pyparsing==3.0.2
|
||||||
# via packaging
|
# via packaging
|
||||||
pyproject-hooks==1.0.0
|
pytest==6.2.5
|
||||||
# via build
|
|
||||||
pytest==7.2.1
|
|
||||||
# via
|
# via
|
||||||
# -r requirements/requirements-dev.in
|
# -r requirements/requirements-dev.in
|
||||||
# pytest-cov
|
# pytest-cov
|
||||||
# pytest-django
|
# pytest-django
|
||||||
pytest-cov==4.0.0
|
pytest-cov==3.0.0
|
||||||
# via -r requirements/requirements-dev.in
|
# via -r requirements/requirements-dev.in
|
||||||
pytest-django==4.5.2
|
pytest-django==4.4.0
|
||||||
# via -r requirements/requirements-dev.in
|
# via -r requirements/requirements-dev.in
|
||||||
python-dateutil==2.8.2
|
python-dateutil==2.8.2
|
||||||
# via -r requirements/requirements.in
|
# via -r requirements/requirements.in
|
||||||
python-gitlab==3.13.0
|
python-gitlab==2.10.1
|
||||||
# via -r requirements/requirements.in
|
# via -r requirements/requirements.in
|
||||||
python-mpd2==3.0.5
|
python-mpd2==3.0.4
|
||||||
# via -r requirements/requirements.in
|
# via -r requirements/requirements.in
|
||||||
pytz==2022.7.1
|
pytz==2021.3
|
||||||
# via
|
# via
|
||||||
# -r requirements/requirements.in
|
# -r requirements/requirements.in
|
||||||
# django
|
# django
|
||||||
# djangorestframework
|
|
||||||
# irc
|
# irc
|
||||||
# tempora
|
# tempora
|
||||||
pyyaml==6.0
|
pyyaml==6.0
|
||||||
# via bandit
|
# via bandit
|
||||||
requests==2.28.2
|
requests==2.26.0
|
||||||
# via
|
# via
|
||||||
# python-gitlab
|
# python-gitlab
|
||||||
# requests-toolbelt
|
# requests-toolbelt
|
||||||
# safety
|
requests-toolbelt==0.9.1
|
||||||
requests-toolbelt==0.10.1
|
|
||||||
# via python-gitlab
|
# via python-gitlab
|
||||||
ruamel-yaml==0.17.21
|
|
||||||
# via safety
|
|
||||||
ruamel-yaml-clib==0.2.7
|
|
||||||
# via ruamel-yaml
|
|
||||||
safety==2.3.5
|
|
||||||
# via -r requirements/requirements-dev.in
|
|
||||||
six==1.16.0
|
six==1.16.0
|
||||||
# via
|
# via
|
||||||
|
# bandit
|
||||||
# irc
|
# irc
|
||||||
# python-dateutil
|
# python-dateutil
|
||||||
# tox
|
# tox
|
||||||
|
# virtualenv
|
||||||
smmap==5.0.0
|
smmap==5.0.0
|
||||||
# via gitdb
|
# via gitdb
|
||||||
snowballstemmer==2.2.0
|
snowballstemmer==2.1.0
|
||||||
# via pydocstyle
|
# via pydocstyle
|
||||||
sqlparse==0.4.3
|
sqlparse==0.4.2
|
||||||
# via django
|
# via django
|
||||||
stevedore==5.0.0
|
stevedore==3.5.0
|
||||||
# via bandit
|
# via bandit
|
||||||
tempora==5.2.1
|
tempora==4.1.2
|
||||||
# via
|
# via
|
||||||
# irc
|
# irc
|
||||||
# jaraco-logging
|
# jaraco.logging
|
||||||
|
testfixtures==6.18.3
|
||||||
|
# via flake8-isort
|
||||||
toml==0.10.2
|
toml==0.10.2
|
||||||
# via dparse
|
|
||||||
tomli==2.0.1
|
|
||||||
# via
|
# via
|
||||||
# build
|
|
||||||
# coverage
|
|
||||||
# pyproject-hooks
|
|
||||||
# pytest
|
# pytest
|
||||||
# tox
|
# tox
|
||||||
tox==3.28.0
|
tomli==1.2.2
|
||||||
|
# via
|
||||||
|
# coverage
|
||||||
|
# pep517
|
||||||
|
tox==3.24.4
|
||||||
# via
|
# via
|
||||||
# -r requirements/requirements-dev.in
|
# -r requirements/requirements-dev.in
|
||||||
# tox-wheel
|
# tox-wheel
|
||||||
tox-wheel==1.0.0
|
tox-wheel==0.6.0
|
||||||
# via -r requirements/requirements-dev.in
|
# via -r requirements/requirements-dev.in
|
||||||
typing-extensions==4.5.0
|
typing-extensions==3.10.0.2
|
||||||
# via pydantic
|
# via gitpython
|
||||||
urllib3==1.26.14
|
urllib3==1.26.7
|
||||||
# via requests
|
# via requests
|
||||||
versioneer==0.28
|
versioneer==0.21
|
||||||
# via -r requirements/requirements-dev.in
|
# via -r requirements/requirements-dev.in
|
||||||
virtualenv==20.19.0
|
virtualenv==20.9.0
|
||||||
# via tox
|
# via tox
|
||||||
wheel==0.38.4
|
wheel==0.37.0
|
||||||
# via
|
# via
|
||||||
# pip-tools
|
# pip-tools
|
||||||
# tox-wheel
|
# tox-wheel
|
||||||
zalgo-text==0.6
|
zalgo-text==0.6
|
||||||
# via -r requirements/requirements.in
|
# via -r requirements/requirements.in
|
||||||
zipp==3.13.0
|
|
||||||
# via importlib-resources
|
|
||||||
|
|
||||||
# The following packages are considered to be unsafe in a requirements file:
|
# The following packages are considered to be unsafe in a requirements file:
|
||||||
# pip
|
# pip
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Django<4.0 # core
|
Django # core
|
||||||
django-adminplus # admin.site.register_view
|
django-adminplus # admin.site.register_view
|
||||||
django-bootstrap3 # bootstrap layout
|
django-bootstrap3 # bootstrap layout
|
||||||
django-extensions # more commands
|
django-extensions # more commands
|
||||||
|
@ -1,18 +1,16 @@
|
|||||||
#
|
#
|
||||||
# This file is autogenerated by pip-compile with Python 3.8
|
# This file is autogenerated by pip-compile with python 3.8
|
||||||
# by the following command:
|
# To update, run:
|
||||||
#
|
#
|
||||||
# pip-compile --output-file=requirements/requirements.txt requirements/requirements.in
|
# pip-compile --output-file=requirements/requirements.txt requirements/requirements.in
|
||||||
#
|
#
|
||||||
asgiref==3.6.0
|
asgiref==3.4.1
|
||||||
# via django
|
# via django
|
||||||
autocommand==2.2.2
|
certifi==2021.10.8
|
||||||
# via jaraco-text
|
|
||||||
certifi==2022.12.7
|
|
||||||
# via requests
|
# via requests
|
||||||
charset-normalizer==3.0.1
|
charset-normalizer==2.0.7
|
||||||
# via requests
|
# via requests
|
||||||
django==3.2.18
|
django==3.2.8
|
||||||
# via
|
# via
|
||||||
# -r requirements/requirements.in
|
# -r requirements/requirements.in
|
||||||
# django-bootstrap3
|
# django-bootstrap3
|
||||||
@ -20,90 +18,75 @@ django==3.2.18
|
|||||||
# djangorestframework
|
# djangorestframework
|
||||||
django-adminplus==0.5
|
django-adminplus==0.5
|
||||||
# via -r requirements/requirements.in
|
# via -r requirements/requirements.in
|
||||||
django-bootstrap3==22.2
|
django-bootstrap3==15.0.0
|
||||||
# via -r requirements/requirements.in
|
# via -r requirements/requirements.in
|
||||||
django-extensions==3.2.1
|
django-extensions==3.1.3
|
||||||
# via -r requirements/requirements.in
|
# via -r requirements/requirements.in
|
||||||
djangorestframework==3.14.0
|
djangorestframework==3.12.4
|
||||||
# via -r requirements/requirements.in
|
# via -r requirements/requirements.in
|
||||||
idna==3.4
|
idna==3.3
|
||||||
# via requests
|
# via requests
|
||||||
importlib-resources==5.10.2
|
inflect==5.3.0
|
||||||
# via jaraco-text
|
# via jaraco.itertools
|
||||||
inflect==6.0.2
|
|
||||||
# via
|
|
||||||
# jaraco-itertools
|
|
||||||
# jaraco-text
|
|
||||||
irc==15.0.6
|
irc==15.0.6
|
||||||
# via -r requirements/requirements.in
|
# via -r requirements/requirements.in
|
||||||
jaraco-classes==3.2.3
|
jaraco.classes==3.2.1
|
||||||
# via jaraco-collections
|
# via jaraco.collections
|
||||||
jaraco-collections==3.8.0
|
jaraco.collections==3.4.0
|
||||||
# via irc
|
# via irc
|
||||||
jaraco-context==4.3.0
|
jaraco.functools==3.3.0
|
||||||
# via jaraco-text
|
|
||||||
jaraco-functools==3.5.2
|
|
||||||
# via
|
# via
|
||||||
# irc
|
# irc
|
||||||
# jaraco-text
|
# jaraco.text
|
||||||
# tempora
|
# tempora
|
||||||
jaraco-itertools==6.2.1
|
jaraco.itertools==6.0.3
|
||||||
# via irc
|
# via irc
|
||||||
jaraco-logging==3.1.2
|
jaraco.logging==3.1.0
|
||||||
# via irc
|
# via irc
|
||||||
jaraco-stream==3.0.3
|
jaraco.stream==3.0.3
|
||||||
# via irc
|
# via irc
|
||||||
jaraco-text==3.11.1
|
jaraco.text==3.5.1
|
||||||
# via
|
# via
|
||||||
# irc
|
# irc
|
||||||
# jaraco-collections
|
# jaraco.collections
|
||||||
more-itertools==9.0.0
|
more-itertools==8.10.0
|
||||||
# via
|
# via
|
||||||
# irc
|
# irc
|
||||||
# jaraco-classes
|
# jaraco.functools
|
||||||
# jaraco-functools
|
# jaraco.itertools
|
||||||
# jaraco-itertools
|
|
||||||
# jaraco-text
|
|
||||||
parsedatetime==2.6
|
parsedatetime==2.6
|
||||||
# via -r requirements/requirements.in
|
# via -r requirements/requirements.in
|
||||||
ply==3.11
|
ply==3.11
|
||||||
# via -r requirements/requirements.in
|
# via -r requirements/requirements.in
|
||||||
pydantic==1.10.5
|
|
||||||
# via inflect
|
|
||||||
python-dateutil==2.8.2
|
python-dateutil==2.8.2
|
||||||
# via -r requirements/requirements.in
|
# via -r requirements/requirements.in
|
||||||
python-gitlab==3.13.0
|
python-gitlab==2.10.1
|
||||||
# via -r requirements/requirements.in
|
# via -r requirements/requirements.in
|
||||||
python-mpd2==3.0.5
|
python-mpd2==3.0.4
|
||||||
# via -r requirements/requirements.in
|
# via -r requirements/requirements.in
|
||||||
pytz==2022.7.1
|
pytz==2021.3
|
||||||
# via
|
# via
|
||||||
# -r requirements/requirements.in
|
# -r requirements/requirements.in
|
||||||
# django
|
# django
|
||||||
# djangorestframework
|
|
||||||
# irc
|
# irc
|
||||||
# tempora
|
# tempora
|
||||||
requests==2.28.2
|
requests==2.26.0
|
||||||
# via
|
# via
|
||||||
# python-gitlab
|
# python-gitlab
|
||||||
# requests-toolbelt
|
# requests-toolbelt
|
||||||
requests-toolbelt==0.10.1
|
requests-toolbelt==0.9.1
|
||||||
# via python-gitlab
|
# via python-gitlab
|
||||||
six==1.16.0
|
six==1.16.0
|
||||||
# via
|
# via
|
||||||
# irc
|
# irc
|
||||||
# python-dateutil
|
# python-dateutil
|
||||||
sqlparse==0.4.3
|
sqlparse==0.4.2
|
||||||
# via django
|
# via django
|
||||||
tempora==5.2.1
|
tempora==4.1.2
|
||||||
# via
|
# via
|
||||||
# irc
|
# irc
|
||||||
# jaraco-logging
|
# jaraco.logging
|
||||||
typing-extensions==4.5.0
|
urllib3==1.26.7
|
||||||
# via pydantic
|
|
||||||
urllib3==1.26.14
|
|
||||||
# via requests
|
# via requests
|
||||||
zalgo-text==0.6
|
zalgo-text==0.6
|
||||||
# via -r requirements/requirements.in
|
# via -r requirements/requirements.in
|
||||||
zipp==3.13.0
|
|
||||||
# via importlib-resources
|
|
||||||
|
@ -1,26 +0,0 @@
|
|||||||
"""Test the countdown package's webservice."""
|
|
||||||
from django.contrib.auth.models import User
|
|
||||||
from django.utils.timezone import now
|
|
||||||
from rest_framework.status import HTTP_200_OK
|
|
||||||
from rest_framework.test import APITestCase
|
|
||||||
|
|
||||||
from countdown.models import CountdownItem
|
|
||||||
|
|
||||||
|
|
||||||
class CountdownAPITest(APITestCase):
|
|
||||||
"""Test countdown DRF views."""
|
|
||||||
|
|
||||||
def setUp(self):
|
|
||||||
"""Do pre-test stuff."""
|
|
||||||
self.client = self.client_class()
|
|
||||||
self.user = User.objects.create(username='test')
|
|
||||||
self.client.force_authenticate(user=self.user)
|
|
||||||
|
|
||||||
def test_items_retrieval(self):
|
|
||||||
"""Test that the items endpoint returns objects."""
|
|
||||||
CountdownItem.objects.create(at_time=now())
|
|
||||||
|
|
||||||
resp = self.client.get('/countdown/api/items/')
|
|
||||||
|
|
||||||
self.assertEqual(resp.status_code, HTTP_200_OK)
|
|
||||||
self.assertEqual(len(resp.json()), CountdownItem.objects.count())
|
|
@ -1,29 +0,0 @@
|
|||||||
"""Test the dispatch package's webservice."""
|
|
||||||
from django.contrib.auth.models import User
|
|
||||||
from rest_framework.status import HTTP_200_OK
|
|
||||||
from rest_framework.test import APITestCase
|
|
||||||
|
|
||||||
from dispatch.models import Dispatcher, DispatcherAction
|
|
||||||
|
|
||||||
|
|
||||||
class DispatchAPITest(APITestCase):
|
|
||||||
"""Test dispatch DRF views."""
|
|
||||||
|
|
||||||
def setUp(self):
|
|
||||||
"""Do pre-test stuff."""
|
|
||||||
self.client = self.client_class()
|
|
||||||
self.user = User.objects.create(username='test')
|
|
||||||
self.client.force_authenticate(user=self.user)
|
|
||||||
|
|
||||||
def test_dispatch_object_retrieval(self):
|
|
||||||
"""Test that the list endpoints returns objects."""
|
|
||||||
dispatcher = Dispatcher.objects.create()
|
|
||||||
DispatcherAction.objects.create(dispatcher=dispatcher)
|
|
||||||
|
|
||||||
resp = self.client.get('/dispatch/api/dispatchers/')
|
|
||||||
self.assertEqual(resp.status_code, HTTP_200_OK)
|
|
||||||
self.assertEqual(len(resp.json()), Dispatcher.objects.count())
|
|
||||||
|
|
||||||
resp = self.client.get('/dispatch/api/actions/')
|
|
||||||
self.assertEqual(resp.status_code, HTTP_200_OK)
|
|
||||||
self.assertEqual(len(resp.json()), DispatcherAction.objects.count())
|
|
@ -22,4 +22,4 @@ class PiAPITest(APITestCase):
|
|||||||
resp = self.client.post('/pi/api/simulations/simulate/')
|
resp = self.client.post('/pi/api/simulations/simulate/')
|
||||||
|
|
||||||
self.assertEqual(resp.status_code, HTTP_201_CREATED)
|
self.assertEqual(resp.status_code, HTTP_201_CREATED)
|
||||||
self.assertEqual(PiLog.objects.count(), 2)
|
self.assertEqual(PiLog.objects.count(), 2) # 2 because 0 entry and the real entry
|
||||||
|
@ -1,29 +0,0 @@
|
|||||||
"""Test the race views."""
|
|
||||||
from unittest import mock
|
|
||||||
|
|
||||||
from django.test import TestCase
|
|
||||||
from django.utils.timezone import now
|
|
||||||
|
|
||||||
from races.models import Race, Racer, RaceUpdate
|
|
||||||
|
|
||||||
|
|
||||||
class RaceViewTest(TestCase):
|
|
||||||
"""Test races views."""
|
|
||||||
|
|
||||||
def setUp(self):
|
|
||||||
"""Do pre-test stuff."""
|
|
||||||
self.client = self.client_class()
|
|
||||||
|
|
||||||
def test_race_display(self):
|
|
||||||
"""Test the display of race info when it's been somewhat populated."""
|
|
||||||
race = Race.objects.create(key='test')
|
|
||||||
racer_a = Racer.objects.create(nick='hank', race=race)
|
|
||||||
racer_b = Racer.objects.create(nick='bob', race=race)
|
|
||||||
RaceUpdate.objects.create(race=race, racer=racer_a, update="test 1")
|
|
||||||
RaceUpdate.objects.create(race=race, racer=racer_b, update="test 2")
|
|
||||||
RaceUpdate.objects.create(race=race, racer=racer_a, update="test 3")
|
|
||||||
|
|
||||||
resp = self.client.get('/races/race/test/')
|
|
||||||
self.assertIn(b'hank — test 1', resp.content)
|
|
||||||
self.assertIn(b'bob — test 2', resp.content)
|
|
||||||
self.assertIn(b'hank — test 3', resp.content)
|
|
97
tox.ini
97
tox.ini
@ -4,7 +4,7 @@
|
|||||||
# and then run "tox" from this directory.
|
# and then run "tox" from this directory.
|
||||||
|
|
||||||
[tox]
|
[tox]
|
||||||
envlist = begin,py38,py39,py310,coverage,security,lint,bundle
|
envlist = begin,py36,py37,py38,coverage,security,lint,bundle
|
||||||
|
|
||||||
[testenv]
|
[testenv]
|
||||||
# build a wheel and test it
|
# build a wheel and test it
|
||||||
@ -31,6 +31,52 @@ deps = setuptools
|
|||||||
skip_install = true
|
skip_install = true
|
||||||
commands = coverage erase
|
commands = coverage erase
|
||||||
|
|
||||||
|
[testenv:py36]
|
||||||
|
# run pytest with coverage
|
||||||
|
commands =
|
||||||
|
pytest --cov-append --cov-branch \
|
||||||
|
--cov={envsitepackagesdir}/acro/ \
|
||||||
|
--cov={envsitepackagesdir}/countdown/ \
|
||||||
|
--cov={envsitepackagesdir}/dice/ \
|
||||||
|
--cov={envsitepackagesdir}/dispatch/ \
|
||||||
|
--cov={envsitepackagesdir}/dr_botzo/ \
|
||||||
|
--cov={envsitepackagesdir}/facts/ \
|
||||||
|
--cov={envsitepackagesdir}/gitlab_bot/ \
|
||||||
|
--cov={envsitepackagesdir}/ircbot/ \
|
||||||
|
--cov={envsitepackagesdir}/karma/ \
|
||||||
|
--cov={envsitepackagesdir}/markov/ \
|
||||||
|
--cov={envsitepackagesdir}/mpdbot/ \
|
||||||
|
--cov={envsitepackagesdir}/pi/ \
|
||||||
|
--cov={envsitepackagesdir}/races/ \
|
||||||
|
--cov={envsitepackagesdir}/seen/ \
|
||||||
|
--cov={envsitepackagesdir}/storycraft/ \
|
||||||
|
--cov={envsitepackagesdir}/transform/ \
|
||||||
|
--cov={envsitepackagesdir}/twitter/ \
|
||||||
|
--cov={envsitepackagesdir}/weather/
|
||||||
|
|
||||||
|
[testenv:py37]
|
||||||
|
# run pytest with coverage
|
||||||
|
commands =
|
||||||
|
pytest --cov-append --cov-branch \
|
||||||
|
--cov={envsitepackagesdir}/acro/ \
|
||||||
|
--cov={envsitepackagesdir}/countdown/ \
|
||||||
|
--cov={envsitepackagesdir}/dice/ \
|
||||||
|
--cov={envsitepackagesdir}/dispatch/ \
|
||||||
|
--cov={envsitepackagesdir}/dr_botzo/ \
|
||||||
|
--cov={envsitepackagesdir}/facts/ \
|
||||||
|
--cov={envsitepackagesdir}/gitlab_bot/ \
|
||||||
|
--cov={envsitepackagesdir}/ircbot/ \
|
||||||
|
--cov={envsitepackagesdir}/karma/ \
|
||||||
|
--cov={envsitepackagesdir}/markov/ \
|
||||||
|
--cov={envsitepackagesdir}/mpdbot/ \
|
||||||
|
--cov={envsitepackagesdir}/pi/ \
|
||||||
|
--cov={envsitepackagesdir}/races/ \
|
||||||
|
--cov={envsitepackagesdir}/seen/ \
|
||||||
|
--cov={envsitepackagesdir}/storycraft/ \
|
||||||
|
--cov={envsitepackagesdir}/transform/ \
|
||||||
|
--cov={envsitepackagesdir}/twitter/ \
|
||||||
|
--cov={envsitepackagesdir}/weather/
|
||||||
|
|
||||||
[testenv:py38]
|
[testenv:py38]
|
||||||
# run pytest with coverage
|
# run pytest with coverage
|
||||||
commands =
|
commands =
|
||||||
@ -51,50 +97,7 @@ commands =
|
|||||||
--cov={envsitepackagesdir}/seen/ \
|
--cov={envsitepackagesdir}/seen/ \
|
||||||
--cov={envsitepackagesdir}/storycraft/ \
|
--cov={envsitepackagesdir}/storycraft/ \
|
||||||
--cov={envsitepackagesdir}/transform/ \
|
--cov={envsitepackagesdir}/transform/ \
|
||||||
--cov={envsitepackagesdir}/weather/
|
--cov={envsitepackagesdir}/twitter/ \
|
||||||
|
|
||||||
[testenv:py39]
|
|
||||||
# run pytest with coverage
|
|
||||||
commands =
|
|
||||||
pytest --cov-append --cov-branch \
|
|
||||||
--cov={envsitepackagesdir}/acro/ \
|
|
||||||
--cov={envsitepackagesdir}/countdown/ \
|
|
||||||
--cov={envsitepackagesdir}/dice/ \
|
|
||||||
--cov={envsitepackagesdir}/dispatch/ \
|
|
||||||
--cov={envsitepackagesdir}/dr_botzo/ \
|
|
||||||
--cov={envsitepackagesdir}/facts/ \
|
|
||||||
--cov={envsitepackagesdir}/gitlab_bot/ \
|
|
||||||
--cov={envsitepackagesdir}/ircbot/ \
|
|
||||||
--cov={envsitepackagesdir}/karma/ \
|
|
||||||
--cov={envsitepackagesdir}/markov/ \
|
|
||||||
--cov={envsitepackagesdir}/mpdbot/ \
|
|
||||||
--cov={envsitepackagesdir}/pi/ \
|
|
||||||
--cov={envsitepackagesdir}/races/ \
|
|
||||||
--cov={envsitepackagesdir}/seen/ \
|
|
||||||
--cov={envsitepackagesdir}/storycraft/ \
|
|
||||||
--cov={envsitepackagesdir}/transform/ \
|
|
||||||
--cov={envsitepackagesdir}/weather/
|
|
||||||
|
|
||||||
[testenv:py310]
|
|
||||||
# run pytest with coverage
|
|
||||||
commands =
|
|
||||||
pytest --cov-append --cov-branch \
|
|
||||||
--cov={envsitepackagesdir}/acro/ \
|
|
||||||
--cov={envsitepackagesdir}/countdown/ \
|
|
||||||
--cov={envsitepackagesdir}/dice/ \
|
|
||||||
--cov={envsitepackagesdir}/dispatch/ \
|
|
||||||
--cov={envsitepackagesdir}/dr_botzo/ \
|
|
||||||
--cov={envsitepackagesdir}/facts/ \
|
|
||||||
--cov={envsitepackagesdir}/gitlab_bot/ \
|
|
||||||
--cov={envsitepackagesdir}/ircbot/ \
|
|
||||||
--cov={envsitepackagesdir}/karma/ \
|
|
||||||
--cov={envsitepackagesdir}/markov/ \
|
|
||||||
--cov={envsitepackagesdir}/mpdbot/ \
|
|
||||||
--cov={envsitepackagesdir}/pi/ \
|
|
||||||
--cov={envsitepackagesdir}/races/ \
|
|
||||||
--cov={envsitepackagesdir}/seen/ \
|
|
||||||
--cov={envsitepackagesdir}/storycraft/ \
|
|
||||||
--cov={envsitepackagesdir}/transform/ \
|
|
||||||
--cov={envsitepackagesdir}/weather/
|
--cov={envsitepackagesdir}/weather/
|
||||||
|
|
||||||
[testenv:coverage]
|
[testenv:coverage]
|
||||||
@ -107,7 +110,6 @@ commands =
|
|||||||
# run security checks
|
# run security checks
|
||||||
#
|
#
|
||||||
# again it seems the most valuable here to run against the packaged code
|
# again it seems the most valuable here to run against the packaged code
|
||||||
# might not need to ignore 51457 after a tox bump
|
|
||||||
commands =
|
commands =
|
||||||
bandit \
|
bandit \
|
||||||
{envsitepackagesdir}/acro/ \
|
{envsitepackagesdir}/acro/ \
|
||||||
@ -126,9 +128,9 @@ commands =
|
|||||||
{envsitepackagesdir}/seen/ \
|
{envsitepackagesdir}/seen/ \
|
||||||
{envsitepackagesdir}/storycraft/ \
|
{envsitepackagesdir}/storycraft/ \
|
||||||
{envsitepackagesdir}/transform/ \
|
{envsitepackagesdir}/transform/ \
|
||||||
|
{envsitepackagesdir}/twitter/ \
|
||||||
{envsitepackagesdir}/weather/ \
|
{envsitepackagesdir}/weather/ \
|
||||||
-r
|
-r
|
||||||
safety check -r requirements/requirements-dev.txt -i 51457
|
|
||||||
|
|
||||||
[testenv:lint]
|
[testenv:lint]
|
||||||
# run style checks
|
# run style checks
|
||||||
@ -170,6 +172,7 @@ include =
|
|||||||
{envsitepackagesdir}/seen/
|
{envsitepackagesdir}/seen/
|
||||||
{envsitepackagesdir}/storycraft/
|
{envsitepackagesdir}/storycraft/
|
||||||
{envsitepackagesdir}/transform/
|
{envsitepackagesdir}/transform/
|
||||||
|
{envsitepackagesdir}/twitter/
|
||||||
{envsitepackagesdir}/weather/
|
{envsitepackagesdir}/weather/
|
||||||
|
|
||||||
omit =
|
omit =
|
||||||
|
Loading…
x
Reference in New Issue
Block a user