summaryrefslogtreecommitdiffstats
path: root/django/engagementmanager/utils/request_data_mgr.py
blob: 46557b4aad96cecbd84e037f9ca7af055ec9a5c7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#  
# ============LICENSE_START========================================== 
# org.onap.vvp/engagementmgr
# ===================================================================
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
# ===================================================================
#
# Unless otherwise specified, all software contained herein is licensed
# under the Apache License, Version 2.0 (the “License”);
# you may not use this software except in compliance with the License.
# You may obtain a copy of the License at
#
#             http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
#
#
# Unless otherwise specified, all documentation contained herein is licensed
# under the Creative Commons License, Attribution 4.0 Intl. (the “License”);
# you may not use this documentation except in compliance with the License.
# You may obtain a copy of the License at
#
#             https://creativecommons.org/licenses/by/4.0/
#
# Unless required by applicable law or agreed to in writing, documentation
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# ============LICENSE_END============================================
#
# ECOMP is a trademark and service mark of AT&T Intellectual Property.
import threading
from engagementmanager.service.logging_service import LoggingServiceFactory

logger = LoggingServiceFactory.get_logger()


class RequsetData():
    _thread_id = None
    _cl_uuid = None
    _eng_uuid = None
    _user = None
    _ns_uuid = None
    _notification_uuid = None

    def __init__(self):
        pass


class RequsetDataMgr:

    threadLocal = threading.local()

    '''
        Managing the request data per each request
    '''

    def __init__(self):
        pass

    '''
        Private method
    '''

    def get_request_data(self):
        request_data = getattr(self.threadLocal, 'request_data', None)
        if request_data is None:
            request_data = RequsetData()
            self.threadLocal.request_data = request_data

        return request_data

    def get_user(self):
        return self.get_request_data()._user

    def get_eng_uuid(self):
        return self.get_request_data()._eng_uuid

    def get_cl_uuid(self):
        return self.get_request_data()._cl_uuid

    def get_ns_uuid(self):
        return self.get_request_data()._ns_uuid

    def get_notification_uuid(self):
        return self.get_request_data()._notification_uuid

    def set_user(self, user):
        self.get_request_data()._user = user

    def set_eng_uuid(self, eng_uuid):
        self.get_request_data()._eng_uuid = eng_uuid

    def set_cl_uuid(self, cl_uuid):
        self.get_request_data()._cl_uuid = cl_uuid

    def set_ns_uuid(self, ns_uuid):
        self.get_request_data()._ns_uuid = ns_uuid

    def set_notification_uuid(self, notification_uuid):
        self.get_request_data()._notification_uuid = notification_uuid

    def get_request_data_vars(self):
        return {
            'cl_uuid': self.get_request_data()._cl_uuid,
            'eng_uuid': self.get_request_data()._eng_uuid,
            'user': self.get_request_data()._user,
            'ns_uuid': self.get_request_data()._ns_uuid,
            'notification_uuid': self.get_request_data()._notification_uuid,
        }

    '''
        Called from the verify_token decorator which is a central place that populates the user and all other attributes in RequestData object
    '''

    def clear_old_request_data(self):
        self.threadLocal.request_data = RequsetData()


# singleton pattern, allocated on server startup
request_data_mgr = RequsetDataMgr()