Browse Source

use threadtype objects for api url building

Rafał Pitoń 8 years ago
parent
commit
f685ea1ada

+ 2 - 2
misago/categories/models.py

@@ -154,8 +154,8 @@ class Category(MPTTModel):
     def get_last_post_url(self):
         return self.thread_type.get_category_last_post_url(self)
 
-    def get_api_read_url(self):
-        return self.thread_type.get_category_api_read_url(self)
+    def get_read_api_url(self):
+        return self.thread_type.get_category_read_api_url(self)
 
     def set_name(self, name):
         self.name = name

+ 1 - 1
misago/categories/serializers.py

@@ -121,7 +121,7 @@ class CategorySerializer(serializers.ModelSerializer):
 
     def get_api_url(self, obj):
         return {
-            'read': obj.get_api_read_url(),
+            'read': obj.get_read_api_url(),
         }
 
 

+ 6 - 3
misago/threads/models/post.py

@@ -107,12 +107,15 @@ class Post(models.Model):
     def thread_type(self):
         return self.category.thread_type
 
-    def get_absolute_url(self):
-        return self.thread_type.get_post_absolute_url(self)
-
     def get_api_url(self):
         return self.thread_type.get_post_api_url(self)
 
+    def get_editor_api_url(self):
+        return self.thread_type.get_post_editor_api_url(self)
+
+    def get_absolute_url(self):
+        return self.thread_type.get_post_absolute_url(self)
+
     @property
     def short(self):
         if self.is_valid:

+ 15 - 0
misago/threads/models/thread.py

@@ -156,6 +156,21 @@ class Thread(models.Model):
     def get_api_url(self):
         return self.thread_type.get_thread_api_url(self)
 
+    def get_editor_api_url(self):
+        return self.thread_type.get_thread_editor_api_url(self)
+
+    def get_merge_api_url(self):
+        return self.thread_type.get_thread_merge_api_url(self)
+
+    def get_post_merge_api_url(self):
+        return self.thread_type.get_post_merge_api_url(self)
+
+    def get_post_move_api_url(self):
+        return self.thread_type.get_post_move_api_url(self)
+
+    def get_post_split_api_url(self):
+        return self.thread_type.get_post_split_api_url(self)
+
     def get_absolute_url(self, page=1):
         return self.thread_type.get_thread_absolute_url(self, page)
 

+ 2 - 4
misago/threads/serializers/post.py

@@ -92,10 +92,8 @@ class PostSerializer(serializers.ModelSerializer):
     def get_api(self, obj):
         return {
             'index': obj.get_api_url(),
-            'editor': reverse('misago:api:thread-post-editor', kwargs={
-                'thread_pk': obj.thread_id,
-                'pk': obj.pk
-            }),
+            'editor': obj.get_editor_api_url(),
+            'read': 'nada',
         }
 
     def get_url(self, obj):

+ 7 - 20
misago/threads/serializers/thread.py

@@ -85,27 +85,14 @@ class ThreadSerializer(serializers.ModelSerializer):
     def get_api(self, obj):
         return {
             'index': obj.get_api_url(),
-            'editor': reverse('misago:api:thread-post-editor', kwargs={
-                'thread_pk': obj.pk
-            }),
-            'merge': reverse('misago:api:thread-merge', kwargs={
-                'pk': obj.pk
-            }),
+            'editor': obj.get_editor_api_url(),
+            'merge': obj.get_merge_api_url(),
             'posts': {
-                'index': reverse('misago:api:thread-post-list', kwargs={
-                    'thread_pk': obj.pk
-                }),
-                'merge': reverse('misago:api:thread-post-merge', kwargs={
-                    'thread_pk': obj.pk
-                }),
-                'move': reverse('misago:api:thread-post-move', kwargs={
-                    'thread_pk': obj.pk
-                }),
-                'split': reverse('misago:api:thread-post-split', kwargs={
-                    'thread_pk': obj.pk
-                }),
-            },
-            'read': 'nada',
+                'index': obj.get_api_url(),
+                'merge': obj.get_post_merge_api_url(),
+                'move': obj.get_post_move_api_url(),
+                'split': obj.get_post_split_api_url()
+            }
         }
 
     def get_url(self, obj):

+ 35 - 2
misago/threads/threadtypes/thread.py

@@ -34,7 +34,7 @@ class Thread(ThreadType):
             'pk': category.last_thread_id
         })
 
-    def get_category_api_read_url(self, category):
+    def get_category_read_api_url(self, category):
         return reverse('misago:api:category-read', kwargs={
             'pk': category.pk
         })
@@ -71,7 +71,34 @@ class Thread(ThreadType):
         })
 
     def get_thread_api_url(self, thread):
-        return reverse('misago:api:thread-detail', kwargs={'pk': thread.pk})
+        return reverse('misago:api:thread-detail', kwargs={
+            'pk': thread.pk
+        })
+
+    def get_thread_editor_api_url(self, thread):
+        return reverse('misago:api:thread-post-editor', kwargs={
+            'thread_pk': thread.pk
+        })
+
+    def get_thread_merge_api_url(self, thread):
+        return reverse('misago:api:thread-merge', kwargs={
+            'pk': thread.pk
+        })
+
+    def get_post_merge_api_url(self, thread):
+        reverse('misago:api:thread-post-merge', kwargs={
+            'thread_pk': thread.pk
+        })
+
+    def get_post_move_api_url(self, thread):
+        reverse('misago:api:thread-post-move', kwargs={
+            'thread_pk': thread.pk
+        })
+
+    def get_post_split_api_url(self, thread):
+        reverse('misago:api:thread-post-split', kwargs={
+            'thread_pk': thread.pk
+        })
 
     def get_post_absolute_url(self, post):
             return reverse('misago:thread-post', kwargs={
@@ -85,3 +112,9 @@ class Thread(ThreadType):
             'thread_pk': post.thread_id,
             'pk': post.pk
         })
+
+    def get_post_editor_api_url(self, post):
+        return reverse('misago:api:thread-post-editor', kwargs={
+            'thread_pk': post.thread_id,
+            'pk': post.pk
+        })