@@ -94,44 +94,15 @@ class SessionReplayViewSet(viewsets.ViewSet):
9494 serializer_class = serializers .ReplaySerializer
9595 permission_classes = (IsOrgAdminOrAppUser ,)
9696 session = None
97- upload_to = 'replay' # 仅添加到本地存储中
98-
99- def get_session_path (self , version = 2 ):
100- """
101- 获取session日志的文件路径
102- :param version: 原来后缀是 .gz,为了统一新版本改为 .replay.gz
103- :return:
104- """
105- suffix = '.replay.gz'
106- if version == 1 :
107- suffix = '.gz'
108- date = self .session .date_start .strftime ('%Y-%m-%d' )
109- return os .path .join (date , str (self .session .id ) + suffix )
110-
111- def get_local_path (self , version = 2 ):
112- session_path = self .get_session_path (version = version )
113- if version == 2 :
114- local_path = os .path .join (self .upload_to , session_path )
115- else :
116- local_path = session_path
117- return local_path
118-
119- def save_to_storage (self , f ):
120- local_path = self .get_local_path ()
121- try :
122- name = default_storage .save (local_path , f )
123- return name , None
124- except OSError as e :
125- return None , e
12697
12798 def create (self , request , * args , ** kwargs ):
12899 session_id = kwargs .get ('pk' )
129- self . session = get_object_or_404 (Session , id = session_id )
100+ session = get_object_or_404 (Session , id = session_id )
130101 serializer = self .serializer_class (data = request .data )
131102
132103 if serializer .is_valid ():
133104 file = serializer .validated_data ['file' ]
134- name , err = self .save_to_storage (file )
105+ name , err = session .save_to_storage (file )
135106 if not name :
136107 msg = "Failed save replay `{}`: {}" .format (session_id , err )
137108 logger .error (msg )
@@ -145,17 +116,17 @@ def create(self, request, *args, **kwargs):
145116
146117 def retrieve (self , request , * args , ** kwargs ):
147118 session_id = kwargs .get ('pk' )
148- self . session = get_object_or_404 (Session , id = session_id )
119+ session = get_object_or_404 (Session , id = session_id )
149120
150121 data = {
151122 'type' : 'guacamole' if self .session .protocol == 'rdp' else 'json' ,
152123 'src' : '' ,
153124 }
154125
155126 # 新版本和老版本的文件后缀不同
156- session_path = self . get_session_path () # 存在外部存储上的路径
157- local_path = self .get_local_path ()
158- local_path_v1 = self .get_local_path (version = 1 )
127+ session_path = session . get_rel_replay_path () # 存在外部存储上的路径
128+ local_path = session .get_local_path ()
129+ local_path_v1 = session .get_local_path (version = 1 )
159130
160131 # 去default storage中查找
161132 for _local_path in (local_path , local_path_v1 , session_path ):
0 commit comments