]> wagnertech.de Git - SVBaL.git/blob - python/eh_app/AWK/config.py
Merge branch 'master' of http://wagnertech.de/git/SVBaL
[SVBaL.git] / python / 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=None):
31         # No value supplied: delete entry
32         # check, if entry already exists
33         data = ConfigData.objects.filter(verein=self.verein, key=key)
34         if data:
35             # check data set
36             if len(data) != 1:
37                 raise RuntimeError("config entry not unique")
38             if value:
39                 if data[0].value != value:
40                     data[0].value = value
41                     data[0].save()
42             else:
43                 data[0].delete()
44         elif value:
45             data = ConfigData(verein=self.verein, key=key, value=value)
46             data.save()
47         
48 def getInstance(verein=None):
49     global the_instance
50     if not the_instance:
51         if not verein:
52             raise RuntimeError("Bei der ersten Instanzierung muss der Verein mitgegeben werden.")
53         the_instance = Config(verein)
54     return the_instance