--- a/ForgeSVN/forgesvn/svn_main.py
+++ b/ForgeSVN/forgesvn/svn_main.py
@@ -1,47 +1,30 @@
#-*- python -*-
import logging
-import re
import sys
import shutil
-from datetime import datetime
-from itertools import islice
-from urllib import urlencode
sys.path.append('/usr/lib/python2.6/dist-packages')
# Non-stdlib imports
import pkg_resources
-import pysvn
-from tg import expose, validate, redirect, response, config
-from tg.decorators import with_trailing_slash, without_trailing_slash
-import pylons
-from pylons import g, c, request
-from formencode import validators
-from pymongo import bson
-from webob import exc
-
-from ming.orm.base import mapper
-from ming.utils import LazyProperty
-from pymongo.bson import ObjectId
+from pylons import c, g
+from tg import redirect
+from tg.decorators import with_trailing_slash
# Pyforge-specific imports
-from pyforge.app import Application, ConfigOption, SitemapEntry, DefaultAdminController
+from pyforge import model as M
+from pyforge.app import Application, SitemapEntry, DefaultAdminController
from pyforge.lib import helpers as h
-from pyforge.lib.search import search
-from pyforge.lib.decorators import audit, react
-from pyforge.lib.security import require, has_artifact_access
-from pyforge.model import ProjectRole, User, ArtifactReference, Feed
+from pyforge.lib.decorators import audit
+from pyforge.lib.security import has_artifact_access
# Local imports
from forgesvn import model
from forgesvn import version
-from .widgets import SVNRevisionWidget
from .reactors import reactors
+from .controllers import BranchBrowser
log = logging.getLogger(__name__)
-
-class W(object):
- revision_widget = SVNRevisionWidget()
class ForgeSVNApp(Application):
'''This is the SVN app for PyForge'''
@@ -50,7 +33,7 @@
def __init__(self, project, config):
Application.__init__(self, project, config)
- self.root = RootController()
+ self.root = BranchBrowser()
self.admin = SVNAdminController(self)
@property
@@ -83,8 +66,7 @@
self.config.options['project_name'] = project.name
super(ForgeSVNApp, self).install(project)
# Setup permissions
- role_developer = ProjectRole.query.get(name='Developer')._id
- role_auth = ProjectRole.query.get(name='*authenticated')._id
+ role_developer = M.ProjectRole.query.get(name='Developer')._id
self.config.acl.update(
configure=c.project.acl['tool'],
read=c.project.acl['read'],
@@ -116,58 +98,4 @@
def index(self):
redirect('permissions')
-
-class RootController(object):
-
- def _check_security(self):
- require(has_artifact_access('read'))
-
- @expose('forgesvn.templates.index')
- def index(self, offset=0):
- offset=int(offset)
- repo = c.app.repo
- if repo and repo.status=='ready':
- revisions = repo.log(offset=offset, limit=10)
- else:
- revisions = []
- c.revision_widget=W.revision_widget
- next_link='?' + urlencode(dict(offset=offset+10))
- username = ''
- if c.user and c.user != User.anonymous():
- username = c.user.username
- return dict(
- repo=c.app.repo,
- revisions=revisions,
- next_link=next_link,
- username=username)
-
- @expose()
- def _lookup(self, rev, *remainder):
- return CommitController(rev), remainder
-
-class CommitController(object):
-
- def __init__(self, rev):
- self._rev = int(rev)
-
- @LazyProperty
- def revision(self):
- return c.app.repo.revision(self._rev)
-
- @expose('forgesvn.templates.commit')
- def index(self):
- c.revision_widget=W.revision_widget
- if self._rev <= 1:
- prev = None
- else:
- prev = self._rev-1
- if self._rev >= c.app.repo.last_revision:
- next = None
- else:
- next = self._rev + 1;
- return dict(
- prev=prev,
- next=next,
- revision=self.revision)
-
h.mixin_reactors(ForgeSVNApp, reactors)