Update
This commit is contained in:
@@ -2,4 +2,15 @@
|
||||
|
||||
## Описание
|
||||
|
||||
```
|
||||
export PYTHONPATH=`pwd`/src
|
||||
```
|
||||
|
||||
## Тест
|
||||
|
||||
```
|
||||
export PYTHONPATH=`pwd`/src
|
||||
python -m unittest --verbose
|
||||
```
|
||||
|
||||
## Ссылки
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
__author__ = 'RemiZOffAlex'
|
||||
__email__ = 'remizoffalex@mail.ru'
|
||||
@@ -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)
|
||||
Reference in New Issue
Block a user