• R/O
  • HTTP
  • SSH
  • HTTPS

コミット

タグ
未設定

よく使われているワード(クリックで追加)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

allura


コミットメタ情報

リビジョン55898e56bde064bfd8a010ff11d3fb3c34eaf84b (tree)
日時2012-03-22 06:07:36
作者Yaroslav Luzin <jardev@gmai...>
コミッターYaroslav Luzin

ログメッセージ

Merge branch 't31_testnbprivate'

変更サマリ

差分

--- a/Allura/allura/command/set_neighborhood_private.py
+++ b/Allura/allura/command/set_neighborhood_private.py
@@ -2,11 +2,11 @@ from . import base
22
33 from bson import ObjectId
44 from allura import model as M
5-from allura.lib import plugin
5+from allura.lib import plugin, exceptions
66 from ming.orm import session
77
88 # Example usage:
9-# paster set-neighborhood-private development.ini 4f50c898610b270c92000286 1
9+# paster set-neighborhood-private development.ini <neighborhood_id> 1
1010 class SetNeighborhoodPrivateCommand(base.Command):
1111 min_args=3
1212 max_args=3
@@ -22,6 +22,14 @@ class SetNeighborhoodPrivateCommand(base.Command):
2222 private_val = True
2323 else:
2424 private_val = False
25- n = M.Neighborhood.query.get(_id = ObjectId(n_id))
26- n.allow_private = private_val
27- session(M.Neighborhood).flush()
25+
26+ n = M.Neighborhood.query.get(name=n_id)
27+ if not n:
28+ n = M.Neighborhood.query.get(_id=ObjectId(n_id))
29+
30+ if not n:
31+ raise exceptions.NoSuchNeighborhoodError("The neighborhood %s "\
32+ "could not be found in the database" % n_id)
33+ else:
34+ n.allow_private = private_val
35+ session(M.Neighborhood).flush()
--- a/Allura/allura/controllers/project.py
+++ b/Allura/allura/controllers/project.py
@@ -152,8 +152,6 @@ class NeighborhoodController(object):
152152 def register(self, project_unixname=None, project_description=None, project_name=None, neighborhood=None,
153153 private_project=None, tools=None, **kw):
154154 require_access(self.neighborhood, 'register')
155- if self.neighborhood.allow_private == False:
156- private_project = False
157155 if private_project:
158156 require_access(self.neighborhood, 'admin')
159157 neighborhood = M.Neighborhood.query.get(name=neighborhood)
--- a/Allura/allura/lib/plugin.py
+++ b/Allura/allura/lib/plugin.py
@@ -337,6 +337,10 @@ class ProjectRegistrationProvider(object):
337337 '''
338338 from allura import model as M
339339
340+ # Check for private project rights
341+ if neighborhood.allow_private == False and private_project:
342+ raise ValueError("You can't create private projects for %s neighborhood" % neighborhood.name)
343+
340344 # Check for project limit creation
341345 pq = M.Project.query.find(dict(
342346 neighborhood_id=neighborhood._id,
--- a/Allura/allura/tests/functional/test_neighborhood.py
+++ b/Allura/allura/tests/functional/test_neighborhood.py
@@ -1,6 +1,7 @@
11 import json
22 import os
33 from cStringIO import StringIO
4+from nose.tools import assert_raises
45
56 import Image
67 from tg import config
@@ -117,9 +118,9 @@ class TestNeighborhood(TestController):
117118 assert 'Title bar, foreground' in r
118119
119120 r = self.app.post('/adobe/_admin/update',
120- params={'name': 'Adobe',
121- 'css': '',
122- 'homepage': '',
121+ params={'name': 'Adobe',
122+ 'css': '',
123+ 'homepage': '',
123124 'css-projecttitlefont': 'arial,sans-serif',
124125 'css-projecttitlecolor': 'green',
125126 'css-barontop': '#555555',
@@ -273,7 +274,8 @@ class TestNeighborhood(TestController):
273274 r = self.app.get('/p/add_project', extra_environ=dict(username='root'))
274275 assert 'private_project' not in r
275276
276- self.app.post(
277+ assert_raises(ValueError,
278+ self.app.post,
277279 '/p/register',
278280 params=dict(
279281 project_unixname='myprivate1',
@@ -285,7 +287,7 @@ class TestNeighborhood(TestController):
285287 extra_environ=dict(username='root'))
286288
287289 proj = M.Project.query.get(shortname='myprivate1', neighborhood_id=neighborhood._id)
288- assert not proj.private
290+ assert proj is None
289291
290292 # Turn on private
291293 neighborhood = M.Neighborhood.query.get(name='Projects')
--- a/Allura/allura/tests/test_commands.py
+++ b/Allura/allura/tests/test_commands.py
@@ -4,7 +4,7 @@ from datadiff.tools import assert_equal
44 import pylons
55
66 from alluratest.controller import setup_basic_test, setup_global_objects
7-from allura.command import script, set_neighborhood_level
7+from allura.command import script, set_neighborhood_level, set_neighborhood_private
88 from allura import model as M
99
1010
@@ -34,3 +34,19 @@ def test_set_neighborhood_level():
3434
3535 neighborhood = M.Neighborhood.query.get(_id=n_id)
3636 assert neighborhood.level == 'gold'
37+
38+def test_set_neighborhood_private():
39+ neighborhood = M.Neighborhood.query.find().first()
40+ n_id = neighborhood._id
41+
42+ cmd = set_neighborhood_private.SetNeighborhoodPrivateCommand('setnbprivate')
43+ cmd.run([test_config, str(n_id), '1'])
44+ cmd.command()
45+ neighborhood = M.Neighborhood.query.get(_id=n_id)
46+ assert neighborhood.allow_private
47+
48+ cmd = set_neighborhood_private.SetNeighborhoodPrivateCommand('setnbprivate')
49+ cmd.run([test_config, str(n_id), '0'])
50+ cmd.command()
51+ neighborhood = M.Neighborhood.query.get(_id=n_id)
52+ assert not neighborhood.allow_private