44 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/python3
 | |
| # -*- coding: utf-8 -*-
 | |
| import logging
 | |
| import json
 | |
| from collections import OrderedDict
 | |
| 
 | |
| class AccessManager():
 | |
| 	ACCESS_FILE = "access.json"
 | |
| 	def __init__(self):
 | |
| 		self.Logger = logging.getLogger(__class__.__name__)
 | |
| 		self.AccessDict = OrderedDict()
 | |
| 
 | |
| 	def Load(self):
 | |
| 		self.Logger.info("Loading access from {0}".format(self.ACCESS_FILE))
 | |
| 
 | |
| 		with open(self.ACCESS_FILE, "r") as fp:
 | |
| 			self.AccessDict = json.load(fp, object_pairs_hook = OrderedDict)
 | |
| 
 | |
| 	def Save(self):
 | |
| 		self.Logger.info("Saving access to {0}".format(self.ACCESS_FILE))
 | |
| 
 | |
| 		self.AccessDict = OrderedDict(
 | |
| 			sorted(self.AccessDict.items(), key = lambda x: x[1]["level"], reverse = True))
 | |
| 
 | |
| 		with open(self.ACCESS_FILE, "w") as fp:
 | |
| 			json.dump(self.AccessDict, fp, indent = '\t')
 | |
| 
 | |
| 	def __len__(self):
 | |
| 		return len(self.AccessDict)
 | |
| 
 | |
| 	def __getitem__(self, key):
 | |
| 		if key in self.AccessDict:
 | |
| 			return self.AccessDict[key]
 | |
| 
 | |
| 	def __setitem__(self, key, value):
 | |
| 		self.AccessDict[key] = value
 | |
| 
 | |
| 	def __delitem__(self, key):
 | |
| 		if key in self.AccessDict:
 | |
| 			del self.AccessDict[key]
 | |
| 
 | |
| 	def __iter__(self):
 | |
| 		return self.AccessDict.items().__iter__()
 |