You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by he...@apache.org on 2015/05/29 22:41:07 UTC
[45/45] allura git commit: [#7878] Used 2to3 to see what issues would
come up
[#7878] Used 2to3 to see what issues would come up
Project: http://git-wip-us.apache.org/repos/asf/allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/d52f8e2a
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/d52f8e2a
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/d52f8e2a
Branch: refs/heads/hs/7878
Commit: d52f8e2a82061780d436265c83ccf970d373d172
Parents: 80bd662
Author: Heith Seewald <hs...@slashdotmedia.com>
Authored: Fri May 29 16:39:32 2015 -0400
Committer: Heith Seewald <hs...@slashdotmedia.com>
Committed: Fri May 29 16:39:32 2015 -0400
----------------------------------------------------------------------
.../Untitled-checkpoint.ipynb | 6 +
Allura/LICENSE | 3 -
Allura/allura/__init__.py | 4 +
Allura/allura/app.py | 37 +-
Allura/allura/command/__init__.py | 18 +-
Allura/allura/command/base.py | 6 +-
Allura/allura/command/create_neighborhood.py | 4 +
.../allura/command/create_trove_categories.py | 6 +-
Allura/allura/command/reclone_repo.py | 4 +
Allura/allura/command/script.py | 12 +-
.../allura/command/set_neighborhood_features.py | 4 +
Allura/allura/command/show_models.py | 32 +-
Allura/allura/command/smtp_server.py | 4 +
Allura/allura/command/taskd.py | 10 +-
Allura/allura/command/taskd_cleanup.py | 6 +-
Allura/allura/config/app_cfg.py | 8 +-
Allura/allura/config/environment.py | 4 +
Allura/allura/config/middleware.py | 10 +-
Allura/allura/config/resources.py | 4 +
Allura/allura/controllers/__init__.py | 4 +
Allura/allura/controllers/attachments.py | 10 +-
Allura/allura/controllers/auth.py | 22 +-
Allura/allura/controllers/base.py | 6 +-
.../allura/controllers/basetest_project_root.py | 12 +-
Allura/allura/controllers/discuss.py | 29 +-
Allura/allura/controllers/error.py | 4 +
Allura/allura/controllers/feed.py | 4 +
Allura/allura/controllers/project.py | 53 +-
Allura/allura/controllers/repository.py | 14 +-
Allura/allura/controllers/rest.py | 16 +-
Allura/allura/controllers/root.py | 4 +
Allura/allura/controllers/search.py | 6 +-
Allura/allura/controllers/secure.py | 4 +
Allura/allura/controllers/site_admin.py | 12 +-
Allura/allura/controllers/static.py | 6 +-
Allura/allura/controllers/task.py | 4 +
Allura/allura/controllers/template.py | 4 +
Allura/allura/controllers/trovecategories.py | 8 +-
Allura/allura/eventslistener.py | 4 +
Allura/allura/ext/admin/__init__.py | 4 +
Allura/allura/ext/admin/admin_main.py | 34 +-
Allura/allura/ext/admin/widgets.py | 4 +
Allura/allura/ext/project_home/__init__.py | 4 +
Allura/allura/ext/project_home/project_main.py | 4 +
Allura/allura/ext/search/__init__.py | 4 +
Allura/allura/ext/search/search_main.py | 4 +
Allura/allura/ext/user_profile/__init__.py | 4 +
Allura/allura/ext/user_profile/user_main.py | 6 +-
Allura/allura/lib/AsciiDammit.py | 22 +-
Allura/allura/lib/app_globals.py | 27 +-
Allura/allura/lib/base.py | 10 +-
Allura/allura/lib/custom_middleware.py | 6 +-
Allura/allura/lib/decorators.py | 11 +-
Allura/allura/lib/diff.py | 4 +
Allura/allura/lib/exceptions.py | 8 +-
Allura/allura/lib/gravatar.py | 8 +-
Allura/allura/lib/helpers.py | 60 +-
Allura/allura/lib/import_api.py | 20 +-
Allura/allura/lib/macro.py | 14 +-
Allura/allura/lib/mail_util.py | 30 +-
Allura/allura/lib/markdown_extensions.py | 9 +-
Allura/allura/lib/package_path_loader.py | 6 +-
Allura/allura/lib/patches.py | 8 +-
Allura/allura/lib/phone/__init__.py | 74 -
Allura/allura/lib/phone/nexmo.py | 89 -
Allura/allura/lib/plugin.py | 70 +-
Allura/allura/lib/repository.py | 8 +-
Allura/allura/lib/search.py | 22 +-
Allura/allura/lib/security.py | 17 +-
Allura/allura/lib/solr.py | 10 +-
Allura/allura/lib/spam/__init__.py | 4 +
Allura/allura/lib/spam/akismetfilter.py | 6 +-
Allura/allura/lib/spam/mollomfilter.py | 6 +-
Allura/allura/lib/stats.py | 8 +-
Allura/allura/lib/utils.py | 42 +-
Allura/allura/lib/validators.py | 12 +-
Allura/allura/lib/widgets/__init__.py | 4 +
Allura/allura/lib/widgets/analytics.py | 4 +
Allura/allura/lib/widgets/auth_widgets.py | 4 +
Allura/allura/lib/widgets/discuss.py | 12 +-
Allura/allura/lib/widgets/form_fields.py | 14 +-
Allura/allura/lib/widgets/forms.py | 25 +-
Allura/allura/lib/widgets/macros.py | 4 +
Allura/allura/lib/widgets/oauth_widgets.py | 4 +
Allura/allura/lib/widgets/project_list.py | 14 +-
Allura/allura/lib/widgets/repo.py | 4 +
Allura/allura/lib/widgets/search.py | 4 +
Allura/allura/lib/widgets/subscriptions.py | 4 +
Allura/allura/lib/widgets/user_profile.py | 4 +
Allura/allura/lib/widgets/vote.py | 4 +
Allura/allura/lib/zarkov_helpers.py | 4 +
Allura/allura/model/__init__.py | 4 +
Allura/allura/model/artifact.py | 18 +-
Allura/allura/model/attachments.py | 4 +
Allura/allura/model/auth.py | 30 +-
Allura/allura/model/discuss.py | 38 +-
Allura/allura/model/filesystem.py | 6 +-
Allura/allura/model/index.py | 14 +-
Allura/allura/model/monq_model.py | 8 +-
Allura/allura/model/neighborhood.py | 6 +-
Allura/allura/model/notification.py | 8 +-
Allura/allura/model/oauth.py | 4 +
Allura/allura/model/project.py | 42 +-
Allura/allura/model/repo.py | 4 +
Allura/allura/model/repo_refresh.py | 90 +-
Allura/allura/model/repository.py | 53 +-
Allura/allura/model/session.py | 6 +-
Allura/allura/model/stats.py | 5 +
Allura/allura/model/timeline.py | 6 +-
Allura/allura/model/types.py | 4 +
Allura/allura/model/webhook.py | 12 +-
Allura/allura/nf/allura/css/allura.css | 10 +-
.../allura/public/nf/js/phone-verification.js | 169 --
Allura/allura/public/nf/js/react.min.js | 16 -
Allura/allura/scripts/__init__.py | 6 +-
.../allura/scripts/create_deleted_comments.py | 110 -
Allura/allura/scripts/refresh_last_commits.py | 12 +-
Allura/allura/scripts/refreshrepo.py | 4 +
Allura/allura/scripts/reindex_projects.py | 6 +-
Allura/allura/scripts/reindex_users.py | 6 +-
.../allura/scripts/remove_duplicate_troves.py | 12 +-
Allura/allura/scripts/scripttask.py | 4 +
Allura/allura/scripts/trac_export.py | 28 +-
Allura/allura/scripts/trim_emails.py | 4 +
Allura/allura/scripts/update_checkout_url.py | 4 +
Allura/allura/tasks/activity_tasks.py | 4 +
Allura/allura/tasks/admin_tasks.py | 4 +
Allura/allura/tasks/event_tasks.py | 6 +-
Allura/allura/tasks/export_tasks.py | 14 +-
Allura/allura/tasks/index_tasks.py | 6 +-
Allura/allura/tasks/mail_tasks.py | 18 +-
Allura/allura/tasks/notification_tasks.py | 4 +
Allura/allura/tasks/repo_tasks.py | 4 +
Allura/allura/templates/__init__.py | 4 +
Allura/allura/templates/mail/commits.md | 36 +
.../templates/neighborhood_add_project.html | 18 +-
.../templates/phone_verification_fragment.html | 73 -
.../widgets/neighborhood_add_project.html | 10 +-
Allura/allura/tests/__init__.py | 4 +
Allura/allura/tests/decorators.py | 4 +
Allura/allura/tests/functional/__init__.py | 4 +
Allura/allura/tests/functional/test_admin.py | 106 +-
Allura/allura/tests/functional/test_auth.py | 18 +-
Allura/allura/tests/functional/test_discuss.py | 83 +-
Allura/allura/tests/functional/test_feeds.py | 6 +-
Allura/allura/tests/functional/test_gravatar.py | 8 +-
Allura/allura/tests/functional/test_home.py | 20 +-
.../tests/functional/test_neighborhood.py | 109 +-
Allura/allura/tests/functional/test_rest.py | 10 +-
Allura/allura/tests/functional/test_root.py | 4 +
Allura/allura/tests/functional/test_search.py | 4 +
.../allura/tests/functional/test_site_admin.py | 28 +-
Allura/allura/tests/functional/test_static.py | 4 +
.../allura/tests/functional/test_subscriber.py | 4 +
.../allura/tests/functional/test_tool_list.py | 4 +
.../tests/functional/test_trovecategory.py | 4 +
.../tests/functional/test_user_profile.py | 18 +-
Allura/allura/tests/model/__init__.py | 4 +
Allura/allura/tests/model/test_artifact.py | 4 +
Allura/allura/tests/model/test_auth.py | 10 +-
Allura/allura/tests/model/test_discussion.py | 14 +-
Allura/allura/tests/model/test_filesystem.py | 16 +-
Allura/allura/tests/model/test_monq.py | 4 +
Allura/allura/tests/model/test_neighborhood.py | 14 +-
Allura/allura/tests/model/test_notification.py | 4 +
Allura/allura/tests/model/test_project.py | 8 +-
Allura/allura/tests/model/test_repo.py | 10 +-
.../tests/templates/jinja_master/test_lib.py | 4 +
Allura/allura/tests/test_app.py | 4 +
Allura/allura/tests/test_commands.py | 8 +-
Allura/allura/tests/test_decorators.py | 4 +
Allura/allura/tests/test_diff.py | 46 +-
Allura/allura/tests/test_dispatch.py | 4 +
Allura/allura/tests/test_globals.py | 52 +-
Allura/allura/tests/test_helpers.py | 46 +-
Allura/allura/tests/test_mail_util.py | 20 +-
Allura/allura/tests/test_markdown.py | 4 +
Allura/allura/tests/test_plugin.py | 118 +-
Allura/allura/tests/test_scripttask.py | 4 +
Allura/allura/tests/test_security.py | 4 +
Allura/allura/tests/test_tasks.py | 68 +-
Allura/allura/tests/test_utils.py | 27 +-
Allura/allura/tests/test_validators.py | 4 +
Allura/allura/tests/test_webhooks.py | 150 +-
Allura/allura/tests/test_zarkov_helpers.py | 4 +
Allura/allura/tests/tscript.py | 6 +-
Allura/allura/tests/tscript_error.py | 4 +
Allura/allura/tests/unit/__init__.py | 4 +
.../allura/tests/unit/controllers/test_auth.py | 4 +
.../test_discussion_moderation_controller.py | 13 +-
.../unit/controllers/test_dispatch_index.py | 4 +
Allura/allura/tests/unit/factories.py | 4 +
Allura/allura/tests/unit/patches.py | 4 +
Allura/allura/tests/unit/phone/__init__.py | 16 -
Allura/allura/tests/unit/phone/test_nexmo.py | 136 --
.../tests/unit/phone/test_phone_service.py | 57 -
Allura/allura/tests/unit/spam/test_akismet.py | 16 +-
Allura/allura/tests/unit/spam/test_mollom.py | 16 +-
.../allura/tests/unit/spam/test_spam_filter.py | 4 +
Allura/allura/tests/unit/test_app.py | 4 +
Allura/allura/tests/unit/test_artifact.py | 4 +
Allura/allura/tests/unit/test_discuss.py | 4 +
.../allura/tests/unit/test_helpers/test_ago.py | 4 +
.../tests/unit/test_helpers/test_set_context.py | 4 +
.../tests/unit/test_ldap_auth_provider.py | 20 +-
Allura/allura/tests/unit/test_mixins.py | 4 +
.../tests/unit/test_package_path_loader.py | 4 +
Allura/allura/tests/unit/test_post_model.py | 4 +
Allura/allura/tests/unit/test_project.py | 22 +-
Allura/allura/tests/unit/test_repo.py | 4 +
Allura/allura/tests/unit/test_session.py | 10 +-
Allura/allura/tests/unit/test_sitemapentry.py | 4 +
Allura/allura/tests/unit/test_solr.py | 4 +
Allura/allura/version.py | 4 +
Allura/allura/webhooks.py | 27 +-
Allura/allura/websetup/__init__.py | 8 +-
Allura/allura/websetup/bootstrap.py | 6 +-
Allura/allura/websetup/schema.py | 4 +
Allura/development.ini | 8 -
Allura/docs/conf.py | 8 +-
Allura/ez_setup/__init__.py | 26 +-
Allura/ldap-setup.py | 12 +-
Allura/ldap-userconfig.py | 10 +-
Allura/setup.py | 9 +-
Allura/test-light.py | 4 +
AlluraTest/alluratest/controller.py | 4 +
AlluraTest/alluratest/test_syntax.py | 8 +-
AlluraTest/alluratest/validation.py | 6 +-
AlluraTest/setup.py | 4 +
ForgeActivity/forgeactivity/__init__.py | 6 +-
ForgeActivity/forgeactivity/config/resources.py | 4 +
ForgeActivity/forgeactivity/main.py | 14 +-
.../forgeactivity/tests/functional/test_root.py | 4 +
ForgeActivity/forgeactivity/widgets/follow.py | 6 +-
ForgeActivity/setup.py | 4 +
ForgeBlog/forgeblog/command/base.py | 4 +
ForgeBlog/forgeblog/command/rssfeeds.py | 13 +-
ForgeBlog/forgeblog/main.py | 14 +-
ForgeBlog/forgeblog/model/__init__.py | 6 +-
ForgeBlog/forgeblog/model/blog.py | 6 +-
.../forgeblog/tests/functional/test_rest.py | 4 +
.../forgeblog/tests/functional/test_root.py | 4 +
ForgeBlog/forgeblog/tests/test_app.py | 4 +
ForgeBlog/forgeblog/tests/test_commands.py | 14 +-
ForgeBlog/forgeblog/tests/test_roles.py | 4 +
ForgeBlog/forgeblog/tests/unit/__init__.py | 4 +
.../forgeblog/tests/unit/test_blog_post.py | 4 +
ForgeBlog/forgeblog/version.py | 4 +
ForgeBlog/forgeblog/widgets.py | 4 +
ForgeBlog/setup.py | 4 +
ForgeChat/forgechat/command.py | 6 +-
ForgeChat/forgechat/main.py | 4 +
ForgeChat/forgechat/model/__init__.py | 6 +-
ForgeChat/forgechat/model/chat.py | 4 +
.../forgechat/tests/functional/test_root.py | 4 +
ForgeChat/forgechat/version.py | 4 +
ForgeChat/setup.py | 4 +
.../forgediscussion/controllers/__init__.py | 6 +-
.../forgediscussion/controllers/forum.py | 4 +
.../forgediscussion/controllers/root.py | 11 +-
ForgeDiscussion/forgediscussion/forum_main.py | 17 +-
.../forgediscussion/import_support.py | 15 +-
.../forgediscussion/model/__init__.py | 6 +-
ForgeDiscussion/forgediscussion/model/forum.py | 4 +
ForgeDiscussion/forgediscussion/site_stats.py | 8 +-
ForgeDiscussion/forgediscussion/tasks.py | 4 +
.../tests/functional/test_forum.py | 103 +-
.../tests/functional/test_forum_admin.py | 26 +-
.../tests/functional/test_import.py | 4 +
.../tests/functional/test_rest.py | 19 +-
.../forgediscussion/tests/test_app.py | 24 +-
.../forgediscussion/tests/test_forum_roles.py | 4 +
ForgeDiscussion/forgediscussion/utils.py | 4 +
ForgeDiscussion/forgediscussion/version.py | 4 +
.../forgediscussion/widgets/__init__.py | 10 +-
.../forgediscussion/widgets/admin.py | 6 +-
.../forgediscussion/widgets/forum_widgets.py | 4 +
ForgeDiscussion/setup.py | 4 +
ForgeGit/forgegit/controllers.py | 4 +
ForgeGit/forgegit/git_main.py | 4 +
ForgeGit/forgegit/model/__init__.py | 6 +-
ForgeGit/forgegit/model/git_repo.py | 10 +-
ForgeGit/forgegit/tests/__init__.py | 4 +
ForgeGit/forgegit/tests/functional/test_auth.py | 4 +
.../tests/functional/test_controllers.py | 22 +-
.../forgegit/tests/model/test_repository.py | 158 +-
ForgeGit/forgegit/tests/test_git_app.py | 4 +
ForgeGit/forgegit/tests/test_tasks.py | 4 +
ForgeGit/forgegit/version.py | 4 +
ForgeGit/setup.py | 4 +
ForgeImporters/docs/conf.py | 8 +-
ForgeImporters/forgeimporters/base.py | 24 +-
ForgeImporters/forgeimporters/forge/tracker.py | 4 +
.../forgeimporters/github/__init__.py | 8 +-
ForgeImporters/forgeimporters/github/code.py | 4 +
ForgeImporters/forgeimporters/github/project.py | 4 +
ForgeImporters/forgeimporters/github/tasks.py | 4 +
.../forgeimporters/github/tests/test_code.py | 12 +-
.../forgeimporters/github/tests/test_oauth.py | 4 +
.../forgeimporters/github/tests/test_tracker.py | 12 +-
.../forgeimporters/github/tests/test_utils.py | 20 +-
.../forgeimporters/github/tests/test_wiki.py | 176 +-
ForgeImporters/forgeimporters/github/tracker.py | 24 +-
ForgeImporters/forgeimporters/github/utils.py | 10 +-
ForgeImporters/forgeimporters/github/wiki.py | 24 +-
.../forgeimporters/google/__init__.py | 30 +-
ForgeImporters/forgeimporters/google/code.py | 8 +-
ForgeImporters/forgeimporters/google/project.py | 4 +
ForgeImporters/forgeimporters/google/tasks.py | 4 +
.../forgeimporters/google/tests/test_code.py | 10 +-
.../forgeimporters/google/tests/test_init.py | 4 +
ForgeImporters/forgeimporters/google/tracker.py | 24 +-
.../forgeimporters/tests/forge/test_tracker.py | 10 +-
.../tests/github/functional/test_github.py | 4 +
.../tests/github/test_extractor.py | 44 +-
.../forgeimporters/tests/github/test_tasks.py | 4 +
.../forgeimporters/tests/github/test_tracker.py | 10 +-
.../tests/google/functional/test_tracker.py | 4 +
.../tests/google/test_extractor.py | 26 +-
.../forgeimporters/tests/google/test_tasks.py | 4 +
.../forgeimporters/tests/google/test_tracker.py | 10 +-
.../forgeimporters/tests/test_base.py | 4 +
ForgeImporters/forgeimporters/trac/__init__.py | 4 +
ForgeImporters/forgeimporters/trac/project.py | 4 +
.../forgeimporters/trac/tests/test_tickets.py | 12 +-
ForgeImporters/forgeimporters/trac/tickets.py | 7 +-
ForgeImporters/setup.py | 4 +
ForgeLink/forgelink/link_main.py | 4 +
.../forgelink/tests/functional/test_rest.py | 18 +-
.../forgelink/tests/functional/test_root.py | 10 +-
ForgeLink/forgelink/tests/test_app.py | 4 +
ForgeLink/forgelink/version.py | 4 +
ForgeLink/setup.py | 4 +
ForgeSVN/forgesvn/controllers.py | 4 +
ForgeSVN/forgesvn/model/__init__.py | 6 +-
ForgeSVN/forgesvn/model/svn.py | 12 +-
ForgeSVN/forgesvn/svn_main.py | 6 +-
ForgeSVN/forgesvn/tests/__init__.py | 4 +
ForgeSVN/forgesvn/tests/functional/test_auth.py | 4 +
.../tests/functional/test_controllers.py | 6 +-
.../forgesvn/tests/model/test_repository.py | 152 +-
.../tests/model/test_svnimplementation.py | 4 +
ForgeSVN/forgesvn/tests/test_svn_app.py | 4 +
ForgeSVN/forgesvn/tests/test_tasks.py | 4 +
ForgeSVN/forgesvn/version.py | 4 +
ForgeSVN/forgesvn/widgets.py | 4 +
ForgeSVN/setup.py | 6 +-
ForgeShortUrl/forgeshorturl/main.py | 4 +
ForgeShortUrl/forgeshorturl/model/__init__.py | 4 +
ForgeShortUrl/forgeshorturl/model/shorturl.py | 4 +
.../forgeshorturl/tests/functional/test.py | 4 +
.../forgeshorturl/widgets/short_url.py | 4 +
ForgeShortUrl/setup.py | 4 +
.../forgetracker/command/fix_discussion.py | 4 +
ForgeTracker/forgetracker/config/resources.py | 4 +
ForgeTracker/forgetracker/import_support.py | 27 +-
ForgeTracker/forgetracker/model/__init__.py | 6 +-
ForgeTracker/forgetracker/model/ticket.py | 56 +-
ForgeTracker/forgetracker/plugins.py | 4 +
ForgeTracker/forgetracker/search.py | 8 +-
ForgeTracker/forgetracker/site_stats.py | 4 +
ForgeTracker/forgetracker/tasks.py | 4 +
.../tests/command/test_fix_discussion.py | 4 +
.../forgetracker/tests/functional/test_rest.py | 4 +
.../forgetracker/tests/functional/test_root.py | 102 +-
ForgeTracker/forgetracker/tests/test_app.py | 6 +-
.../forgetracker/tests/test_tracker_roles.py | 4 +
.../forgetracker/tests/unit/__init__.py | 4 +
.../tests/unit/test_globals_model.py | 4 +
.../tests/unit/test_milestone_controller.py | 8 +-
.../tests/unit/test_root_controller.py | 4 +
.../forgetracker/tests/unit/test_search.py | 4 +
.../unit/test_ticket_custom_fields_form.py | 4 +
.../forgetracker/tests/unit/test_ticket_form.py | 4 +
.../tests/unit/test_ticket_model.py | 38 +-
ForgeTracker/forgetracker/tracker_main.py | 32 +-
ForgeTracker/forgetracker/version.py | 4 +
ForgeTracker/forgetracker/widgets/admin.py | 4 +
.../forgetracker/widgets/admin_custom_fields.py | 4 +
ForgeTracker/forgetracker/widgets/bin_form.py | 4 +
.../forgetracker/widgets/ticket_form.py | 6 +-
.../forgetracker/widgets/ticket_search.py | 6 +-
ForgeTracker/setup.py | 4 +
.../forgeuserstats/controllers/userstats.py | 8 +-
ForgeUserStats/forgeuserstats/main.py | 8 +-
ForgeUserStats/forgeuserstats/model/stats.py | 4 +
.../forgeuserstats/tests/test_model.py | 12 +-
.../forgeuserstats/tests/test_stats.py | 4 +
ForgeUserStats/forgeuserstats/version.py | 4 +
ForgeUserStats/forgeuserstats/widgets/forms.py | 4 +
ForgeUserStats/setup.py | 4 +
ForgeWiki/forgewiki/converters.py | 6 +-
ForgeWiki/forgewiki/model/__init__.py | 6 +-
ForgeWiki/forgewiki/model/wiki.py | 6 +-
.../forgewiki/tests/functional/test_rest.py | 10 +-
.../forgewiki/tests/functional/test_root.py | 24 +-
ForgeWiki/forgewiki/tests/test_app.py | 4 +
ForgeWiki/forgewiki/tests/test_converters.py | 4 +
ForgeWiki/forgewiki/tests/test_models.py | 4 +
ForgeWiki/forgewiki/tests/test_wiki_roles.py | 4 +
ForgeWiki/forgewiki/version.py | 4 +
ForgeWiki/forgewiki/widgets/wiki.py | 4 +
ForgeWiki/forgewiki/wiki_main.py | 15 +-
ForgeWiki/setup.py | 4 +
LICENSE | 3 -
__init__.py | 27 +
app.py | 929 ++++++++
command/__init__.py | 28 +
command/base.py | 131 ++
command/create_neighborhood.py | 107 +
command/create_trove_categories.py | 2033 ++++++++++++++++++
command/reclone_repo.py | 74 +
command/script.py | 98 +
command/set_neighborhood_features.py | 96 +
command/show_models.py | 390 ++++
command/smtp_server.py | 66 +
command/taskd.py | 230 ++
command/taskd_cleanup.py | 210 ++
config/__init__.py | 18 +
config/app_cfg.py | 141 ++
config/environment.py | 35 +
config/middleware.py | 226 ++
config/resources.py | 58 +
controllers/__init__.py | 27 +
controllers/attachments.py | 106 +
controllers/auth.py | 1065 +++++++++
controllers/base.py | 58 +
controllers/basetest_project_root.py | 219 ++
controllers/discuss.py | 533 +++++
controllers/error.py | 44 +
controllers/feed.py | 115 +
controllers/project.py | 1050 +++++++++
controllers/repository.py | 796 +++++++
controllers/rest.py | 318 +++
controllers/root.py | 114 +
controllers/search.py | 137 ++
controllers/secure.py | 27 +
controllers/site_admin.py | 584 +++++
controllers/static.py | 56 +
controllers/task.py | 37 +
controllers/template.py | 60 +
controllers/trovecategories.py | 252 +++
eventslistener.py | 90 +
ext/__init__.py | 16 +
ext/admin/__init__.py | 22 +
ext/admin/admin_main.py | 1235 +++++++++++
ext/admin/templates/__init__.py | 16 +
ext/admin/templates/widgets/__init__.py | 16 +
ext/admin/widgets.py | 247 +++
ext/project_home/__init__.py | 22 +
ext/project_home/project_main.py | 95 +
ext/search/__init__.py | 22 +
ext/search/search_main.py | 98 +
ext/user_profile/__init__.py | 22 +
ext/user_profile/templates/__init__.py | 16 +
ext/user_profile/user_main.py | 368 ++++
fuse/accessfs.py | 14 +-
lib/AsciiDammit.py | 227 ++
lib/__init__.py | 18 +
lib/app_globals.py | 639 ++++++
lib/base.py | 77 +
lib/custom_middleware.py | 325 +++
lib/decorators.py | 218 ++
lib/diff.py | 121 ++
lib/exceptions.py | 101 +
lib/gravatar.py | 90 +
lib/helpers.py | 1231 +++++++++++
lib/import_api.py | 68 +
lib/macro.py | 477 ++++
lib/mail_util.py | 290 +++
lib/markdown_extensions.py | 569 +++++
lib/package_path_loader.py | 288 +++
lib/patches.py | 127 ++
lib/phone/__init__.py | 78 +
lib/phone/nexmo.py | 93 +
lib/plugin.py | 1502 +++++++++++++
lib/repository.py | 337 +++
lib/search.py | 336 +++
lib/security.py | 501 +++++
lib/solr.py | 190 ++
lib/spam/__init__.py | 57 +
lib/spam/akismetfilter.py | 107 +
lib/spam/mollomfilter.py | 97 +
lib/stats.py | 89 +
lib/utils.py | 612 ++++++
lib/validators.py | 424 ++++
lib/widgets/__init__.py | 26 +
lib/widgets/analytics.py | 29 +
lib/widgets/auth_widgets.py | 100 +
lib/widgets/discuss.py | 500 +++++
lib/widgets/form_fields.py | 554 +++++
lib/widgets/forms.py | 1173 ++++++++++
lib/widgets/macros.py | 62 +
lib/widgets/oauth_widgets.py | 47 +
lib/widgets/project_list.py | 144 ++
lib/widgets/repo.py | 118 +
lib/widgets/search.py | 64 +
lib/widgets/subscriptions.py | 92 +
lib/widgets/user_profile.py | 53 +
lib/widgets/vote.py | 35 +
lib/zarkov_helpers.py | 43 +
model/__init__.py | 54 +
model/artifact.py | 952 ++++++++
model/attachments.py | 89 +
model/auth.py | 1028 +++++++++
model/discuss.py | 793 +++++++
model/filesystem.py | 211 ++
model/index.py | 271 +++
model/monq_model.py | 297 +++
model/neighborhood.py | 295 +++
model/notification.py | 721 +++++++
model/oauth.py | 148 ++
model/project.py | 1280 +++++++++++
model/repo.py | 30 +
model/repo_refresh.py | 587 +++++
model/repository.py | 1988 +++++++++++++++++
model/session.py | 275 +++
model/stats.py | 619 ++++++
model/timeline.py | 150 ++
model/types.py | 118 +
model/webhook.py | 76 +
rat-excludes.txt | 1 -
scripts/ApacheAccessHandler.py | 4 +
scripts/__init__.py | 22 +
scripts/add_user_to_group.py | 4 +
scripts/allura_import.py | 10 +-
scripts/changelog.py | 10 +-
scripts/create-allura-sitemap.py | 12 +-
scripts/create-moved-tickets.py | 10 +-
scripts/create_deleted_comments.py | 114 +
scripts/fix-wiki-page-names.py | 4 +
scripts/import_trove_categories.py | 4 +
scripts/migrations/000-fix-tracker-fields.py | 4 +
scripts/migrations/001-restore-labels.py | 4 +
.../002-fix-tracker-thread-subjects.py | 4 +
scripts/migrations/003-migrate_project_roles.py | 4 +
.../004-make-attachments-polymorphic.py | 4 +
...005-remove_duplicate_ticket_notifications.py | 12 +-
scripts/migrations/006-migrate-artifact-refs.py | 4 +
scripts/migrations/007-update-acls.py | 12 +-
.../migrations/008-remove-forumpost-subject.py | 4 +
scripts/migrations/009-set_landing_page.py | 4 +
scripts/migrations/010-fix-home-permissions.py | 4 +
scripts/migrations/011-fix-subroles.py | 4 +
scripts/migrations/012-uninstall-home.py | 4 +
scripts/migrations/013-update-ordinals.py | 4 +
.../015-add-neighborhood_id-to-blog-posts.py | 4 +
scripts/migrations/018-add-svn-checkout-url.py | 4 +
.../migrations/020-remove-wiki-title-slashes.py | 8 +-
.../migrations/022-change-anon-display-name.py | 4 +
.../024-migrate-custom-profile-text.py | 4 +
scripts/migrations/025-add-is-nbhd-project.py | 4 +
scripts/migrations/026-install-activity-tool.py | 4 +
.../027-change-ticket-write-permissions.py | 4 +
scripts/migrations/028-remove-svn-trees.py | 10 +-
.../migrations/029-set-mailbox-queue_empty.py | 4 +
.../migrations/031-set-user-pending-to-false.py | 6 +-
scripts/new_ticket.py | 14 +-
scripts/open_relay.py | 4 +
scripts/perf/benchmark-scm.py | 10 +-
scripts/perf/call_count.py | 12 +-
scripts/perf/generate-projects.py | 10 +-
scripts/perf/md_perf.py | 20 +-
scripts/perf/sstress.py | 8 +-
scripts/perf/test_git_lcd.py | 8 +-
scripts/prep-scm-sandbox.py | 16 +-
scripts/prepare-allura-tickets-for-import.py | 4 +
scripts/project-import.py | 8 +-
scripts/publicize-neighborhood.py | 4 +
scripts/recover-user-databases.py | 4 +
scripts/refresh_last_commits.py | 193 ++
scripts/refreshrepo.py | 203 ++
scripts/reindex_projects.py | 117 +
scripts/reindex_users.py | 93 +
scripts/remove_duplicate_troves.py | 134 ++
scripts/rethumb.py | 6 +-
scripts/scripttask.py | 99 +
scripts/scrub-allura-data.py | 4 +
scripts/setup-scm-server.py | 4 +
scripts/teamforge-import.py | 6 +-
scripts/test-branches-against-tickets.py | 4 +
scripts/trac_export.py | 312 ++-
scripts/trim_emails.py | 58 +
scripts/update_checkout_url.py | 57 +
scripts/wiki-copy.py | 16 +-
scripts/wiki-export.py | 4 +
scripts/wiki-post.py | 10 +-
tasks/__init__.py | 16 +
tasks/activity_tasks.py | 29 +
tasks/admin_tasks.py | 43 +
tasks/event_tasks.py | 40 +
tasks/export_tasks.py | 132 ++
tasks/index_tasks.py | 138 ++
tasks/mail_tasks.py | 209 ++
tasks/notification_tasks.py | 29 +
tasks/repo_tasks.py | 176 ++
templates/__init__.py | 24 +
templates/discussion/__init__.py | 16 +
templates/macro/__init__.py | 16 +
templates/oembed/__init__.py | 16 +
templates/repo/__init__.py | 16 +
templates/widgets/__init__.py | 16 +
tests/__init__.py | 39 +
tests/decorators.py | 201 ++
tests/functional/__init__.py | 24 +
tests/functional/test_admin.py | 1351 ++++++++++++
tests/functional/test_auth.py | 1798 ++++++++++++++++
tests/functional/test_discuss.py | 327 +++
tests/functional/test_feeds.py | 100 +
tests/functional/test_gravatar.py | 55 +
tests/functional/test_home.py | 171 ++
tests/functional/test_neighborhood.py | 1057 +++++++++
tests/functional/test_rest.py | 355 +++
tests/functional/test_root.py | 186 ++
tests/functional/test_search.py | 37 +
tests/functional/test_site_admin.py | 575 +++++
tests/functional/test_static.py | 30 +
tests/functional/test_subscriber.py | 43 +
tests/functional/test_tool_list.py | 48 +
tests/functional/test_trovecategory.py | 124 ++
tests/functional/test_user_profile.py | 180 ++
tests/model/__init__.py | 24 +
tests/model/test_artifact.py | 229 ++
tests/model/test_auth.py | 420 ++++
tests/model/test_discussion.py | 519 +++++
tests/model/test_filesystem.py | 220 ++
tests/model/test_monq.py | 46 +
tests/model/test_neighborhood.py | 97 +
tests/model/test_notification.py | 487 +++++
tests/model/test_project.py | 191 ++
tests/model/test_repo.py | 816 +++++++
tests/templates/__init__.py | 17 +
tests/templates/jinja_master/__init__.py | 17 +
tests/templates/jinja_master/test_lib.py | 86 +
tests/test_app.py | 71 +
tests/test_commands.py | 478 ++++
tests/test_decorators.py | 60 +
tests/test_diff.py | 150 ++
tests/test_dispatch.py | 38 +
tests/test_globals.py | 858 ++++++++
tests/test_helpers.py | 568 +++++
tests/test_mail_util.py | 238 ++
tests/test_markdown.py | 152 ++
tests/test_plugin.py | 416 ++++
tests/test_scripttask.py | 47 +
tests/test_security.py | 196 ++
tests/test_tasks.py | 593 +++++
tests/test_utils.py | 321 +++
tests/test_validators.py | 291 +++
tests/test_webhooks.py | 899 ++++++++
tests/test_zarkov_helpers.py | 57 +
tests/tscript.py | 33 +
tests/tscript_error.py | 23 +
tests/unit/__init__.py | 47 +
tests/unit/controllers/__init__.py | 16 +
tests/unit/controllers/test_auth.py | 35 +
.../test_discussion_moderation_controller.py | 116 +
tests/unit/controllers/test_dispatch_index.py | 45 +
tests/unit/factories.py | 90 +
tests/unit/patches.py | 56 +
tests/unit/phone/__init__.py | 16 +
tests/unit/phone/test_nexmo.py | 140 ++
tests/unit/phone/test_phone_service.py | 61 +
tests/unit/spam/__init__.py | 16 +
tests/unit/spam/test_akismet.py | 141 ++
tests/unit/spam/test_mollom.py | 100 +
tests/unit/spam/test_spam_filter.py | 62 +
tests/unit/test_app.py | 118 +
tests/unit/test_artifact.py | 33 +
tests/unit/test_discuss.py | 43 +
tests/unit/test_helpers/__init__.py | 16 +
tests/unit/test_helpers/test_ago.py | 68 +
tests/unit/test_helpers/test_set_context.py | 121 ++
tests/unit/test_ldap_auth_provider.py | 156 ++
tests/unit/test_mixins.py | 91 +
tests/unit/test_package_path_loader.py | 232 ++
tests/unit/test_post_model.py | 56 +
tests/unit/test_project.py | 105 +
tests/unit/test_repo.py | 361 ++++
tests/unit/test_session.py | 258 +++
tests/unit/test_sitemapentry.py | 38 +
tests/unit/test_solr.py | 238 ++
version.py | 23 +
webhooks.py | 493 +++++
websetup/__init__.py | 42 +
websetup/bootstrap.py | 357 +++
websetup/schema.py | 55 +
687 files changed, 60024 insertions(+), 2805 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/allura/blob/d52f8e2a/Allura/.ipynb_checkpoints/Untitled-checkpoint.ipynb
----------------------------------------------------------------------
diff --git a/Allura/.ipynb_checkpoints/Untitled-checkpoint.ipynb b/Allura/.ipynb_checkpoints/Untitled-checkpoint.ipynb
new file mode 100644
index 0000000..286dcb3
--- /dev/null
+++ b/Allura/.ipynb_checkpoints/Untitled-checkpoint.ipynb
@@ -0,0 +1,6 @@
+{
+ "cells": [],
+ "metadata": {},
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
http://git-wip-us.apache.org/repos/asf/allura/blob/d52f8e2a/Allura/LICENSE
----------------------------------------------------------------------
diff --git a/Allura/LICENSE b/Allura/LICENSE
index a447b69..d2b93e1 100644
--- a/Allura/LICENSE
+++ b/Allura/LICENSE
@@ -242,6 +242,3 @@ For details, see allura/public/nf/js/sylvester.js
Modernizr, which is available under the MIT license.
For details, see allura/public/nf/js/modernizr.js
-
-React.js, which is available under the BSD license.
-For details, see Allura/allura/public/nf/js/react.min.js
http://git-wip-us.apache.org/repos/asf/allura/blob/d52f8e2a/Allura/allura/__init__.py
----------------------------------------------------------------------
diff --git a/Allura/allura/__init__.py b/Allura/allura/__init__.py
index ebf903b..ef58e09 100644
--- a/Allura/allura/__init__.py
+++ b/Allura/allura/__init__.py
@@ -18,6 +18,10 @@
# under the License.
"""The allura package"""
+from __future__ import print_function
+from __future__ import division
+from __future__ import absolute_import
+from __future__ import unicode_literals
from paste.registry import StackedObjectProxy
credentials = StackedObjectProxy(name='credentials')
http://git-wip-us.apache.org/repos/asf/allura/blob/d52f8e2a/Allura/allura/app.py
----------------------------------------------------------------------
diff --git a/Allura/allura/app.py b/Allura/allura/app.py
index 3e226db..102c538 100644
--- a/Allura/allura/app.py
+++ b/Allura/allura/app.py
@@ -1,3 +1,7 @@
+from __future__ import print_function
+from __future__ import division
+from __future__ import absolute_import
+from __future__ import unicode_literals
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
@@ -18,7 +22,7 @@
import os
import logging
from urllib import basejoin
-from cStringIO import StringIO
+from io import StringIO
from collections import defaultdict
from xml.etree import ElementTree as ET
@@ -43,6 +47,7 @@ from allura.controllers import BaseController
from allura.lib.decorators import require_post, memoize
from allura.lib.utils import permanent_redirect, ConfigProxy
from allura import model as M
+import collections
log = logging.getLogger(__name__)
@@ -67,7 +72,7 @@ class ConfigOption(object):
"""Return the default value for this ConfigOption.
"""
- if callable(self._default):
+ if isinstance(self._default, collections.Callable):
return self._default()
return self._default
@@ -135,7 +140,7 @@ class SitemapEntry(object):
"""
lbl = self.label
url = self.url
- if callable(lbl):
+ if isinstance(lbl, collections.Callable):
lbl = lbl(app)
if url is not None:
url = basejoin(app.url, url)
@@ -549,7 +554,7 @@ class Application(object):
:return: a list of :class:`WebhookSender <allura.webhooks.WebhookSender>`
"""
tool_name = self.config.tool_name.lower()
- webhooks = [w for w in g.entry_points['webhooks'].itervalues()
+ webhooks = [w for w in g.entry_points['webhooks'].values()
if tool_name in w.triggered_by]
return webhooks
@@ -660,7 +665,7 @@ class Application(object):
Set exportable to True for applications implementing this.
"""
- raise NotImplementedError, 'bulk_export'
+ raise NotImplementedError('bulk_export')
def doap(self, parent):
"""App's representation for DOAP API.
@@ -738,7 +743,7 @@ class DefaultAdminController(BaseController):
@require_post()
def unblock_user(self, user_id=None, perm=None):
try:
- user_id = map(ObjectId, user_id)
+ user_id = list(map(ObjectId, user_id))
except InvalidId:
user_id = []
users = model.User.query.find({'_id': {'$in': user_id}}).all()
@@ -759,7 +764,7 @@ class DefaultAdminController(BaseController):
"""Render the permissions management web page.
"""
- from ext.admin.widgets import PermissionCard, BlockUser, BlockList
+ from .ext.admin.widgets import PermissionCard, BlockUser, BlockList
c.card = PermissionCard()
c.block_user = BlockUser()
c.block_list = BlockList()
@@ -862,9 +867,9 @@ class DefaultAdminController(BaseController):
new_group_ids = args.get('new', [])
del_group_ids = []
group_ids = args.get('value', [])
- if isinstance(new_group_ids, basestring):
+ if isinstance(new_group_ids, str):
new_group_ids = [new_group_ids]
- if isinstance(group_ids, basestring):
+ if isinstance(group_ids, str):
group_ids = [group_ids]
for acl in old_acl:
@@ -872,18 +877,18 @@ class DefaultAdminController(BaseController):
del_group_ids.append(str(acl['role_id']))
get_role = lambda _id: model.ProjectRole.query.get(_id=ObjectId(_id))
- groups = map(get_role, group_ids)
- new_groups = map(get_role, new_group_ids)
- del_groups = map(get_role, del_group_ids)
+ groups = list(map(get_role, group_ids))
+ new_groups = list(map(get_role, new_group_ids))
+ del_groups = list(map(get_role, del_group_ids))
if new_groups or del_groups:
model.AuditLog.log('updated "%s" permission: "%s" => "%s" for %s' % (
perm,
- ', '.join(map(lambda role: role.name, filter(None, groups + del_groups))),
- ', '.join(map(lambda role: role.name, filter(None, groups + new_groups))),
+ ', '.join([role.name for role in [_f for _f in groups + del_groups if _f]]),
+ ', '.join([role.name for role in [_f for _f in groups + new_groups if _f]]),
self.app.config.options['mount_point']))
- role_ids = map(ObjectId, group_ids + new_group_ids)
+ role_ids = list(map(ObjectId, group_ids + new_group_ids))
self.app.config.acl += [
model.ACE.allow(r, perm) for r in role_ids]
@@ -921,4 +926,4 @@ class WebhooksLookup(BaseController):
for hook in self.app._webhooks:
if hook.type == name and hook.controller:
return hook.controller(hook, self.app), remainder
- raise exc.HTTPNotFound, name
+ raise exc.HTTPNotFound(name)
http://git-wip-us.apache.org/repos/asf/allura/blob/d52f8e2a/Allura/allura/command/__init__.py
----------------------------------------------------------------------
diff --git a/Allura/allura/command/__init__.py b/Allura/allura/command/__init__.py
index 24254aa..051d97f 100644
--- a/Allura/allura/command/__init__.py
+++ b/Allura/allura/command/__init__.py
@@ -1,3 +1,7 @@
+from __future__ import print_function
+from __future__ import division
+from __future__ import absolute_import
+from __future__ import unicode_literals
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
@@ -15,10 +19,10 @@
# specific language governing permissions and limitations
# under the License.
-from base import Command
-from show_models import ShowModelsCommand, ReindexCommand, EnsureIndexCommand
-from script import ScriptCommand, SetToolAccessCommand
-from smtp_server import SMTPServerCommand
-from create_neighborhood import CreateNeighborhoodCommand, UpdateNeighborhoodCommand
-from create_trove_categories import CreateTroveCategoriesCommand
-from set_neighborhood_features import SetNeighborhoodFeaturesCommand
+from .base import Command
+from .show_models import ShowModelsCommand, ReindexCommand, EnsureIndexCommand
+from .script import ScriptCommand, SetToolAccessCommand
+from .smtp_server import SMTPServerCommand
+from .create_neighborhood import CreateNeighborhoodCommand, UpdateNeighborhoodCommand
+from .create_trove_categories import CreateTroveCategoriesCommand
+from .set_neighborhood_features import SetNeighborhoodFeaturesCommand
http://git-wip-us.apache.org/repos/asf/allura/blob/d52f8e2a/Allura/allura/command/base.py
----------------------------------------------------------------------
diff --git a/Allura/allura/command/base.py b/Allura/allura/command/base.py
index 3d619fc..48fa41d 100644
--- a/Allura/allura/command/base.py
+++ b/Allura/allura/command/base.py
@@ -1,3 +1,7 @@
+from __future__ import print_function
+from __future__ import division
+from __future__ import absolute_import
+from __future__ import unicode_literals
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
@@ -109,7 +113,7 @@ class Command(command.Command):
# Probably being called from another script (websetup, perhaps?)
log = logging.getLogger('allura.command')
conf = pylons.config
- self.tools = pylons.app_globals.entry_points['tool'].values()
+ self.tools = list(pylons.app_globals.entry_points['tool'].values())
for ep in iter_entry_points('allura.command_init'):
log.info('Running command_init for %s', ep.name)
ep.load()(conf)
http://git-wip-us.apache.org/repos/asf/allura/blob/d52f8e2a/Allura/allura/command/create_neighborhood.py
----------------------------------------------------------------------
diff --git a/Allura/allura/command/create_neighborhood.py b/Allura/allura/command/create_neighborhood.py
index db79bb0..4456308 100644
--- a/Allura/allura/command/create_neighborhood.py
+++ b/Allura/allura/command/create_neighborhood.py
@@ -1,3 +1,7 @@
+from __future__ import print_function
+from __future__ import division
+from __future__ import absolute_import
+from __future__ import unicode_literals
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
http://git-wip-us.apache.org/repos/asf/allura/blob/d52f8e2a/Allura/allura/command/create_trove_categories.py
----------------------------------------------------------------------
diff --git a/Allura/allura/command/create_trove_categories.py b/Allura/allura/command/create_trove_categories.py
index eba9244..eca8946 100644
--- a/Allura/allura/command/create_trove_categories.py
+++ b/Allura/allura/command/create_trove_categories.py
@@ -1,3 +1,7 @@
+from __future__ import print_function
+from __future__ import division
+from __future__ import absolute_import
+from __future__ import unicode_literals
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
@@ -62,7 +66,7 @@ class CreateTroveCategoriesCommand(base.Command):
sys.exit("Couldn't find TroveCategory with trove_cat_id=%s" %
trove_cat_id)
for t in ts:
- for k, v in attr_dict.iteritems():
+ for k, v in attr_dict.items():
setattr(t, k, v)
# patching to avoid a *lot* of event hooks firing, and taking a long long time
http://git-wip-us.apache.org/repos/asf/allura/blob/d52f8e2a/Allura/allura/command/reclone_repo.py
----------------------------------------------------------------------
diff --git a/Allura/allura/command/reclone_repo.py b/Allura/allura/command/reclone_repo.py
index d401b0b..dcde7d5 100644
--- a/Allura/allura/command/reclone_repo.py
+++ b/Allura/allura/command/reclone_repo.py
@@ -1,3 +1,7 @@
+from __future__ import print_function
+from __future__ import division
+from __future__ import absolute_import
+from __future__ import unicode_literals
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
http://git-wip-us.apache.org/repos/asf/allura/blob/d52f8e2a/Allura/allura/command/script.py
----------------------------------------------------------------------
diff --git a/Allura/allura/command/script.py b/Allura/allura/command/script.py
index 1f2c93a..d47167e 100644
--- a/Allura/allura/command/script.py
+++ b/Allura/allura/command/script.py
@@ -1,3 +1,7 @@
+from __future__ import print_function
+from __future__ import division
+from __future__ import absolute_import
+from __future__ import unicode_literals
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
@@ -63,7 +67,7 @@ class ScriptCommand(base.Command):
cProfile.run(fp, '%s.profile' %
os.path.basename(self.args[1]))
else:
- exec fp in ns
+ exec(fp, ns)
class SetToolAccessCommand(base.Command):
@@ -85,10 +89,10 @@ class SetToolAccessCommand(base.Command):
' so removing from list.')
continue
if s not in ('alpha', 'beta'):
- print 'Unknown tool status %s' % s
+ print('Unknown tool status %s' % s)
sys.exit(1)
extra_status.append(s)
- print 'Setting project "%s" tool access to production + %r' % (
- self.args[1], extra_status)
+ print('Setting project "%s" tool access to production + %r' % (
+ self.args[1], extra_status))
c.project._extra_tool_status = extra_status
session(c.project).flush()
http://git-wip-us.apache.org/repos/asf/allura/blob/d52f8e2a/Allura/allura/command/set_neighborhood_features.py
----------------------------------------------------------------------
diff --git a/Allura/allura/command/set_neighborhood_features.py b/Allura/allura/command/set_neighborhood_features.py
index 36ba22b..f3fbaac 100644
--- a/Allura/allura/command/set_neighborhood_features.py
+++ b/Allura/allura/command/set_neighborhood_features.py
@@ -1,3 +1,7 @@
+from __future__ import print_function
+from __future__ import division
+from __future__ import absolute_import
+from __future__ import unicode_literals
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
http://git-wip-us.apache.org/repos/asf/allura/blob/d52f8e2a/Allura/allura/command/show_models.py
----------------------------------------------------------------------
diff --git a/Allura/allura/command/show_models.py b/Allura/allura/command/show_models.py
index d941e9e..70bbf86 100644
--- a/Allura/allura/command/show_models.py
+++ b/Allura/allura/command/show_models.py
@@ -1,3 +1,7 @@
+from __future__ import print_function
+from __future__ import division
+from __future__ import absolute_import
+from __future__ import unicode_literals
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
@@ -46,7 +50,7 @@ class ShowModelsCommand(base.Command):
graph = build_model_inheritance_graph()
for depth, cls in dfs(MappedClass, graph):
for line in dump_cls(depth, cls):
- print line
+ print(line)
class ReindexCommand(base.Command):
@@ -136,7 +140,7 @@ class ReindexCommand(base.Command):
M.artifact_orm_session.clear()
try:
self._chunked_add_artifacts(ref_ids)
- except CompoundError, err:
+ except CompoundError as err:
base.log.exception(
'Error indexing artifacts:\n%r', err)
base.log.error('%s', err.format_error())
@@ -232,14 +236,14 @@ class EnsureIndexCommand(base.Command):
idx = project_indexes[cname]
idx.extend(mgr.indexes)
base.log.info('Updating indexes for main DB')
- for odm_session, db_indexes in main_indexes.iteritems():
+ for odm_session, db_indexes in main_indexes.items():
db = odm_session.impl.db
- for name, indexes in db_indexes.iteritems():
+ for name, indexes in db_indexes.items():
self._update_indexes(db[name], indexes)
base.log.info('Updating indexes for project DB')
db = M.project_doc_session.db
base.log.info('... DB: %s', db)
- for name, indexes in project_indexes.iteritems():
+ for name, indexes in project_indexes.items():
self._update_indexes(db[name], indexes)
base.log.info('Done updating indexes')
@@ -257,7 +261,7 @@ class EnsureIndexCommand(base.Command):
prev_uindexes = {}
unique_flag_drop = {}
unique_flag_add = {}
- for iname, fields in collection.index_information().iteritems():
+ for iname, fields in collection.index_information().items():
if iname == '_id_':
continue
keys = tuple(fields['key'])
@@ -272,31 +276,31 @@ class EnsureIndexCommand(base.Command):
else:
prev_indexes[iname] = keys
- for iname, keys in unique_flag_drop.iteritems():
+ for iname, keys in unique_flag_drop.items():
self._recreate_index(collection, iname, list(keys), unique=False)
- for iname, keys in unique_flag_add.iteritems():
+ for iname, keys in unique_flag_add.items():
self._recreate_index(collection, iname, list(keys), unique=True)
# Ensure all indexes
- for keys, idx in uindexes.iteritems():
+ for keys, idx in uindexes.items():
base.log.info('...... ensure %s:%s', collection.name, idx)
while True:
try:
collection.ensure_index(idx.index_spec, unique=True)
break
- except DuplicateKeyError, err:
+ except DuplicateKeyError as err:
base.log.info('Found dupe key(%s), eliminating dupes', err)
self._remove_dupes(collection, idx.index_spec)
- for keys, idx in indexes.iteritems():
+ for keys, idx in indexes.items():
base.log.info('...... ensure %s:%s', collection.name, idx)
collection.ensure_index(idx.index_spec, background=True)
# Drop obsolete indexes
- for iname, keys in prev_indexes.iteritems():
+ for iname, keys in prev_indexes.items():
if keys not in indexes:
base.log.info('...... drop index %s:%s',
collection.name, iname)
collection.drop_index(iname)
- for iname, keys in prev_uindexes.iteritems():
+ for iname, keys in prev_uindexes.items():
if keys not in uindexes:
base.log.info('...... drop index %s:%s',
collection.name, iname)
@@ -337,7 +341,7 @@ class EnsureIndexCommand(base.Command):
def build_model_inheritance_graph():
graph = dict((m.mapped_class, ([], [])) for m in Mapper.all_mappers())
- for cls, (parents, children) in graph.iteritems():
+ for cls, (parents, children) in graph.items():
for b in cls.__bases__:
if b not in graph:
continue
http://git-wip-us.apache.org/repos/asf/allura/blob/d52f8e2a/Allura/allura/command/smtp_server.py
----------------------------------------------------------------------
diff --git a/Allura/allura/command/smtp_server.py b/Allura/allura/command/smtp_server.py
index 40008d7..7e98b88 100644
--- a/Allura/allura/command/smtp_server.py
+++ b/Allura/allura/command/smtp_server.py
@@ -1,3 +1,7 @@
+from __future__ import print_function
+from __future__ import division
+from __future__ import absolute_import
+from __future__ import unicode_literals
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
http://git-wip-us.apache.org/repos/asf/allura/blob/d52f8e2a/Allura/allura/command/taskd.py
----------------------------------------------------------------------
diff --git a/Allura/allura/command/taskd.py b/Allura/allura/command/taskd.py
index 409e701..d24eb1f 100644
--- a/Allura/allura/command/taskd.py
+++ b/Allura/allura/command/taskd.py
@@ -1,3 +1,7 @@
+from __future__ import print_function
+from __future__ import division
+from __future__ import absolute_import
+from __future__ import unicode_literals
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
@@ -18,7 +22,7 @@
import logging
import os
import time
-import Queue
+import queue
from contextlib import contextmanager
from datetime import datetime, timedelta
import signal
@@ -32,7 +36,7 @@ from paste.deploy import loadapp
from paste.deploy.converters import asint
from webob import Request
-import base
+from . import base
faulthandler.enable()
@@ -193,7 +197,7 @@ class TaskCommand(base.Command):
else:
q = dict(state=self.options.state)
for t in M.MonQTask.query.find(q):
- print t
+ print(t)
def _retry(self):
'''Retry tasks in an error state'''
http://git-wip-us.apache.org/repos/asf/allura/blob/d52f8e2a/Allura/allura/command/taskd_cleanup.py
----------------------------------------------------------------------
diff --git a/Allura/allura/command/taskd_cleanup.py b/Allura/allura/command/taskd_cleanup.py
index 517917f..8d6862a 100644
--- a/Allura/allura/command/taskd_cleanup.py
+++ b/Allura/allura/command/taskd_cleanup.py
@@ -1,3 +1,7 @@
+from __future__ import print_function
+from __future__ import division
+from __future__ import absolute_import
+from __future__ import unicode_literals
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
@@ -23,7 +27,7 @@ import subprocess
from ming.orm.ormsession import ThreadLocalORMSession
from allura import model as M
-import base
+from . import base
class TaskdCleanupCommand(base.Command):
http://git-wip-us.apache.org/repos/asf/allura/blob/d52f8e2a/Allura/allura/config/app_cfg.py
----------------------------------------------------------------------
diff --git a/Allura/allura/config/app_cfg.py b/Allura/allura/config/app_cfg.py
index b21979b..c068f60 100644
--- a/Allura/allura/config/app_cfg.py
+++ b/Allura/allura/config/app_cfg.py
@@ -30,6 +30,10 @@ convert them into boolean, for example, you should use the
setting = asbool(global_conf.get('the_setting'))
"""
+from __future__ import print_function
+from __future__ import division
+from __future__ import absolute_import
+from __future__ import unicode_literals
import logging
from functools import partial
@@ -103,7 +107,7 @@ class ForgeConfig(AppConfig):
jinja2_env.install_gettext_translations(pylons.i18n)
jinja2_env.filters['filesizeformat'] = helpers.do_filesizeformat
jinja2_env.filters['datetimeformat'] = helpers.datetimeformat
- jinja2_env.filters['filter'] = lambda s,t=None: filter(t and jinja2_env.tests[t], s)
+ jinja2_env.filters['filter'] = lambda s,t=None: list(filter(t and jinja2_env.tests[t], s))
jinja2_env.filters['map'] = helpers.map_jinja_filter
jinja2_env.filters['nl2br'] = helpers.nl2br_jinja_filter
jinja2_env.globals.update({'hasattr': hasattr})
@@ -123,7 +127,7 @@ class JinjaEngine(ew.TemplateEngine):
try:
return self._environ.get_template(template_name)
except jinja2.TemplateNotFound:
- raise ew.errors.TemplateNotFound, '%s not found' % template_name
+ raise ew.errors.TemplateNotFound('%s not found' % template_name)
def parse(self, template_text, filepath=None):
return self._environ.from_string(template_text)
http://git-wip-us.apache.org/repos/asf/allura/blob/d52f8e2a/Allura/allura/config/environment.py
----------------------------------------------------------------------
diff --git a/Allura/allura/config/environment.py b/Allura/allura/config/environment.py
index 35676fd..445303a 100644
--- a/Allura/allura/config/environment.py
+++ b/Allura/allura/config/environment.py
@@ -18,6 +18,10 @@
# under the License.
"""WSGI environment setup for allura."""
+from __future__ import print_function
+from __future__ import division
+from __future__ import absolute_import
+from __future__ import unicode_literals
import pylons.middleware
import tg
http://git-wip-us.apache.org/repos/asf/allura/blob/d52f8e2a/Allura/allura/config/middleware.py
----------------------------------------------------------------------
diff --git a/Allura/allura/config/middleware.py b/Allura/allura/config/middleware.py
index 840a39c..1e7964d 100644
--- a/Allura/allura/config/middleware.py
+++ b/Allura/allura/config/middleware.py
@@ -18,6 +18,10 @@
# under the License.
"""WSGI middleware initialization for the allura application."""
+from __future__ import print_function
+from __future__ import division
+from __future__ import absolute_import
+from __future__ import unicode_literals
import mimetypes
import pylons.middleware
@@ -121,9 +125,9 @@ def _make_core_app(root, global_conf, full_stack=True, **app_conf):
try:
import zmq
except ImportError:
- raise ImportError, "Unable to import the zmq library. Please"\
+ raise ImportError("Unable to import the zmq library. Please"\
" check that zeromq is installed or comment out"\
- " the zarkov.host setting in your ini file."
+ " the zarkov.host setting in your ini file.")
app = tg.TGApp()
@@ -207,7 +211,7 @@ def get_tg_vars(context):
import pylons
import tg
from allura.lib import helpers as h
- from urllib import quote, quote_plus
+ from urllib.parse import quote, quote_plus
context.setdefault('g', pylons.app_globals)
context.setdefault('c', pylons.tmpl_context)
context.setdefault('h', h)
http://git-wip-us.apache.org/repos/asf/allura/blob/d52f8e2a/Allura/allura/config/resources.py
----------------------------------------------------------------------
diff --git a/Allura/allura/config/resources.py b/Allura/allura/config/resources.py
index e8717fe..e24ad0d 100644
--- a/Allura/allura/config/resources.py
+++ b/Allura/allura/config/resources.py
@@ -1,3 +1,7 @@
+from __future__ import print_function
+from __future__ import division
+from __future__ import absolute_import
+from __future__ import unicode_literals
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
http://git-wip-us.apache.org/repos/asf/allura/blob/d52f8e2a/Allura/allura/controllers/__init__.py
----------------------------------------------------------------------
diff --git a/Allura/allura/controllers/__init__.py b/Allura/allura/controllers/__init__.py
index a69bafb..9a50246 100644
--- a/Allura/allura/controllers/__init__.py
+++ b/Allura/allura/controllers/__init__.py
@@ -18,6 +18,10 @@
# under the License.
"""Controllers for the allura application."""
+from __future__ import print_function
+from __future__ import division
+from __future__ import absolute_import
+from __future__ import unicode_literals
from .discuss import DiscussionController, AppDiscussionController, ThreadController, PostController, ModerationController
from .discuss import AppDiscussionRestController
from .base import BaseController, DispatchIndex
http://git-wip-us.apache.org/repos/asf/allura/blob/d52f8e2a/Allura/allura/controllers/attachments.py
----------------------------------------------------------------------
diff --git a/Allura/allura/controllers/attachments.py b/Allura/allura/controllers/attachments.py
index da25767..0a6db4d 100644
--- a/Allura/allura/controllers/attachments.py
+++ b/Allura/allura/controllers/attachments.py
@@ -1,3 +1,7 @@
+from __future__ import print_function
+from __future__ import division
+from __future__ import absolute_import
+from __future__ import unicode_literals
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
@@ -15,7 +19,7 @@
# specific language governing permissions and limitations
# under the License.
-from urllib import unquote
+from urllib.parse import unquote
from webob import exc
from tg import expose, request, redirect
@@ -88,8 +92,6 @@ class AttachmentController(BaseController):
if request.method == 'POST':
self.handle_post(delete, **kw)
redirect(request.referer)
- if self.artifact.deleted:
- raise exc.HTTPNotFound
embed = False
if self.attachment.content_type and self.attachment.content_type.startswith('image/'):
embed = True
@@ -97,6 +99,4 @@ class AttachmentController(BaseController):
@expose()
def thumb(self):
- if self.artifact.deleted:
- raise exc.HTTPNotFound
return self.thumbnail.serve(embed=True)
http://git-wip-us.apache.org/repos/asf/allura/blob/d52f8e2a/Allura/allura/controllers/auth.py
----------------------------------------------------------------------
diff --git a/Allura/allura/controllers/auth.py b/Allura/allura/controllers/auth.py
index f4f03c9..0e95e09 100644
--- a/Allura/allura/controllers/auth.py
+++ b/Allura/allura/controllers/auth.py
@@ -1,3 +1,7 @@
+from __future__ import print_function
+from __future__ import division
+from __future__ import absolute_import
+from __future__ import unicode_literals
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
@@ -28,7 +32,7 @@ from pylons import tmpl_context as c, app_globals as g
from pylons import request, response
from webob import exc as wexc
from paste.deploy.converters import asbool
-from urlparse import urlparse, urljoin
+from urllib.parse import urlparse, urljoin
import allura.tasks.repo_tasks
from allura import model as M
@@ -250,7 +254,7 @@ class AuthController(BaseController):
def send_verification_link(self, a):
addr = M.EmailAddress.get(email=a, claimed_by_user_id=c.user._id)
confirmed_emails = M.EmailAddress.find(dict(email=a, confirmed=True)).all()
- confirmed_emails = filter(lambda item: item != addr, confirmed_emails)
+ confirmed_emails = [item for item in confirmed_emails if item != addr]
if addr:
if any(email.confirmed for email in confirmed_emails):
@@ -264,7 +268,7 @@ class AuthController(BaseController):
def _verify_addr(self, addr):
confirmed_by_other = M.EmailAddress.find(dict(email=addr.email, confirmed=True)).all() if addr else []
- confirmed_by_other = filter(lambda item: item != addr, confirmed_by_other)
+ confirmed_by_other = [item for item in confirmed_by_other if item != addr]
if addr and not confirmed_by_other:
addr.confirmed = True
@@ -505,7 +509,7 @@ class PreferencesController(BaseController):
user.email_addresses.append(em.email)
em.claimed_by_user_id = user._id
- confirmed_emails = filter(lambda email: email.confirmed, claimed_emails)
+ confirmed_emails = [email for email in claimed_emails if email.confirmed]
if not confirmed_emails:
if not admin:
em.send_verification_link()
@@ -558,7 +562,7 @@ class PreferencesController(BaseController):
c.user.set_pref('display_name', preferences['display_name'])
if old != preferences['display_name']:
h.auditlog_user('Display Name changed %s => %s', old, preferences['display_name'])
- for k, v in preferences.iteritems():
+ for k, v in preferences.items():
if k == 'results_per_page':
v = int(v)
c.user.set_pref(k, v)
@@ -588,7 +592,7 @@ class PreferencesController(BaseController):
ap = plugin.AuthenticationProvider.get(request)
try:
ap.upload_sshkey(c.user.username, key)
- except AssertionError, ae:
+ except AssertionError as ae:
flash('Error uploading key: %s' % ae, 'error')
flash('Key uploaded')
redirect('.')
@@ -890,14 +894,14 @@ class SubscriptionsController(BaseController):
# Dictionary containing all tools (subscribed and un-subscribed).
my_tools = M.AppConfig.query.find(dict(
- project_id={'$in': my_projects.keys()}))
+ project_id={'$in': list(my_projects.keys())}))
# Dictionary containing all the currently subscribed tools for a given user.
my_tools_subscriptions = dict(
(mb.app_config_id, mb) for mb in M.Mailbox.query.find(dict(
user_id=c.user._id,
- project_id={'$in': projects.keys()},
- app_config_id={'$in': app_index.keys()},
+ project_id={'$in': list(projects.keys())},
+ app_config_id={'$in': list(app_index.keys())},
artifact_index_id=None)))
# Add the remaining tools that are eligible for subscription.
http://git-wip-us.apache.org/repos/asf/allura/blob/d52f8e2a/Allura/allura/controllers/base.py
----------------------------------------------------------------------
diff --git a/Allura/allura/controllers/base.py b/Allura/allura/controllers/base.py
index 215b19d..524d586 100644
--- a/Allura/allura/controllers/base.py
+++ b/Allura/allura/controllers/base.py
@@ -1,3 +1,7 @@
+from __future__ import print_function
+from __future__ import division
+from __future__ import absolute_import
+from __future__ import unicode_literals
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
@@ -26,7 +30,7 @@ class BaseController(object):
def _lookup(self, name=None, *remainder):
"""Provide explicit default lookup to avoid dispatching backtracking
and possible loops."""
- raise exc.HTTPNotFound, name
+ raise exc.HTTPNotFound(name)
class DispatchIndex(object):
http://git-wip-us.apache.org/repos/asf/allura/blob/d52f8e2a/Allura/allura/controllers/basetest_project_root.py
----------------------------------------------------------------------
diff --git a/Allura/allura/controllers/basetest_project_root.py b/Allura/allura/controllers/basetest_project_root.py
index f655437..b99018d 100644
--- a/Allura/allura/controllers/basetest_project_root.py
+++ b/Allura/allura/controllers/basetest_project_root.py
@@ -18,8 +18,12 @@
# under the License.
"""Main Controller"""
+from __future__ import print_function
+from __future__ import division
+from __future__ import absolute_import
+from __future__ import unicode_literals
import logging
-from urllib import unquote
+from urllib.parse import unquote
from pylons import tmpl_context as c
from pylons import request
@@ -94,7 +98,7 @@ class BasetestProjectRootController(WsgiDispatchController, ProjectController):
@expose()
def _lookup(self, name, *remainder):
if not h.re_project_name.match(name):
- raise exc.HTTPNotFound, name
+ raise exc.HTTPNotFound(name)
subproject = M.Project.query.get(
shortname=c.project.shortname + '/' + name,
neighborhood_id=self.p_nbhd._id)
@@ -111,10 +115,10 @@ class BasetestProjectRootController(WsgiDispatchController, ProjectController):
try:
c.project.install_app(ep_name, name)
except KeyError:
- raise exc.HTTPNotFound, name
+ raise exc.HTTPNotFound(name)
app = c.project.app_instance(name)
if app is None:
- raise exc.HTTPNotFound, name
+ raise exc.HTTPNotFound(name)
c.app = app
return app.root, remainder
http://git-wip-us.apache.org/repos/asf/allura/blob/d52f8e2a/Allura/allura/controllers/discuss.py
----------------------------------------------------------------------
diff --git a/Allura/allura/controllers/discuss.py b/Allura/allura/controllers/discuss.py
index 568ca5a..ad08400 100644
--- a/Allura/allura/controllers/discuss.py
+++ b/Allura/allura/controllers/discuss.py
@@ -1,3 +1,7 @@
+from __future__ import print_function
+from __future__ import division
+from __future__ import absolute_import
+from __future__ import unicode_literals
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
@@ -15,7 +19,7 @@
# specific language governing permissions and limitations
# under the License.
-from urllib import unquote
+from urllib.parse import unquote
from datetime import datetime
import logging
@@ -27,7 +31,7 @@ from ming.base import Object
from ming.utils import LazyProperty
from allura import model as M
-from base import BaseController
+from .base import BaseController
from allura.lib import utils
from allura.lib import helpers as h
from allura.lib.decorators import require_post
@@ -133,8 +137,7 @@ class AppDiscussionController(DiscussionController):
app_config_id=c.app.config._id)
-class ThreadsController(BaseController):
- __metaclass__ = h.ProxiedAttrMeta
+class ThreadsController(BaseController, metaclass=h.ProxiedAttrMeta):
M = h.attrproxy('_discussion_controller', 'M')
W = h.attrproxy('_discussion_controller', 'W')
ThreadController = h.attrproxy(
@@ -155,8 +158,7 @@ class ThreadsController(BaseController):
raise exc.HTTPNotFound()
-class ThreadController(BaseController, FeedController):
- __metaclass__ = h.ProxiedAttrMeta
+class ThreadController(BaseController, FeedController, metaclass=h.ProxiedAttrMeta):
M = h.attrproxy('_discussion_controller', 'M')
W = h.attrproxy('_discussion_controller', 'W')
ThreadController = h.attrproxy(
@@ -253,8 +255,7 @@ class ThreadController(BaseController, FeedController):
self.thread.url())
-class PostController(BaseController):
- __metaclass__ = h.ProxiedAttrMeta
+class PostController(BaseController, metaclass=h.ProxiedAttrMeta):
M = h.attrproxy('_discussion_controller', 'M')
W = h.attrproxy('_discussion_controller', 'W')
ThreadController = h.attrproxy(
@@ -292,7 +293,7 @@ class PostController(BaseController):
post_fields = self.W.edit_post.to_python(kw, None)
file_info = post_fields.pop('file_info', None)
self.post.add_multiple_attachments(file_info)
- for k, v in post_fields.iteritems():
+ for k, v in post_fields.items():
try:
setattr(self.post, k, v)
except AttributeError:
@@ -307,8 +308,6 @@ class PostController(BaseController):
tags=['comment'])
redirect(request.referer)
elif request.method == 'GET':
- if self.post.deleted:
- raise exc.HTTPNotFound
if version is not None:
HC = self.post.__mongometa__.history_class
ss = HC.query.find(
@@ -359,7 +358,7 @@ class PostController(BaseController):
self.post.spam()
elif kw.pop('approve', None):
if self.post.status != 'ok':
- self.post.approve(notify=False)
+ self.post.status = 'ok'
g.spam_checker.submit_ham(
self.post.text, artifact=self.post, user=c.user)
self.post.thread.post_to_feed(self.post)
@@ -402,8 +401,7 @@ class DiscussionAttachmentsController(AttachmentsController):
AttachmentControllerClass = DiscussionAttachmentController
-class ModerationController(BaseController):
- __metaclass__ = h.ProxiedAttrMeta
+class ModerationController(BaseController, metaclass=h.ProxiedAttrMeta):
PostModel = M.Post
M = h.attrproxy('_discussion_controller', 'M')
W = h.attrproxy('_discussion_controller', 'W')
@@ -435,8 +433,7 @@ class ModerationController(BaseController):
c.post_filter = WidgetConfig.post_filter
c.moderate_posts = WidgetConfig.moderate_posts
query = dict(
- discussion_id=self.discussion._id,
- deleted=False)
+ discussion_id=self.discussion._id)
if status != '-':
query['status'] = status
if flag:
http://git-wip-us.apache.org/repos/asf/allura/blob/d52f8e2a/Allura/allura/controllers/error.py
----------------------------------------------------------------------
diff --git a/Allura/allura/controllers/error.py b/Allura/allura/controllers/error.py
index 682b46d..86b1ea4 100644
--- a/Allura/allura/controllers/error.py
+++ b/Allura/allura/controllers/error.py
@@ -18,6 +18,10 @@
# under the License.
"""Error controller"""
+from __future__ import print_function
+from __future__ import division
+from __future__ import absolute_import
+from __future__ import unicode_literals
from tg import request, expose
http://git-wip-us.apache.org/repos/asf/allura/blob/d52f8e2a/Allura/allura/controllers/feed.py
----------------------------------------------------------------------
diff --git a/Allura/allura/controllers/feed.py b/Allura/allura/controllers/feed.py
index 7aaa789..408b875 100644
--- a/Allura/allura/controllers/feed.py
+++ b/Allura/allura/controllers/feed.py
@@ -1,3 +1,7 @@
+from __future__ import print_function
+from __future__ import division
+from __future__ import absolute_import
+from __future__ import unicode_literals
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information