Browse Source

Merge pull request #5967 from maxkoryukov/fix/opt-hidden-conflict

Style fix for 'settings.py'
pull/6004/merge
Ruud Burger 9 years ago
parent
commit
51e5661cfd
  1. 46
      couchpotato/core/settings.py
  2. 54
      couchpotato/core/settings_test.py

46
couchpotato/core/settings.py

@ -331,38 +331,34 @@ class Settings(object):
return {
'success' : False,
}
else:
from couchpotato.environment import Env
soft_chroot = Env.get('softchroot')
if self.getType(section, option) == 'directory':
value = soft_chroot.chroot2abs(value)
from couchpotato.environment import Env
soft_chroot = Env.get('softchroot')
if self.getType(section, option) == 'directories':
import json
value = json.loads(value)
if not (value and isinstance(value, list)):
value = []
value = map(soft_chroot.chroot2abs, value)
value = self.directories_delimiter.join(value)
if self.getType(section, option) == 'directory':
value = soft_chroot.chroot2abs(value)
# See if a value handler is attached, use that as value
new_value = fireEvent('setting.save.%s.%s' % (section, option), value, single = True)
if self.getType(section, option) == 'directories':
import json
value = json.loads(value)
if not (value and isinstance(value, list)):
value = []
value = map(soft_chroot.chroot2abs, value)
value = self.directories_delimiter.join(value)
self.set(section, option, (new_value if new_value else value).encode('unicode_escape'))
self.save()
# See if a value handler is attached, use that as value
new_value = fireEvent('setting.save.%s.%s' % (section, option), value, single = True)
# After save (for re-interval etc)
fireEvent('setting.save.%s.%s.after' % (section, option), single = True)
fireEvent('setting.save.%s.*.after' % section, single = True)
self.set(section, option, (new_value if new_value else value).encode('unicode_escape'))
self.save()
return {
'success': True
}
# After save (for re-interval etc)
fireEvent('setting.save.%s.%s.after' % (section, option), single = True)
fireEvent('setting.save.%s.*.after' % section, single = True)
# unreachable code:
return None
return {
'success': True
}
def isSectionReadable(self, section):
meta = 'section_hidden' + self.optionMetaSuffix()

54
couchpotato/core/settings_test.py

@ -23,6 +23,11 @@ class DoNotUseMe:
# props:
s.log = Mock()
# subobjects
s.p = Mock()
s.p.getboolean = Mock(return_value=True)
s.p.has_option = Mock
class SettingsSaveWritableNonWritable(TestCase):
def setUp(self):
self.s = Settings()
@ -94,3 +99,52 @@ class SettingsSaveWritableNonWritable(TestCase):
# lets check, that 'set'-method was not called:
self.assertFalse(mock_set.called, 'Method `set` was called')
mock_is_w.assert_called_with(section, option)
class OptionMetaSuite(TestCase):
""" tests for ro rw hidden options """
def setUp(self):
self.s = Settings()
self.meta = self.s.optionMetaSuffix()
# hide real config-parser:
self.s.p = Mock()
def test_no_meta_option(self):
s = self.s
section = 'core'
option = 'url'
option_meta = option + self.meta
# setup mock
s.p.getboolean = Mock(return_value=True)
# there is no META-record for our option:
s.p.has_option = Mock(side_effect=lambda s,o: not (s==section and o==option_meta) )
# by default all options are writable and readable
self.assertTrue ( s.isOptionWritable(section, option) )
self.assertTrue ( s.isOptionReadable(section, option) )
def test_non_writable(self):
s = self.s
section = 'core'
option = 'url'
def mock_get_meta_ro (s,o):
if (s==section and o==option_meta):
return 'ro'
return 11
option_meta = option + self.meta
# setup mock
s.p.has_option = Mock( return_value = True )
s.p.get = Mock( side_effect = mock_get_meta_ro)
# by default all options are writable and readable
self.assertFalse ( s.isOptionWritable(section, option) )
self.assertTrue ( s.isOptionReadable(section, option) )

Loading…
Cancel
Save