mirror of
https://github.com/kakwa/ldapcherry
synced 2024-11-22 09:24:21 +01:00
implementing weight and normalizing each kind of attributes
This commit is contained in:
parent
af3326db07
commit
f8b3df8b58
@ -122,6 +122,7 @@ password:
|
||||
logscript:
|
||||
description: "Windows login script"
|
||||
display_name: "Login script"
|
||||
weight: 100
|
||||
type: fix
|
||||
value: login1.bat
|
||||
backends:
|
||||
|
@ -21,7 +21,7 @@ class Attributes:
|
||||
def __init__(self, attributes_file):
|
||||
self.attributes_file = attributes_file
|
||||
self.backends = Set([])
|
||||
self.self_attributes = Set([])
|
||||
self.self_attributes = {}
|
||||
self.backend_attributes = {}
|
||||
self.displayed_attributes = {}
|
||||
self.key = None
|
||||
@ -40,7 +40,7 @@ class Attributes:
|
||||
if not attr['type'] in types:
|
||||
raise WrongAttributeType(attr['type'], attrid, attributes_file)
|
||||
if 'self' in attr and attr['self']:
|
||||
self.self_attributes.add(attrid)
|
||||
self.self_attributes[attrid] = attr
|
||||
if 'key' in attr and attr['key']:
|
||||
if not self.key is None:
|
||||
raise DumplicateUserKey(attrid, self.key)
|
||||
@ -51,7 +51,7 @@ class Attributes:
|
||||
self.backend_attributes[b] = []
|
||||
self.backend_attributes[b].append(attr['backends'][b])
|
||||
if 'search_displayed' in attr and attr['search_displayed']:
|
||||
self.displayed_attributes[attrid] = attr['display_name']
|
||||
self.displayed_attributes[attrid] = attr
|
||||
|
||||
if self.key is None:
|
||||
raise MissingUserKey()
|
||||
@ -63,7 +63,7 @@ class Attributes:
|
||||
return self.key
|
||||
|
||||
def _mandatory_check(self, attr):
|
||||
for m in ['description', 'display_name', 'type', 'backends']:
|
||||
for m in ['description', 'display_name', 'type', 'backends', 'weight']:
|
||||
if m not in self.attributes[attr]:
|
||||
raise MissingKey(m, attr, self.attributes_file)
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
% for a in attributes:
|
||||
% for a in sorted(attributes.keys(), key=lambda attr: attributes[attr]['weight']):
|
||||
<% attr = attributes[a] %>
|
||||
<div class="form-group">
|
||||
<div class="input-group">
|
||||
|
@ -22,9 +22,9 @@
|
||||
<table id="RecordTable" class="table table-hover table-condensed tablesorter">
|
||||
<thead>
|
||||
<tr>
|
||||
%for attr in attrs_list:
|
||||
%for attr in sorted(attrs_list.keys(), key=lambda attr: attrs_list[attr]['weight']):
|
||||
<th>
|
||||
${attrs_list[attr]}
|
||||
${attrs_list[attr]['display_name']}
|
||||
</th>
|
||||
% endfor
|
||||
<th class="sorter-false">
|
||||
@ -38,7 +38,7 @@
|
||||
<tbody>
|
||||
%for user in searchresult:
|
||||
<tr>
|
||||
%for attr in attrs_list:
|
||||
%for attr in sorted(attrs_list.keys(), key=lambda attr: attrs_list[attr]['weight']):
|
||||
<td>
|
||||
% if attr in searchresult[user]:
|
||||
${searchresult[user][attr]}
|
||||
|
@ -22,9 +22,9 @@
|
||||
<table id="RecordTable" class="table table-hover table-condensed tablesorter">
|
||||
<thead>
|
||||
<tr>
|
||||
%for attr in attrs_list:
|
||||
%for attr in sorted(attrs_list.keys(), key=lambda attr: attrs_list[attr]['weight']):
|
||||
<th>
|
||||
${attrs_list[attr]}
|
||||
${attrs_list[attr]['display_name']}
|
||||
</th>
|
||||
% endfor
|
||||
</tr>
|
||||
@ -32,7 +32,7 @@
|
||||
<tbody>
|
||||
%for user in searchresult:
|
||||
<tr>
|
||||
%for attr in attrs_list:
|
||||
%for attr in sorted(attrs_list.keys(), key=lambda attr: attrs_list[attr]['weight']):
|
||||
<td>
|
||||
% if attr in searchresult[user]:
|
||||
${searchresult[user][attr]}
|
||||
|
@ -3,6 +3,7 @@ cn:
|
||||
display_name: "Display Name"
|
||||
type: string
|
||||
search_displayed: True
|
||||
weight: 30
|
||||
autofill:
|
||||
function: cn
|
||||
args:
|
||||
@ -11,11 +12,13 @@ cn:
|
||||
backends:
|
||||
ldap: cn
|
||||
ad: CN
|
||||
|
||||
first-name:
|
||||
description: "First name of the user"
|
||||
display_name: "First Name"
|
||||
search_displayed: True
|
||||
type: string
|
||||
weight: 20
|
||||
backends:
|
||||
ldap: givenName
|
||||
ad: givenName
|
||||
@ -23,6 +26,7 @@ name:
|
||||
description: "Family name of the user"
|
||||
display_name: "Name"
|
||||
search_displayed: True
|
||||
weight: 10
|
||||
type: string
|
||||
backends:
|
||||
ldap: sn
|
||||
@ -30,8 +34,8 @@ name:
|
||||
email:
|
||||
description: "Email of the user"
|
||||
display_name: "Name"
|
||||
search_displayed: True
|
||||
type: email
|
||||
weight: 40
|
||||
autofill:
|
||||
function: email
|
||||
args:
|
||||
@ -47,6 +51,7 @@ uid:
|
||||
search_displayed: True
|
||||
key: True
|
||||
type: string
|
||||
weight: 50
|
||||
autofill:
|
||||
function: uid
|
||||
args:
|
||||
@ -58,6 +63,7 @@ uid:
|
||||
uidNumber:
|
||||
description: "User ID Number of the user"
|
||||
display_name: "UID Number"
|
||||
weight: 60
|
||||
type: int
|
||||
autofill:
|
||||
function: uidNumber
|
||||
@ -70,6 +76,7 @@ uidNumber:
|
||||
gidNumber:
|
||||
description: "Group ID Number of the user"
|
||||
display_name: "GID Number"
|
||||
weight: 70
|
||||
type: int
|
||||
default: 10000
|
||||
backends:
|
||||
@ -78,6 +85,7 @@ gidNumber:
|
||||
shell:
|
||||
description: "Shell of the user"
|
||||
display_name: "Shell"
|
||||
weight: 80
|
||||
self: True
|
||||
type: stringlist
|
||||
values:
|
||||
@ -90,6 +98,7 @@ shell:
|
||||
home:
|
||||
description: "Home user path"
|
||||
display_name: "Home"
|
||||
weight: 90
|
||||
type: string
|
||||
autofill:
|
||||
function: home
|
||||
@ -104,6 +113,7 @@ home:
|
||||
password:
|
||||
description: "Password of the user"
|
||||
display_name: "Password"
|
||||
weight: 31
|
||||
self: True
|
||||
type: password
|
||||
backends:
|
||||
@ -112,6 +122,7 @@ password:
|
||||
logscript:
|
||||
description: "Windows login script"
|
||||
display_name: "Login script"
|
||||
weight: 100
|
||||
type: fix
|
||||
value: login1.bat
|
||||
backends:
|
||||
|
@ -3,6 +3,7 @@ cn:
|
||||
display_name: "Display Name"
|
||||
type: notatype
|
||||
key: True
|
||||
weight: 10
|
||||
autofill:
|
||||
function: cn
|
||||
args:
|
||||
@ -16,6 +17,7 @@ first-name:
|
||||
description: "First name of the user"
|
||||
display_name: "First Name"
|
||||
type: string
|
||||
weight: 10
|
||||
backends:
|
||||
ldap: givenName
|
||||
ad: givenName
|
||||
|
@ -21,7 +21,7 @@ class TestError(object):
|
||||
def testGetSelfAttributes(self):
|
||||
inv = Attributes('./tests/cfg/attributes.yml')
|
||||
ret = inv.get_selfattributes()
|
||||
expected = Set(['password', 'shell'])
|
||||
expected = {'password': {'backends': {'ad': 'userPassword', 'ldap': 'userPassword'}, 'display_name': 'Password', 'description': 'Password of the user', 'weight': 31, 'self': True, 'type': 'password'}, 'shell': {'backends': {'ad': 'SHELL', 'ldap': 'shell'}, 'display_name': 'Shell', 'description': 'Shell of the user', 'weight': 80, 'values': ['/bin/bash', '/bin/zsh', '/bin/sh'], 'self': True, 'type': 'stringlist'}}
|
||||
assert ret == expected
|
||||
|
||||
def testGetSelfAttributes(self):
|
||||
@ -33,7 +33,7 @@ class TestError(object):
|
||||
def testGetSearchAttributes(self):
|
||||
inv = Attributes('./tests/cfg/attributes.yml')
|
||||
ret = inv.get_search_attributes()
|
||||
expected = {'first-name': 'First Name', 'cn': 'Display Name', 'name': 'Name', 'uid': 'UID', 'email': 'Name'}
|
||||
expected = {'first-name': {'backends': {'ad': 'givenName', 'ldap': 'givenName'}, 'display_name': 'First Name', 'description': 'First name of the user', 'weight': 20, 'search_displayed': True, 'type': 'string'}, 'cn': {'autofill': {'function': 'cn', 'args': ['$first-name', '$name']}, 'backends': {'ad': 'CN', 'ldap': 'cn'}, 'display_name': 'Display Name', 'description': 'Firt Name and Display Name', 'weight': 30, 'search_displayed': True, 'type': 'string'}, 'name': {'backends': {'ad': 'sn', 'ldap': 'sn'}, 'display_name': 'Name', 'description': 'Family name of the user', 'weight': 10, 'search_displayed': True, 'type': 'string'}, 'uid': {'display_name': 'UID', 'description': 'UID of the user', 'weight': 50, 'autofill': {'function': 'uid', 'args': ['$first-name', '$last-name']}, 'backends': {'ad': 'UID', 'ldap': 'uid'}, 'key': True, 'search_displayed': True, 'type': 'string'}}
|
||||
assert ret == expected
|
||||
|
||||
def testGetBackendAttributes(self):
|
||||
|
Loading…
Reference in New Issue
Block a user