You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by tv...@apache.org on 2014/02/06 03:39:57 UTC
[01/10] git commit: [#7130] Removed inefficient next / prev links on
file browse page
Updated Branches:
refs/heads/tv/7042 4ed2a374e -> 9ac39feec (forced update)
[#7130] Removed inefficient next / prev links on file browse page
Signed-off-by: Cory Johns <cj...@slashdotmedia.com>
Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/81d6277d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/81d6277d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/81d6277d
Branch: refs/heads/tv/7042
Commit: 81d6277d21bfa7b21375a11b3626cdf47b82f4e2
Parents: 18b4299
Author: Cory Johns <cj...@slashdotmedia.com>
Authored: Tue Feb 4 20:00:40 2014 +0000
Committer: Dave Brondsema <db...@slashdotmedia.com>
Committed: Wed Feb 5 21:05:10 2014 +0000
----------------------------------------------------------------------
Allura/allura/controllers/repository.py | 3 --
Allura/allura/model/repo.py | 41 --------------------
Allura/allura/templates/repo/file.html | 16 --------
Allura/allura/tests/unit/test_repo.py | 56 ----------------------------
4 files changed, 116 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/81d6277d/Allura/allura/controllers/repository.py
----------------------------------------------------------------------
diff --git a/Allura/allura/controllers/repository.py b/Allura/allura/controllers/repository.py
index e571734..1fb8323 100644
--- a/Allura/allura/controllers/repository.py
+++ b/Allura/allura/controllers/repository.py
@@ -615,13 +615,10 @@ class FileBrowser(BaseController):
return self.diff(kw['barediff'], kw.pop('diformat', None))
else:
force_display = 'force' in kw
- context = self._blob.context()
stats = utils.generate_code_stats(self._blob)
return dict(
blob=self._blob,
stats=stats,
- prev=context.get('prev', None),
- next=context.get('next', None),
force_display=force_display
)
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/81d6277d/Allura/allura/model/repo.py
----------------------------------------------------------------------
diff --git a/Allura/allura/model/repo.py b/Allura/allura/model/repo.py
index a137e7a..9f11cc8 100644
--- a/Allura/allura/model/repo.py
+++ b/Allura/allura/model/repo.py
@@ -654,29 +654,6 @@ class Blob(object):
return self.tree.url() + h.really_unicode(self.name)
@LazyProperty
- def prev_commit(self):
- pcid = LastCommit._prev_commit_id(self.commit, self.path().strip('/'))
- if pcid:
- return self.repo.commit(pcid)
- return None
-
- @LazyProperty
- def next_commit(self):
- try:
- path = self.path()
- cur = self.commit
- next = cur.context()['next']
- while next:
- cur = next[0]
- next = cur.context()['next']
- other_blob = cur.get_path(path, create=False)
- if other_blob is None or other_blob._id != self._id:
- return cur
- except:
- log.exception('Lookup next_commit')
- return None
-
- @LazyProperty
def _content_type_encoding(self):
return self.repo.guess_type(self.name)
@@ -708,24 +685,6 @@ class Blob(object):
def has_image_view(self):
return self.content_type.startswith('image/')
- def context(self):
- path = self.path()
- prev = self.prev_commit
- next = self.next_commit
- if prev is not None:
- try:
- prev = prev.get_path(path, create=False)
- except KeyError:
- prev = None
- if next is not None:
- try:
- next = next.get_path(path, create=False)
- except KeyError:
- next = None
- return dict(
- prev=prev,
- next=next)
-
def open(self):
return self.repo.open_blob(self)
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/81d6277d/Allura/allura/templates/repo/file.html
----------------------------------------------------------------------
diff --git a/Allura/allura/templates/repo/file.html b/Allura/allura/templates/repo/file.html
index 965332b..b84c47c 100644
--- a/Allura/allura/templates/repo/file.html
+++ b/Allura/allura/templates/repo/file.html
@@ -65,22 +65,6 @@
</script>
{% endblock %}
{% block content %}
- {% if prev %}
- <p>
- Parent:
- <a href="{{prev.url()}}">{{prev.commit.shorthand_id()}}</a>
- <a href="?diff={{prev.commit._id}}">(diff)</a>
- </p>
- {% endif %}
-
- {% if next %}
- <p>
- Child:
- <a href="{{next.url()}}">{{next.commit.shorthand_id()}}</a>
- <a href="{{next.url()}}?diff={{blob.commit._id}}">(diff)</a>
- </p>
- {% endif %}
-
{% if blob.has_image_view %}
<p><a href="?format=raw">Download this file</a></p>
<img src="?format=raw" alt=""/>
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/81d6277d/Allura/allura/tests/unit/test_repo.py
----------------------------------------------------------------------
diff --git a/Allura/allura/tests/unit/test_repo.py b/Allura/allura/tests/unit/test_repo.py
index eef8656..eee886e 100644
--- a/Allura/allura/tests/unit/test_repo.py
+++ b/Allura/allura/tests/unit/test_repo.py
@@ -146,62 +146,6 @@ class TestTree(unittest.TestCase):
class TestBlob(unittest.TestCase):
- def test_context_no_create(self):
- blob = M.repo.Blob(Mock(), Mock(), Mock())
- blob.path = Mock(return_value='path')
- blob.prev_commit = Mock()
- blob.next_commit = Mock()
- blob.prev_commit.get_path.return_value = '_prev'
- blob.next_commit.get_path.return_value = '_next'
- context = blob.context()
- assert_equal(context, {'prev': '_prev', 'next': '_next'})
- blob.prev_commit.get_path.assert_called_with('path', create=False)
- blob.next_commit.get_path.assert_called_with('path', create=False)
-
- blob.prev_commit.get_path.side_effect = KeyError
- blob.next_commit.get_path.side_effect = KeyError
- context = blob.context()
- assert_equal(context, {'prev': None, 'next': None})
-
- @patch.object(M.repo.LastCommit, '_prev_commit_id')
- def test_prev_commit_no_create(self, lc_pcid):
- lc_pcid.return_value = None
- blob = M.repo.Blob(Mock(), 'foo', 'bid')
- blob.tree.path.return_value = '/path/'
- pc = blob.prev_commit
- lc_pcid.assert_called_once_with(blob.commit, 'path/foo')
- assert not blob.repo.commit.called
- assert_equal(pc, None)
-
- lc_pcid.reset_mock()
- lc_pcid.return_value = 'pcid'
- blob = M.repo.Blob(Mock(), 'foo', 'bid')
- blob.tree.path.return_value = '/path/'
- blob.repo.commit.return_value = 'commit'
- pc = blob.prev_commit
- lc_pcid.assert_called_once_with(blob.commit, 'path/foo')
- blob.repo.commit.assert_called_once_with('pcid')
- assert_equal(pc, 'commit')
-
- def test_next_commit_no_create(self):
- blob = M.repo.Blob(MagicMock(), MagicMock(), MagicMock())
- blob._id = 'blob1'
- blob.path = Mock(return_value='path')
- blob.commit.context().__getitem__.return_value = None
- nc = blob.next_commit
- assert_equal(nc, None)
-
- _next = MagicMock()
- _next.context().__getitem__.return_value = None
- _next.get_path.return_value = Mock(_id='blob2')
- blob = M.repo.Blob(MagicMock(), MagicMock(), MagicMock())
- blob._id = 'blob1'
- blob.path = Mock(return_value='path')
- blob.commit.context().__getitem__.return_value = [_next]
- nc = blob.next_commit
- _next.get_path.assert_called_with('path', create=False)
- assert_equal(nc, _next)
-
def test_pypeline_view(self):
blob = M.repo.Blob(Mock(), Mock(), Mock())
blob._id = 'blob1'
[05/10] git commit: [#7111] Bumped GC, Trac,
and Mediawiki Wiki Importer versions
Posted by tv...@apache.org.
[#7111] Bumped GC, Trac, and Mediawiki Wiki Importer versions
Signed-off-by: Cory Johns <cj...@slashdotmedia.com>
Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/9413f606
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/9413f606
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/9413f606
Branch: refs/heads/tv/7042
Commit: 9413f606eaeec51689e519b6a4feff0b8ae430ce
Parents: 80ba554
Author: Cory Johns <cj...@slashdotmedia.com>
Authored: Wed Feb 5 20:30:15 2014 +0000
Committer: Cory Johns <cj...@slashdotmedia.com>
Committed: Wed Feb 5 21:24:08 2014 +0000
----------------------------------------------------------------------
requirements-sf.txt | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/9413f606/requirements-sf.txt
----------------------------------------------------------------------
diff --git a/requirements-sf.txt b/requirements-sf.txt
index b54c0c0..5d788cb 100644
--- a/requirements-sf.txt
+++ b/requirements-sf.txt
@@ -6,7 +6,7 @@ kombu==1.0.4
coverage==3.5a1-20110413
ForgeHg==0.1.21
ForgePastebin==0.3.0
-GoogleCodeWikiImporter==0.4.9
+GoogleCodeWikiImporter==0.5.0
mechanize==0.2.4
mercurial==1.4.3
MySQL-python==1.2.3c1
@@ -20,8 +20,8 @@ wsgipreload==1.2
pyzmq==2.1.7
html2text==3.200.3dev-20121112
PyMollom==0.1
-TracWikiImporter==0.3.6
-MediawikiImporter==0.0.2
+TracWikiImporter==0.4.0
+MediawikiImporter==0.1.0
Unidecode==0.04.14
# use version built from https://github.com/johnsca/GitPython/tree/sf-master
[08/10] git commit: [#7042] Add tags to json feed
Posted by tv...@apache.org.
[#7042] Add tags to json feed
Cleaned up inconsistency in use of related_nodes vs target
Signed-off-by: Tim Van Steenburgh <tv...@gmail.com>
Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/36fd3c8e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/36fd3c8e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/36fd3c8e
Branch: refs/heads/tv/7042
Commit: 36fd3c8e56ba6150edc155344b2dc7bde12befdf
Parents: f295ca5
Author: Tim Van Steenburgh <tv...@gmail.com>
Authored: Wed Feb 5 22:36:21 2014 +0000
Committer: Tim Van Steenburgh <tv...@gmail.com>
Committed: Thu Feb 6 02:29:30 2014 +0000
----------------------------------------------------------------------
ForgeActivity/forgeactivity/main.py | 1 +
ForgeBlog/forgeblog/model/blog.py | 2 +-
ForgeWiki/forgewiki/wiki_main.py | 2 +-
3 files changed, 3 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/36fd3c8e/ForgeActivity/forgeactivity/main.py
----------------------------------------------------------------------
diff --git a/ForgeActivity/forgeactivity/main.py b/ForgeActivity/forgeactivity/main.py
index 08c0283..8a34732 100644
--- a/ForgeActivity/forgeactivity/main.py
+++ b/ForgeActivity/forgeactivity/main.py
@@ -215,6 +215,7 @@ class ForgeActivityRestController(BaseController):
'verb': a.verb,
'obj': a.obj._deinstrument(),
'target': a.target._deinstrument(),
+ 'tags': a.tags._deinstrument(),
} for a in data['timeline']],
}
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/36fd3c8e/ForgeBlog/forgeblog/model/blog.py
----------------------------------------------------------------------
diff --git a/ForgeBlog/forgeblog/model/blog.py b/ForgeBlog/forgeblog/model/blog.py
index 1c363c9..f5c6bfc 100644
--- a/ForgeBlog/forgeblog/model/blog.py
+++ b/ForgeBlog/forgeblog/model/blog.py
@@ -230,7 +230,7 @@ class BlogPost(M.VersionedArtifact, ActivityObject):
def commit(self):
activity = functools.partial(g.director.create_activity, c.user,
- target=c.project, tags=['blog'])
+ related_nodes=[c.project], tags=['blog'])
self.subscribe()
super(BlogPost, self).commit()
if self.version > 1:
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/36fd3c8e/ForgeWiki/forgewiki/wiki_main.py
----------------------------------------------------------------------
diff --git a/ForgeWiki/forgewiki/wiki_main.py b/ForgeWiki/forgewiki/wiki_main.py
index 9231106..51d5f13 100644
--- a/ForgeWiki/forgewiki/wiki_main.py
+++ b/ForgeWiki/forgewiki/wiki_main.py
@@ -655,7 +655,7 @@ class PageController(BaseController, FeedController):
g.spam_checker.check(text, artifact=self.page,
user=c.user, content_type='wiki')
g.director.create_activity(c.user, activity_verb, self.page,
- target=c.project, tags=['wiki'])
+ related_nodes=[c.project], tags=['wiki'])
if new_viewable_by:
if new_viewable_by == 'all':
self.page.viewable_by.append('all')
[02/10] git commit: [#6964] Bump to ActivityStream 0.1.8
Posted by tv...@apache.org.
[#6964] Bump to ActivityStream 0.1.8
Signed-off-by: Tim Van Steenburgh <tv...@gmail.com>
Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/d8260bcd
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/d8260bcd
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/d8260bcd
Branch: refs/heads/tv/7042
Commit: d8260bcd9cb8a2063a3fd7823ef6e87297bc1899
Parents: 81d6277
Author: Tim Van Steenburgh <tv...@gmail.com>
Authored: Wed Feb 5 21:20:02 2014 +0000
Committer: Tim Van Steenburgh <tv...@gmail.com>
Committed: Wed Feb 5 21:20:02 2014 +0000
----------------------------------------------------------------------
requirements-common.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/d8260bcd/requirements-common.txt
----------------------------------------------------------------------
diff --git a/requirements-common.txt b/requirements-common.txt
index e200f77..659b67c 100644
--- a/requirements-common.txt
+++ b/requirements-common.txt
@@ -1,7 +1,7 @@
# requirements for all deployment environments
pytz==2012j
-ActivityStream==0.1.7
+ActivityStream==0.1.8
BeautifulSoup==3.2.0
chardet==1.0.1
colander==0.9.3
[10/10] git commit: [#7042] Add tags to create_activity assertion
Posted by tv...@apache.org.
[#7042] Add tags to create_activity assertion
Signed-off-by: Tim Van Steenburgh <tv...@gmail.com>
Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/9ac39fee
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/9ac39fee
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/9ac39fee
Branch: refs/heads/tv/7042
Commit: 9ac39feec7ed0ecf5c3a0f06c31c25501100821b
Parents: 3154541
Author: Tim Van Steenburgh <tv...@gmail.com>
Authored: Thu Feb 6 02:38:43 2014 +0000
Committer: Tim Van Steenburgh <tv...@gmail.com>
Committed: Thu Feb 6 02:38:43 2014 +0000
----------------------------------------------------------------------
ForgeImporters/forgeimporters/tests/test_base.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/9ac39fee/ForgeImporters/forgeimporters/tests/test_base.py
----------------------------------------------------------------------
diff --git a/ForgeImporters/forgeimporters/tests/test_base.py b/ForgeImporters/forgeimporters/tests/test_base.py
index d52f417..b2556a6 100644
--- a/ForgeImporters/forgeimporters/tests/test_base.py
+++ b/ForgeImporters/forgeimporters/tests/test_base.py
@@ -69,7 +69,7 @@ def test_import_tool(g, c, object_from_path, M, _datetime):
{'$set': {'last_updated': _datetime.utcnow()}})
g.director.create_activity.assert_called_once_with(
c.user, "imported",
- app.config, related_nodes=[c.project])
+ app.config, related_nodes=[c.project], tags=['import'])
g.post_event.assert_called_once_with(
'import_tool_task_succeeded',
'source',
[09/10] git commit: [#7042] Fix test
Posted by tv...@apache.org.
[#7042] Fix test
Signed-off-by: Tim Van Steenburgh <tv...@gmail.com>
Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/31545413
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/31545413
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/31545413
Branch: refs/heads/tv/7042
Commit: 31545413bf11af7faa6846bd9813abab288b96e3
Parents: 36fd3c8
Author: Tim Van Steenburgh <tv...@gmail.com>
Authored: Thu Feb 6 02:38:12 2014 +0000
Committer: Tim Van Steenburgh <tv...@gmail.com>
Committed: Thu Feb 6 02:38:12 2014 +0000
----------------------------------------------------------------------
Allura/allura/tests/functional/test_user_profile.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/31545413/Allura/allura/tests/functional/test_user_profile.py
----------------------------------------------------------------------
diff --git a/Allura/allura/tests/functional/test_user_profile.py b/Allura/allura/tests/functional/test_user_profile.py
index 6f01e6a..0dbbe77 100644
--- a/Allura/allura/tests/functional/test_user_profile.py
+++ b/Allura/allura/tests/functional/test_user_profile.py
@@ -164,7 +164,8 @@ class TestUserProfile(TestController):
return m
eps = map(ep, ['a', 'b', 'c', 'd'])
order = {'user_profile_sections.order': 'b, d,c , f '}
- delattr(type(app), '_sections')
+ if hasattr(type(app), '_sections'):
+ delattr(type(app), '_sections')
with mock.patch('allura.lib.helpers.iter_entry_points') as iep:
with mock.patch.dict(tg.config, order):
iep.return_value = eps
[07/10] git commit: [#7042] Add activity tags
Posted by tv...@apache.org.
[#7042] Add activity tags
Signed-off-by: Tim Van Steenburgh <tv...@gmail.com>
Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/f295ca5c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/f295ca5c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/f295ca5c
Branch: refs/heads/tv/7042
Commit: f295ca5c810de64ae484b015c75d7ec9e8645460
Parents: 41b2c9c
Author: Tim Van Steenburgh <tv...@gmail.com>
Authored: Wed Feb 5 20:32:15 2014 +0000
Committer: Tim Van Steenburgh <tv...@gmail.com>
Committed: Thu Feb 6 02:29:30 2014 +0000
----------------------------------------------------------------------
Allura/allura/controllers/discuss.py | 3 ++-
Allura/allura/model/discuss.py | 3 ++-
Allura/allura/model/repo_refresh.py | 3 ++-
Allura/allura/model/timeline.py | 6 ++++--
ForgeBlog/forgeblog/model/blog.py | 2 +-
ForgeImporters/forgeimporters/base.py | 2 +-
ForgeTracker/forgetracker/tracker_main.py | 4 ++--
ForgeWiki/forgewiki/wiki_main.py | 2 +-
8 files changed, 15 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/f295ca5c/Allura/allura/controllers/discuss.py
----------------------------------------------------------------------
diff --git a/Allura/allura/controllers/discuss.py b/Allura/allura/controllers/discuss.py
index aefd472..cd4e8a1 100644
--- a/Allura/allura/controllers/discuss.py
+++ b/Allura/allura/controllers/discuss.py
@@ -303,7 +303,8 @@ class PostController(BaseController):
self.post.commit()
g.director.create_activity(c.user, 'modified', self.post,
target=self.post.thread.artifact or self.post.thread,
- related_nodes=[self.post.app_config.project])
+ related_nodes=[self.post.app_config.project],
+ tags=['comment'])
redirect(request.referer)
elif request.method == 'GET':
if version is not None:
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/f295ca5c/Allura/allura/model/discuss.py
----------------------------------------------------------------------
diff --git a/Allura/allura/model/discuss.py b/Allura/allura/model/discuss.py
index 2741d03..c5762a9 100644
--- a/Allura/allura/model/discuss.py
+++ b/Allura/allura/model/discuss.py
@@ -685,7 +685,8 @@ class Post(Message, VersionedArtifact, ActivityObject):
artifact.update_stats()
if self.text and not self.is_meta:
g.director.create_activity(author, 'posted', self, target=artifact,
- related_nodes=[self.app_config.project])
+ related_nodes=[self.app_config.project],
+ tags=['comment'])
def notify(self, file_info=None, check_dup=False):
if self.project.notifications_disabled:
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/f295ca5c/Allura/allura/model/repo_refresh.py
----------------------------------------------------------------------
diff --git a/Allura/allura/model/repo_refresh.py b/Allura/allura/model/repo_refresh.py
index d364d2c..a2dc628 100644
--- a/Allura/allura/model/repo_refresh.py
+++ b/Allura/allura/model/repo_refresh.py
@@ -144,7 +144,8 @@ def refresh_repo(repo, all_commits=False, notify=True, new_clone=False):
actor = user or TransientActor(
activity_name=new.committed.name or new.committed.emai)
g.director.create_activity(actor, 'committed', new,
- related_nodes=[repo.app_config.project])
+ related_nodes=[repo.app_config.project],
+ tags=['commit', repo.tool.lower()])
log.info('Refresh complete for %s', repo.full_fs_path)
g.post_event('repo_refreshed', len(commit_ids), all_commits, new_clone)
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/f295ca5c/Allura/allura/model/timeline.py
----------------------------------------------------------------------
diff --git a/Allura/allura/model/timeline.py b/Allura/allura/model/timeline.py
index 63cbd83..ed059a9 100644
--- a/Allura/allura/model/timeline.py
+++ b/Allura/allura/model/timeline.py
@@ -39,13 +39,15 @@ class Director(ActivityDirector):
"""
def create_activity(self, actor, verb, obj, target=None,
- related_nodes=None):
+ related_nodes=None, tags=None):
if c.project and c.project.notifications_disabled:
return
from allura.model.project import Project
super(Director, self).create_activity(actor, verb, obj,
- target=target, related_nodes=related_nodes)
+ target=target,
+ related_nodes=related_nodes,
+ tags=tags)
# aggregate actor and follower's timelines
if actor.node_id:
create_timelines.post(actor.node_id)
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/f295ca5c/ForgeBlog/forgeblog/model/blog.py
----------------------------------------------------------------------
diff --git a/ForgeBlog/forgeblog/model/blog.py b/ForgeBlog/forgeblog/model/blog.py
index f520265..1c363c9 100644
--- a/ForgeBlog/forgeblog/model/blog.py
+++ b/ForgeBlog/forgeblog/model/blog.py
@@ -230,7 +230,7 @@ class BlogPost(M.VersionedArtifact, ActivityObject):
def commit(self):
activity = functools.partial(g.director.create_activity, c.user,
- target=c.project)
+ target=c.project, tags=['blog'])
self.subscribe()
super(BlogPost, self).commit()
if self.version > 1:
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/f295ca5c/ForgeImporters/forgeimporters/base.py
----------------------------------------------------------------------
diff --git a/ForgeImporters/forgeimporters/base.py b/ForgeImporters/forgeimporters/base.py
index d03e838..996edb5 100644
--- a/ForgeImporters/forgeimporters/base.py
+++ b/ForgeImporters/forgeimporters/base.py
@@ -142,7 +142,7 @@ def import_tool(importer_path, project_name=None,
if app:
with h.notifications_disabled(c.project, disabled=False):
g.director.create_activity(c.user, "imported", app.config,
- related_nodes=[c.project])
+ related_nodes=[c.project], tags=['import'])
handler.success(app)
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/f295ca5c/ForgeTracker/forgetracker/tracker_main.py
----------------------------------------------------------------------
diff --git a/ForgeTracker/forgetracker/tracker_main.py b/ForgeTracker/forgetracker/tracker_main.py
index 0ae0cad..f60df6d 100644
--- a/ForgeTracker/forgetracker/tracker_main.py
+++ b/ForgeTracker/forgetracker/tracker_main.py
@@ -856,7 +856,7 @@ class RootController(BaseController, FeedController):
ticket.update(ticket_form)
c.app.globals.invalidate_bin_counts()
g.director.create_activity(c.user, 'created', ticket,
- related_nodes=[c.project])
+ related_nodes=[c.project], tags=['ticket'])
redirect(str(ticket.ticket_num) + '/')
@with_trailing_slash
@@ -1435,7 +1435,7 @@ class TicketController(BaseController, FeedController):
if comment:
self.ticket.discussion_thread.post(text=comment)
g.director.create_activity(c.user, 'modified', self.ticket,
- related_nodes=[c.project])
+ related_nodes=[c.project], tags=['ticket'])
c.app.globals.invalidate_bin_counts()
redirect('.')
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/f295ca5c/ForgeWiki/forgewiki/wiki_main.py
----------------------------------------------------------------------
diff --git a/ForgeWiki/forgewiki/wiki_main.py b/ForgeWiki/forgewiki/wiki_main.py
index 01a6008..9231106 100644
--- a/ForgeWiki/forgewiki/wiki_main.py
+++ b/ForgeWiki/forgewiki/wiki_main.py
@@ -655,7 +655,7 @@ class PageController(BaseController, FeedController):
g.spam_checker.check(text, artifact=self.page,
user=c.user, content_type='wiki')
g.director.create_activity(c.user, activity_verb, self.page,
- target=c.project)
+ target=c.project, tags=['wiki'])
if new_viewable_by:
if new_viewable_by == 'all':
self.page.viewable_by.append('all')
[06/10] git commit: [#7111] Handle referenced entry-points that are
not available
Posted by tv...@apache.org.
[#7111] Handle referenced entry-points that are not available
Signed-off-by: Cory Johns <cj...@slashdotmedia.com>
Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/41b2c9c3
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/41b2c9c3
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/41b2c9c3
Branch: refs/heads/tv/7042
Commit: 41b2c9c3deac150efdf295704c1d8286d964f5b2
Parents: 9413f60
Author: Cory Johns <cj...@slashdotmedia.com>
Authored: Wed Feb 5 22:11:51 2014 +0000
Committer: Cory Johns <cj...@slashdotmedia.com>
Committed: Wed Feb 5 22:11:51 2014 +0000
----------------------------------------------------------------------
ForgeImporters/forgeimporters/base.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/41b2c9c3/ForgeImporters/forgeimporters/base.py
----------------------------------------------------------------------
diff --git a/ForgeImporters/forgeimporters/base.py b/ForgeImporters/forgeimporters/base.py
index 4353fd2..d03e838 100644
--- a/ForgeImporters/forgeimporters/base.py
+++ b/ForgeImporters/forgeimporters/base.py
@@ -387,7 +387,8 @@ class ToolImporterMeta(type):
"""
if not getattr(cls, 'target_app', None):
cls.target_app = [g.entry_points['tool'][ep_name]
- for ep_name in aslist(cls.target_app_ep_names)]
+ for ep_name in aslist(cls.target_app_ep_names)
+ if ep_name in g.entry_points['tool']]
return type.__call__(cls, *args, **kw)
[03/10] git commit: [#7111] Reference importer targets by ep name
Posted by tv...@apache.org.
[#7111] Reference importer targets by ep name
Allows subclassed apps to be used as import targets without requiring
a new importer and controller subclass be created.
Signed-off-by: Tim Van Steenburgh <tv...@gmail.com>
Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/2707fc38
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/2707fc38
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/2707fc38
Branch: refs/heads/tv/7042
Commit: 2707fc383b38e45af2c749332e11997136e617da
Parents: d8260bc
Author: Tim Van Steenburgh <tv...@gmail.com>
Authored: Fri Jan 31 05:08:55 2014 +0000
Committer: Cory Johns <cj...@slashdotmedia.com>
Committed: Wed Feb 5 21:24:07 2014 +0000
----------------------------------------------------------------------
ForgeImporters/forgeimporters/base.py | 73 ++++++++++++++++++--
ForgeImporters/forgeimporters/forge/tracker.py | 17 ++---
ForgeImporters/forgeimporters/github/code.py | 18 ++---
ForgeImporters/forgeimporters/github/tracker.py | 19 ++---
ForgeImporters/forgeimporters/github/wiki.py | 25 ++-----
ForgeImporters/forgeimporters/google/code.py | 52 +++-----------
.../forgeimporters/google/tests/test_code.py | 2 +-
ForgeImporters/forgeimporters/google/tracker.py | 17 ++---
.../forgeimporters/tests/forge/test_tracker.py | 4 +-
.../forgeimporters/tests/google/test_tracker.py | 5 +-
.../forgeimporters/tests/test_base.py | 4 +-
.../forgeimporters/trac/tests/test_tickets.py | 4 +-
ForgeImporters/forgeimporters/trac/tickets.py | 17 ++---
13 files changed, 113 insertions(+), 144 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/2707fc38/ForgeImporters/forgeimporters/base.py
----------------------------------------------------------------------
diff --git a/ForgeImporters/forgeimporters/base.py b/ForgeImporters/forgeimporters/base.py
index 32f2ef3..d1fbd38 100644
--- a/ForgeImporters/forgeimporters/base.py
+++ b/ForgeImporters/forgeimporters/base.py
@@ -339,6 +339,58 @@ class ProjectImporter(BaseController):
pass
+class ToolImportControllerMeta(type):
+ def __call__(cls, importer, *args, **kw):
+ """ Decorate the `create` post handler with a validator that references
+ the appropriate App for this controller's importer.
+
+ """
+ if hasattr(cls, 'create') and getattr(cls.create.decoration, 'validation', None) is None:
+ cls.create = validate(cls.import_form(aslist(importer.target_app)[0]),
+ error_handler=cls.index.__func__)(cls.create)
+ return type.__call__(cls, importer, *args, **kw)
+
+
+class ToolImportController(BaseController):
+ """ Base class for ToolImporter controllers.
+
+ """
+ __metaclass__ = ToolImportControllerMeta
+
+ def __init__(self, importer):
+ """
+ :param importer: :class:`ToolImporter` instance to which this
+ controller belongs.
+
+ """
+ self.importer = importer
+
+ @property
+ def target_app(self):
+ return aslist(self.importer.target_app)[0]
+
+
+class ToolImporterMeta(type):
+ def __init__(cls, name, bases, attrs):
+ if not (hasattr(cls, 'target_app_ep_names')
+ or hasattr(cls, 'target_app')):
+ raise AttributeError("{0} must define either "
+ "`target_app` or `target_app_ep_names`".format(name))
+ return type.__init__(cls, name, bases, attrs)
+
+ def __call__(cls, *args, **kw):
+ """ Right before the first instance of cls is created, get
+ the list of target_app classes from ep names. Can't do this
+ at cls create/init time b/c g.entry_points is not guaranteed
+ to be loaded at that point.
+
+ """
+ if not getattr(cls, 'target_app', None):
+ cls.target_app = [g.entry_points['tool'][ep_name]
+ for ep_name in aslist(cls.target_app_ep_names)]
+ return type.__call__(cls, *args, **kw)
+
+
class ToolImporter(object):
"""
@@ -347,10 +399,18 @@ class ToolImporter(object):
Subclasses are required to implement :meth:`import_tool()` described
below and define the following attributes:
+ .. py:attribute:: target_app_ep_names
+
+ A string or list of strings which are entry point names of the
+ tool(s) to which this class imports. E.g.::
+
+ target_app_ep_names = ['git', 'hg']
+
.. py:attribute:: target_app
A reference or list of references to the tool(s) that this imports
- to. E.g.::
+ to. This attribute is not required if `target_app_ep_names` is
+ defined (which is preferable). E.g.::
target_app = [forgegit.ForgeGitApp, forgehg.ForgeHgApp]
@@ -365,7 +425,10 @@ class ToolImporter(object):
.. py:attribute:: controller
The controller for this importer, to handle single tool imports.
+
"""
+ __metaclass__ = ToolImporterMeta
+
target_app = None # app or list of apps
source = None # string description of source, must match project importer
controller = None
@@ -518,7 +581,7 @@ class ProjectToolsImportController(object):
hidden = set(aslist(config.get('hidden_importers'), sep=','))
visible = lambda ep: ep.name not in hidden
for ep in filter(visible, h.iter_entry_points('allura.importers')):
- importer = ep.load()
+ importer = ep.load()()
for tool in aslist(importer.target_app):
tools_with_importers.add(tool.tool_label)
importer_matrix[importer.source][tool.tool_label] = ep.name
@@ -529,9 +592,9 @@ class ProjectToolsImportController(object):
@expose()
def _lookup(self, name, *remainder):
- import_tool = ToolImporter.by_name(name)
- if import_tool:
- return import_tool.controller(), remainder
+ importer = ToolImporter.by_name(name)
+ if importer:
+ return importer.controller(importer), remainder
else:
raise exc.HTTPNotFound
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/2707fc38/ForgeImporters/forgeimporters/forge/tracker.py
----------------------------------------------------------------------
diff --git a/ForgeImporters/forgeimporters/forge/tracker.py b/ForgeImporters/forgeimporters/forge/tracker.py
index 5407743..96c352f 100644
--- a/ForgeImporters/forgeimporters/forge/tracker.py
+++ b/ForgeImporters/forgeimporters/forge/tracker.py
@@ -27,25 +27,23 @@ from tg import (
expose,
flash,
redirect,
- validate,
)
from tg.decorators import (
with_trailing_slash,
without_trailing_slash,
)
-from allura.controllers import BaseController
from allura.lib import helpers as h
from allura.lib.plugin import ImportIdConverter
from allura.lib.decorators import require_post
from allura.lib import validators as v
from allura import model as M
-from forgetracker.tracker_main import ForgeTrackerApp
from forgetracker import model as TM
from forgeimporters.base import (
ToolImporter,
ToolImportForm,
+ ToolImportController,
File,
get_importer_upload_path,
save_importer_upload,
@@ -56,14 +54,8 @@ class ForgeTrackerImportForm(ToolImportForm):
tickets_json = v.JsonFile(not_empty=True)
-class ForgeTrackerImportController(BaseController):
-
- def __init__(self):
- self.importer = ForgeTrackerImporter()
-
- @property
- def target_app(self):
- return self.importer.target_app
+class ForgeTrackerImportController(ToolImportController):
+ import_form = ForgeTrackerImportForm
@with_trailing_slash
@expose('jinja:forgeimporters.forge:templates/tracker/index.html')
@@ -74,7 +66,6 @@ class ForgeTrackerImportController(BaseController):
@without_trailing_slash
@expose()
@require_post()
- @validate(ForgeTrackerImportForm(ForgeTrackerApp), error_handler=index)
def create(self, tickets_json, mount_point, mount_label, **kw):
if self.importer.enforce_limit(c.project):
save_importer_upload(
@@ -94,7 +85,7 @@ class ForgeTrackerImportController(BaseController):
class ForgeTrackerImporter(ToolImporter):
source = 'Allura'
- target_app = ForgeTrackerApp
+ target_app_ep_names = 'tickets'
controller = ForgeTrackerImportController
tool_label = 'Tickets'
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/2707fc38/ForgeImporters/forgeimporters/github/code.py
----------------------------------------------------------------------
diff --git a/ForgeImporters/forgeimporters/github/code.py b/ForgeImporters/forgeimporters/github/code.py
index 710e868..410b3bb 100644
--- a/ForgeImporters/forgeimporters/github/code.py
+++ b/ForgeImporters/forgeimporters/github/code.py
@@ -22,7 +22,6 @@ from tg import (
expose,
flash,
redirect,
- validate,
)
from tg.decorators import (
with_trailing_slash,
@@ -30,14 +29,12 @@ from tg.decorators import (
)
from allura.lib.decorators import require_post
-from allura.controllers import BaseController
from allura import model as M
-from forgegit.git_main import ForgeGitApp
-
from forgeimporters.base import (
ToolImporter,
ToolImportForm,
+ ToolImportController,
)
from forgeimporters.github import (
GitHubProjectExtractor,
@@ -51,14 +48,8 @@ class GitHubRepoImportForm(ToolImportForm):
gh_project_name = GitHubProjectNameValidator()
-class GitHubRepoImportController(BaseController, GitHubOAuthMixin):
-
- def __init__(self):
- self.importer = GitHubRepoImporter()
-
- @property
- def target_app(self):
- return self.importer.target_app
+class GitHubRepoImportController(ToolImportController, GitHubOAuthMixin):
+ import_form = GitHubRepoImportForm
@with_trailing_slash
@expose('jinja:forgeimporters.github:templates/code/index.html')
@@ -70,7 +61,6 @@ class GitHubRepoImportController(BaseController, GitHubOAuthMixin):
@without_trailing_slash
@expose()
@require_post()
- @validate(GitHubRepoImportForm(ForgeGitApp), error_handler=index)
def create(self, gh_project_name, gh_user_name, mount_point, mount_label, **kw):
if self.importer.enforce_limit(c.project):
self.importer.post(
@@ -87,7 +77,7 @@ class GitHubRepoImportController(BaseController, GitHubOAuthMixin):
class GitHubRepoImporter(ToolImporter):
- target_app = ForgeGitApp
+ target_app_ep_names = 'git'
source = 'GitHub'
controller = GitHubRepoImportController
tool_label = 'Source Code'
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/2707fc38/ForgeImporters/forgeimporters/github/tracker.py
----------------------------------------------------------------------
diff --git a/ForgeImporters/forgeimporters/github/tracker.py b/ForgeImporters/forgeimporters/github/tracker.py
index 4295f2d..cbc017d 100644
--- a/ForgeImporters/forgeimporters/github/tracker.py
+++ b/ForgeImporters/forgeimporters/github/tracker.py
@@ -28,7 +28,6 @@ except ImportError:
from formencode import validators as fev
from tg import (
expose,
- validate,
flash,
redirect
)
@@ -38,7 +37,6 @@ from tg.decorators import (
)
from allura import model as M
-from allura.controllers import BaseController
from allura.lib import helpers as h
from allura.lib.plugin import ImportIdConverter
from allura.lib.decorators import require_post
@@ -46,11 +44,11 @@ from ming.orm import session, ThreadLocalORMSession
from pylons import tmpl_context as c
from pylons import app_globals as g
-from forgetracker.tracker_main import ForgeTrackerApp
from forgetracker import model as TM
from forgeimporters.base import (
- ToolImportForm,
ToolImporter,
+ ToolImportForm,
+ ToolImportController,
)
from forgeimporters.github import (
GitHubProjectExtractor,
@@ -68,14 +66,8 @@ class GitHubTrackerImportForm(ToolImportForm):
gh_user_name = fev.UnicodeString(not_empty=True)
-class GitHubTrackerImportController(BaseController, GitHubOAuthMixin):
-
- def __init__(self):
- self.importer = GitHubTrackerImporter()
-
- @property
- def target_app(self):
- return self.importer.target_app
+class GitHubTrackerImportController(ToolImportController, GitHubOAuthMixin):
+ import_form = GitHubTrackerImportForm
@with_trailing_slash
@expose('jinja:forgeimporters.github:templates/tracker/index.html')
@@ -87,7 +79,6 @@ class GitHubTrackerImportController(BaseController, GitHubOAuthMixin):
@without_trailing_slash
@expose()
@require_post()
- @validate(GitHubTrackerImportForm(ForgeTrackerApp), error_handler=index)
def create(self, gh_project_name, gh_user_name, mount_point, mount_label, **kw):
if self.importer.enforce_limit(c.project):
self.importer.post(
@@ -105,7 +96,7 @@ class GitHubTrackerImportController(BaseController, GitHubOAuthMixin):
class GitHubTrackerImporter(ToolImporter):
source = 'GitHub'
- target_app = ForgeTrackerApp
+ target_app_ep_names = 'tickets'
controller = GitHubTrackerImportController
tool_label = 'Issues'
max_ticket_num = 0
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/2707fc38/ForgeImporters/forgeimporters/github/wiki.py
----------------------------------------------------------------------
diff --git a/ForgeImporters/forgeimporters/github/wiki.py b/ForgeImporters/forgeimporters/github/wiki.py
index 1891da7..f2ed923 100644
--- a/ForgeImporters/forgeimporters/github/wiki.py
+++ b/ForgeImporters/forgeimporters/github/wiki.py
@@ -31,7 +31,6 @@ from ming.orm import ThreadLocalORMSession
from formencode import validators as fev
from tg import (
expose,
- validate,
flash,
redirect,
)
@@ -40,7 +39,6 @@ from tg.decorators import (
without_trailing_slash,
)
-from allura.controllers import BaseController
from allura.lib import helpers as h
from allura.lib import utils
from allura.lib.plugin import ImportIdConverter
@@ -51,6 +49,7 @@ from allura import model as M
from forgeimporters.base import (
ToolImporter,
ToolImportForm,
+ ToolImportController,
)
from forgeimporters.github import (
GitHubProjectExtractor,
@@ -65,14 +64,6 @@ from forgewiki.converters import mediawiki2markdown
import logging
log = logging.getLogger(__name__)
-TARGET_APPS = []
-
-try:
- from forgewiki.wiki_main import ForgeWikiApp
- TARGET_APPS.append(ForgeWikiApp)
-except ImportError:
- pass
-
class GitHubWikiImportForm(ToolImportForm):
gh_project_name = GitHubProjectNameValidator()
@@ -80,14 +71,8 @@ class GitHubWikiImportForm(ToolImportForm):
tool_option = fev.UnicodeString(if_missing=u'')
-class GitHubWikiImportController(BaseController, GitHubOAuthMixin):
-
- def __init__(self):
- self.importer = GitHubWikiImporter()
-
- @property
- def target_app(self):
- return aslist(self.importer.target_app)[0]
+class GitHubWikiImportController(ToolImportController, GitHubOAuthMixin):
+ import_form = GitHubWikiImportForm
@with_trailing_slash
@expose('jinja:forgeimporters.github:templates/wiki/index.html')
@@ -99,7 +84,6 @@ class GitHubWikiImportController(BaseController, GitHubOAuthMixin):
@without_trailing_slash
@expose()
@require_post()
- @validate(GitHubWikiImportForm(ForgeWikiApp), error_handler=index)
def create(self, gh_project_name, gh_user_name, mount_point, mount_label, **kw):
if self.importer.enforce_limit(c.project):
self.importer.post(
@@ -117,7 +101,8 @@ class GitHubWikiImportController(BaseController, GitHubOAuthMixin):
class GitHubWikiImporter(ToolImporter):
- target_app = TARGET_APPS
+ target_app_ep_names = 'wiki'
+
controller = GitHubWikiImportController
source = 'GitHub'
tool_label = 'Wiki'
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/2707fc38/ForgeImporters/forgeimporters/google/code.py
----------------------------------------------------------------------
diff --git a/ForgeImporters/forgeimporters/google/code.py b/ForgeImporters/forgeimporters/google/code.py
index 8181c87..13d388d 100644
--- a/ForgeImporters/forgeimporters/google/code.py
+++ b/ForgeImporters/forgeimporters/google/code.py
@@ -26,70 +26,43 @@ from tg import (
expose,
flash,
redirect,
- validate,
)
from tg.decorators import (
with_trailing_slash,
without_trailing_slash,
)
-from allura.controllers import BaseController
from allura.lib import validators as v
from allura.lib.decorators import require_post
from allura import model as M
from forgeimporters.base import (
ToolImporter,
+ ToolImportController,
)
from forgeimporters.google import GoogleCodeProjectExtractor
from forgeimporters.google import GoogleCodeProjectNameValidator
-REPO_APPS = {}
-TARGET_APPS = []
-try:
- from forgehg.hg_main import ForgeHgApp
- TARGET_APPS.append(ForgeHgApp)
- REPO_APPS['hg'] = ForgeHgApp
-except ImportError:
- pass
-try:
- from forgegit.git_main import ForgeGitApp
- TARGET_APPS.append(ForgeGitApp)
- REPO_APPS['git'] = ForgeGitApp
-except ImportError:
- pass
-try:
- from forgesvn.svn_main import ForgeSVNApp
- TARGET_APPS.append(ForgeSVNApp)
- REPO_APPS['svn'] = ForgeSVNApp
-except ImportError:
- pass
REPO_URLS = {
'svn': 'http://{0}.googlecode.com/svn/',
'git': 'https://code.google.com/p/{0}/',
'hg': 'https://code.google.com/p/{0}/',
}
-REPO_ENTRY_POINTS = {
- 'svn': 'SVN',
- 'git': 'Git',
- 'hg': 'Hg',
-}
def get_repo_url(project_name, type_):
return REPO_URLS[type_].format(project_name)
-def get_repo_class(type_):
- return REPO_APPS[type_]
-
-
class GoogleRepoImportForm(fe.schema.Schema):
gc_project_name = GoogleCodeProjectNameValidator()
mount_point = fev.UnicodeString()
mount_label = fev.UnicodeString()
+ def __init__(self, *args):
+ pass
+
def _to_python(self, value, state):
value = super(self.__class__, self)._to_python(value, state)
@@ -107,7 +80,7 @@ class GoogleRepoImportForm(fe.schema.Schema):
raise fe.Invalid(msg, value, state)
except Exception:
raise
- tool_class = REPO_APPS[repo_type]
+ tool_class = g.entry_points['tool'][repo_type]
try:
value['mount_point'] = v.MountPointValidator(
tool_class).to_python(mount_point)
@@ -116,14 +89,8 @@ class GoogleRepoImportForm(fe.schema.Schema):
return value
-class GoogleRepoImportController(BaseController):
-
- def __init__(self):
- self.importer = GoogleRepoImporter()
-
- @property
- def target_app(self):
- return self.importer.target_app[0]
+class GoogleRepoImportController(ToolImportController):
+ import_form = GoogleRepoImportForm
@with_trailing_slash
@expose('jinja:forgeimporters.google:templates/code/index.html')
@@ -134,7 +101,6 @@ class GoogleRepoImportController(BaseController):
@without_trailing_slash
@expose()
@require_post()
- @validate(GoogleRepoImportForm(), error_handler=index)
def create(self, gc_project_name, mount_point, mount_label, **kw):
if self.importer.enforce_limit(c.project):
self.importer.post(
@@ -150,7 +116,7 @@ class GoogleRepoImportController(BaseController):
class GoogleRepoImporter(ToolImporter):
- target_app = TARGET_APPS
+ target_app_ep_names = ('git', 'hg', 'svn')
source = 'Google Code'
controller = GoogleRepoImportController
tool_label = 'Source Code'
@@ -165,7 +131,7 @@ class GoogleRepoImporter(ToolImporter):
repo_type = extractor.get_repo_type()
repo_url = get_repo_url(project_name, repo_type)
app = project.install_app(
- REPO_ENTRY_POINTS[repo_type],
+ repo_type,
mount_point=mount_point or 'code',
mount_label=mount_label or 'Code',
init_from_url=repo_url,
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/2707fc38/ForgeImporters/forgeimporters/google/tests/test_code.py
----------------------------------------------------------------------
diff --git a/ForgeImporters/forgeimporters/google/tests/test_code.py b/ForgeImporters/forgeimporters/google/tests/test_code.py
index 00c5328..b52ec21 100644
--- a/ForgeImporters/forgeimporters/google/tests/test_code.py
+++ b/ForgeImporters/forgeimporters/google/tests/test_code.py
@@ -70,7 +70,7 @@ class TestGoogleRepoImporter(TestCase):
app.url = 'foo'
GoogleRepoImporter().import_tool(p, u, project_name='project_name')
get_repo_url.assert_called_once_with('project_name', 'git')
- p.install_app.assert_called_once_with('Git',
+ p.install_app.assert_called_once_with('git',
mount_point='code',
mount_label='Code',
init_from_url='http://remote/clone/url/',
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/2707fc38/ForgeImporters/forgeimporters/google/tracker.py
----------------------------------------------------------------------
diff --git a/ForgeImporters/forgeimporters/google/tracker.py b/ForgeImporters/forgeimporters/google/tracker.py
index b3abc10..7873aa6 100644
--- a/ForgeImporters/forgeimporters/google/tracker.py
+++ b/ForgeImporters/forgeimporters/google/tracker.py
@@ -26,26 +26,24 @@ from tg import (
expose,
flash,
redirect,
- validate,
)
from tg.decorators import (
with_trailing_slash,
without_trailing_slash,
)
-from allura.controllers import BaseController
from allura.lib import helpers as h
from allura.lib.plugin import ImportIdConverter
from allura.lib.decorators import require_post
from allura import model as M
-from forgetracker.tracker_main import ForgeTrackerApp
from forgetracker import model as TM
from forgeimporters.google import GoogleCodeProjectExtractor
from forgeimporters.google import GoogleCodeProjectNameValidator
from forgeimporters.base import (
ToolImporter,
ToolImportForm,
+ ToolImportController,
)
@@ -53,14 +51,8 @@ class GoogleCodeTrackerImportForm(ToolImportForm):
gc_project_name = GoogleCodeProjectNameValidator()
-class GoogleCodeTrackerImportController(BaseController):
-
- def __init__(self):
- self.importer = GoogleCodeTrackerImporter()
-
- @property
- def target_app(self):
- return self.importer.target_app
+class GoogleCodeTrackerImportController(ToolImportController):
+ import_form = GoogleCodeTrackerImportForm
@with_trailing_slash
@expose('jinja:forgeimporters.google:templates/tracker/index.html')
@@ -71,7 +63,6 @@ class GoogleCodeTrackerImportController(BaseController):
@without_trailing_slash
@expose()
@require_post()
- @validate(GoogleCodeTrackerImportForm(ForgeTrackerApp), error_handler=index)
def create(self, gc_project_name, mount_point, mount_label, **kw):
if self.importer.enforce_limit(c.project):
self.importer.post(
@@ -89,7 +80,7 @@ class GoogleCodeTrackerImportController(BaseController):
class GoogleCodeTrackerImporter(ToolImporter):
source = 'Google Code'
- target_app = ForgeTrackerApp
+ target_app_ep_names = 'tickets'
controller = GoogleCodeTrackerImportController
tool_label = 'Issues'
tool_description = 'Import your public tickets from Google Code'
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/2707fc38/ForgeImporters/forgeimporters/tests/forge/test_tracker.py
----------------------------------------------------------------------
diff --git a/ForgeImporters/forgeimporters/tests/forge/test_tracker.py b/ForgeImporters/forgeimporters/tests/forge/test_tracker.py
index 152e5bc..152f222 100644
--- a/ForgeImporters/forgeimporters/tests/forge/test_tracker.py
+++ b/ForgeImporters/forgeimporters/tests/forge/test_tracker.py
@@ -315,8 +315,8 @@ class TestForgeTrackerImportController(TestController, TestCase):
"""Mount Allura importer on the Tracker admin controller"""
super(TestForgeTrackerImportController, self).setUp()
from forgetracker.tracker_main import TrackerAdminController
- TrackerAdminController._importer = tracker.ForgeTrackerImportController(
- )
+ TrackerAdminController._importer = \
+ tracker.ForgeTrackerImportController(tracker.ForgeTrackerImporter())
@with_tracker
def test_index(self):
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/2707fc38/ForgeImporters/forgeimporters/tests/google/test_tracker.py
----------------------------------------------------------------------
diff --git a/ForgeImporters/forgeimporters/tests/google/test_tracker.py b/ForgeImporters/forgeimporters/tests/google/test_tracker.py
index cfb8d97..e8f12bb 100644
--- a/ForgeImporters/forgeimporters/tests/google/test_tracker.py
+++ b/ForgeImporters/forgeimporters/tests/google/test_tracker.py
@@ -292,8 +292,9 @@ class TestGoogleCodeTrackerImportController(TestController, TestCase):
"""Mount Google Code importer on the Tracker admin controller"""
super(TestGoogleCodeTrackerImportController, self).setUp()
from forgetracker.tracker_main import TrackerAdminController
- TrackerAdminController._importer = tracker.GoogleCodeTrackerImportController(
- )
+ TrackerAdminController._importer = \
+ tracker.GoogleCodeTrackerImportController(
+ tracker.GoogleCodeTrackerImporter())
@with_tracker
def test_index(self):
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/2707fc38/ForgeImporters/forgeimporters/tests/test_base.py
----------------------------------------------------------------------
diff --git a/ForgeImporters/forgeimporters/tests/test_base.py b/ForgeImporters/forgeimporters/tests/test_base.py
index e93a6b1..d52f417 100644
--- a/ForgeImporters/forgeimporters/tests/test_base.py
+++ b/ForgeImporters/forgeimporters/tests/test_base.py
@@ -132,6 +132,7 @@ class TestProjectImporter(TestCase):
@mock.patch.object(base, 'M')
@mock.patch.object(base, 'c')
def test_process(self, c, M, import_tool, flash, redirect, by_name):
+ base.ToolImporter.target_app_ep_names = []
by_name.return_value = base.ToolImporter()
pi = base.ProjectImporter(mock.Mock())
@@ -183,8 +184,7 @@ TA2 = mock.Mock(tool_label='qux', tool_description='qux_desc')
TA3 = mock.Mock(tool_label='baz', tool_description='baz_desc')
-class TI1Controller(object):
-
+class TI1Controller(base.ToolImportController):
@expose()
def index(self, *a, **kw):
return 'test importer 1 controller webpage'
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/2707fc38/ForgeImporters/forgeimporters/trac/tests/test_tickets.py
----------------------------------------------------------------------
diff --git a/ForgeImporters/forgeimporters/trac/tests/test_tickets.py b/ForgeImporters/forgeimporters/trac/tests/test_tickets.py
index e9366f2..1ccfd98 100644
--- a/ForgeImporters/forgeimporters/trac/tests/test_tickets.py
+++ b/ForgeImporters/forgeimporters/trac/tests/test_tickets.py
@@ -111,8 +111,8 @@ class TestTracTicketImportController(TestController, TestCase):
"""Mount Trac import controller on the Tracker admin controller"""
super(TestTracTicketImportController, self).setUp()
from forgetracker.tracker_main import TrackerAdminController
- self.importer = TrackerAdminController._importer = TracTicketImportController(
- )
+ self.importer = TrackerAdminController._importer = \
+ TracTicketImportController(TracTicketImporter())
@with_tracker
def test_index(self):
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/2707fc38/ForgeImporters/forgeimporters/trac/tickets.py
----------------------------------------------------------------------
diff --git a/ForgeImporters/forgeimporters/trac/tickets.py b/ForgeImporters/forgeimporters/trac/tickets.py
index c2c28c1..133a379 100644
--- a/ForgeImporters/forgeimporters/trac/tickets.py
+++ b/ForgeImporters/forgeimporters/trac/tickets.py
@@ -27,14 +27,12 @@ from tg import (
expose,
flash,
redirect,
- validate,
)
from tg.decorators import (
with_trailing_slash,
without_trailing_slash,
)
-from allura.controllers import BaseController
from allura.lib.decorators import require_post
from allura.lib import validators as v
from allura.lib import helpers as h
@@ -47,8 +45,8 @@ from allura.scripts.trac_export import (
from forgeimporters.base import (
ToolImporter,
ToolImportForm,
+ ToolImportController,
)
-from forgetracker.tracker_main import ForgeTrackerApp
from forgetracker.import_support import ImportSupport
from forgetracker import model as TM
@@ -58,14 +56,8 @@ class TracTicketImportForm(ToolImportForm):
user_map = v.UserMapJsonFile(as_string=True)
-class TracTicketImportController(BaseController):
-
- def __init__(self):
- self.importer = TracTicketImporter()
-
- @property
- def target_app(self):
- return self.importer.target_app
+class TracTicketImportController(ToolImportController):
+ import_form = TracTicketImportForm
@with_trailing_slash
@expose('jinja:forgeimporters.trac:templates/tickets/index.html')
@@ -76,7 +68,6 @@ class TracTicketImportController(BaseController):
@without_trailing_slash
@expose()
@require_post()
- @validate(TracTicketImportForm(ForgeTrackerApp), error_handler=index)
def create(self, trac_url, mount_point, mount_label, user_map=None, **kw):
if self.importer.enforce_limit(c.project):
self.importer.post(
@@ -94,7 +85,7 @@ class TracTicketImportController(BaseController):
class TracTicketImporter(ToolImporter):
- target_app = ForgeTrackerApp
+ target_app_ep_names = 'tickets'
source = 'Trac'
controller = TracTicketImportController
tool_label = 'Tickets'
[04/10] git commit: [#7111] Fixed failing test and added comment
Posted by tv...@apache.org.
[#7111] Fixed failing test and added comment
Signed-off-by: Cory Johns <cj...@slashdotmedia.com>
Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/80ba5547
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/80ba5547
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/80ba5547
Branch: refs/heads/tv/7042
Commit: 80ba554700af5e1c7a3ba631e6572dd6ea5aaef4
Parents: 2707fc3
Author: Cory Johns <cj...@slashdotmedia.com>
Authored: Wed Feb 5 20:10:51 2014 +0000
Committer: Cory Johns <cj...@slashdotmedia.com>
Committed: Wed Feb 5 21:24:08 2014 +0000
----------------------------------------------------------------------
ForgeImporters/forgeimporters/base.py | 2 ++
ForgeImporters/forgeimporters/github/tests/test_code.py | 2 ++
2 files changed, 4 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/80ba5547/ForgeImporters/forgeimporters/base.py
----------------------------------------------------------------------
diff --git a/ForgeImporters/forgeimporters/base.py b/ForgeImporters/forgeimporters/base.py
index d1fbd38..4353fd2 100644
--- a/ForgeImporters/forgeimporters/base.py
+++ b/ForgeImporters/forgeimporters/base.py
@@ -581,6 +581,8 @@ class ProjectToolsImportController(object):
hidden = set(aslist(config.get('hidden_importers'), sep=','))
visible = lambda ep: ep.name not in hidden
for ep in filter(visible, h.iter_entry_points('allura.importers')):
+ # must instantiate to ensure importer.target_app is populated
+ # (see ToolImporterMeta.__call__)
importer = ep.load()()
for tool in aslist(importer.target_app):
tools_with_importers.add(tool.tool_label)
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/80ba5547/ForgeImporters/forgeimporters/github/tests/test_code.py
----------------------------------------------------------------------
diff --git a/ForgeImporters/forgeimporters/github/tests/test_code.py b/ForgeImporters/forgeimporters/github/tests/test_code.py
index bb8ed25..e247a5f 100644
--- a/ForgeImporters/forgeimporters/github/tests/test_code.py
+++ b/ForgeImporters/forgeimporters/github/tests/test_code.py
@@ -22,6 +22,7 @@ from ming.odm import ThreadLocalORMSession
from allura.tests import TestController
from allura.tests.decorators import with_tool
from allura import model as M
+from alluratest.controller import setup_unit_test
from forgeimporters.github.code import GitHubRepoImporter
from forgeimporters.github import GitHubOAuthMixin
@@ -43,6 +44,7 @@ class TestGitHubRepoImporter(TestCase):
@patch('forgeimporters.github.code.g')
@patch('forgeimporters.github.code.GitHubProjectExtractor')
def test_import_tool_happy_path(self, ghpe, g, M):
+ setup_unit_test()
ghpe.return_value.get_repo_url.return_value = 'http://remote/clone/url/'
p = self._make_project(gh_proj_name='myproject')
u = Mock(name='c.user')