summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRob Crittenden <rcritten@redhat.com>2015-07-17 14:07:16 -0400
committerPatrick Uiterwijk <puiterwijk@redhat.com>2015-08-18 09:52:25 +0200
commitbfa0e5d352ea0d6217d31c952f35cd527264e4fa (patch)
treebb1023e9b4d5049a598e39e9a763a188b49e1ee7
parent7b470b0e494a7ff5a088c3ead2e60754b67282f1 (diff)
downloadipsilon-bfa0e5d352ea0d6217d31c952f35cd527264e4fa.tar.gz
ipsilon-bfa0e5d352ea0d6217d31c952f35cd527264e4fa.tar.xz
ipsilon-bfa0e5d352ea0d6217d31c952f35cd527264e4fa.zip
Mark the service as readonly in the UI in authpam plugin
Update the Option class to take a readonly keyword argument, defaulting to False. Extend its subclasses to pass this value along. The page template will add the disabled keyword to input and textarea if a config option is marked as readonly. https://fedorahosted.org/ipsilon/ticket/6 Signed-off-by: Rob Crittenden <rcritten@redhat.com> Reviewed-by: Patrick Uiterwijk <puiterwijk@redhat.com>
-rw-r--r--ipsilon/login/authpam.py4
-rw-r--r--ipsilon/util/config.py47
-rw-r--r--templates/admin/option_config.html21
3 files changed, 52 insertions, 20 deletions
diff --git a/ipsilon/login/authpam.py b/ipsilon/login/authpam.py
index 1a34f8f..ed2e72b 100644
--- a/ipsilon/login/authpam.py
+++ b/ipsilon/login/authpam.py
@@ -65,7 +65,9 @@ for authentication. """
pconfig.String(
'service name',
'The name of the PAM service used to authenticate.',
- 'remote'),
+ 'remote',
+ readonly=True,
+ ),
pconfig.String(
'username text',
'Text used to ask for the username at login time.',
diff --git a/ipsilon/util/config.py b/ipsilon/util/config.py
index 622820c..18349a4 100644
--- a/ipsilon/util/config.py
+++ b/ipsilon/util/config.py
@@ -70,18 +70,21 @@ class Config(Log):
class Option(Log):
- def __init__(self, name, description):
+ def __init__(self, name, description, readonly=False):
self.name = name
self.description = description
self._default_value = None
self._assigned_value = None
+ self._readonly = readonly
def __repr__(self):
- return "%s: %s {%s}, value = %s [def: %s]" % (self.__class__,
- self.name,
- self.description,
- self._assigned_value,
- self._default_value)
+ return "%s: %s {%s}, value = %s [def: %s] readonly=%s" % (
+ self.__class__,
+ self.name,
+ self.description,
+ self._assigned_value,
+ self._default_value,
+ self._readonly)
def __str__(self):
return '%s=%s' % (self.name, self.get_value())
@@ -113,11 +116,14 @@ class Option(Log):
raise ValueError('Value must be string')
self._assigned_value = value
+ def is_readonly(self):
+ return self._readonly
+
class String(Option):
- def __init__(self, name, description, default_value=None):
- super(String, self).__init__(name, description)
+ def __init__(self, name, description, default_value=None, readonly=False):
+ super(String, self).__init__(name, description, readonly=readonly)
self._default_value = str(default_value)
def set_value(self, value):
@@ -132,8 +138,9 @@ class String(Option):
class Template(Option):
- def __init__(self, name, description, default_template=None):
- super(Template, self).__init__(name, description)
+ def __init__(self, name, description, default_template=None,
+ readonly=False):
+ super(Template, self).__init__(name, description, readonly=readonly)
self._default_value = str(default_template)
def set_value(self, value):
@@ -154,8 +161,8 @@ class Template(Option):
class List(Option):
- def __init__(self, name, description, default_list=None):
- super(List, self).__init__(name, description)
+ def __init__(self, name, description, default_list=None, readonly=False):
+ super(List, self).__init__(name, description, readonly=readonly)
if default_list:
self._default_value = default_list
else:
@@ -226,8 +233,9 @@ class MappingList(ComplexList):
class Choice(Option):
- def __init__(self, name, description, allowed=None, default=None):
- super(Choice, self).__init__(name, description)
+ def __init__(self, name, description, allowed=None, default=None,
+ readonly=False):
+ super(Choice, self).__init__(name, description, readonly=readonly)
if allowed:
self._allowed_values = list(allowed)
else:
@@ -295,8 +303,9 @@ class Choice(Option):
class Pick(Option):
- def __init__(self, name, description, allowed, default_value):
- super(Pick, self).__init__(name, description)
+ def __init__(self, name, description, allowed, default_value,
+ readonly=False):
+ super(Pick, self).__init__(name, description, readonly=readonly)
self._allowed_values = list(allowed)
if default_value not in self._allowed_values:
raise ValueError('The default value is not in the allowed list')
@@ -320,9 +329,11 @@ class Pick(Option):
class Condition(Pick):
- def __init__(self, name, description, default_value=False):
+ def __init__(self, name, description, default_value=False,
+ readonly=False):
super(Condition, self).__init__(name, description,
- [True, False], default_value)
+ [True, False], default_value,
+ readonly=readonly)
def import_value(self, value):
self._assigned_value = value == 'True'
diff --git a/templates/admin/option_config.html b/templates/admin/option_config.html
index 74eede5..1f921f6 100644
--- a/templates/admin/option_config.html
+++ b/templates/admin/option_config.html
@@ -59,9 +59,16 @@
{%- if value %}
value="{{ value }}"
{%- endif -%}
+ {% if v.is_readonly() -%}
+ disabled
+ {%- endif -%}
>
{% elif v.__class__.__name__ == 'List' -%}
- <textarea class="form-control" name="{{ v.name }}">
+ <textarea class="form-control" name="{{ v.name }}"
+ {% if v.is_readonly() -%}
+ disabled
+ {%- endif -%}
+ >
{%- if value %}
{{- value|join('\n') -}}
{%- endif -%}
@@ -75,6 +82,9 @@
{%- if value and e in value %}
checked="true"
{%- endif -%}
+ {% if v.is_readonly() -%}
+ disabled
+ {%- endif -%}
>&nbsp;{{ e }}
</div>
{% endfor %}
@@ -88,6 +98,9 @@
{%- if e == value %}
checked="true"
{%- endif -%}
+ {% if v.is_readonly() -%}
+ disabled
+ {%- endif -%}
>&nbsp;{{ e }}
</div>
{% endfor %}
@@ -97,6 +110,9 @@
{%- if value %}
checked="true"
{% endif -%}
+ {% if v.is_readonly() -%}
+ disabled
+ {%- endif -%}
>
{% elif v.__class__.__name__ == 'ComplexList' -%}
<table class="table table-striped extensible-table">
@@ -112,6 +128,9 @@
{%- else -%}
value="{{ line }}"
{%- endif -%}
+ {% if v.is_readonly() -%}
+ disabled
+ {%- endif -%}
>
</td>
<td>