class Session(Resource): cache = {} def __init__(self): self._model = SessionModel() def post(self): data = self._model.create((request.remote_addr or "0.0.0.0"), str(request.user_agent)) if data: data = self._model.read(data.id) return jsonify(dict(data)) abort(400) def get(self, session_id=None): response = self._model.read(session_id) if response: return jsonify(response) abort(404) def delete(self, session_id=None): self._model.destroy(session_id) return "" def put(self, session_id=None): data = self._model.update(session_id, data=json.dumps(request.json)) if data: data = self._model.read(session_id) if data: return jsonify(dict(data)) abort(400)
class SessionExtern(Resource): def __init__(self): Resource.__init__(self) self.model = SessionModel() def _validate_session(self, session_id=None): if not session_id: abort(404) def post(self): response = self.model.create((request.remote_addr or "0.0.0.0"), str(request.user_agent or "")) if response.is_ok(): return response.data() elif response.is_communication_error(): abort(503) else: abort(401) def get(self, session_id=None): self._validate_session(session_id) response = self.model.read(session_id) if response.is_ok(): return jsonify(response.data()) abort(404) def delete(self, session_id=None): self._validate_session() response = self.model.destroy(session_id) if response.is_ok(): return True return abort(500) def put(self, session_id=None): self._validate_session() pass
from app.models.session import Session if __name__ == "__main__": # Unit tests try: session = Session() testTitle = "hello world!" session.title = testTitle session.duration = 20 session.create() session_id = session.id session = session.get(session_id) assert session.id == session_id assert session.title == testTitle session.title = testTitle + "1234" session.update() session = session.get(session_id) assert session.title == testTitle + "1234" session.addEmail('*****@*****.**') session.addPost('Testing testing 123') session = session.get(session_id) assert (len(session.emails) > 0 and len(session.posts) > 0) finally: session.delete() session = session.get(session_id) assert session is None print('Ok')