From 3fec6c4aae39bf267f8b16b1d9681725efa5f40c Mon Sep 17 00:00:00 2001 From: Jan Kaluza Date: Apr 07 2020 07:09:58 +0000 Subject: Use 'Compose.target_dir' property to handle None target_dir. --- diff --git a/server/odcs/server/models.py b/server/odcs/server/models.py index 9c3b90f..dcd6c53 100644 --- a/server/odcs/server/models.py +++ b/server/odcs/server/models.py @@ -161,7 +161,7 @@ class Compose(ODCSBase): celery_task_id = db.Column(db.String, nullable=True) # Target directory in which the compose is stored. This is `conf.target_dir` # by default. - target_dir = db.Column(db.String, nullable=True) + _target_dir = db.Column("target_dir", db.String, nullable=True) @property def on_default_target_dir(self): @@ -170,6 +170,20 @@ class Compose(ODCSBase): """ return self.target_dir is None or self.target_dir == conf.target_dir + @property + def target_dir(self): + """ + Returns the `self._target_dir` if set, otherwise `conf.target_dir`. + + This is needed to keep backward compatibility with composes which do + not have the `Compose.target_dir` set. + """ + return self._target_dir or conf.target_dir + + @target_dir.setter + def target_dir(self, value): + self._target_dir = value + @classmethod def create(cls, session, owner, source_type, source, results, seconds_to_live, packages=None, flags=0, sigkeys=None, diff --git a/server/tests/test_models.py b/server/tests/test_models.py index 954787d..3b5aaf1 100644 --- a/server/tests/test_models.py +++ b/server/tests/test_models.py @@ -23,7 +23,7 @@ from datetime import datetime from datetime import timedelta -from odcs.server import db +from odcs.server import db, conf from odcs.server.models import Compose from odcs.common.types import COMPOSE_RESULTS, COMPOSE_STATES from odcs.server.models import User @@ -83,6 +83,14 @@ class TestModels(ModelsBaseTest): 'target_dir': 'default'} self.assertEqual(c.json(True), expected_json) + def test_target_dir_none(self): + compose = Compose.create( + db.session, "me", PungiSourceType.MODULE, "testmodule-master", + COMPOSE_RESULTS["repository"], 3600) + compose.target_dir = None + db.session.commit() + self.assertEqual(compose.target_dir, conf.target_dir) + def test_create_copy(self): """ Tests that the Compose atttributes stored in database are copied