mirror of
https://github.com/elem74/fabaccess-config-generator.git
synced 2025-03-12 23:01:57 +01:00
2024.12a
This commit is contained in:
parent
21a88d4507
commit
a4dafd856e
12
CHANGELOG
12
CHANGELOG
@ -1,3 +1,15 @@
|
||||
2024.11
|
||||
- **Features**
|
||||
- Neu: Option zur Erstellung eines Domänen-Managers. (`manager_domain`)
|
||||
- Neu: Option zur Erstellung eines werkstattweiten Benutzers. (`domain_user`)
|
||||
- Neu: Option zum Einstellen des CSV-Trennzeichens. (`csv_delimiter`)
|
||||
- **Konzeptionelle Änderungen**
|
||||
-
|
||||
- **Umbenennungen**
|
||||
- Die Einstellung `fa_update_dhall` heißt jetzt `fa_dhall_update`, damit ein einheitliches Benennungsschema mit der dazugehörigen Einstellungen `fa_dhall_file` gegeben ist.
|
||||
- **Weiteres**
|
||||
- Admin-Berechtigungen wurden vollständig auf Wildcard-Zugriffsschema umgestellt. Zuvor wurden Berechtigungen für einzelne Bereiche vergeben.
|
||||
|
||||
2024.6
|
||||
- **Diagrammerzeugung**
|
||||
- Das Diagramm enthält jetzt eine Icon-Legende
|
||||
|
@ -1,4 +1,4 @@
|
||||
__version__ = '2024.6'
|
||||
__version__ = '2024.12'
|
||||
|
||||
import time
|
||||
time_start = time.perf_counter()
|
||||
@ -49,7 +49,7 @@ if settings["create_file_roles"] == True:
|
||||
content = generate_csv_roles(roles)
|
||||
write_file('output/roles.csv', content)
|
||||
|
||||
if settings["fa_update_dhall"] == True:
|
||||
if settings["fa_dhall_update"] == True:
|
||||
print(' --- Aktualisierung der bffh.dhall')
|
||||
fa_dhall_file = settings["fa_dhall_file"]
|
||||
|
||||
@ -65,7 +65,7 @@ if settings["fa_update_dhall"] == True:
|
||||
# Pfadangabe "fa_dhall_file" ist leer
|
||||
else:
|
||||
print('Einstellung "fa_dhall_file" ist leer, es wurde kein Pfad zur bffh.dhall angegeben.')
|
||||
print('Bitte das Feld ausfüllen oder "fa_update_dhall" auf "False" setzen.')
|
||||
print('Bitte das Feld ausfüllen oder "fa_dhall_update" auf "False" setzen.')
|
||||
|
||||
# Mermaid-Code
|
||||
if settings["generate_mermaid"] == True:
|
||||
|
@ -15,8 +15,6 @@ class Domain:
|
||||
perm_handle = domain_id + '.'
|
||||
id_handle = perm_handle.replace('.', '_')
|
||||
|
||||
perms_manager = [perm_handle + '*']
|
||||
|
||||
self.domain = {
|
||||
"id": domain_id,
|
||||
"name": domain_name
|
||||
@ -24,16 +22,29 @@ class Domain:
|
||||
|
||||
self.domain_manager = {
|
||||
"id": id_handle + 'manager',
|
||||
"name": string_managerhandle + domain_name,
|
||||
"perms": perms_manager
|
||||
"name": '_' + string_managerhandle + domain_name,
|
||||
"perms": perm_handle + '*'
|
||||
}
|
||||
|
||||
self.domain_user = {
|
||||
"id": id_handle + 'user',
|
||||
"name": '_' + string_userhandle + domain_name,
|
||||
"perms": []
|
||||
}
|
||||
|
||||
|
||||
def get_domain(self):
|
||||
return self.domain
|
||||
|
||||
def get_domain_perms(self):
|
||||
return self.domain_manager["perms"]
|
||||
|
||||
def get_domain_manager(self):
|
||||
return self.domain_manager
|
||||
|
||||
def get_domain_user(self):
|
||||
return self.domain_user
|
||||
|
||||
|
||||
class Area(Domain):
|
||||
def __init__(self, domain_id, domain_name, area_id, area_name):
|
||||
@ -274,7 +285,7 @@ class GraphElement:
|
||||
# Maschinen aus der CSV-importieren
|
||||
def import_machines(file):
|
||||
machines = {}
|
||||
data = csv_listdict(file, csv_match)
|
||||
data = csv_listdict(file, settings['csv_delimiter'], csv_match)
|
||||
|
||||
count = 2
|
||||
print(f'{"Zeile": ^8} | {"Status": ^24} | {"Zusatzinformation": ^20}')
|
||||
@ -355,28 +366,28 @@ def generate_roles(machines):
|
||||
if roledata["id"] not in roles.keys():
|
||||
roles[roledata["id"]] = roledata
|
||||
|
||||
|
||||
# Schichtleitung anlegen
|
||||
if settings["manager_schichtleitung"] == True:
|
||||
roledata = manager_schichtleitung
|
||||
|
||||
if roledata["id"] not in roles.keys():
|
||||
roles[roledata["id"]] = roledata
|
||||
|
||||
|
||||
# Domänen durchlaufen
|
||||
for id, m in machines.items():
|
||||
|
||||
# Domänen-Berechtigung an Manager & Schichtleitung vergeben
|
||||
roledata = m.get_domain_manager()
|
||||
for perm in roledata["perms"]:
|
||||
if perm not in roles[admin_global["id"]]["perms"]:
|
||||
roles[admin_global["id"]]["perms"].append(perm)
|
||||
# Domänen-Berechtigung an Admin & Manager vergeben
|
||||
|
||||
if settings["manager_schichtleitung"] == True:
|
||||
for perm in roledata["perms"]:
|
||||
if perm not in roles[manager_schichtleitung["id"]]["perms"]:
|
||||
roles[manager_schichtleitung["id"]]["perms"].append(perm)
|
||||
# 2do: Admin - Überflüssige Berechtigungen?
|
||||
# for perm in roledata["perms"]:
|
||||
|
||||
# if perm not in roles[admin_global["id"]]["perms"]:
|
||||
# roles[admin_global["id"]]["perms"].append(perm)
|
||||
|
||||
# 2do - end
|
||||
|
||||
perm = m.get_domain_perms()
|
||||
|
||||
if perm not in roles[admin_global["id"]]["perms"]:
|
||||
roles[admin_global["id"]]["perms"].append(perm)
|
||||
|
||||
if settings["manager_domain"] == True:
|
||||
|
||||
if roledata["id"] not in roles.keys():
|
||||
roles[roledata["id"]] = roledata
|
||||
|
||||
# Manager: Domain
|
||||
if settings["multi_domains"] == True:
|
||||
@ -385,6 +396,10 @@ def generate_roles(machines):
|
||||
if roledata["id"] not in roles.keys():
|
||||
roles[roledata["id"]] = roledata
|
||||
|
||||
for perm in roledata["perms"]:
|
||||
if perm not in roles[manager_domain["id"]]["perms"]:
|
||||
roles[manager_domain["id"]]["perms"].append(perm)
|
||||
|
||||
# Manager: Area
|
||||
if settings["manager_area"] == True:
|
||||
roledata = m.get_area_manager()
|
||||
@ -403,30 +418,51 @@ def generate_roles(machines):
|
||||
|
||||
# Benutzer: Daten abrufen
|
||||
|
||||
if m.has_customrole() == True:
|
||||
# Extrarolle
|
||||
roledata = m.get_customrole()
|
||||
|
||||
if roledata["id"] in roles.keys():
|
||||
# Extrarolle vorhanden --> Berechtigungen hinzufügen
|
||||
for p in roledata["perms"]:
|
||||
roles[roledata["id"]]["perms"].append(p)
|
||||
if settings["domain_user"] == True:
|
||||
# Domäne-Benutzer
|
||||
roledata = m.get_domain_user()
|
||||
|
||||
else:
|
||||
# Kein Domäne-Benutzer
|
||||
if m.has_customrole() == True:
|
||||
# Extrarolle
|
||||
roledata = m.get_customrole()
|
||||
|
||||
if roledata["id"] in roles.keys():
|
||||
# Extrarolle vorhanden --> Berechtigungen hinzufügen
|
||||
for p in roledata["perms"]:
|
||||
roles[roledata["id"]]["perms"].append(p)
|
||||
|
||||
if m.has_subarea() == True:
|
||||
# Unterbereich
|
||||
roledata = m.get_subarea_user()
|
||||
else:
|
||||
# Bereich
|
||||
roledata = m.get_area_user()
|
||||
|
||||
# print_dict(roledata)
|
||||
if m.has_subarea() == True:
|
||||
# Unterbereich
|
||||
roledata = m.get_subarea_user()
|
||||
else:
|
||||
# Bereich
|
||||
roledata = m.get_area_user()
|
||||
|
||||
# Benutzer: Hinzufügen
|
||||
if roledata["id"] not in roles.keys():
|
||||
roles[roledata["id"]] = roledata
|
||||
|
||||
# Domänen-Benutzer: Berechtigungen hinzufügen
|
||||
|
||||
if settings["domain_user"] == True:
|
||||
if m.has_subarea() == True:
|
||||
# Unterbereich
|
||||
perms = m.get_subarea_user()["perms"]
|
||||
else:
|
||||
# Bereich
|
||||
perms = m.get_area_user()["perms"]
|
||||
|
||||
for p in perms:
|
||||
if p not in roles[roledata["id"]]["perms"]:
|
||||
roles[roledata["id"]]["perms"].append(p)
|
||||
|
||||
|
||||
print_dict(roles)
|
||||
|
||||
return roles
|
||||
|
||||
|
||||
@ -686,8 +722,8 @@ def graph_create_elements(machines):
|
||||
data = {}
|
||||
data["_root"] = GraphElement("root", "Infrastruktur", '')
|
||||
data["_root"].add_role(f'{icon_admin}{admin_global["name"]}')
|
||||
if settings["manager_schichtleitung"] == True:
|
||||
data["_root"].add_role(f'{icon_manager}{manager_schichtleitung["name"]}')
|
||||
if settings["manager_domain"] == True:
|
||||
data["_root"].add_role(f'{icon_manager}{manager_domain["name"]}')
|
||||
|
||||
for key, m in machines.items():
|
||||
|
||||
|
@ -18,7 +18,7 @@ admin_global = {
|
||||
"perms": ["bffh.users.manage", "bffh.users.info", "bffh.users.admin"]
|
||||
}
|
||||
|
||||
manager_schichtleitung = {
|
||||
manager_domain = {
|
||||
"id": "_manager_schichtleitung",
|
||||
"name": "_Manager Schichtleitung",
|
||||
"perms": []
|
||||
|
@ -50,7 +50,7 @@ def list_join(my_list, insert):
|
||||
return my_string
|
||||
|
||||
# CSV einlesen: Erzeugt eine Liste, die für jede Zeile ein Dictionary mit Header und Value ausgibt
|
||||
def csv_listdict(filename, replacedict = {}):
|
||||
def csv_listdict(filename, csv_delimiter, replacedict = {}):
|
||||
|
||||
csvfile = open(filename, 'r', encoding='utf-8-sig')
|
||||
tempfile = ''
|
||||
@ -75,7 +75,7 @@ def csv_listdict(filename, replacedict = {}):
|
||||
|
||||
# Dictionary bilden
|
||||
csvfile = open(filename, mode='r', encoding='utf-8-sig')
|
||||
reader = csv.DictReader(csvfile, delimiter=';')
|
||||
reader = csv.DictReader(csvfile, delimiter=csv_delimiter)
|
||||
|
||||
finaldata = []
|
||||
|
||||
@ -181,12 +181,6 @@ def config_load(file, section = 'all'):
|
||||
|
||||
return dict_settings
|
||||
|
||||
|
||||
# ------------------ ALT ---------------
|
||||
|
||||
|
||||
# Maschinen-Dictionary sortieren
|
||||
|
||||
# Actor-Library einlesen
|
||||
def load_actors(file):
|
||||
dict_actors = {}
|
||||
|
22
settings.ini
22
settings.ini
@ -3,25 +3,31 @@
|
||||
; Einstellung inkativ = False
|
||||
|
||||
[generator]
|
||||
; Verwendung mehrer Domänen. Bei Verwendung mehrer Domänen werden einzelne Admins nur für die Domäne erstellt
|
||||
; CSV-Trennzeichen. Bei Ververwendung des Kommas als Trennzeichen müssen Beschreibungstexte in Anführungszeichen gesetzt werden.
|
||||
csv_delimiter = ;
|
||||
|
||||
; Verwendung mehrer Domänen. Bei Verwendung mehrer Domänen werden wird für jede Domäne ein Manager erstellt
|
||||
multi_domains = False
|
||||
|
||||
; Rolle "Schichtleitung" erstellen, die über Manager-Berechtigungen für alle Domänen verfügt
|
||||
manager_schichtleitung = True
|
||||
; Erstellung einer Benutzerrolle für die gesamte Werkstatt. (Es werden keine Benutzerrollen für Unterbereiche/ Bereiche erstellt)
|
||||
domain_user = True
|
||||
|
||||
; Manager-Rolle für jeden Bereich erstellen
|
||||
manager_area = True
|
||||
; Manager-Rolle für die Domäne erstellen.
|
||||
manager_domain = True
|
||||
|
||||
; Manager-Rolle für jeden Bereich erstellen.
|
||||
manager_area = False
|
||||
|
||||
; Spalte "Unterbereich Manager" der CSV beachten (True) der nicht (False).
|
||||
manager_subarea = True
|
||||
manager_subarea = False
|
||||
|
||||
; Automatisches Einfügen aller erzeugten Daten (Maschinen, Rolle, Aktoren, Aktor-Verbindungen) in die bffh.dhall
|
||||
; Die Datei muss über Platzhalter verfügen, siehe Beispieldatei ( /docs/bffh-vorlage.dhall )
|
||||
fa_update_dhall = False
|
||||
fa_dhall_update = True
|
||||
|
||||
; Pfad zur bffh.dall von FabAccess. Der Pfad muss vollständig sein und die bffh.dhall beinhalten.
|
||||
; Beispiel: D:\FabAccess\config\bffh\bffh.dhall bzw. /home/fabaccess/bffh/bffh.dhall
|
||||
fa_dhall_file =
|
||||
fa_dhall_file = F:\Git\fabaccess-docker\config\bffh\bffh.dhall
|
||||
|
||||
; Mermaid-Code erzeugen
|
||||
generate_mermaid = True
|
||||
|
Loading…
x
Reference in New Issue
Block a user