]> wagnertech.de Git - SVBaL.git/blob - python/eh_util/eh_app/AWK/config.py
pydev-s6git
[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 data set
35             if len(data) != 1:
36                 raise RuntimeError("config entry not unique")
37             if data[0].value != value:
38                 data[0].value = value
39                 data[0].save()
40         else:
41             data = ConfigData(verein=self.verein, key=key, value=value)
42             data.save()
43         
44 def getInstance(verein=None):
45     global the_instance
46     if not the_instance:
47         if not verein:
48             raise RuntimeError("Bei der ersten Instanzierung muss der Verein mitgegeben werden.")
49         the_instance = Config(verein)
50     return the_instance