allura
修訂 | 0e4aae15442f9e2672f6627fe446491cb6071869 (tree) |
---|---|
時間 | 2011-12-30 04:22:53 |
作者 | Tim Van Steenburgh <tvansteenburgh@geek...> |
Commiter | Tim Van Steenburgh |
[#3485] Updated publicize-neighborhood script to remove sfx dependency.
Signed-off-by: Tim Van Steenburgh <tvansteenburgh@geek.net>
@@ -578,5 +578,8 @@ class ProjectRole(MappedClass): | ||
578 | 578 | def parent_roles(self): |
579 | 579 | return self.query.find({'roles': self._id}).all() |
580 | 580 | |
581 | - def users_with_role(self): | |
582 | - return self.query.find(dict(project_id=c.project._id,user_id={'$ne':None},roles=self._id)).all() | |
581 | + def users_with_role(self, project=None): | |
582 | + if not project: | |
583 | + project = c.project | |
584 | + return self.query.find(dict(project_id=project._id, | |
585 | + user_id={'$ne': None}, roles=self._id)).all() |
@@ -2,27 +2,24 @@ import logging | ||
2 | 2 | import sys |
3 | 3 | |
4 | 4 | from ming.orm import ThreadLocalORMSession |
5 | -from pylons import g | |
5 | +from pylons import c, g | |
6 | 6 | |
7 | 7 | from allura import model as M |
8 | 8 | from allura.lib import helpers as h |
9 | 9 | from allura.lib import utils |
10 | 10 | |
11 | -from sfx.lib.sfx_api import SFXProjectApi | |
12 | - | |
13 | 11 | log = logging.getLogger(__name__) |
14 | 12 | |
15 | 13 | def main(options): |
16 | 14 | log.addHandler(logging.StreamHandler(sys.stdout)) |
17 | 15 | log.setLevel(getattr(logging, options.log_level.upper())) |
18 | 16 | |
19 | - api = SFXProjectApi() | |
20 | 17 | nbhd = M.Neighborhood.query.get(name=options.neighborhood) |
21 | 18 | if not nbhd: |
22 | 19 | return 'Invalid neighborhood "%s".' % options.neighborhood |
23 | - sfx_siteadmin = M.User.query.get(username=api.sfx_siteadmin) | |
24 | - if not sfx_siteadmin: | |
25 | - return "Couldn't find sfx_siteadmin with username '%s'" % api.sfx_siteadmin | |
20 | + admin_role = M.ProjectRole.by_name('Admin', project=nbhd.neighborhood_project) | |
21 | + nbhd_admin = admin_role.users_with_role(project=nbhd.neighborhood_project)[0].user | |
22 | + log.info('Making updates as neighborhood admin "%s"' % nbhd_admin.username) | |
26 | 23 | |
27 | 24 | q = {'neighborhood_id': nbhd._id, |
28 | 25 | 'shortname': {'$ne':'--init--'}, 'deleted':False} |
@@ -37,12 +34,9 @@ def main(options): | ||
37 | 34 | else: |
38 | 35 | log.info('Making public: "%s"' % p.shortname) |
39 | 36 | p.acl.append(M.ACE.allow(role_anon._id, 'read')) |
40 | - ThreadLocalORMSession.flush_all() | |
41 | - try: | |
42 | - api.update(sfx_siteadmin, p) | |
43 | - except Exception, e: | |
44 | - log.warning('SFX API update failed for project "%s": ' | |
45 | - '%s' % (p.shortname, e)) | |
37 | + with h.push_config(c, project=p, user=nbhd_admin): | |
38 | + ThreadLocalORMSession.flush_all() | |
39 | + g.post_event('project_updated') | |
46 | 40 | private_count += 1 |
47 | 41 | else: |
48 | 42 | log.info('Already public: "%s"' % p.shortname) |