Merge branch 'stable'
This commit is contained in:
commit
d2fc47941c
|
@ -1,4 +1,4 @@
|
||||||
from .core.models import Role
|
from .core.models.role import Role
|
||||||
|
|
||||||
GUEST_PERMISSIONS = [
|
GUEST_PERMISSIONS = [
|
||||||
"view_schedule",
|
"view_schedule",
|
||||||
|
|
|
@ -69,7 +69,7 @@ class Show(models.Model):
|
||||||
auto_playlist_enabled = models.BooleanField(db_column="has_autoplaylist")
|
auto_playlist_enabled = models.BooleanField(db_column="has_autoplaylist")
|
||||||
auto_playlist_repeat = models.BooleanField(db_column="autoplaylist_repeat")
|
auto_playlist_repeat = models.BooleanField(db_column="autoplaylist_repeat")
|
||||||
|
|
||||||
hosts = models.ManyToManyField(
|
hosts = models.ManyToManyField( # type: ignore[var-annotated]
|
||||||
"core.User",
|
"core.User",
|
||||||
through="ShowHost",
|
through="ShowHost",
|
||||||
)
|
)
|
||||||
|
|
|
@ -10,6 +10,7 @@ django-settings-module = "libretime_api.settings.testing"
|
||||||
[tool.pylint.messages_control]
|
[tool.pylint.messages_control]
|
||||||
extension-pkg-whitelist = "pydantic"
|
extension-pkg-whitelist = "pydantic"
|
||||||
disable = [
|
disable = [
|
||||||
|
"duplicate-code",
|
||||||
"fixme",
|
"fixme",
|
||||||
"missing-class-docstring",
|
"missing-class-docstring",
|
||||||
"missing-function-docstring",
|
"missing-function-docstring",
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
# Please do not edit this file, edit the setup.py file!
|
# Please do not edit this file, edit the setup.py file!
|
||||||
# This file is auto-generated by tools/extract_requirements.py.
|
# This file is auto-generated by tools/extract_requirements.py.
|
||||||
django-cors-headers>=3.14.0,<4.4
|
django-cors-headers>=3.14.0,<4.4
|
||||||
django-filter>=2.4.0,<23.4
|
django-filter>=2.4.0,<23.6
|
||||||
django>=4.2.0,<4.3
|
django>=4.2.0,<4.3
|
||||||
djangorestframework>=3.14.0,<3.15
|
djangorestframework>=3.14.0,<3.15
|
||||||
drf-spectacular>=0.22.1,<0.27
|
drf-spectacular>=0.22.1,<0.28
|
||||||
gunicorn>=20.1.0,<21.3
|
gunicorn>=20.1.0,<21.3
|
||||||
psycopg[c]>=3.1.8,<3.2
|
psycopg[c]>=3.1.8,<3.2
|
||||||
requests>=2.31.0,<2.32
|
requests>=2.31.0,<2.32
|
||||||
uvicorn[standard]>=0.17.6,<0.24.0
|
uvicorn[standard]>=0.17.6,<0.25.0
|
||||||
|
|
|
@ -25,17 +25,17 @@ setup(
|
||||||
},
|
},
|
||||||
install_requires=[
|
install_requires=[
|
||||||
"django-cors-headers>=3.14.0,<4.4",
|
"django-cors-headers>=3.14.0,<4.4",
|
||||||
"django-filter>=2.4.0,<23.4",
|
"django-filter>=2.4.0,<23.6",
|
||||||
"django>=4.2.0,<4.3",
|
"django>=4.2.0,<4.3",
|
||||||
"djangorestframework>=3.14.0,<3.15",
|
"djangorestframework>=3.14.0,<3.15",
|
||||||
"drf-spectacular>=0.22.1,<0.27",
|
"drf-spectacular>=0.22.1,<0.28",
|
||||||
"requests>=2.31.0,<2.32",
|
"requests>=2.31.0,<2.32",
|
||||||
],
|
],
|
||||||
extras_require={
|
extras_require={
|
||||||
"prod": [
|
"prod": [
|
||||||
"gunicorn>=20.1.0,<21.3",
|
"gunicorn>=20.1.0,<21.3",
|
||||||
"psycopg[c]>=3.1.8,<3.2",
|
"psycopg[c]>=3.1.8,<3.2",
|
||||||
"uvicorn[standard]>=0.17.6,<0.24.0",
|
"uvicorn[standard]>=0.17.6,<0.25.0",
|
||||||
],
|
],
|
||||||
"dev": [
|
"dev": [
|
||||||
"django-coverage-plugin>=3.0.0,<4",
|
"django-coverage-plugin>=3.0.0,<4",
|
||||||
|
|
|
@ -253,7 +253,7 @@ class PlaylistController extends Zend_Controller_Action
|
||||||
Logging::info("Currently active {$type} {$obj_sess->id}");
|
Logging::info("Currently active {$type} {$obj_sess->id}");
|
||||||
if (in_array($obj_sess->id, $ids)) {
|
if (in_array($obj_sess->id, $ids)) {
|
||||||
Logging::info("Deleting currently active {$type}");
|
Logging::info("Deleting currently active {$type}");
|
||||||
// Application_Model_Library::changePlaylist(null, $type);
|
// Application_Model_Library::changePlaylist(null, $type);
|
||||||
} else {
|
} else {
|
||||||
Logging::info("Not deleting currently active {$type}");
|
Logging::info("Not deleting currently active {$type}");
|
||||||
$obj = new $objInfo['className']($obj_sess->id);
|
$obj = new $objInfo['className']($obj_sess->id);
|
||||||
|
@ -562,7 +562,7 @@ class PlaylistController extends Zend_Controller_Action
|
||||||
$bl->saveSmartBlockCriteria($params['data']);
|
$bl->saveSmartBlockCriteria($params['data']);
|
||||||
$this->createUpdateResponse($bl, true);
|
$this->createUpdateResponse($bl, true);
|
||||||
$this->view->result = 0;
|
$this->view->result = 0;
|
||||||
// $result['html'] = $this->createFullResponse($bl, true, true);
|
// $result['html'] = $this->createFullResponse($bl, true, true);
|
||||||
} else {
|
} else {
|
||||||
$this->view->form = $form;
|
$this->view->form = $form;
|
||||||
$this->view->unsavedName = $params['name'];
|
$this->view->unsavedName = $params['name'];
|
||||||
|
@ -601,7 +601,7 @@ class PlaylistController extends Zend_Controller_Action
|
||||||
$result = $bl->generateSmartBlock($params['data']);
|
$result = $bl->generateSmartBlock($params['data']);
|
||||||
$this->view->result = $result['result'];
|
$this->view->result = $result['result'];
|
||||||
$this->createUpdateResponse($bl, true);
|
$this->createUpdateResponse($bl, true);
|
||||||
// $this->_helper->json->sendJson(array("result"=>0, "html"=>$this->createFullResponse($bl, true, true)));
|
// $this->_helper->json->sendJson(array("result"=>0, "html"=>$this->createFullResponse($bl, true, true)));
|
||||||
} else {
|
} else {
|
||||||
$this->view->obj = $bl;
|
$this->view->obj = $bl;
|
||||||
$this->view->id = $bl->getId();
|
$this->view->id = $bl->getId();
|
||||||
|
|
|
@ -69,7 +69,7 @@ class PreferenceController extends Zend_Controller_Action
|
||||||
$this->view->statusMsg = "<div class='success'>" . _('Preferences updated.') . '</div>';
|
$this->view->statusMsg = "<div class='success'>" . _('Preferences updated.') . '</div>';
|
||||||
$form = new Application_Form_Preferences();
|
$form = new Application_Form_Preferences();
|
||||||
$this->view->form = $form;
|
$this->view->form = $form;
|
||||||
// $this->_helper->json->sendJson(array("valid"=>"true", "html"=>$this->view->render('preference/index.phtml')));
|
// $this->_helper->json->sendJson(array("valid"=>"true", "html"=>$this->view->render('preference/index.phtml')));
|
||||||
} else {
|
} else {
|
||||||
$this->view->form = $form;
|
$this->view->form = $form;
|
||||||
// $this->_helper->json->sendJson(array("valid"=>"false", "html"=>$this->view->render('preference/index.phtml')));
|
// $this->_helper->json->sendJson(array("valid"=>"false", "html"=>$this->view->render('preference/index.phtml')));
|
||||||
|
|
|
@ -1652,12 +1652,12 @@ SQL;
|
||||||
if (isset($criteria['extra'])) {
|
if (isset($criteria['extra'])) {
|
||||||
$spCriteriaExtra = $criteria['extra'] * 1000;
|
$spCriteriaExtra = $criteria['extra'] * 1000;
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
* If user is searching for an exact match of length we need to
|
* If user is searching for an exact match of length we need to
|
||||||
* search as if it starts with the specified length because the
|
* search as if it starts with the specified length because the
|
||||||
* user only sees the rounded version (i.e. 4:02.7 is 4:02.761625
|
* user only sees the rounded version (i.e. 4:02.7 is 4:02.761625
|
||||||
* in the database)
|
* in the database)
|
||||||
*/
|
*/
|
||||||
} elseif (in_array($spCriteria, ['length', 'cuein', 'cueout']) && $spCriteriaModifier == 'is') {
|
} elseif (in_array($spCriteria, ['length', 'cuein', 'cueout']) && $spCriteriaModifier == 'is') {
|
||||||
$spCriteriaModifier = 'starts with';
|
$spCriteriaModifier = 'starts with';
|
||||||
$spCriteria .= '::text';
|
$spCriteria .= '::text';
|
||||||
|
|
|
@ -63,8 +63,10 @@ class Application_Model_Preference
|
||||||
$paramMap = [];
|
$paramMap = [];
|
||||||
if ($result > 1) {
|
if ($result > 1) {
|
||||||
// this case should not happen.
|
// this case should not happen.
|
||||||
|
$caller = debug_backtrace()[1]['function'];
|
||||||
|
|
||||||
throw new Exception('Invalid number of results returned. Should be ' .
|
throw new Exception('Invalid number of results returned. Should be ' .
|
||||||
"0 or 1, but is '{$result}' instead");
|
"0 or 1, but is '{$result}' instead, caller={$caller}");
|
||||||
}
|
}
|
||||||
if ($result == 1) {
|
if ($result == 1) {
|
||||||
// result found
|
// result found
|
||||||
|
|
|
@ -595,7 +595,7 @@ SQL;
|
||||||
$this->deleteAllInstances($showId);
|
$this->deleteAllInstances($showId);
|
||||||
$this->deleteAllShowDays($showId);
|
$this->deleteAllShowDays($showId);
|
||||||
|
|
||||||
// when repeating by day of the month (1st, 2nd, etc.) we do not store the repeat week days
|
// when repeating by day of the month (1st, 2nd, etc.) we do not store the repeat week days
|
||||||
} elseif ($currentRepeatType != 2) {
|
} elseif ($currentRepeatType != 2) {
|
||||||
// repeat type is the same, check if the days of the week are the same
|
// repeat type is the same, check if the days of the week are the same
|
||||||
$repeatingDaysChanged = false;
|
$repeatingDaysChanged = false;
|
||||||
|
@ -881,10 +881,10 @@ SQL;
|
||||||
CcShowQuery::create()
|
CcShowQuery::create()
|
||||||
->filterByDbId($showId)
|
->filterByDbId($showId)
|
||||||
->delete();
|
->delete();
|
||||||
// There is only one cc_show_instance if the user selects 'Delete This Instance'
|
// There is only one cc_show_instance if the user selects 'Delete This Instance'
|
||||||
// There is more than one cc_show_instance if the user selects 'Delete This
|
// There is more than one cc_show_instance if the user selects 'Delete This
|
||||||
// Instance and All Following'. We only need to set the last_show value
|
// Instance and All Following'. We only need to set the last_show value
|
||||||
// when 'Delete This Instance and All Following' has been selected
|
// when 'Delete This Instance and All Following' has been selected
|
||||||
} elseif (count($ccShowInstances) > 1) {
|
} elseif (count($ccShowInstances) > 1) {
|
||||||
$this->setLastRepeatingShowDate($showId);
|
$this->setLastRepeatingShowDate($showId);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"require": {
|
"require": {
|
||||||
"php": "^7.4",
|
"php": "^7.4",
|
||||||
"friendsofphp/php-cs-fixer": "<3.35.2"
|
"friendsofphp/php-cs-fixer": "<3.41.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,15 +8,11 @@ CPU_CORES := $(shell N=$$(nproc); echo $$(( $$N > 4 ? 4 : $$N )))
|
||||||
# BANDIT_ARG =
|
# BANDIT_ARG =
|
||||||
# PYTEST_ARG =
|
# PYTEST_ARG =
|
||||||
|
|
||||||
# SETUPTOOLS_ENABLE_FEATURES=legacy-editable is required to work
|
|
||||||
# around https://github.com/PyCQA/pylint/issues/7306
|
|
||||||
VENV = .venv
|
VENV = .venv
|
||||||
install: $(VENV)
|
install: $(VENV)
|
||||||
$(VENV):
|
$(VENV):
|
||||||
python3 -m venv $(VENV)
|
python3 -m venv $(VENV)
|
||||||
$(VENV)/bin/pip install --upgrade pip setuptools wheel
|
$(VENV)/bin/pip install --upgrade pip setuptools wheel
|
||||||
|
|
||||||
SETUPTOOLS_ENABLE_FEATURES=legacy-editable \
|
|
||||||
$(VENV)/bin/pip install \
|
$(VENV)/bin/pip install \
|
||||||
--requirement ../tools/python-requirements.txt \
|
--requirement ../tools/python-requirements.txt \
|
||||||
$(PIP_INSTALL)
|
$(PIP_INSTALL)
|
||||||
|
|
Loading…
Reference in New Issue