]> wagnertech.de Git - SVBaL.git/blob - python/eh_util/eh_app/AWK/config.py
ee76c7b248a246cef72360501df4ca94776770ea
[SVBaL.git] / python / eh_util / eh_app / AWK / config.py
1 '''
2 Created on 02.08.2024
3
4 @author: sparky2021
5 '''
6 from eh_app.models import ConfigData
7
8 the_instance = None
9
10 class Config:
11     '''
12     Singleton Klasse für Konfiguration
13     '''
14
15     def __init__(self, verein):
16         self.verein = verein
17         
18     def getConfig(self, key, default=None):
19         data = ConfigData.objects.filter(verein=self.verein, key=key)
20         if data:
21             return data[0].value
22         return default
23     
24     def requireConfig(self, key):
25         data = self.getConfig(key)
26         if not data:
27             raise RuntimeError(f"Kein Eintag für: {self.verein}/{key}")
28         return data
29         
30     def setConfig(self, key, value):
31         # check, if entry already exists
32         data = ConfigData.objects.filter(verein=self.verein, key=key)
33         if data:
34             # check value
35             if data.value != value:
36                 data.value = value
37                 data.save()
38         else:
39             data = ConfigData(verein=self.verein, key=key, value=value)
40             data.save()
41         
42 def getInstance(verein=None):
43     global the_instance
44     if not the_instance:
45         if not verein:
46             raise RuntimeError("Bei der ersten Instanzierung muss der Verein mitgegeben werden.")
47         the_instance = Config(verein)
48     return the_instance