diff rhodecode/controllers/home.py @ 3098:a5f0bc867edc rhodecode-0.0.1.5.0

merge with beta
author Marcin Kuzminski <marcin@python-works.com>
date Thu, 13 Dec 2012 22:54:21 +0100
parents 63e58ef80ef1 b13ca18ac527
children cd50d1b5f35b
line wrap: on
line diff
--- a/rhodecode/controllers/home.py	Tue Oct 09 00:57:07 2012 +0200
+++ b/rhodecode/controllers/home.py	Thu Dec 13 22:54:21 2012 +0100
@@ -26,11 +26,16 @@
 import logging
 
 from pylons import tmpl_context as c, request
+from pylons.i18n.translation import _
 from webob.exc import HTTPBadRequest
 
+import rhodecode
+from rhodecode.lib import helpers as h
+from rhodecode.lib.ext_json import json
 from rhodecode.lib.auth import LoginRequired
 from rhodecode.lib.base import BaseController, render
 from rhodecode.model.db import Repository
+from sqlalchemy.sql.expression import func
 
 log = logging.getLogger(__name__)
 
@@ -42,9 +47,63 @@
         super(HomeController, self).__before__()
 
     def index(self):
-        c.repos_list = self.scm_model.get_repos()
         c.groups = self.scm_model.get_repos_groups()
         c.group = None
+
+        if c.visual.lightweight_dashboard is False:
+            c.repos_list = self.scm_model.get_repos()
+        ## lightweight version of dashboard
+        else:
+            c.repos_list = Repository.query()\
+                            .filter(Repository.group_id == None)\
+                            .order_by(func.lower(Repository.repo_name))\
+                            .all()
+            repos_data = []
+            total_records = len(c.repos_list)
+
+            _tmpl_lookup = rhodecode.CONFIG['pylons.app_globals'].mako_lookup
+            template = _tmpl_lookup.get_template('data_table/_dt_elements.html')
+
+            quick_menu = lambda repo_name: (template.get_def("quick_menu")
+                                            .render(repo_name, _=_, h=h, c=c))
+            repo_lnk = lambda name, rtype, private, fork_of: (
+                template.get_def("repo_name")
+                .render(name, rtype, private, fork_of, short_name=False,
+                        admin=False, _=_, h=h, c=c))
+            last_change = lambda last_change:  (template.get_def("last_change")
+                                           .render(last_change, _=_, h=h, c=c))
+            rss_lnk = lambda repo_name: (template.get_def("rss")
+                                           .render(repo_name, _=_, h=h, c=c))
+            atom_lnk = lambda repo_name: (template.get_def("atom")
+                                           .render(repo_name, _=_, h=h, c=c))
+
+            def desc(desc):
+                if c.visual.stylify_metatags:
+                    return h.urlify_text(h.desc_stylize(h.truncate(desc, 60)))
+                else:
+                    return h.urlify_text(h.truncate(desc, 60))
+
+            for repo in c.repos_list:
+                repos_data.append({
+                    "menu": quick_menu(repo.repo_name),
+                    "raw_name": repo.repo_name.lower(),
+                    "name": repo_lnk(repo.repo_name, repo.repo_type,
+                                     repo.private, repo.fork),
+                    "last_change": last_change(repo.last_db_change),
+                    "desc": desc(repo.description),
+                    "owner": h.person(repo.user.username),
+                    "rss": rss_lnk(repo.repo_name),
+                    "atom": atom_lnk(repo.repo_name),
+                })
+
+            c.data = json.dumps({
+                "totalRecords": total_records,
+                "startIndex": 0,
+                "sort": "name",
+                "dir": "asc",
+                "records": repos_data
+            })
+
         return render('/index.html')
 
     def repo_switcher(self):
@@ -55,7 +114,7 @@
                                                     simple=True)
             return render('/repo_switcher_list.html')
         else:
-            return HTTPBadRequest()
+            raise HTTPBadRequest()
 
     def branch_tag_switcher(self, repo_name):
         if request.is_xhr:
@@ -63,4 +122,4 @@
             c.rhodecode_repo = c.rhodecode_db_repo.scm_instance
             return render('/switch_to_list.html')
         else:
-            return HTTPBadRequest()
+            raise HTTPBadRequest()