Browse Source

Replace path.py with build-in pathlib

rafalp 6 years ago
parent
commit
36eb45c4af

+ 16 - 8
misago/users/avatars/gallery.py

@@ -1,6 +1,6 @@
 import random
+from pathlib import Path
 
-from path import Path
 from PIL import Image
 
 from django.core.files.base import ContentFile
@@ -48,23 +48,31 @@ def load_avatar_galleries():
     from misago.users.models import AvatarGallery
 
     galleries = []
-    for directory in Path(settings.MISAGO_AVATAR_GALLERY).dirs():
-        gallery_name = directory.name
+    for directory in Path(settings.MISAGO_AVATAR_GALLERY).iterdir():
+        if not directory.is_dir():
+            continue
 
-        images = directory.files('*.gif')
-        images += directory.files('*.jpg')
-        images += directory.files('*.jpeg')
-        images += directory.files('*.png')
+        name = directory.name
+        images = glob_gallery_images(directory)
 
         for image in images:
             with open(image, 'rb') as image_file:
                 galleries.append(
                     AvatarGallery.objects.
-                    create(gallery=gallery_name, image=ContentFile(image_file.read(), 'image'))
+                    create(gallery=name, image=ContentFile(image_file.read(), 'image'))
                 )
     return galleries
 
 
+def glob_gallery_images(directory):
+    images = []
+    images.extend(directory.glob('*.gif'))
+    images.extend(directory.glob('*.jpg'))
+    images.extend(directory.glob('*.jpeg'))
+    images.extend(directory.glob('*.png'))
+    return images
+
+
 def set_avatar(user, avatar):
     store.store_new_avatar(user, Image.open(avatar.image))
 

+ 3 - 2
misago/users/avatars/uploaded.py

@@ -1,4 +1,5 @@
-from path import Path
+from pathlib import Path
+
 from PIL import Image
 
 from django.core.exceptions import ValidationError
@@ -62,7 +63,7 @@ def validate_uploaded_file(uploaded_file):
         try:
             temporary_file_path = Path(uploaded_file.temporary_file_path())
             if temporary_file_path.exists():
-                temporary_file_path.remove()
+                temporary_file_path.unlink()
         except Exception:
             pass
         raise e

+ 5 - 4
misago/users/tests/test_avatars.py

@@ -1,4 +1,5 @@
-from path import Path
+from pathlib import Path
+
 from PIL import Image
 
 from django.contrib.auth import get_user_model
@@ -47,7 +48,7 @@ class AvatarsStoreTests(TestCase):
         for old_avatar in avatars_dict.values():
             avatar_path = Path(old_avatar.image.path)
             self.assertFalse(avatar_path.exists())
-            self.assertFalse(avatar_path.isfile())
+            self.assertFalse(avatar_path.is_file())
 
             with self.assertRaises(Avatar.DoesNotExist):
                 Avatar.objects.get(pk=old_avatar.pk)
@@ -76,7 +77,7 @@ class AvatarsStoreTests(TestCase):
         for removed_avatar in new_avatars_dict.values():
             avatar_path = Path(removed_avatar.image.path)
             self.assertFalse(avatar_path.exists())
-            self.assertFalse(avatar_path.isfile())
+            self.assertFalse(avatar_path.is_file())
 
             with self.assertRaises(Avatar.DoesNotExist):
                 Avatar.objects.get(pk=removed_avatar.pk)
@@ -106,7 +107,7 @@ class AvatarSetterTests(TestCase):
         for avatar in user.avatar_set.all():
             avatar_path = Path(avatar.image.path)
             self.assertTrue(avatar_path.exists())
-            self.assertTrue(avatar_path.isfile())
+            self.assertTrue(avatar_path.is_file())
 
             avatars_dict[avatar.size] = avatar
 

+ 4 - 5
misago/users/tests/test_user_avatar_api.py

@@ -1,7 +1,6 @@
 import json
 import os
-
-from path import Path
+from pathlib import Path
 
 from django.contrib.auth import get_user_model
 
@@ -142,7 +141,7 @@ class UserAvatarTests(AuthenticatedUserTestCase):
 
         avatar = Path(self.get_current_user().avatar_tmp.path)
         self.assertTrue(avatar.exists())
-        self.assertTrue(avatar.isfile())
+        self.assertTrue(avatar.is_file())
 
         response = self.client.post(
             self.link,
@@ -168,7 +167,7 @@ class UserAvatarTests(AuthenticatedUserTestCase):
 
         avatar = Path(self.get_current_user().avatar_src.path)
         self.assertTrue(avatar.exists())
-        self.assertTrue(avatar.isfile())
+        self.assertTrue(avatar.is_file())
 
         response = self.client.post(
             self.link,
@@ -210,7 +209,7 @@ class UserAvatarTests(AuthenticatedUserTestCase):
 
         avatar = Path(self.get_current_user().avatar_src.path)
         self.assertFalse(avatar.exists())
-        self.assertFalse(avatar.isfile())
+        self.assertFalse(avatar.is_file())
 
     def test_gallery_set_empty_gallery(self):
         """gallery handles set avatar on empty gallery"""

+ 3 - 3
misago/users/tests/test_user_model.py

@@ -1,4 +1,4 @@
-from path import Path
+from pathlib import Path
 
 from django.core.exceptions import ValidationError
 from django.test import TestCase
@@ -102,7 +102,7 @@ class UserModelTests(TestCase):
         for avatar in user.avatar_set.all():
             avatar_path = Path(avatar.image.path)
             self.assertTrue(avatar_path.exists())
-            self.assertTrue(avatar_path.isfile())
+            self.assertTrue(avatar_path.is_file())
             user_avatars.append(avatar)
         self.assertNotEqual(user_avatars, [])
         
@@ -111,7 +111,7 @@ class UserModelTests(TestCase):
         for removed_avatar in user_avatars:
             avatar_path = Path(removed_avatar.image.path)
             self.assertFalse(avatar_path.exists())
-            self.assertFalse(avatar_path.isfile())
+            self.assertFalse(avatar_path.is_file())
 
             with self.assertRaises(Avatar.DoesNotExist):
                 Avatar.objects.get(pk=removed_avatar.pk)

+ 0 - 1
requirements.in

@@ -10,7 +10,6 @@ Faker<0.9
 html5lib==0.999999999
 markdown<2.7
 misago-social-auth-app-django
-path.py<10.4
 pillow<4.2
 psycopg2-binary<2.8
 pytz

+ 0 - 1
requirements.txt

@@ -22,7 +22,6 @@ markdown==2.6.11
 misago-social-auth-app-django==2.1.0
 oauthlib==2.1.0           # via requests-oauthlib, social-auth-core
 olefile==0.45.1           # via pillow
-path.py==10.3.1
 pillow==4.1.1
 psycopg2-binary==2.7.5
 pyjwt==1.6.4              # via social-auth-core