Compare commits

..

17 Commits

Author SHA1 Message Date
99413ccfd8 misc: edit programs in site 2023-11-10 11:27:30 +01:00
608725df99 templates: remove unused program_detail.html 2023-11-10 11:23:52 +01:00
0e5a5e8cc5 templatetags: parametrize has_perm() in order to enable aircox namespace permissions 2023-11-10 09:28:33 +01:00
0716b8b063 models/program: link to editor groups 2023-11-10 09:28:28 +01:00
8a361924e9 aircox/conf: user cannot edit all programs/episode 2023-10-18 15:50:02 +02:00
b36d20a99d documentation: advice pre-commit installation 2023-10-18 15:50:02 +02:00
d9645865c8 settings/dev: set root logger level to debug and show module name 2023-10-18 15:50:02 +02:00
0221fc1ac2 documenation: merge technicians content 2023-10-18 15:50:02 +02:00
89ae1d666b settings/dev: switch on debug mode (and get static files served) 2023-10-18 15:50:02 +02:00
22784efe25 documentation: move the scripts subsection into installation 2023-10-18 15:50:02 +02:00
64615089fe documentation: add a development setup section 2023-10-18 15:50:02 +02:00
f7210de088 settings/dev: do not require memcached 2023-10-18 15:50:02 +02:00
2a8aa80d8b settings: prevent ModuleNotFoundError 2023-10-18 15:50:02 +02:00
ad60d9fce4 gitignore: ignore db.sqlite3 and instance/settings/settings.py 2023-10-18 15:50:02 +02:00
8c05712110 documentation: update settings file location 2023-10-18 15:50:02 +02:00
b5eadf7f6c dependencies: bump pyyaml version to 6.0.1 (enables wheel building in a CPython3.11.2 virtualenv, https://github.com/yaml/pyyaml/issues/601) 2023-10-18 15:50:02 +02:00
6a4675a4bc models/schedule: order choices alphabetically 2023-10-18 09:31:48 +02:00
5 changed files with 18 additions and 58 deletions

View File

@ -33,7 +33,7 @@ Then copy the default settings and initiate the database :
``` ```
cp instance/settings/sample.py instance/settings/settings.py cp instance/settings/sample.py instance/settings/settings.py
python -c "from django.core.management.utils import get_random_secret_key; print('SECRET_KEY = \"%s\"' % get_random_secret_key())" >> instance/settings/settings.py python -c "from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())" >> instance/settings/settings.py
DJANGO_SETTINGS_MODULE=instance.settings.dev ./manage.py migrate DJANGO_SETTINGS_MODULE=instance.settings.dev ./manage.py migrate
``` ```

View File

@ -1,4 +1,5 @@
#! /usr/bin/env python3 #! /usr/bin/env python3
# TODO: SoundMonitor class
"""Monitor sound files; For each program, check for: """Monitor sound files; For each program, check for:
@ -59,8 +60,10 @@ class Command(BaseCommand):
) )
def handle(self, *args, **options): def handle(self, *args, **options):
monitor = SoundMonitor() SoundMonitor()
if options.get("scan"): if options.get("scan"):
monitor.scan() self.scan()
# if options.get('quality_check'):
# self.check_quality(check=(not options.get('scan')))
if options.get("monitor"): if options.get("monitor"):
monitor.monitor() self.monitor()

View File

@ -206,48 +206,29 @@ def monitor():
yield sound_monitor.SoundMonitor() yield sound_monitor.SoundMonitor()
class TestSoundMonitor: class SoundMonitor:
@pytest.mark.django_db
def test_report(self, monitor, program, logger): def test_report(self, monitor, program, logger):
monitor.report(program, "component", "content", logger=logger) monitor.report(program, "component", "content", logger=logger)
msg = f"{program}, component: content" msg = f"{program}, component: content"
assert logger._trace("info", args=True) == (msg,) assert logger._trace("info", args=True) == (msg,)
@pytest.mark.django_db def test_scan(self, monitor, program, logger):
def test_scan(self, monitor, programs, logger):
interface = Interface(None, {"scan_for_program": None}) interface = Interface(None, {"scan_for_program": None})
monitor.scan_for_program = interface.scan_for_program monitor.scan_for_program = interface.scan_for_program
dirs = monitor.scan(logger) dirs = monitor.scan(logger)
assert logger._traces("info") == tuple( assert logger._traces("info") == (
[ "scan all programs...",
(("scan all programs...",), {}), f"#{program.id} {program.title}",
]
+ [
((f"#{program.id} {program.title}",), {})
for program in programs
]
) )
assert dirs == [program.abspath for program in programs] assert dirs == [program.abspath]
traces = tuple( assert interface._traces("scan_for_program") == (
[ ((program, settings.SOUND_ARCHIVES_SUBDIR), {"logger": logger})(
[ (program, settings.SOUND_EXCERPTS_SUBDIR), {"logger": logger}
( )
(program, settings.SOUND_ARCHIVES_SUBDIR),
{"logger": logger, "type": Sound.TYPE_ARCHIVE},
),
(
(program, settings.SOUND_EXCERPTS_SUBDIR),
{"logger": logger, "type": Sound.TYPE_EXCERPT},
),
]
for program in programs
]
) )
traces_flat = tuple([item for sublist in traces for item in sublist])
assert interface._traces("scan_for_program") == traces_flat
def broken_test_monitor(self, monitor, monitor_interfaces, logger): def test_monitor(self, monitor, monitor_interfaces, logger):
def sleep(*args, **kwargs): def sleep(*args, **kwargs):
monitor.stop() monitor.stop()

View File

@ -1,23 +0,0 @@
import pytest
import os
from django.core.management import call_command
from django.conf import settings
wav = (
b"RIFF$\x00\x00\x00WAVEfmt \x10\x00\x00\x00\x01\x00\x02\x00D\xac\x00\x00"
b"\x10\xb1\x02\x00\x04\x00\x10\x00data\x00\x00\x00\x00"
)
@pytest.mark.django_db
def test_adding_a_sound(programs, fs):
p0 = programs[0]
assert len(p0.sound_set.all()) == 0
s0 = os.path.join(
settings.PROJECT_ROOT, "static/media/%s/archives/sound.wav" % p0.path
)
fs.create_file(s0, contents=wav)
call_command("sounds_monitor", "-s")
assert len(p0.sound_set.all()) == 1

View File

@ -1,4 +1,3 @@
pytest~=7.2 pytest~=7.2
pytest-django~=4.5 pytest-django~=4.5
model_bakery~=1.10 model_bakery~=1.10
pyfakefs~=5.2