Merge branch 'master' of ssh://git.labs.libre-entreprise.org/gitroot/tiramisu

This commit is contained in:
gwen 2013-03-06 09:34:07 +01:00
commit c26b0ca12b
3 changed files with 46 additions and 22 deletions

View File

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
"base 'interface' types for option types" "base 'interface' types for option types"
# Copyright (C) 2012 Team tiramisu (see AUTHORS for all contributors) # Copyright (C) 2012-2013 Team tiramisu (see AUTHORS for all contributors)
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by
@ -21,7 +21,7 @@
# the whole pypy projet is under MIT licence # the whole pypy projet is under MIT licence
# ____________________________________________________________ # ____________________________________________________________
class BaseType(object): class CommonType(object):
def has_properties(self): def has_properties(self):
return bool(len(self.properties)) return bool(len(self.properties))
def has_property(self, propname): def has_property(self, propname):
@ -35,20 +35,43 @@ class BaseType(object):
if self.has_property(propname): if self.has_property(propname):
self.properties.remove(propname) self.properties.remove(propname)
class HiddenBaseType(BaseType): #class HiddenBaseType(BaseType):
def hide(self): # def hide(self):
self.add_property('hidden') # self.add_property('hidden')
def show(self): # def show(self):
self.del_property('hidden') # self.del_property('hidden')
def _is_hidden(self): # def _is_hidden(self):
# dangerous method: how an Option() can determine its status by itself ? # # dangerous method: how an Option() can determine its status by itself ?
return self.has_property('hidden') # return self.has_property('hidden')
class DisabledBaseType(BaseType): #class DisabledBaseType(BaseType):
def disable(self): # def disable(self):
self.add_property('disabled') # self.add_property('disabled')
def enable(self): # def enable(self):
self.del_property('disabled') # self.del_property('disabled')
def _is_disabled(self): # def _is_disabled(self):
return self.has_property('disabled') # return self.has_property('disabled')
# commonly used properties. Option and OptionDescription will have these methods
common_properties = {'hidden': ('hide', 'show', '_is_hidden'),
'disabled': ('disable', 'enable', '_is_disabled')
}
basetype_methods = dict()
def build_properties(prop, add_prop, del_prop, is_prop):
def add_property(self):
self.add_property(prop)
def del_property(self):
self.del_property(prop)
def is_property(self):
return self.has_property(prop)
return {add_prop:add_property, del_prop:del_property,
is_prop:is_property}
for propname, meth_names in common_properties.items():
basetype_methods.update(build_properties(propname, meth_names[0], meth_names[1],
meth_names[2]))
BaseType = type('BaseType', (CommonType,), basetype_methods)

View File

@ -22,14 +22,15 @@
# ____________________________________________________________ # ____________________________________________________________
import re import re
from types import FunctionType from types import FunctionType
from tiramisu.basetype import HiddenBaseType, DisabledBaseType from tiramisu.basetype import BaseType
from tiramisu.error import (ConfigError, ConflictConfigError, NotFoundError, from tiramisu.error import (ConfigError, ConflictConfigError, NotFoundError,
RequiresError, RequirementRecursionError, MandatoryError, RequiresError, RequirementRecursionError, MandatoryError,
PropertiesOptionError) PropertiesOptionError)
from tiramisu.autolib import carry_out_calculation from tiramisu.autolib import carry_out_calculation
from tiramisu.setting import groups, owners from tiramisu.setting import groups, owners
requires_actions = [('hide', 'show'), ('enable', 'disable'), ('freeze', 'unfreeze')] requires_actions = [('hide', 'show'), ('enable', 'disable'),
('freeze', 'unfreeze')]
available_actions = [] available_actions = []
reverse_actions = {} reverse_actions = {}
@ -52,7 +53,7 @@ def valid_name(name):
#____________________________________________________________ #____________________________________________________________
# #
class Option(HiddenBaseType, DisabledBaseType): class Option(BaseType):
""" """
Abstract base class for configuration option's. Abstract base class for configuration option's.
@ -377,7 +378,7 @@ class NetmaskOption(Option):
# by now the validation is nothing but a string, use IPy instead # by now the validation is nothing but a string, use IPy instead
return isinstance(value, str) return isinstance(value, str)
class OptionDescription(HiddenBaseType, DisabledBaseType): class OptionDescription(BaseType):
"""Config's schema (organisation, group) and container of Options""" """Config's schema (organisation, group) and container of Options"""
# the group_type is useful for filtering OptionDescriptions in a config # the group_type is useful for filtering OptionDescriptions in a config
group_type = groups.default group_type = groups.default

View File

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
"sets the options of the configuration objects Config object itself" "sets the options of the configuration objects Config object itself"
# Copyright (C) 2012 Team tiramisu (see AUTHORS for all contributors) # Copyright (C) 2012-2013 Team tiramisu (see AUTHORS for all contributors)
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by