This commit is contained in:
2026-04-23 20:57:07 +03:00
parent 080f55cec1
commit 441b7c869e
6 changed files with 97 additions and 38 deletions
+11
View File
@@ -2,4 +2,15 @@
## Описание
```
export PYTHONPATH=`pwd`/src
```
## Тест
```
export PYTHONPATH=`pwd`/src
python -m unittest --verbose
```
## Ссылки
+38
View File
@@ -0,0 +1,38 @@
__author__ = 'RemiZOffAlex'
__email__ = 'remizoffalex@mail.ru'
from uuid import uuid4
from pathlib import Path
from helpers.session.session import Session
class SessionStoreMemory:
def __init__(self):
self.__values = {}
def __contains__(self, key):
if key in self.__values:
return True
else:
return False
def __delitem__(self, key):
del self.__values[key]
def __getitem__(self, key):
value = self.__values[key]
return value
def __iter__(self):
for key in self.__values:
yield key
def create(self):
key = uuid4().hex
result = Session(self, key)
return result
def __setitem__(self, key, value):
print('SessionStoreMemory.__setitem__', key, value)
self.__values[key] = value
+6 -6
View File
@@ -5,15 +5,15 @@ from datetime import datetime
class Session:
def __init__(self, store, id):
def __init__(self, store, identifier):
self.__store = store
self.__id = id
self.__identifier = identifier
self.__values = {}
def save(self):
self.__values['session.id'] = self.__id
self.__values['session.id'] = self.__identifier
self.__values['session.created_at'] = datetime.now()
self.__store[self.__id] = self.__values
self.__store[self.__identifier] = self.__values
def __contains__(self, key):
if key in self.__values:
@@ -33,5 +33,5 @@ class Session:
def __getattr__(self, name):
print('Session.__getattr__', name)
if name == 'id':
return self.__id
if name == 'identifier':
return self.__identifier
+17 -32
View File
@@ -2,53 +2,38 @@ __author__ = 'RemiZOffAlex'
__email__ = 'remizoffalex@mail.ru'
from uuid import uuid4
from pathlib import Path
from helpers.tree.storage import gethashtree
from helpers.yaml import yaml_read, yaml_write
from helpers.session.session import Session
from helpers.session.memory import SessionStoreMemory
class SessionStore:
def __init__(self, path: str = './'):
print('SessionStore.__init__')
self.__path = Path(path)
print('self.__path', self.__path)
def __init__(self):
self.__backend = SessionStoreMemory()
def __contains__(self, key):
if key in self.__values:
if key in self.__backend:
return True
else:
return False
def __delitem__(self, key):
del self.__values[key]
del self.__backend[key]
def __getitem__(self, id):
segments = gethashtree(id, 3)
print(segments)
value = yaml_read(self.__path / segments / f'{id}.yml')
def __getitem__(self, key):
value = self.__backend[key]
return value
def __iter__(self):
for key in self.__backend:
yield key
def create(self):
id = uuid4().hex
result = Session(self, id)
key = uuid4().hex
result = Session(self, key)
return result
def __setitem__(self, id, value):
print('SessionStore.__setitem__', id, value)
segments = gethashtree(id)
directory = self.__path / segments
if not directory.exists():
directory.mkdir(parents=True)
yaml_write(directory / f'{id}.yml', value)
def __setattr__(self, name, value):
print('SessionStore.__setattr__', name, value)
if name == 'path':
self.__path = Path(value)
print('self.__path', self.__path)
else:
super().__setattr__(name, value)
# print('super', type(super()))
# print('SessionStore', SessionStore.__path)
def __setitem__(self, key, value):
print(self.__backend)
self.__backend[key] = value
print(self.__backend)
+2
View File
@@ -0,0 +1,2 @@
__author__ = 'RemiZOffAlex'
__email__ = 'remizoffalex@mail.ru'
+23
View File
@@ -0,0 +1,23 @@
__author__ = 'RemiZOffAlex'
__email__ = 'remizoffalex@mail.ru'
import unittest
from helpers.session.store import SessionStore
class TestSession(unittest.TestCase):
def test_session(self):
sessions = SessionStore()
session = sessions.create()
identifier = session.identifier
for key in sessions:
print(sessions[key])
session.save()
print('saved')
for key in sessions:
print(sessions[key])
print('\n')
print('session', session)
session = sessions[identifier]
print('session', session)