Parcourir la source

webdav: prevent duplicate file in createEmptyResource

Bastien Sevajol (Algoo) il y a 8 ans
Parent
révision
459727259e
1 fichiers modifiés avec 12 ajouts et 3 suppressions
  1. 12 3
      tracim/tracim/lib/webdav/sql_resources.py

+ 12 - 3
tracim/tracim/lib/webdav/sql_resources.py Voir le fichier

1
 # coding: utf8
1
 # coding: utf8
2
+import os
3
+
2
 import transaction
4
 import transaction
3
 import re
5
 import re
4
 from datetime import datetime
6
 from datetime import datetime
236
         # TODO : remove commentary here raise DAVError(HTTP_FORBIDDEN)
238
         # TODO : remove commentary here raise DAVError(HTTP_FORBIDDEN)
237
         if '/.deleted/' in self.path or '/.archived/' in self.path:
239
         if '/.deleted/' in self.path or '/.archived/' in self.path:
238
             raise DAVError(HTTP_FORBIDDEN)
240
             raise DAVError(HTTP_FORBIDDEN)
239
-        # TODO: Test ici que la ressource n'existe pas déjà
240
-        # Si oui on retourne le document déjà existant ?
241
+
242
+        content = None
243
+
244
+        # Note: To prevent bugs, check here again if resource already exist
245
+        path = os.path.join(self.path, file_name)
246
+        resource = self.provider.getResourceInst(path, self.environ)
247
+        if resource:
248
+            content = resource.content
249
+
241
         return FakeFileStream(
250
         return FakeFileStream(
242
             file_name=file_name,
251
             file_name=file_name,
243
             content_api=self.content_api,
252
             content_api=self.content_api,
244
             workspace=self.workspace,
253
             workspace=self.workspace,
245
-            content=None,
254
+            content=content,
246
             parent=self.content,
255
             parent=self.content,
247
             path=self.path + '/' + file_name
256
             path=self.path + '/' + file_name
248
         )
257
         )