You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by br...@apache.org on 2013/03/19 20:22:11 UTC
git commit: [#5973] remove sf.net-specific shorturl migration
Updated Branches:
refs/heads/db/5973 bf1dacf74 -> 5643f2f42
[#5973] remove sf.net-specific shorturl migration
Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/5643f2f4
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/5643f2f4
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/5643f2f4
Branch: refs/heads/db/5973
Commit: 5643f2f42b49a63fad6f7afecf0b0eebe3bdbc7a
Parents: bf1dacf
Author: Dave Brondsema <db...@geek.net>
Authored: Tue Mar 19 19:10:42 2013 +0000
Committer: Dave Brondsema <db...@geek.net>
Committed: Tue Mar 19 19:10:42 2013 +0000
----------------------------------------------------------------------
ForgeShortUrl/forgeshorturl/command/base.py | 5 -
.../forgeshorturl/command/migrate_urls.py | 106 ---------------
ForgeShortUrl/forgeshorturl/tests/test_commands.py | 71 ----------
ForgeShortUrl/setup.py | 2 -
4 files changed, 0 insertions(+), 184 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/5643f2f4/ForgeShortUrl/forgeshorturl/command/__init__.py
----------------------------------------------------------------------
diff --git a/ForgeShortUrl/forgeshorturl/command/__init__.py b/ForgeShortUrl/forgeshorturl/command/__init__.py
deleted file mode 100644
index e69de29..0000000
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/5643f2f4/ForgeShortUrl/forgeshorturl/command/base.py
----------------------------------------------------------------------
diff --git a/ForgeShortUrl/forgeshorturl/command/base.py b/ForgeShortUrl/forgeshorturl/command/base.py
deleted file mode 100644
index 08ef1b2..0000000
--- a/ForgeShortUrl/forgeshorturl/command/base.py
+++ /dev/null
@@ -1,5 +0,0 @@
-from allura.command.base import Command
-
-
-class ShortUrlCommand(Command):
- group_name = 'ForgeShortUrl'
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/5643f2f4/ForgeShortUrl/forgeshorturl/command/migrate_urls.py
----------------------------------------------------------------------
diff --git a/ForgeShortUrl/forgeshorturl/command/migrate_urls.py b/ForgeShortUrl/forgeshorturl/command/migrate_urls.py
deleted file mode 100644
index 5d339e5..0000000
--- a/ForgeShortUrl/forgeshorturl/command/migrate_urls.py
+++ /dev/null
@@ -1,106 +0,0 @@
-import tg
-import warnings
-from pylons import tmpl_context as c
-import bson
-from forgeshorturl.command.base import ShortUrlCommand
-from forgeshorturl.model import ShortUrl
-from allura.lib import exceptions
-from allura.lib import helpers as h
-from allura import model as M
-from ming.orm import session
-import sqlalchemy
-from datetime import datetime
-
-
-class MigrateUrls(ShortUrlCommand):
- """Usage example:
-
- paster migrate-urls ../Allura/development.ini sfurl allura.p
-
- The following settings are read from the INI file:
-
- sfx.hostedapps_db.hostname
- sfx.hostedapps_db.port
- sfx.hostedapps_db.username
- sfx.hostedapps_db.password
- """
- min_args = 3
- max_args = 3
- usage = '<ini file> <database name> <project name>'
- summary = 'Migrate short URLs from the SFX Hosted App to Allura'
- parser = ShortUrlCommand.standard_parser(verbose=True)
- parser.add_option('-m', dest='mount_point', type='string', default='url',
- help='mount point (default: url)')
- parser.add_option('-n', dest='nbhd', type='string', default='p',
- help='neighborhood shortname or _id (default: p)')
- parser.add_option('--clean', dest='clean', action='store_true', default=False,
- help='clean existing short URLs from Allura')
-
- def command(self):
- self._setup()
- self._load_objects()
-
- if self.options.clean:
- ShortUrl.query.remove({'app_config_id': c.app.config._id})
-
- for row in self.urls.select().execute():
- url = ShortUrl.upsert(h.really_unicode(row['short_id']))
- url.full_url = h.really_unicode(row['url'])
- url.description = h.really_unicode(row['description'])
- url.private = row['private'] == 'Y'
- url.created = datetime.utcfromtimestamp(row['create_time'])
- url.last_updated = datetime.utcfromtimestamp(row['edit_time'])
- user = M.User.query.find({'tool_data.sfx.userid': row['create_user']}).first()
- url.create_user = user._id if user else M.User.anonymous()._id
-
- session(ShortUrl).flush()
-
- def _setup(self):
- '''Perform basic setup, suppressing superfluous warnings.'''
- with warnings.catch_warnings():
- try:
- from sqlalchemy import exc
- except ImportError:
- pass
- else:
- warnings.simplefilter("ignore", category=exc.SAWarning)
- self.basic_setup()
-
- db = sqlalchemy.create_engine(self._connection_string())
- meta = sqlalchemy.MetaData()
- meta.bind = db
- self.urls = sqlalchemy.Table('sfurl', meta, autoload=True)
-
- def _connection_string(self):
- prefix = 'sfx.hostedapps_db.'
- params = {
- 'host': tg.config.get(prefix + 'hostname', 'localhost'),
- 'port': tg.config.get(prefix + 'port', 3306),
- 'user': tg.config.get(prefix + 'username', ''),
- 'pwd': tg.config.get(prefix + 'password', ''),
- 'db': self.args[1]
- }
- return 'mysql://%(user)s:%(pwd)s@%(host)s:%(port)s/%(db)s' % params
-
- def _load_objects(self):
- nbhd = None
- try:
- nbhd = M.Neighborhood.query.get(_id=bson.ObjectId(self.options.nbhd))
- except bson.errors.InvalidId:
- nbhd = M.Neighborhood.query.find({'$or': [
- {'url_prefix': '/%s/' % self.options.nbhd},
- {'name': self.options.nbhd},
- ]}).first()
- assert nbhd, 'Neighborhood %s not found' % self.options.nbhd
- try:
- c.project = M.Project.query.get(_id=bson.ObjectId(self.args[2]))
- except bson.errors.InvalidId:
- c.project = M.Project.query.find({'$or': [
- {'shortname': self.args[2]},
- {'name': self.args[2]},
- ]}).first()
- if not c.project:
- raise exceptions.NoSuchProjectError('The project %s '
- 'could not be found in the database' % self.args[2])
- c.app = c.project.app_instance(self.options.mount_point)
- assert c.app, 'Project does not have ShortURL app installed'
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/5643f2f4/ForgeShortUrl/forgeshorturl/tests/test_commands.py
----------------------------------------------------------------------
diff --git a/ForgeShortUrl/forgeshorturl/tests/test_commands.py b/ForgeShortUrl/forgeshorturl/tests/test_commands.py
deleted file mode 100644
index 4ccf60e..0000000
--- a/ForgeShortUrl/forgeshorturl/tests/test_commands.py
+++ /dev/null
@@ -1,71 +0,0 @@
-from nose.tools import assert_equal
-from alluratest.controller import setup_basic_test, setup_global_objects
-from forgeshorturl.command import migrate_urls
-from forgeshorturl.model import ShortUrl
-from allura import model as M
-from mock import patch, MagicMock, Mock
-
-test_config = 'test.ini#main'
-
-
-def setUp(self):
- """Method called by nose before running each test"""
- setup_basic_test()
- setup_global_objects()
-
-
-class TableMock(MagicMock):
-
- def select(self):
- m = Mock()
- m.execute = self.execute
- return m
-
- def execute(self):
- test_urls = [
- {
- 'short_id': 'g',
- 'url': 'http://google.com',
- 'description': 'Two\nlines',
- 'private': 'N',
- 'create_time': 1,
- 'edit_time': 2,
- 'create_user': 1
- },
- {
- 'short_id': 'y',
- 'url': 'http://yahoo.com',
- 'description': 'One line',
- 'private': 'Y',
- 'create_time': 3,
- 'edit_time': 4,
- 'create_user': 1
- }
- ]
- for url in test_urls:
- yield url
-
-
-@patch('sqlalchemy.Table', TableMock)
-def test_migrate_urls():
- p = M.Project.query.find().first()
- app = p.app_instance('url')
- if not app:
- app = p.install_app('ShortUrl')
- assert_equal(ShortUrl.query.find({'app_config_id': app.config._id}).count(), 0)
-
- cmd = migrate_urls.MigrateUrls('migrate-urls')
- cmd.run([test_config, 'db_name', str(p._id)])
- assert_equal(ShortUrl.query.find({'app_config_id': app.config._id}).count(), 2)
-
- u = ShortUrl.query.find(dict(app_config_id=app.config._id, short_name='g')).first()
- assert_equal(u.full_url, 'http://google.com')
- assert_equal(u.description, 'Two\nlines')
- assert not u.private
- assert_equal(u.create_user, M.User.anonymous()._id)
-
- u = ShortUrl.query.find(dict(app_config_id=app.config._id, short_name='y')).first()
- assert_equal(u.full_url, 'http://yahoo.com')
- assert_equal(u.description, 'One line')
- assert u.private
- assert_equal(u.create_user, M.User.anonymous()._id)
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/5643f2f4/ForgeShortUrl/setup.py
----------------------------------------------------------------------
diff --git a/ForgeShortUrl/setup.py b/ForgeShortUrl/setup.py
index 62fc1ce..4b3a2a2 100644
--- a/ForgeShortUrl/setup.py
+++ b/ForgeShortUrl/setup.py
@@ -19,6 +19,4 @@ setup(name='ForgeShortUrl',
[allura]
ShortURL=forgeshorturl.main:ForgeShortUrlApp
- [paste.paster_command]
- migrate-urls=forgeshorturl.command.migrate_urls:MigrateUrls
""",)