Browse Source

WIP user cp

Rafał Pitoń 11 years ago
parent
commit
eccab34c17
2 changed files with 76 additions and 0 deletions
  1. 47 0
      misago/users/sites.py
  2. 29 0
      misago/users/views/usercp.py

+ 47 - 0
misago/users/sites.py

@@ -0,0 +1,47 @@
+class Site(object):
+    """
+    Misago user sites controller
+
+    Allows for adding custom views to User CP, Users Lists and User Profile
+    """
+    def __init__(self, name):
+        self._finalized = False
+        self.name = name
+        self._unsorted_list = []
+        self._sorted_list = []
+
+    def assert_site_is_finalized(self):
+        if not self._finalized:
+            self._finalized = True
+            self.finalize_site()
+
+    def finalize_site(self):
+        iterations = 0
+        while self._unsorted_list:
+            iterations += 1
+            if iterations > 512:
+                message = ("%s site hierarchy is invalid or too complex "
+                           "to resolve. pages left: %s" % self._unsorted_list)
+                raise ValueError(message)
+
+            for index, page in enumerate(self._unsorted_list):
+                pass
+
+    def add_page(self, link, name, icon=None, after=None, before=None):
+        if self._finalized:
+            message = ("%s site was initialized already and no longer "
+                       "accepts new pages")
+            raise RuntimeError(message % self.name)
+
+        self._sorted_list.append({
+            'link': link,
+            'name': name,
+            'icon': icon,
+            'after': after,
+            'before': before,
+            })
+
+
+usercp_actions = Site('usercp_actions')
+users_list_tabs = Site('users_list')
+user_profile_tabs = Site('user_profile')

+ 29 - 0
misago/users/views/usercp.py

@@ -0,0 +1,29 @@
+from django.shortcuts import redirect, render as django_render
+
+
+def render(request, template, context=None):
+    context = context or {}
+
+    if 'active_link' not in context:
+        namespace = request.resolver_match.namespace
+        url_name = request.resolver_match.url_name
+
+        if namespace:
+            active_link = '%s:%s' (namespace, url_name)
+        else:
+            active_link = url_name
+        context['active_link'] = active_link
+
+    return django_render(request, template, context)
+
+
+def change_forum_options(request):
+    pass
+
+
+def change_sigin_credentials(request):
+    pass
+
+
+def change_username(request):
+    pass