Merge remote-tracking branch 'upstream/dev' into history-contents.limiting

This commit is contained in:
carlfeberhard
2016-08-02 08:53:48 -04:00
45 changed files with 1218 additions and 411 deletions
+631
View File
@@ -1,2 +1,633 @@
contrib/
cron/add_manual_builds.py
cron/cleanup_datasets.py
cron/parse_builds_3_sites.py
cron/parse_builds.py
lib/galaxy/actions/
lib/galaxy/auth/__init__.py
lib/galaxy/auth/providers/__init__.py
lib/galaxy/config.py
lib/galaxy/dataset_collections/builder.py
lib/galaxy/dataset_collections/__init__.py
lib/galaxy/dataset_collections/structure.py
lib/galaxy/dataset_collections/subcollections.py
lib/galaxy/dataset_collections/type_description.py
lib/galaxy/datatypes/assembly.py
lib/galaxy/datatypes/constructive_solid_geometry.py
lib/galaxy/datatypes/converters/bcf_bgzip_to_bcf_converter.py
lib/galaxy/datatypes/converters/bcf_to_bcf_bgzip_converter.py
lib/galaxy/datatypes/converters/bedgraph_to_array_tree_converter.py
lib/galaxy/datatypes/converters/bed_to_gff_converter.py
lib/galaxy/datatypes/converters/bgzip.py
lib/galaxy/datatypes/converters/fasta_to_len.py
lib/galaxy/datatypes/converters/fastqsolexa_to_fasta_converter.py
lib/galaxy/datatypes/converters/fastqsolexa_to_qual_converter.py
lib/galaxy/datatypes/converters/fastq_to_fqtoc.py
lib/galaxy/datatypes/converters/gff_to_bed_converter.py
lib/galaxy/datatypes/converters/gff_to_interval_index_converter.py
lib/galaxy/datatypes/converters/__init__.py
lib/galaxy/datatypes/converters/interval_to_bed_converter.py
lib/galaxy/datatypes/converters/interval_to_bedstrict_converter.py
lib/galaxy/datatypes/converters/interval_to_coverage.py
lib/galaxy/datatypes/converters/interval_to_fli.py
lib/galaxy/datatypes/converters/interval_to_interval_index_converter.py
lib/galaxy/datatypes/converters/interval_to_tabix_converter.py
lib/galaxy/datatypes/converters/lped_to_fped_converter.py
lib/galaxy/datatypes/converters/lped_to_pbed_converter.py
lib/galaxy/datatypes/converters/maf_to_fasta_converter.py
lib/galaxy/datatypes/converters/maf_to_interval_converter.py
lib/galaxy/datatypes/converters/pbed_to_lped_converter.py
lib/galaxy/datatypes/converters/picard_interval_list_to_bed6_converter.py
lib/galaxy/datatypes/converters/pileup_to_interval_index_converter.py
lib/galaxy/datatypes/converters/vcf_to_vcf_bgzip.py
lib/galaxy/datatypes/converters/wiggle_to_array_tree_converter.py
lib/galaxy/datatypes/coverage.py
lib/galaxy/datatypes/dataproviders/base.py
lib/galaxy/datatypes/dataproviders/exceptions.py
lib/galaxy/datatypes/data.py
lib/galaxy/datatypes/display_applications/__init__.py
lib/galaxy/datatypes/display_applications/util.py
lib/galaxy/datatypes/images.py
lib/galaxy/datatypes/__init__.py
lib/galaxy/datatypes/msa.py
lib/galaxy/datatypes/ngsindex.py
lib/galaxy/datatypes/proteomics.py
lib/galaxy/datatypes/tabular.py
lib/galaxy/datatypes/text.py
lib/galaxy/datatypes/tracks.py
lib/galaxy/datatypes/util/generic_util.py
lib/galaxy/datatypes/util/__init__.py
lib/galaxy/eggs/
lib/galaxy/exceptions/__init__.py
lib/galaxy/external_services/__init__.py
lib/galaxy/external_services/parameters.py
lib/galaxy/external_services/result_handlers/basic.py
lib/galaxy/external_services/result_handlers/__init__.py
lib/galaxy_ext/
lib/galaxy/forms/__init__.py
lib/galaxy/jobs/actions/
lib/galaxy/jobs/datasets.py
lib/galaxy/jobs/deferred/
lib/galaxy/jobs/error_level.py
lib/galaxy/jobs/manager.py
lib/galaxy/jobs/metrics/collectl/__init__.py
lib/galaxy/jobs/metrics/collectl/stats.py
lib/galaxy/jobs/metrics/collectl/subsystems.py
lib/galaxy/jobs/metrics/formatting.py
lib/galaxy/jobs/metrics/instrumenters/meminfo.py
lib/galaxy/jobs/metrics/instrumenters/uname.py
lib/galaxy/jobs/rules/
lib/galaxy/jobs/runners/state_handlers/
lib/galaxy/jobs/runners/util/cli/factory.py
lib/galaxy/jobs/runners/util/cli/job/__init__.py
lib/galaxy/jobs/runners/util/cli/job/slurm_torque.py
lib/galaxy/jobs/runners/util/cli/job/torque.py
lib/galaxy/jobs/runners/util/cli/shell/__init__.py
lib/galaxy/jobs/runners/util/drmaa/
lib/galaxy/jobs/runners/util/env.py
lib/galaxy/jobs/runners/util/external.py
lib/galaxy/jobs/runners/util/__init__.py
lib/galaxy/jobs/splitters/basic.py
lib/galaxy/jobs/splitters/__init__.py
lib/galaxy/jobs/stock_rules.py
lib/galaxy/jobs/transfer_manager.py
lib/galaxy/main.py
lib/galaxy/managers/annotatable.py
lib/galaxy/managers/api_keys.py
lib/galaxy/managers/base.py
lib/galaxy/managers/context.py
lib/galaxy/managers/deletable.py
lib/galaxy/managers/__init__.py
lib/galaxy/managers/lddas.py
lib/galaxy/managers/libraries.py
lib/galaxy/managers/secured.py
lib/galaxy/managers/taggable.py
lib/galaxy/model/__init__.py
lib/galaxy/model/migrate/__init__.py
lib/galaxy/model/migrate/versions/0001_initial_tables.py
lib/galaxy/model/migrate/versions/0002_metadata_file_table.py
lib/galaxy/model/migrate/versions/0003_security_and_libraries.py
lib/galaxy/model/migrate/versions/0004_indexes_and_defaults.py
lib/galaxy/model/migrate/versions/0006_change_qual_datatype.py
lib/galaxy/model/migrate/versions/0007_sharing_histories.py
lib/galaxy/model/migrate/versions/0008_galaxy_forms.py
lib/galaxy/model/migrate/versions/0009_request_table.py
lib/galaxy/model/migrate/versions/0010_hda_display_at_authz_table.py
lib/galaxy/model/migrate/versions/0011_v0010_mysql_index_fix.py
lib/galaxy/model/migrate/versions/0012_user_address.py
lib/galaxy/model/migrate/versions/0013_change_lib_item_templates_to_forms.py
lib/galaxy/model/migrate/versions/0014_pages.py
lib/galaxy/model/migrate/versions/0015_tagging.py
lib/galaxy/model/migrate/versions/0016_v0015_mysql_index_fix.py
lib/galaxy/model/migrate/versions/0017_library_item_indexes.py
lib/galaxy/model/migrate/versions/0018_ordered_tags_and_page_tags.py
lib/galaxy/model/migrate/versions/0019_request_library_folder.py
lib/galaxy/model/migrate/versions/0020_library_upload_job.py
lib/galaxy/model/migrate/versions/0021_user_prefs.py
lib/galaxy/model/migrate/versions/0022_visualization_tables.py
lib/galaxy/model/migrate/versions/0023_page_published_and_deleted_columns.py
lib/galaxy/model/migrate/versions/0024_page_slug_unique_constraint.py
lib/galaxy/model/migrate/versions/0025_user_info.py
lib/galaxy/model/migrate/versions/0026_cloud_tables.py
lib/galaxy/model/migrate/versions/0027_request_events.py
lib/galaxy/model/migrate/versions/0028_external_metadata_file_override.py
lib/galaxy/model/migrate/versions/0029_user_actions.py
lib/galaxy/model/migrate/versions/0030_history_slug_column.py
lib/galaxy/model/migrate/versions/0031_community_and_workflow_tags.py
lib/galaxy/model/migrate/versions/0032_stored_workflow_slug_column.py
lib/galaxy/model/migrate/versions/0033_published_cols_for_histories_and_workflows.py
lib/galaxy/model/migrate/versions/0034_page_user_share_association.py
lib/galaxy/model/migrate/versions/0035_item_annotations_and_workflow_step_tags.py
lib/galaxy/model/migrate/versions/0036_add_deleted_column_to_library_template_assoc_tables.py
lib/galaxy/model/migrate/versions/0037_samples_library.py
lib/galaxy/model/migrate/versions/0038_add_inheritable_column_to_library_template_assoc_tables.py
lib/galaxy/model/migrate/versions/0039_add_synopsis_column_to_library_table.py
lib/galaxy/model/migrate/versions/0040_page_annotations.py
lib/galaxy/model/migrate/versions/0041_workflow_invocation.py
lib/galaxy/model/migrate/versions/0042_workflow_invocation_fix.py
lib/galaxy/model/migrate/versions/0043_visualization_sharing_tagging_annotating.py
lib/galaxy/model/migrate/versions/0044_add_notify_column_to_request_table.py
lib/galaxy/model/migrate/versions/0045_request_type_permissions_table.py
lib/galaxy/model/migrate/versions/0046_post_job_actions.py
lib/galaxy/model/migrate/versions/0047_job_table_user_id_column.py
lib/galaxy/model/migrate/versions/0048_dataset_instance_state_column.py
lib/galaxy/model/migrate/versions/0049_api_keys_table.py
lib/galaxy/model/migrate/versions/0050_drop_cloud_tables.py
lib/galaxy/model/migrate/versions/0051_imported_col_for_jobs_table.py
lib/galaxy/model/migrate/versions/0052_sample_dataset_table.py
lib/galaxy/model/migrate/versions/0053_item_ratings.py
lib/galaxy/model/migrate/versions/0054_visualization_dbkey.py
lib/galaxy/model/migrate/versions/0055_add_pja_assoc_for_jobs.py
lib/galaxy/model/migrate/versions/0056_workflow_outputs.py
lib/galaxy/model/migrate/versions/0057_request_notify.py
lib/galaxy/model/migrate/versions/0058_history_import_export.py
lib/galaxy/model/migrate/versions/0059_sample_dataset_file_path.py
lib/galaxy/model/migrate/versions/0060_history_archive_import.py
lib/galaxy/model/migrate/versions/0061_tasks.py
lib/galaxy/model/migrate/versions/0062_user_openid_table.py
lib/galaxy/model/migrate/versions/0063_sequencer_table.py
lib/galaxy/model/migrate/versions/0064_add_run_and_sample_run_association_tables.py
lib/galaxy/model/migrate/versions/0066_deferred_job_and_transfer_job_tables.py
lib/galaxy/model/migrate/versions/0067_populate_sequencer_table.py
lib/galaxy/model/migrate/versions/0068_rename_sequencer_to_external_services.py
lib/galaxy/model/migrate/versions/0069_rename_sequencer_form_type.py
lib/galaxy/model/migrate/versions/0070_add_info_column_to_deferred_job_table.py
lib/galaxy/model/migrate/versions/0071_add_history_and_workflow_to_sample.py
lib/galaxy/model/migrate/versions/0072_add_pid_and_socket_columns_to_transfer_job_table.py
lib/galaxy/model/migrate/versions/0073_add_ldda_to_implicit_conversion_table.py
lib/galaxy/model/migrate/versions/0074_add_purged_column_to_library_dataset_table.py
lib/galaxy/model/migrate/versions/0075_add_subindex_column_to_run_table.py
lib/galaxy/model/migrate/versions/0076_fix_form_values_data_corruption.py
lib/galaxy/model/migrate/versions/0077_create_tool_tag_association_table.py
lib/galaxy/model/migrate/versions/0078_add_columns_for_disk_usage_accounting.py
lib/galaxy/model/migrate/versions/0079_input_library_to_job_table.py
lib/galaxy/model/migrate/versions/0080_quota_tables.py
lib/galaxy/model/migrate/versions/0081_add_tool_version_to_hda_ldda.py
lib/galaxy/model/migrate/versions/0082_add_tool_shed_repository_table.py
lib/galaxy/model/migrate/versions/0083_add_prepare_files_to_task.py
lib/galaxy/model/migrate/versions/0084_add_ldda_id_to_implicit_conversion_table.py
lib/galaxy/model/migrate/versions/0085_add_task_info.py
lib/galaxy/model/migrate/versions/0086_add_tool_shed_repository_table_columns.py
lib/galaxy/model/migrate/versions/0087_tool_id_guid_map_table.py
lib/galaxy/model/migrate/versions/0088_add_installed_changeset_revison_column.py
lib/galaxy/model/migrate/versions/0089_add_object_store_id_columns.py
lib/galaxy/model/migrate/versions/0090_add_tool_shed_repository_table_columns.py
lib/galaxy/model/migrate/versions/0091_add_tool_version_tables.py
lib/galaxy/model/migrate/versions/0092_add_migrate_tools_table.py
lib/galaxy/model/migrate/versions/0093_add_job_params_col.py
lib/galaxy/model/migrate/versions/0094_add_job_handler_col.py
lib/galaxy/model/migrate/versions/0095_hda_subsets.py
lib/galaxy/model/migrate/versions/0096_openid_provider.py
lib/galaxy/model/migrate/versions/0097_add_ctx_rev_column.py
lib/galaxy/model/migrate/versions/0098_genome_index_tool_data_table.py
lib/galaxy/model/migrate/versions/0099_add_tool_dependency_table.py
lib/galaxy/model/migrate/versions/0100_alter_tool_dependency_table_version_column.py
lib/galaxy/model/migrate/versions/0101_drop_installed_changeset_revision_column.py
lib/galaxy/model/migrate/versions/0102_add_tool_dependency_status_columns.py
lib/galaxy/model/migrate/versions/0103_add_tool_shed_repository_status_columns.py
lib/galaxy/model/migrate/versions/0104_update_genome_downloader_job_parameters.py
lib/galaxy/model/migrate/versions/0105_add_cleanup_event_table.py
lib/galaxy/model/migrate/versions/0106_add_missing_indexes.py
lib/galaxy/model/migrate/versions/0107_add_exit_code_to_job_and_task.py
lib/galaxy/model/migrate/versions/0108_add_extended_metadata.py
lib/galaxy/model/migrate/versions/0109_add_repository_dependency_tables.py
lib/galaxy/model/migrate/versions/0110_add_dataset_uuid.py
lib/galaxy/model/migrate/versions/0111_add_job_destinations.py
lib/galaxy/model/migrate/versions/0112_add_data_manager_history_association_and_data_manager_job_association_tables.py
lib/galaxy/model/migrate/versions/0113_update_migrate_tools_table.py
lib/galaxy/model/migrate/versions/0114_update_migrate_tools_table_again.py
lib/galaxy/model/migrate/versions/0115_longer_user_password_field.py
lib/galaxy/model/migrate/versions/0116_drop_update_available_col_add_tool_shed_status_col.py
lib/galaxy/model/migrate/versions/0117_add_user_activation.py
lib/galaxy/model/migrate/versions/0118_add_hda_extended_metadata.py
lib/galaxy/model/migrate/versions/0119_job_metrics.py
lib/galaxy/model/migrate/versions/0120_dataset_collections.py
lib/galaxy/model/migrate/versions/0121_workflow_uuids.py
lib/galaxy/model/migrate/versions/0123_add_workflow_request_tables.py
lib/galaxy/model/migrate/versions/0124_job_state_history.py
lib/galaxy/model/migrate/versions/0125_workflow_step_tracking.py
lib/galaxy/model/migrate/versions/0126_password_reset.py
lib/galaxy/model/migrate/versions/0127_output_collection_adjustments.py
lib/galaxy/model/migrate/versions/0128_session_timeout.py
lib/galaxy/model/migrate/versions/0129_job_external_output_metadata_validity.py
lib/galaxy/model/migrate/versions/0130_change_pref_datatype.py
lib/galaxy/model/orm/
lib/galaxy/model/tool_shed_install/migrate/__init__.py
lib/galaxy/model/tool_shed_install/migrate/versions/
lib/galaxy/model/util.py
lib/galaxy/objectstore/pulsar.py
lib/galaxy/objectstore/s3_multipart_upload.py
lib/galaxy/openid/__init__.py
lib/galaxy/quota/
lib/galaxy/sample_tracking/data_transfer.py
lib/galaxy/sample_tracking/__init__.py
lib/galaxy/sample_tracking/sample.py
lib/galaxy/security/validate_user_input.py
lib/galaxy/tags/
lib/galaxy/tools/actions/metadata.py
lib/galaxy/tools/cwl/cwltool_deps.py
lib/galaxy/tools/cwl/parser.py
lib/galaxy/tools/cwl/runtime_actions.py
lib/galaxy/tools/data_manager/__init__.py
lib/galaxy/tools/deps/brew_util.py
lib/galaxy/tools/deps/commands.py
lib/galaxy/tools/deps/dependencies.py
lib/galaxy/tools/deps/docker_util.py
lib/galaxy/tools/deps/requirements.py
lib/galaxy/tools/deps/resolvers/homebrew.py
lib/galaxy/tools/filters/
lib/galaxy/tools/imp_exp/export_history.py
lib/galaxy/tools/imp_exp/__init__.py
lib/galaxy/tools/linters/
lib/galaxy/tools/lint.py
lib/galaxy/tools/lint_util.py
lib/galaxy/tools/loader_directory.py
lib/galaxy/tools/parameters/history_query.py
lib/galaxy/tools/parameters/input_translation.py
lib/galaxy/tools/parameters/sanitize.py
lib/galaxy/tools/parameters/validation.py
lib/galaxy/tools/parameters/wrapped_json.py
lib/galaxy/tools/parser/interface.py
lib/galaxy/tools/parser/output_collection_def.py
lib/galaxy/tools/parser/output_objects.py
lib/galaxy/tools/parser/util.py
lib/galaxy/tools/special_tools.py
lib/galaxy/tools/test.py
lib/galaxy/tools/toolbox/cache.py
lib/galaxy/tools/toolbox/integrated_panel.py
lib/galaxy/tools/toolbox/lineages/__init__.py
lib/galaxy/tools/toolbox/lineages/interface.py
lib/galaxy/tools/toolbox/lineages/stock.py
lib/galaxy/tools/toolbox/lineages/tool_shed.py
lib/galaxy/tools/toolbox/watcher.py
lib/galaxy/tools/util/galaxyops/
lib/galaxy/tools/util/__init__.py
lib/galaxy/tools/verify/asserts/__init__.py
lib/galaxy/tools/verify/asserts/tabular.py
lib/galaxy/tools/verify/asserts/text.py
lib/galaxy/tools/verify/__init__.py
lib/galaxy/util/aliaspickler.py
lib/galaxy/util/backports/
lib/galaxy/util/bunch.py
lib/galaxy/util/dbkeys.py
lib/galaxy/util/dictifiable.py
lib/galaxy/util/expressions.py
lib/galaxy/util/inflection.py
lib/galaxy/util/log/
lib/galaxy/util/multi_byte.py
lib/galaxy/util/odict.py
lib/galaxy/util/pastescript/__init__.py
lib/galaxy/util/plugin_config.py
lib/galaxy/util/simplegraph.py
lib/galaxy_utils/__init__.py
lib/galaxy/util/sleeper.py
lib/galaxy/util/specs.py
lib/galaxy_utils/sequence/fasta.py
lib/galaxy_utils/sequence/fastq.py
lib/galaxy_utils/sequence/__init__.py
lib/galaxy_utils/sequence/transform.py
lib/galaxy_utils/sequence/vcf.py
lib/galaxy/util/template.py
lib/galaxy/util/ucsc.py
lib/galaxy/version.py
lib/galaxy/visualization/data_providers/basic.py
lib/galaxy/visualization/data_providers/cigar.py
lib/galaxy/visualization/data_providers/__init__.py
lib/galaxy/visualization/data_providers/phyloviz/baseparser.py
lib/galaxy/visualization/genome/
lib/galaxy/visualization/genomes.py
lib/galaxy/visualization/__init__.py
lib/galaxy/visualization/plugins/__init__.py
lib/galaxy/visualization/plugins/utils.py
lib/galaxy/visualization/tracks/
lib/galaxy/webapps/galaxy/api/genomes.py
lib/galaxy/webapps/galaxy/api/__init__.py
lib/galaxy/webapps/galaxy/api/jobs.py
lib/galaxy/webapps/galaxy/api/lda_datasets.py
lib/galaxy/webapps/galaxy/api/requests.py
lib/galaxy/webapps/galaxy/api/roles.py
lib/galaxy/webapps/galaxy/api/samples.py
lib/galaxy/webapps/galaxy/api/tools.py
lib/galaxy/webapps/galaxy/api/tours.py
lib/galaxy/webapps/galaxy/controllers/async.py
lib/galaxy/webapps/galaxy/controllers/data_manager.py
lib/galaxy/webapps/galaxy/controllers/error.py
lib/galaxy/webapps/galaxy/controllers/external_services.py
lib/galaxy/webapps/galaxy/controllers/history.py
lib/galaxy/webapps/galaxy/controllers/__init__.py
lib/galaxy/webapps/galaxy/controllers/mobile.py
lib/galaxy/webapps/galaxy/controllers/page.py
lib/galaxy/webapps/galaxy/controllers/requests.py
lib/galaxy/webapps/galaxy/controllers/search.py
lib/galaxy/webapps/galaxy/controllers/tool_runner.py
lib/galaxy/webapps/galaxy/controllers/userskeys.py
lib/galaxy/webapps/galaxy/__init__.py
lib/galaxy/webapps/__init__.py
lib/galaxy/webapps/reports/controllers/__init__.py
lib/galaxy/webapps/reports/controllers/query.py
lib/galaxy/webapps/reports/__init__.py
lib/galaxy/webapps/tool_shed/api/__init__.py
lib/galaxy/webapps/tool_shed/controllers/groups.py
lib/galaxy/webapps/tool_shed/controllers/__init__.py
lib/galaxy/webapps/tool_shed/controllers/user.py
lib/galaxy/webapps/tool_shed/framework/__init__.py
lib/galaxy/webapps/tool_shed/framework/middleware/__init__.py
lib/galaxy/webapps/tool_shed/framework/middleware/remoteuser.py
lib/galaxy/webapps/tool_shed/__init__.py
lib/galaxy/webapps/tool_shed/model/mapping.py
lib/galaxy/webapps/tool_shed/model/migrate/
lib/galaxy/webapps/tool_shed/search/__init__.py
lib/galaxy/webapps/tool_shed/security/
lib/galaxy/webapps/tool_shed/util/__init__.py
lib/galaxy/webapps/tool_shed/util/ratings_util.py
lib/galaxy/webapps/tool_shed/util/shed_statistics.py
lib/galaxy/webapps/util.py
lib/galaxy/web/base/controllers/__init__.py
lib/galaxy/web/base/__init__.py
lib/galaxy/web/buildapp.py
lib/galaxy/web/formatting.py
lib/galaxy/web/framework/decorators.py
lib/galaxy/web/framework/helpers/grids.py
lib/galaxy/web/framework/__init__.py
lib/galaxy/web/framework/middleware/__init__.py
lib/galaxy/web/framework/middleware/request_id.py
lib/galaxy/web/framework/middleware/sentry.py
lib/galaxy/web/framework/middleware/static.py
lib/galaxy/web/framework/middleware/statsd.py
lib/galaxy/web/framework/middleware/translogger.py
lib/galaxy/web/framework/middleware/xforwardedhost.py
lib/galaxy/web/params.py
lib/galaxy/workflow/__init__.py
lib/galaxy/workflow/render.py
lib/galaxy/workflow/schedulers/__init__.py
lib/galaxy/workflow/steps.py
lib/galaxy/work/__init__.py
lib/mimeparse.py
lib/psyco_full.py
lib/tool_shed/capsule/__init__.py
lib/tool_shed/dependencies/__init__.py
lib/tool_shed/dependencies/repository/__init__.py
lib/tool_shed/dependencies/tool/
lib/tool_shed/galaxy_install/datatypes/__init__.py
lib/tool_shed/galaxy_install/grids/__init__.py
lib/tool_shed/galaxy_install/__init__.py
lib/tool_shed/galaxy_install/metadata/__init__.py
lib/tool_shed/galaxy_install/migrate/__init__.py
lib/tool_shed/galaxy_install/migrate/versions/
lib/tool_shed/galaxy_install/repository_dependencies/__init__.py
lib/tool_shed/galaxy_install/tool_dependencies/env_manager.py
lib/tool_shed/galaxy_install/tool_dependencies/__init__.py
lib/tool_shed/galaxy_install/tool_dependencies/recipe/asynchronous_reader.py
lib/tool_shed/galaxy_install/tool_dependencies/recipe/env_file_builder.py
lib/tool_shed/galaxy_install/tool_dependencies/recipe/__init__.py
lib/tool_shed/galaxy_install/tool_dependencies/recipe/recipe_manager.py
lib/tool_shed/galaxy_install/tools/
lib/tool_shed/galaxy_install/utility_containers/
lib/tool_shed/grids/__init__.py
lib/tool_shed/grids/repository_grid_filter_manager.py
lib/tool_shed/__init__.py
lib/tool_shed/managers/groups.py
lib/tool_shed/managers/__init__.py
lib/tool_shed/metadata/__init__.py
lib/tool_shed/repository_types/__init__.py
lib/tool_shed/repository_types/metadata.py
lib/tool_shed/repository_types/unrestricted.py
lib/tool_shed/repository_types/util.py
lib/tool_shed/tools/data_table_manager.py
lib/tool_shed/tools/__init__.py
lib/tool_shed/tools/tool_version_manager.py
lib/tool_shed/util/basic_util.py
lib/tool_shed/util/container_util.py
lib/tool_shed/util/encoding_util.py
lib/tool_shed/util/__init__.py
lib/tool_shed/util/search_util.py
lib/tool_shed/util/web_util.py
lib/tool_shed/util/xml_util.py
scripts/api/common.py
scripts/api/copy_hda_to_library_folder.py
scripts/api/create.py
scripts/api/delete.py
scripts/api/example_watch_folder.py
scripts/api/filter_failed_datasets_from_collection.py
scripts/api/form_create_from_xml.py
scripts/api/history_create_history.py
scripts/api/history_delete_history.py
scripts/api/import_library_dataset_to_history.py
scripts/api/import_workflows_from_installed_tool_shed_repository.py
scripts/api/install_tool_shed_repositories.py
scripts/api/library_create_folder.py
scripts/api/library_create_library.py
scripts/api/library_upload_dir.py
scripts/api/library_upload_from_import_dir.py
scripts/api/load_data_with_metadata.py
scripts/api/repair_tool_shed_repository.py
scripts/api/requests_update_state.py
scripts/api/request_type_create_from_xml.py
scripts/api/reset_metadata_on_installed_repositories.py
scripts/api/sample_dataset_update_status.py
scripts/api/sample_update_state.py
scripts/api/sequencer_configuration_create.py
scripts/api/update.py
scripts/api/upload_to_history.py
scripts/api/workflow_delete.py
scripts/api/workflow_execute_parameters.py
scripts/api/workflow_execute.py
scripts/api/workflow_import_from_file_rpark.py
scripts/api/workflow_import.py
scripts/auth/
scripts/bootstrap_history.py
scripts/build_toolbox.py
scripts/build_universe_config.py
scripts/check_galaxy.py
scripts/check_python.py
scripts/cleanup_datasets/cleanup_datasets.py
scripts/cleanup_datasets/populate_uuid.py
scripts/cleanup_datasets/remove_renamed_datasets_from_disk.py
scripts/cleanup_datasets/rename_purged_datasets.py
scripts/cleanup_datasets/update_metadata.py
scripts/create_db.py
scripts/data_libraries/
scripts/db_shell.py
scripts/drmaa_external_killer.py
scripts/drmaa_external_runner.py
scripts/external_chown_script.py
scripts/extract_dataset_part.py
scripts/extract_toolbox_sections.py
scripts/functional_tests.py
scripts/get_platforms.py
scripts/helper.py
scripts/__init__.py
scripts/loc_files/
scripts/manage_db.py
scripts/manage_tools.py
scripts/metagenomics/
scripts/microbes/create_bacteria_loc_file.py
scripts/microbes/create_bacteria_table.py
scripts/microbes/create_nib_seq_loc_file.py
scripts/microbes/get_builds_lengths.py
scripts/microbes/ncbi_to_ucsc.py
scripts/microbes/util.py
scripts/migrate_tools/
scripts/nosetests.py
scripts/others/
scripts/runtime_stats.py
scripts/set_dataset_sizes.py
scripts/set_user_disk_usage.py
scripts/sync_reports_config.py
scripts/tool_shed/api/add_repository_registry_entry.py
scripts/tool_shed/api/common.py
scripts/tool_shed/api/create_categories.py
scripts/tool_shed/api/create_users.py
scripts/tool_shed/api/import_capsule.py
scripts/tool_shed/api/remove_repository_registry_entry.py
scripts/tool_shed/api/reset_metadata_on_repositories.py
scripts/tool_shed/api/tool_shed_repository_revision_update.py
scripts/tool_shed/build_ts_whoosh_index.py
scripts/tool_shed/check_download_urls.py
scripts/tool_shed/check_filesystem_for_empty_tool_dependency_installation_paths.py
scripts/tool_shed/clean_up_tool_dependency_directory.py
scripts/tool_shed/migrate_tools_to_repositories.py
scripts/tool_shed/show_tool_dependency_installation_dir_contents.py
scripts/tools/re_escape_output.py
test/api/__init__.py
test/api/test_datasets.py
test/api/test_datatypes.py
test/api/test_framework.py
test/api/test_histories.py
test/api/test_history_contents_provenance.py
test/api/test_jobs.py
test/api/test_libraries.py
test/api/test_search.py
test/api/test_tours.py
test/api/test_workflows_from_yaml.py
test/api/workflows_format_2/interface.py
test/api/workflows_format_2/main.py
test/base/api_asserts.py
test/base/api_util.py
test/base/__init__.py
test/base/instrument.py
test/base/nose_util.py
test/base/tool_shed_util.py
test/casperjs/
test/functional/database_contexts.py
test/functional/__init__.py
test/functional/tools/
test/integration/__init__.py
test/integration/test_pulsar_embedded.py
test/manual/__init__.py
test/shed_functional/base/common.py
test/shed_functional/base/__init__.py
test/shed_functional/functional/
test/shed_functional/__init__.py
test/unit/dataset_collections/__init__.py
test/unit/datatypes/dataproviders/__init__.py
test/unit/datatypes/__init__.py
test/unit/datatypes/test_data.py
test/unit/jobs/dynamic_tool_destination/__init__.py
test/unit/jobs/dynamic_tool_destination/mockGalaxy.py
test/unit/jobs/dynamic_tool_destination/ymltests.py
test/unit/jobs/__init__.py
test/unit/jobs/test_datasets.py
test/unit/jobs/test_rules/
test/unit/jobs/test_runner_params.py
test/unit/managers/__init__.py
test/unit/managers/test_HDAManager.py
test/unit/managers/test_HistoryContentsManager.py
test/unit/managers/test_HistoryManager.py
test/unit/managers/test_UserManager.py
test/unit/shed_unit/__init__.py
test/unit/shed_unit/test_fabric_util.py
test/unit/test_lazy_process.py
test/unit/test_security_helper.py
test/unit/test_sockets.py
test/unit/test_sqlite_utils.py
test/unit/test_topsort.py
test/unit/tools/filter_modules/
test/unit/tools/__init__.py
test/unit/tools/test_data_parameters.py
test/unit/tools/test_tool_dependency_description.py
test/unit/tools/test_tool_panel.py
test/unit/unittest_utils/__init__.py
test/unit/unittest_utils/utility.py
test/unit/visualizations/__init__.py
test/unit/visualizations/plugins/__init__.py
test/unit/web/base/__init__.py
test/unit/web/framework/__init__.py
test/unit/web/__init__.py
test/unit/workflows/__init__.py
test/unit/workflows/test_extract_summary.py
test/unit/workflows/test_modules.py
test/unit/workflows/test_render.py
test/unit/workflows/test_workflow_progress.py
tool_list.py
tools/data_source/fetch.py
tools/data_source/genbank.py
tools/data_source/hbvar_filter.py
tools/data_source/import.py
tools/data_source/microbial_import_code.py
tools/data_source/microbial_import.py
tools/data_source/upload.py
tools/evolution/
tools/extract/liftOver_wrapper.py
tools/filters/axt_to_concat_fasta.py
tools/filters/axt_to_fasta.py
tools/filters/axt_to_lav_code.py
tools/filters/axt_to_lav.py
tools/filters/bed_to_gff_converter.py
tools/filters/catWrapper.py
tools/filters/convert_characters.py
tools/filters/gff/
tools/filters/gff_to_bed_converter.py
tools/filters/gtf_to_bedgraph_converter.py
tools/filters/join.py
tools/filters/joinWrapper.py
tools/filters/lav_to_bed_code.py
tools/filters/lav_to_bed.py
tools/filters/mergeCols.py
tools/filters/randomlines.py
tools/filters/random_lines_two_pass.py
tools/filters/secure_hash_message_digest.py
tools/filters/sff_extract.py
tools/filters/sorter.py
tools/filters/trimmer.py
tools/filters/ucsc_gene_bed_to_exon_bed.py
tools/filters/ucsc_gene_bed_to_intron_bed.py
tools/filters/ucsc_gene_table_to_intervals.py
tools/filters/uniq.py
tools/filters/wiggle_to_simple.py
tools/genomespace/
tools/maf/
tools/meme/
tools/metag_tools/
tools/next_gen_conversion/fastq_conversions.py
tools/next_gen_conversion/fastq_gen_conv.py
tools/next_gen_conversion/solid_to_fastq.py
tools/ngs_simulation/
tools/phenotype_association/
tools/plotting/
tools/solid_tools/
tools/sr_assembly/
tools/sr_mapping/
tools/stats/grouping.py
tools/stats/gsummary.py
tools/visualization/
+7
View File
@@ -4,9 +4,16 @@ lib/galaxy/actions/
lib/galaxy/auth/
lib/galaxy/config.py
lib/galaxy/dataset_collections/
lib/galaxy/datatypes/assembly.py
lib/galaxy/datatypes/binary.py
lib/galaxy/datatypes/constructive_solid_geometry.py
lib/galaxy/datatypes/converters/
lib/galaxy/datatypes/dataproviders/
lib/galaxy/datatypes/data.py
lib/galaxy/datatypes/images.py
lib/galaxy/datatypes/msa.py
lib/galaxy/datatypes/ngsindex.py
lib/galaxy/datatypes/proteomics.py
lib/galaxy/datatypes/sequence.py
lib/galaxy/datatypes/sniff.py
lib/galaxy/datatypes/tabular.py
+15 -6
View File
@@ -33,7 +33,11 @@ lint: ## check style using tox and flake8 for Python 2 and Python 3
$(IN_VENV) tox -e py27-lint && tox -e py34-lint
release-ensure-upstream: ## Ensure upstream branch for release commands setup
if [ ! `git remote -v | grep -q $(RELEASE_UPSTREAM)` ]; then git remote add $(RELEASE_UPSTREAM) git@github.com:galaxyproject/galaxy.git; fi
ifeq (shell git remote -v | grep $(RELEASE_UPSTREAM), )
git remote add $(RELEASE_UPSTREAM) git@github.com:galaxyproject/galaxy.git
else
@echo "Remote $(RELEASE_UPSTREAM) already exists."
endif
release-merge-stable-to-next: release-ensure-upstream ## Merge last release into dev
git fetch $(RELEASE_UPSTREAM) && git checkout dev && git merge --ff-only $(RELEASE_UPSTREAM)/dev && git merge $(RELEASE_UPSTREAM)/$(RELEASE_PREVIOUS)
@@ -89,14 +93,16 @@ release-create-rc: release-ensure-upstream ## Create a release-candidate branch
git push $(MY_UPSTREAM) release_$(RELEASE_CURR)
git push $(RELEASE_UPSTREAM) release_$(RELEASE_CURR)
git checkout -b version-$(RELEASE_CURR)
sed -i "s/^VERSION_MAJOR = .*/VERSION_MAJOR = \"$(RELEASE_CURR)\"/" lib/galaxy/version.py
sed -i "s/^VERSION_MINOR = .*/VERSION_MINOR = \"rc1\"/" lib/galaxy/version.py
sed -i.bak -e "s/^VERSION_MAJOR = .*/VERSION_MAJOR = \"$(RELEASE_CURR)\"/" lib/galaxy/version.py
sed -i.bak -e "s/^VERSION_MINOR = .*/VERSION_MINOR = \"rc1\"/" lib/galaxy/version.py
rm -f lib/galaxy/version.py.bak
git add lib/galaxy/version.py
git commit -m "Update version to $(RELEASE_CURR).rc1"
git checkout dev
git checkout -b version-$(RELEASE_NEXT).dev
sed -i "s/^VERSION_MAJOR = .*/VERSION_MAJOR = \"$(RELEASE_NEXT)\"/" lib/galaxy/version.py
sed -i.bak -e "s/^VERSION_MAJOR = .*/VERSION_MAJOR = \"$(RELEASE_NEXT)\"/" lib/galaxy/version.py
rm -f lib/galaxy/version.py.bak
git add lib/galaxy/version.py
git commit -m "Update version to $(RELEASE_NEXT).dev"
@@ -106,6 +112,7 @@ release-create-rc: release-ensure-upstream ## Create a release-candidate branch
git commit -m "Merge branch 'version-$(RELEASE_CURR)' into version-$(RELEASE_NEXT).dev"
git push $(MY_UPSTREAM) version-$(RELEASE_CURR):version-$(RELEASE_CURR)
git push $(MY_UPSTREAM) version-$(RELEASE_NEXT).dev:version-$(RELEASE_NEXT).dev
git checkout dev
git branch -d version-$(RELEASE_CURR)
git branch -d version-$(RELEASE_NEXT).dev
# TODO: Use hub to automate these PR creations or push directly.
@@ -125,7 +132,8 @@ release-create: release-ensure-upstream ## Create a release branch
# Test run of merging. If there are conflicts, it will fail here.
git merge release_$(RELEASE_CURR)
git checkout release_$(RELEASE_CURR)
sed -i "s/^VERSION_MINOR = .*/VERSION_MINOR = None/" lib/galaxy/version.py
sed -i.bak -e "s/^VERSION_MINOR = .*/VERSION_MINOR = None/" lib/galaxy/version.py
rm -f lib/galaxy/version.py.bak
git add lib/galaxy/version.py
git commit -m "Update version to $(RELEASE_CURR)"
git tag -m "Tag version $(RELEASE_CURR)" v$(RELEASE_CURR)
@@ -153,7 +161,8 @@ release-create-point: ## Create a point release
#git push $(MY_UPSTREAM) $(RELEASE_NEXT_BRANCH)
git merge release_$(RELEASE_CURR)
git checkout release_$(RELEASE_CURR)
sed -i "s/^VERSION_MINOR = .*/VERSION_MINOR = \"$(RELEASE_CURR_MINOR_NEXT)\"/" lib/galaxy/version.py
sed -i.bak -e "s/^VERSION_MINOR = .*/VERSION_MINOR = \"$(RELEASE_CURR_MINOR_NEXT)\"/" lib/galaxy/version.py
rm -f lib/galaxy/version.py.bak
git add lib/galaxy/version.py
git commit -m "Update version to $(RELEASE_CURR).$(RELEASE_CURR_MINOR_NEXT)"
git tag -m "Tag version $(RELEASE_CURR).$(RELEASE_CURR_MINOR_NEXT)" v$(RELEASE_CURR).$(RELEASE_CURR_MINOR_NEXT)
+2 -1
View File
@@ -29,7 +29,8 @@
"wymeditor": "~1.0.0-rc.1",
"jstree": "~3.0.9",
"jquery-ui": "git://github.com/jquery/jquery-ui.git#~1.11.2",
"threedubmedia.jquery.event": "*",
"jquery.complexify": "git://github.com/danpalmer/jquery.complexify.js.git#~0.5.1",
"threedubmedia.jquery.event": "*",
"jquery-migrate": "~1.4",
"requirejs": "~2"
},
@@ -0,0 +1,192 @@
/*
http://github.com/danpalmer/jquery.complexify.js
This code is distributed under the WTFPL v2:
*/
(function ($) {
$.fn.extend({
complexify: function(options, callback) {
var MIN_COMPLEXITY = 49; // 12 chars with Upper, Lower and Number
var MAX_COMPLEXITY = 120; // 25 chars, all charsets
var CHARSETS = [
// Commonly Used
////////////////////
[0x0020, 0x0020], // Space
[0x0030, 0x0039], // Numbers
[0x0041, 0x005A], // Uppercase
[0x0061, 0x007A], // Lowercase
[0x0021, 0x002F], // Punctuation
[0x003A, 0x0040], // Punctuation
[0x005B, 0x0060], // Punctuation
[0x007B, 0x007E], // Punctuation
// Everything Else
////////////////////
[0x0080, 0x00FF], // Latin-1 Supplement
[0x0100, 0x017F], // Latin Extended-A
[0x0180, 0x024F], // Latin Extended-B
[0x0250, 0x02AF], // IPA Extensions
[0x02B0, 0x02FF], // Spacing Modifier Letters
[0x0300, 0x036F], // Combining Diacritical Marks
[0x0370, 0x03FF], // Greek
[0x0400, 0x04FF], // Cyrillic
[0x0530, 0x058F], // Armenian
[0x0590, 0x05FF], // Hebrew
[0x0600, 0x06FF], // Arabic
[0x0700, 0x074F], // Syriac
[0x0780, 0x07BF], // Thaana
[0x0900, 0x097F], // Devanagari
[0x0980, 0x09FF], // Bengali
[0x0A00, 0x0A7F], // Gurmukhi
[0x0A80, 0x0AFF], // Gujarati
[0x0B00, 0x0B7F], // Oriya
[0x0B80, 0x0BFF], // Tamil
[0x0C00, 0x0C7F], // Telugu
[0x0C80, 0x0CFF], // Kannada
[0x0D00, 0x0D7F], // Malayalam
[0x0D80, 0x0DFF], // Sinhala
[0x0E00, 0x0E7F], // Thai
[0x0E80, 0x0EFF], // Lao
[0x0F00, 0x0FFF], // Tibetan
[0x1000, 0x109F], // Myanmar
[0x10A0, 0x10FF], // Georgian
[0x1100, 0x11FF], // Hangul Jamo
[0x1200, 0x137F], // Ethiopic
[0x13A0, 0x13FF], // Cherokee
[0x1400, 0x167F], // Unified Canadian Aboriginal Syllabics
[0x1680, 0x169F], // Ogham
[0x16A0, 0x16FF], // Runic
[0x1780, 0x17FF], // Khmer
[0x1800, 0x18AF], // Mongolian
[0x1E00, 0x1EFF], // Latin Extended Additional
[0x1F00, 0x1FFF], // Greek Extended
[0x2000, 0x206F], // General Punctuation
[0x2070, 0x209F], // Superscripts and Subscripts
[0x20A0, 0x20CF], // Currency Symbols
[0x20D0, 0x20FF], // Combining Marks for Symbols
[0x2100, 0x214F], // Letterlike Symbols
[0x2150, 0x218F], // Number Forms
[0x2190, 0x21FF], // Arrows
[0x2200, 0x22FF], // Mathematical Operators
[0x2300, 0x23FF], // Miscellaneous Technical
[0x2400, 0x243F], // Control Pictures
[0x2440, 0x245F], // Optical Character Recognition
[0x2460, 0x24FF], // Enclosed Alphanumerics
[0x2500, 0x257F], // Box Drawing
[0x2580, 0x259F], // Block Elements
[0x25A0, 0x25FF], // Geometric Shapes
[0x2600, 0x26FF], // Miscellaneous Symbols
[0x2700, 0x27BF], // Dingbats
[0x2800, 0x28FF], // Braille Patterns
[0x2E80, 0x2EFF], // CJK Radicals Supplement
[0x2F00, 0x2FDF], // Kangxi Radicals
[0x2FF0, 0x2FFF], // Ideographic Description Characters
[0x3000, 0x303F], // CJK Symbols and Punctuation
[0x3040, 0x309F], // Hiragana
[0x30A0, 0x30FF], // Katakana
[0x3100, 0x312F], // Bopomofo
[0x3130, 0x318F], // Hangul Compatibility Jamo
[0x3190, 0x319F], // Kanbun
[0x31A0, 0x31BF], // Bopomofo Extended
[0x3200, 0x32FF], // Enclosed CJK Letters and Months
[0x3300, 0x33FF], // CJK Compatibility
[0x3400, 0x4DB5], // CJK Unified Ideographs Extension A
[0x4E00, 0x9FFF], // CJK Unified Ideographs
[0xA000, 0xA48F], // Yi Syllables
[0xA490, 0xA4CF], // Yi Radicals
[0xAC00, 0xD7A3], // Hangul Syllables
[0xD800, 0xDB7F], // High Surrogates
[0xDB80, 0xDBFF], // High Private Use Surrogates
[0xDC00, 0xDFFF], // Low Surrogates
[0xE000, 0xF8FF], // Private Use
[0xF900, 0xFAFF], // CJK Compatibility Ideographs
[0xFB00, 0xFB4F], // Alphabetic Presentation Forms
[0xFB50, 0xFDFF], // Arabic Presentation Forms-A
[0xFE20, 0xFE2F], // Combining Half Marks
[0xFE30, 0xFE4F], // CJK Compatibility Forms
[0xFE50, 0xFE6F], // Small Form Variants
[0xFE70, 0xFEFE], // Arabic Presentation Forms-B
[0xFEFF, 0xFEFF], // Specials
[0xFF00, 0xFFEF], // Halfwidth and Fullwidth Forms
[0xFFF0, 0xFFFD] // Specials
];
var defaults = {
minimumChars: 8,
strengthScaleFactor: 1,
bannedPasswords: window.COMPLEXIFY_BANLIST || [],
banMode: 'strict' // (strict|loose)
};
if($.isFunction(options) && !callback) {
callback = options;
options = {};
}
options = $.extend(defaults, options);
function additionalComplexityForCharset(str, charset) {
for (var i = str.length - 1; i >= 0; i--) {
if (charset[0] <= str.charCodeAt(i) && str.charCodeAt(i) <= charset[1]) {
return charset[1] - charset[0] + 1;
}
}
return 0;
}
function inBanlist(str) {
if (options.banMode === 'strict') {
for (var i = 0; i < options.bannedPasswords.length; i++) {
if (str.toLowerCase().indexOf(options.bannedPasswords[i].toLowerCase()) !== -1) {
return true;
}
}
return false;
} else {
return $.inArray(str, options.bannedPasswords) > -1 ? true : false;
}
}
function evaluateSecurity() {
var password = $(this).val();
var complexity = 0, valid = false;
// Reset complexity to 0 when banned password is found
if (!inBanlist(password)) {
// Add character complexity
for (var i = CHARSETS.length - 1; i >= 0; i--) {
complexity += additionalComplexityForCharset(password, CHARSETS[i]);
}
} else {
complexity = 1;
}
// Use natural log to produce linear scale
complexity = Math.log(Math.pow(complexity, password.length)) * (1/options.strengthScaleFactor);
valid = (complexity > MIN_COMPLEXITY && password.length >= options.minimumChars);
// Scale to percentage, so it can be used for a progress bar
complexity = (complexity / MAX_COMPLEXITY) * 100;
complexity = (complexity > 100) ? 100 : complexity;
callback.call(this, valid, complexity);
}
this.each(function () {
if($(this).val()) {
evaluateSecurity.apply(this);
}
});
return this.each(function () {
$(this).bind('keyup focus input propertychange mouseup', evaluateSecurity);
});
}
});
})(jQuery);
+9 -16
View File
@@ -1,5 +1,5 @@
/*!
* jQuery JavaScript Library v1.12.3
* jQuery JavaScript Library v1.12.4
* http://jquery.com/
*
* Includes Sizzle.js
@@ -9,7 +9,7 @@
* Released under the MIT license
* http://jquery.org/license
*
* Date: 2016-04-05T19:16Z
* Date: 2016-05-20T17:17Z
*/
(function( global, factory ) {
@@ -65,7 +65,7 @@ var support = {};
var
version = "1.12.3",
version = "1.12.4",
// Define a local copy of jQuery
jQuery = function( selector, context ) {
@@ -6672,6 +6672,7 @@ var documentElement = document.documentElement;
if ( reliableHiddenOffsetsVal ) {
div.style.display = "";
div.innerHTML = "<table><tr><td></td><td>t</td></tr></table>";
div.childNodes[ 0 ].style.borderCollapse = "separate";
contents = div.getElementsByTagName( "td" );
contents[ 0 ].style.cssText = "margin:0;border:0;padding:0;display:none";
reliableHiddenOffsetsVal = contents[ 0 ].offsetHeight === 0;
@@ -6996,19 +6997,6 @@ function getWidthOrHeight( elem, name, extra ) {
isBorderBox = support.boxSizing &&
jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
// Support: IE11 only
// In IE 11 fullscreen elements inside of an iframe have
// 100x too small dimensions (gh-1764).
if ( document.msFullscreenElement && window.top !== window ) {
// Support: IE11 only
// Running getBoundingClientRect on a disconnected node
// in IE throws an error.
if ( elem.getClientRects().length ) {
val = Math.round( elem.getBoundingClientRect()[ name ] * 100 );
}
}
// some non-html elements return undefined for offsetWidth, so check for null/undefined
// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
@@ -9999,6 +9987,11 @@ function getDisplay( elem ) {
}
function filterHidden( elem ) {
// Disconnected elements are considered hidden
if ( !jQuery.contains( elem.ownerDocument || document, elem ) ) {
return true;
}
while ( elem && elem.nodeType === 1 ) {
if ( getDisplay( elem ) === "none" || elem.type === "hidden" ) {
return true;
+107 -111
View File
@@ -1,4 +1,4 @@
/*! Raven.js 3.0.3 (3738576) | github.com/getsentry/raven-js */
/*! Raven.js 3.3.0 (74c6c03) | github.com/getsentry/raven-js */
/*
* Includes TraceKit
@@ -11,6 +11,35 @@
*/
(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){
exports = module.exports = stringify
exports.getSerialize = serializer
function stringify(obj, replacer, spaces, cycleReplacer) {
return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces)
}
function serializer(replacer, cycleReplacer) {
var stack = [], keys = []
if (cycleReplacer == null) cycleReplacer = function(key, value) {
if (stack[0] === value) return "[Circular ~]"
return "[Circular ~." + keys.slice(0, stack.indexOf(value)).join(".") + "]"
}
return function(key, value) {
if (stack.length > 0) {
var thisPos = stack.indexOf(this)
~thisPos ? stack.splice(thisPos + 1) : stack.push(this)
~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key)
if (~stack.indexOf(value)) value = cycleReplacer.call(this, key, value)
}
else stack.push(value)
return replacer == null ? value : replacer.call(this, key, value)
}
}
},{}],2:[function(_dereq_,module,exports){
'use strict';
function RavenConfigError(message) {
@@ -22,7 +51,7 @@ RavenConfigError.prototype.constructor = RavenConfigError;
module.exports = RavenConfigError;
},{}],2:[function(_dereq_,module,exports){
},{}],3:[function(_dereq_,module,exports){
'use strict';
var wrapMethod = function(console, level, callback) {
@@ -61,13 +90,14 @@ module.exports = {
wrapMethod: wrapMethod
};
},{}],3:[function(_dereq_,module,exports){
},{}],4:[function(_dereq_,module,exports){
/*global XDomainRequest:false*/
'use strict';
var TraceKit = _dereq_(6);
var RavenConfigError = _dereq_(1);
var utils = _dereq_(5);
var TraceKit = _dereq_(7);
var RavenConfigError = _dereq_(2);
var utils = _dereq_(6);
var stringify = _dereq_(1);
var isFunction = utils.isFunction;
var isUndefined = utils.isUndefined;
@@ -84,7 +114,7 @@ var htmlTreeAsString = utils.htmlTreeAsString;
var parseUrl = utils.parseUrl;
var isString = utils.isString;
var wrapConsoleMethod = _dereq_(2).wrapMethod;
var wrapConsoleMethod = _dereq_(3).wrapMethod;
var dsnKeys = 'source protocol user pass host port path'.split(' '),
dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/;
@@ -150,7 +180,7 @@ Raven.prototype = {
// webpack (using a build step causes webpack #1617). Grunt verifies that
// this value matches package.json during build.
// See: https://github.com/getsentry/raven-js/issues/465
VERSION: '3.0.3',
VERSION: '3.3.0',
debug: false,
@@ -210,14 +240,6 @@ Raven.prototype = {
this._globalEndpoint = this._globalServer +
'/' + path + 'api/' + this._globalProject + '/store/';
if (this._globalOptions.fetchContext) {
TraceKit.remoteFetching = true;
}
if (this._globalOptions.linesOfContext) {
TraceKit.linesOfContext = this._globalOptions.linesOfContext;
}
TraceKit.collectWindowErrors = !!this._globalOptions.collectWindowErrors;
// return for chaining
@@ -500,7 +522,20 @@ Raven.prototype = {
*/
getContext: function() {
// lol javascript
return JSON.parse(JSON.stringify(this._globalContext));
return JSON.parse(stringify(this._globalContext));
},
/*
* Set environment of application
*
* @param {string} environment Typically something like 'production'.
* @return {Raven}
*/
setEnvironment: function(environment) {
this._globalOptions.environment = environment;
return this;
},
/*
@@ -523,7 +558,10 @@ Raven.prototype = {
* @return {Raven}
*/
setDataCallback: function(callback) {
this._globalOptions.dataCallback = callback;
var original = this._globalOptions.dataCallback;
this._globalOptions.dataCallback = isFunction(callback)
? function (data) { return callback(data, original); }
: callback;
return this;
},
@@ -536,7 +574,10 @@ Raven.prototype = {
* @return {Raven}
*/
setShouldSendCallback: function(callback) {
this._globalOptions.shouldSendCallback = callback;
var original = this._globalOptions.shouldSendCallback;
this._globalOptions.shouldSendCallback = isFunction(callback)
? function (data) { return callback(data, original); }
: callback;
return this;
},
@@ -778,9 +819,9 @@ Raven.prototype = {
// Use only the path component of the URL if the URL matches the current
// document (almost all the time when using pushState)
if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host)
to = parsedTo.path;
to = parsedTo.relative;
if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host)
from = parsedFrom.path;
from = parsedFrom.relative;
this.captureBreadcrumb({
category: 'navigation',
@@ -885,8 +926,15 @@ Raven.prototype = {
// Capture breadcrubms from any click that is unhandled / bubbled up all the way
// to the document. Do this before we instrument addEventListener.
if (this._hasDocument) {
document.addEventListener('click', self._breadcrumbEventHandler('click'));
document.addEventListener('keypress', self._keypressEventHandler());
if (document.addEventListener) {
document.addEventListener('click', self._breadcrumbEventHandler('click'), false);
document.addEventListener('keypress', self._keypressEventHandler(), false);
}
else {
// IE8 Compatibility
document.attachEvent('onclick', self._breadcrumbEventHandler('click'));
document.attachEvent('onkeypress', self._keypressEventHandler());
}
}
// event targets borrowed from bugsnag-js:
@@ -954,7 +1002,13 @@ Raven.prototype = {
}
// record navigation (URL) changes
if ('history' in window && history.pushState) {
// NOTE: in Chrome App environment, touching history.pushState, *even inside
// a try/catch block*, will cause Chrome to output an error to console.error
// borrowed from: https://github.com/angular/angular.js/pull/13945/files
var chrome = window.chrome;
var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime;
var hasPushState = !isChromePackagedApp && window.history && history.pushState;
if (hasPushState) {
// TODO: remove onpopstate handler on uninstall()
var oldOnPopState = window.onpopstate;
window.onpopstate = function () {
@@ -1106,13 +1160,7 @@ Raven.prototype = {
lineno: frame.line,
colno: frame.column,
'function': frame.func || '?'
}, context = this._extractContextFromFrame(frame), i;
if (context) {
var keys = ['pre_context', 'context_line', 'post_context'];
i = 3;
while (i--) normalized[keys[i]] = context[i];
}
};
normalized.in_app = !( // determine if an exception came from outside of our app
// first we check the global includePaths list.
@@ -1126,55 +1174,12 @@ Raven.prototype = {
return normalized;
},
_extractContextFromFrame: function(frame) {
// immediately check if we should even attempt to parse a context
if (!frame.context || !this._globalOptions.fetchContext) return;
var context = frame.context,
pivot = ~~(context.length / 2),
i = context.length, isMinified = false;
while (i--) {
// We're making a guess to see if the source is minified or not.
// To do that, we make the assumption if *any* of the lines passed
// in are greater than 300 characters long, we bail.
// Sentry will see that there isn't a context
if (context[i].length > 300) {
isMinified = true;
break;
}
}
if (isMinified) {
// The source is minified and we don't know which column. Fuck it.
if (isUndefined(frame.column)) return;
// If the source is minified and has a frame column
// we take a chunk of the offending line to hopefully shed some light
return [
[], // no pre_context
context[pivot].substr(frame.column, 50), // grab 50 characters, starting at the offending column
[] // no post_context
];
}
return [
context.slice(0, pivot), // pre_context
context[pivot], // context_line
context.slice(pivot + 1) // post_context
];
},
_processException: function(type, message, fileurl, lineno, frames, options) {
var stacktrace, fullMessage;
var stacktrace;
if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(message)) return;
message += '';
message = truncate(message, this._globalOptions.maxMessageLength);
fullMessage = (type ? type + ': ' : '') + message;
fullMessage = truncate(fullMessage, this._globalOptions.maxMessageLength);
if (frames && frames.length) {
fileurl = frames[0].filename || fileurl;
@@ -1204,8 +1209,7 @@ Raven.prototype = {
stacktrace: stacktrace
}]
},
culprit: fileurl,
message: fullMessage
culprit: fileurl
}, options);
// Fire away!
@@ -1216,7 +1220,9 @@ Raven.prototype = {
// For now, we only want to truncate the two different messages
// but this could/should be expanded to just trim everything
var max = this._globalOptions.maxMessageLength;
data.message = truncate(data.message, max);
if (data.message) {
data.message = truncate(data.message, max);
}
if (data.exception) {
var exception = data.exception.values[0];
exception.value = truncate(exception.value, max);
@@ -1286,6 +1292,9 @@ Raven.prototype = {
data.user = this._globalContext.user;
}
// Include the environment if it's defined in globalOptions
if (globalOptions.environment) data.environment = globalOptions.environment;
// Include the release if it's defined in globalOptions
if (globalOptions.release) data.release = globalOptions.release;
@@ -1327,10 +1336,14 @@ Raven.prototype = {
auth.sentry_secret = this._globalSecret;
}
var exception = data.exception && data.exception.values[0];
this.captureBreadcrumb({
category: 'sentry',
message: data.message,
event_id: data.event_id
message: exception
? (exception.type ? exception.type + ': ' : '') + exception.message
: data.message,
event_id: data.event_id,
level: data.level || 'error' // presume error unless specified
});
var url = this._globalEndpoint;
@@ -1357,9 +1370,6 @@ Raven.prototype = {
_makeRequest: function(opts) {
var request = new XMLHttpRequest();
if (request.send.toString() === 'function send() { [native code] }') {
throw new Error('shouldnt get here');
}
// if browser doesn't support CORS (e.g. IE7), we are out of luck
var hasCORS =
'withCredentials' in request ||
@@ -1398,14 +1408,7 @@ Raven.prototype = {
// NOTE: auth is intentionally sent as part of query string (NOT as custom
// HTTP header) so as to avoid preflight CORS requests
request.open('POST', url + '?' + urlencode(opts.auth));
request.send(JSON.stringify(opts.data));
},
// Note: this is shitty, but I can't figure out how to get
// sinon to stub document.createElement without breaking everything
// so this wrapper is just so I can stub it for tests.
_newImage: function() {
return document.createElement('img');
request.send(stringify(opts.data));
},
_logDebug: function(level) {
@@ -1434,7 +1437,7 @@ Raven.prototype.setReleaseContext = Raven.prototype.setRelease;
module.exports = Raven;
},{"1":1,"2":2,"5":5,"6":6}],4:[function(_dereq_,module,exports){
},{"1":1,"2":2,"3":3,"6":6,"7":7}],5:[function(_dereq_,module,exports){
/**
* Enforces a single instance of the Raven client, and the
* main entry point for Raven. If you are a consumer of the
@@ -1443,7 +1446,7 @@ module.exports = Raven;
'use strict';
var RavenConstructor = _dereq_(3);
var RavenConstructor = _dereq_(4);
var _Raven = window.Raven;
@@ -1464,7 +1467,7 @@ Raven.afterLoad();
module.exports = Raven;
},{"3":3}],5:[function(_dereq_,module,exports){
},{"4":4}],6:[function(_dereq_,module,exports){
/*eslint no-extra-parens:0*/
'use strict';
@@ -1581,10 +1584,15 @@ function urlencode(o) {
function parseUrl(url) {
var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/);
if (!match) return {};
// coerce to undefined values to empty string so we don't get 'undefined'
var query = match[6] || '';
var fragment = match[8] || '';
return {
protocol: match[2],
host: match[4],
path: match[5]
path: match[5],
relative: match[5] + query + fragment // everything minus origin
};
}
function uuid4() {
@@ -1717,10 +1725,10 @@ module.exports = {
parseUrl: parseUrl
};
},{}],6:[function(_dereq_,module,exports){
},{}],7:[function(_dereq_,module,exports){
'use strict';
var utils = _dereq_(5);
var utils = _dereq_(6);
var hasKey = utils.hasKey;
var isString = utils.isString;
@@ -1732,10 +1740,7 @@ var isUndefined = utils.isUndefined;
*/
var TraceKit = {
remoteFetching: false,
collectWindowErrors: true,
// 3 lines before, the offending line, 3 lines after
linesOfContext: 7,
debug: false
};
@@ -1895,7 +1900,6 @@ TraceKit.report = (function reportModuleWrapper() {
}
location.func = UNKNOWN_FUNCTION;
location.context = null;
stack = {
'name': name,
@@ -1998,7 +2002,6 @@ TraceKit.report = (function reportModuleWrapper() {
* s.stack[i].args - arguments passed to the function, if known
* s.stack[i].line - line number, if known
* s.stack[i].column - column number, if known
* s.stack[i].context - an array of source code lines; the middle element corresponds to the correct line#
*
* Supports:
* - Firefox: full stack trace with line numbers and unreliable column
@@ -2107,7 +2110,7 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() {
var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|<anonymous>).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,
gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|\[native).*?)(?::(\d+))?(?::(\d+))?\s*$/i,
winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:ms-appx|https?|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,
winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,
lines = ex.stack.split('\n'),
stack = [],
parts,
@@ -2148,10 +2151,6 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() {
element.func = UNKNOWN_FUNCTION;
}
if (element.line) {
element.context = null;
}
stack.push(element);
}
@@ -2217,7 +2216,6 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() {
if (!element.func && element.line) {
element.func = UNKNOWN_FUNCTION;
}
element.context = [lines[line + 1]];
stack.push(element);
}
@@ -2305,7 +2303,6 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() {
if (!item.func) {
item.func = UNKNOWN_FUNCTION;
}
item.context = [lines[line + 1]];
stack.push(item);
}
@@ -2355,7 +2352,6 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() {
return false; // already in stack trace
} else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) {
stackInfo.stack[0].line = initial.line;
stackInfo.stack[0].context = initial.context;
return false;
}
}
@@ -2510,5 +2506,5 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() {
module.exports = TraceKit;
},{"5":5}]},{},[4])(4)
},{"6":6}]},{},[5])(5)
});
@@ -55,15 +55,23 @@ var menu = [
},
{
html : _l( 'Delete' ),
confirm : _l( 'Really delete the current history?' ),
href : 'history/delete_current',
anon : true,
func : function() {
if( Galaxy && Galaxy.currHistoryPanel && confirm( _l( 'Really delete the current history?' ) ) ){
galaxy_main.window.location.href = 'history/delete?id=' + Galaxy.currHistoryPanel.model.id;
}
},
},
{
html : _l( 'Delete Permanently' ),
confirm : _l( 'Really delete the current history permanently? This cannot be undone.' ),
href : 'history/delete_current?purge=True',
purge : true,
anon : true,
func : function() {
if( Galaxy && Galaxy.currHistoryPanel
&& confirm( _l( 'Really delete the current history permanently? This cannot be undone.' ) ) ){
galaxy_main.window.location.href = 'history/delete?purge=True&id=' + Galaxy.currHistoryPanel.model.id;
}
},
},
+13
View File
@@ -1750,3 +1750,16 @@ div.toolTitleNoSection
font-size: 12px;
margin-left: 93.2%;
}
// password complexity monitor
#change_password,#registrationForm {
.progress {
width:200px;
margin-left: 20px;
}
.progress-bar {
color:black;
text-align:left;
}
}
+1
View File
@@ -22,6 +22,7 @@ module.exports = function( grunt ){
'farbtastic': [ 'src/farbtastic.js', 'farbtastic.js' ],
'jQTouch': [ 'src/reference/jqtouch.js', 'jquery/jqtouch.js' ],
'bootstrap-tour': [ 'build/js/bootstrap-tour.js', 'bootstrap-tour.js' ],
'jquery.complexify': [ 'jquery.complexify.js', 'jquery.complexify.js' ],
// these need to be updated and tested
//'jquery-form': [ 'jquery.form.js', 'jquery/jquery.form.js' ],
+1
View File
@@ -20,6 +20,7 @@ var webpack = require( 'webpack' ),
'libs/jquery/jquery-ui',
'libs/bootstrap',
'libs/bootstrap-tour',
'libs/jquery.complexify',
// mvc
'libs/underscore',
'libs/backbone',
+1 -1
View File
@@ -230,7 +230,7 @@
</datatype>
<datatype extension="sff" type="galaxy.datatypes.binary:Sff" mimetype="application/octet-stream" display_in_upload="true" description="A binary file in 'Standard Flowgram Format' with a '.sff' file extension." description_url="https://wiki.galaxyproject.org/Learn/Datatypes#Sff"/>
<datatype extension="sra" type="galaxy.datatypes.binary:Sra" mimetype="application/octet-stream" display_in_upload="true" description="A binary file archive format from the NCBI Sequence Read Archive with a '.sra' file extension." description_url="http://www.ncbi.nlm.nih.gov/books/n/helpsra/SRA_Overview_BK/#SRA_Overview_BK.4_SRA_Data_Structure"/>
<datatype extension="svg" type="galaxy.datatypes.images:Image" mimetype="image/svg+xml"/>
<datatype extension="svg" type="galaxy.datatypes.xml:GenericXml" mimetype="image/svg+xml" subclass="True"/>
<datatype extension="taxonomy" type="galaxy.datatypes.tabular:Taxonomy" display_in_upload="true"/>
<datatype extension="tabular" type="galaxy.datatypes.tabular:Tabular" display_in_upload="true" description="Any data in tab delimited format (tabular)." description_url="https://wiki.galaxyproject.org/Learn/Datatypes#Tabular_.28tab_delimited.29"/>
<datatype extension="twobit" type="galaxy.datatypes.binary:TwoBit" mimetype="application/octet-stream" display_in_upload="true"/>
+6 -5
View File
@@ -5,14 +5,15 @@ for velvet assembler tool in galaxy
"""
from __future__ import absolute_import
from galaxy.datatypes import data
import logging
import os
import re
import sys
from galaxy.datatypes import data
from galaxy.datatypes import sequence
from galaxy.datatypes.text import Html
from galaxy.datatypes.metadata import MetadataElement
from galaxy.datatypes.text import Html
log = logging.getLogger(__name__)
@@ -149,7 +150,7 @@ class Velvet( Html ):
MetadataElement( name="short2_reads", desc="has 2nd short reads", default="False", readonly=False, set_in_upload=True)
composite_type = 'auto_primary_file'
allow_datatype_change = False
file_ext = 'html'
file_ext = 'velvet'
def __init__( self, **kwd ):
Html.__init__( self, **kwd )
@@ -161,7 +162,7 @@ class Velvet( Html ):
log.debug( "Velvet log info %s %s" % ('JJ generate_primary_file', dataset))
rval = ['<html><head><title>Velvet Galaxy Composite Dataset </title></head><p/>']
rval.append('<div>This composite dataset is composed of the following files:<p/><ul>')
for composite_name, composite_file in self.get_composite_files( dataset=dataset ).iteritems():
for composite_name, composite_file in self.get_composite_files( dataset=dataset ).items():
fn = composite_name
log.debug( "Velvet log info %s %s %s" % ('JJ generate_primary_file', fn, composite_file))
opt_text = ''
@@ -208,7 +209,7 @@ class Velvet( Html ):
# rval.append('<div>Generated:<p/><code> %s </code></div>' %(re.sub('\n','<br>',log_msg)))
rval.append('<div>Generated:<p/> %s </div>' % (gen_msg))
rval.append('<div>Velveth dataset:<p/><ul>')
for composite_name, composite_file in self.get_composite_files( dataset=dataset ).iteritems():
for composite_name, composite_file in self.get_composite_files( dataset=dataset ).items():
fn = composite_name
log.debug( "Velvet log info %s %s %s" % ('JJ regenerate_primary_file', fn, composite_file))
if re.search('Log', fn) is None:
@@ -1,12 +1,14 @@
"""
Constructive Solid Geometry file formats.
"""
import abc
from galaxy import util
from galaxy.datatypes import data
from galaxy.datatypes.binary import Binary
from galaxy.datatypes.data import get_file_peek
from galaxy.datatypes.data import nice_size
from galaxy.datatypes.metadata import MetadataElement
from galaxy import util
MAX_HEADER_LINES = 500
MAX_LINE_LEN = 2000
@@ -20,6 +22,7 @@ class Ply(object):
normal direction that can be attached to these elements. A PLY
file contains the description of exactly one object.
"""
subtype = ''
# Add metadata elements.
MetadataElement(name="file_format", default=None, desc="File format",
readonly=True, optional=True, visible=True, no_value=None)
@@ -30,13 +33,17 @@ class Ply(object):
MetadataElement(name="other_elements", default=[], desc="Other elements",
readonly=True, optional=True, visible=True, no_value=[])
def sniff(self, filename, subtype):
@abc.abstractmethod
def __init__(self, **kwd):
raise NotImplementedError
def sniff(self, filename):
"""
The structure of a typical PLY file:
Header, Vertex List, Face List, (lists of other elements)
"""
with open(filename, "r") as fh:
if not self._is_ply_header(fh, subtype):
if not self._is_ply_header(fh, self.subtype):
return False
return True
return False
@@ -109,26 +116,20 @@ class Ply(object):
class PlyAscii(Ply, data.Text):
file_ext = "plyascii"
subtype = 'ascii'
def __init__(self, **kwd):
data.Text.__init__(self, **kwd)
def sniff(self, filename):
return super(PlyAscii, self).sniff(filename, subtype='ascii')
class PlyBinary(Ply, Binary):
file_ext = "plybinary"
subtype = 'binary'
def __init__(self, **kwd):
Binary.__init__(self, **kwd)
def sniff(self, filename):
return super(PlyBinary, self).sniff(filename, subtype='binary')
Binary.register_sniffable_binary_format("plybinary", "plybinary", PlyBinary)
@@ -156,6 +157,7 @@ class Vtk(object):
TODO: only legacy formats are currently supported and support for XML formats
should be added.
"""
subtype = ''
# Add metadata elements.
MetadataElement(name="vtk_version", default=None, desc="Vtk version",
readonly=True, optional=True, visible=True, no_value=None)
@@ -196,14 +198,18 @@ class Vtk(object):
MetadataElement(name="field_components", default={}, desc="Field names and components",
readonly=True, optional=True, visible=True, no_value={})
def sniff(self, filename, subtype):
@abc.abstractmethod
def __init__(self, **kwd):
raise NotImplementedError
def sniff(self, filename):
"""
VTK files can be either ASCII or binary, with two different
styles of file formats: legacy or XML. We'll assume if the
file contains a valid VTK header, then it is a valid VTK file.
"""
with open(filename, "r") as fh:
if self._is_vtk_header(fh, subtype):
if self._is_vtk_header(fh, self.subtype):
return True
return False
return False
@@ -436,26 +442,20 @@ class Vtk(object):
class VtkAscii(Vtk, data.Text):
file_ext = "vtkascii"
subtype = 'ASCII'
def __init__(self, **kwd):
data.Text.__init__(self, **kwd)
def sniff(self, filename):
return super(VtkAscii, self).sniff(filename, subtype='ASCII')
class VtkBinary(Vtk, Binary):
file_ext = "vtkbinary"
subtype = 'BINARY'
def __init__(self, **kwd):
Binary.__init__(self, **kwd)
def sniff(self, filename):
return super(VtkBinary, self).sniff(filename, subtype='BINARY')
Binary.register_sniffable_binary_format("vtkbinary", "vtkbinary", VtkBinary)
+15 -13
View File
@@ -1,4 +1,6 @@
from __future__ import absolute_import
import abc
import logging
import mimetypes
import os
@@ -7,9 +9,10 @@ import tempfile
import zipfile
from cgi import escape
from inspect import isclass
from six import string_types
from . import metadata
import paste
import six
from galaxy import util
from galaxy.datatypes.metadata import MetadataElement # import directly to maintain ease of use in Datatype class definitions
from galaxy.util import inflector
@@ -19,8 +22,7 @@ from galaxy.util.odict import odict
from galaxy.util.sanitize_html import sanitize_html
from . import dataproviders
import paste
from . import metadata
XSS_VULNERABLE_MIME_TYPES = [
'image/svg+xml', # Unfiltered by Galaxy and may contain JS that would be executed by some browsers.
@@ -35,7 +37,7 @@ col1_startswith = ['chr', 'chl', 'groupun', 'reftig_', 'scaffold', 'super_', 'vc
valid_strand = ['+', '-', '.']
class DataMeta( type ):
class DataMeta( abc.ABCMeta ):
"""
Metaclass for Data class. Sets up metadata spec.
"""
@@ -47,6 +49,7 @@ class DataMeta( type ):
metadata.Statement.process( cls )
@six.add_metaclass(DataMeta)
@dataproviders.decorators.has_dataproviders
class Data( object ):
"""
@@ -72,7 +75,6 @@ class Data( object ):
#: dictionary of metadata fields for this datatype::
metadata_spec = None
__metaclass__ = DataMeta
# Add metadata elements
MetadataElement( name="dbkey", desc="Database/Build", default="?", param=metadata.DBKeyParameter, multiple=False, no_value="?" )
# Stores the set of display applications, and viewing methods, supported by this datatype
@@ -158,7 +160,7 @@ class Data( object ):
Specifying a list of 'skip' items will return True even when a named metadata value is missing
"""
if check:
to_check = [ ( to_check, dataset.metadata.get( to_check ) ) for to_check in check ]
to_check = ( ( to_check, dataset.metadata.get( to_check ) ) for to_check in check )
else:
to_check = dataset.metadata.items()
for key, value in to_check:
@@ -327,7 +329,7 @@ class Data( object ):
# Prevent IE8 from sniffing content type since we're explicit about it. This prevents intentionally text/plain
# content from being rendered in the browser
trans.response.headers['X-Content-Type-Options'] = 'nosniff'
if isinstance( data, string_types ):
if isinstance( data, six.string_types ):
return data
if filename and filename != "index":
# For files in extra_files_path
@@ -454,7 +456,7 @@ class Data( object ):
def get_display_applications_by_dataset( self, dataset, trans ):
rval = odict()
for key, value in self.display_applications.iteritems():
for key, value in self.display_applications.items():
value = value.filter_by_dataset( dataset, trans )
if value.links:
rval[key] = value
@@ -462,7 +464,7 @@ class Data( object ):
def get_display_types(self):
"""Returns display types available"""
return self.supported_display_apps.keys()
return list(self.supported_display_apps.keys())
def get_display_label(self, type):
"""Returns primary label for display app"""
@@ -525,7 +527,7 @@ class Data( object ):
if len(params) > 0:
trans.log_event( "Converter params: %s" % (str(params)), tool_id=converter.id )
if not visible:
for value in converted_dataset.itervalues():
for value in converted_dataset.values():
value.visible = False
if return_output:
return converted_dataset
@@ -571,7 +573,7 @@ class Data( object ):
files = odict()
if self.composite_type != 'auto_primary_file':
files[ self.primary_file_name ] = self.__new_composite_file( self.primary_file_name )
for key, value in self.get_composite_files( dataset=dataset ).iteritems():
for key, value in self.get_composite_files( dataset=dataset ).items():
files[ key ] = value
return files
@@ -585,7 +587,7 @@ class Data( object ):
return key % meta_value
return key
files = odict()
for key, value in self.composite_files.iteritems():
for key, value in self.composite_files.items():
files[ substitute_composite_key( key, value ) ] = value
return files
+10 -6
View File
@@ -7,9 +7,13 @@ Base class(es) for all DataProviders.
# also, this shouldn't be a replacement/re-implementation of the tool layer
# (which provides traceability/versioning/reproducibility)
from collections import deque
import exceptions
import logging
from collections import deque
import six
from . import exceptions
log = logging.getLogger( __name__ )
_TODO = """
@@ -60,7 +64,8 @@ class HasSettings( type ):
# ----------------------------------------------------------------------------- base classes
class DataProvider( object ):
@six.add_metaclass(HasSettings)
class DataProvider( six.Iterator ):
"""
Base class for all data providers. Data providers:
(a) have a source (which must be another file-like object)
@@ -71,7 +76,6 @@ class DataProvider( object ):
# a definition of expected types for keyword arguments sent to __init__
# useful for controlling how query string dictionaries can be parsed into correct types for __init__
# empty in this base class
__metaclass__ = HasSettings
settings = {}
def __init__( self, source, **kwargs ):
@@ -130,8 +134,8 @@ class DataProvider( object ):
for datum in self.source:
yield datum
def next( self ):
return self.source.next()
def __next__( self ):
return next(self.source)
# context manager interface
def __enter__( self ):
+16 -88
View File
@@ -1,15 +1,13 @@
"""
Image classes
"""
import imghdr
import logging
import zipfile
from urllib import quote_plus
from six.moves.urllib.parse import quote_plus
from galaxy.datatypes.binary import Binary
from galaxy.datatypes.text import Html as HtmlFromText
from galaxy.datatypes.sniff import get_headers
from galaxy.datatypes.text import Html as HtmlFromText
from galaxy.datatypes.util.image_util import check_image_type
from galaxy.util import nice_size
from . import data
@@ -39,6 +37,11 @@ class Image( data.Data ):
"""Class describing an image"""
edam_data = 'data_2968'
edam_format = "format_3547"
file_ext = ''
def __init__(self, **kwd):
super(Image, self).__init__(**kwd)
self.image_formats = [self.file_ext.upper()]
def set_peek( self, dataset, is_multi_byte=False ):
if not dataset.dataset.purged:
@@ -49,173 +52,98 @@ class Image( data.Data ):
dataset.blurb = 'file purged from disk'
def sniff( self, filename ):
# First check if we can use PIL
if PIL is not None:
try:
im = PIL.open( filename )
im.close()
return True
except:
return False
else:
if imghdr.what( filename ) is not None:
return True
else:
return False
"""Determine if the file is in this format"""
return check_image_type( filename, self.image_formats )
class Jpg( Image ):
edam_format = "format_3579"
file_ext = "jpg"
def sniff(self, filename, image=None):
"""Determine if the file is in jpg format."""
return check_image_type( filename, ['JPEG'], image )
def __init__(self, **kwd):
super(Jpg, self).__init__(**kwd)
self.image_formats = ['JPEG']
class Png( Image ):
edam_format = "format_3603"
file_ext = "png"
def sniff(self, filename, image=None):
"""Determine if the file is in png format."""
return check_image_type( filename, ['PNG'], image )
class Tiff( Image ):
edam_format = "format_3591"
file_ext = "tiff"
def sniff(self, filename, image=None):
"""Determine if the file is in tiff format."""
return check_image_type( filename, ['TIFF'], image )
class Bmp( Image ):
edam_format = "format_3592"
file_ext = "bmp"
def sniff(self, filename, image=None):
"""Determine if the file is in bmp format."""
return check_image_type( filename, ['BMP'], image )
class Gif( Image ):
edam_format = "format_3467"
file_ext = "gif"
def sniff(self, filename, image=None):
"""Determine if the file is in gif format."""
return check_image_type( filename, ['GIF'], image )
class Im( Image ):
edam_format = "format_3593"
file_ext = "im"
def sniff(self, filename, image=None):
"""Determine if the file is in im format."""
return check_image_type( filename, ['IM'], image )
class Pcd( Image ):
edam_format = "format_3594"
file_ext = "pcd"
def sniff(self, filename, image=None):
"""Determine if the file is in pcd format."""
return check_image_type( filename, ['PCD'], image )
class Pcx( Image ):
edam_format = "format_3595"
file_ext = "pcx"
def sniff(self, filename, image=None):
"""Determine if the file is in pcx format."""
return check_image_type( filename, ['PCX'], image )
class Ppm( Image ):
edam_format = "format_3596"
file_ext = "ppm"
def sniff(self, filename, image=None):
"""Determine if the file is in ppm format."""
return check_image_type( filename, ['PPM'], image )
class Psd( Image ):
edam_format = "format_3597"
file_ext = "psd"
def sniff(self, filename, image=None):
"""Determine if the file is in psd format."""
return check_image_type( filename, ['PSD'], image )
class Xbm( Image ):
edam_format = "format_3598"
file_ext = "xbm"
def sniff(self, filename, image=None):
"""Determine if the file is in XBM format."""
return check_image_type( filename, ['XBM'], image )
class Xpm( Image ):
edam_format = "format_3599"
file_ext = "xpm"
def sniff(self, filename, image=None):
"""Determine if the file is in XPM format."""
return check_image_type( filename, ['XPM'], image )
class Rgb( Image ):
edam_format = "format_3600"
file_ext = "rgb"
def sniff(self, filename, image=None):
"""Determine if the file is in RGB format."""
return check_image_type( filename, ['RGB'], image )
class Pbm( Image ):
edam_format = "format_3601"
file_ext = "pbm"
def sniff(self, filename, image=None):
"""Determine if the file is in PBM format"""
return check_image_type( filename, ['PBM'], image )
class Pgm( Image ):
edam_format = "format_3602"
file_ext = "pgm"
def sniff(self, filename, image=None):
"""Determine if the file is in PGM format"""
return check_image_type( filename, ['PGM'], image )
class Eps( Image ):
edam_format = "format_3466"
file_ext = "eps"
def sniff(self, filename, image=None):
"""Determine if the file is in eps format."""
return check_image_type( filename, ['EPS'], image )
class Rast( Image ):
edam_format = "format_3605"
file_ext = "rast"
def sniff(self, filename, image=None):
"""Determine if the file is in rast format"""
return check_image_type( filename, ['RAST'], image )
class Pdf( Image ):
edam_format = "format_3508"
@@ -241,14 +169,14 @@ def create_applet_tag_peek( class_name, archive, params ):
type="application/x-java-applet"
height="30" width="200" align="center" >
<param name="archive" value="%s"/>""" % ( class_name, archive )
for name, value in params.iteritems():
for name, value in params.items():
text += """<param name="%s" value="%s"/>""" % ( name, value )
text += """
<object classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
height="30" width="200" >
<param name="code" value="%s" />
<param name="archive" value="%s"/>""" % ( class_name, archive )
for name, value in params.iteritems():
for name, value in params.items():
text += """<param name="%s" value="%s"/>""" % ( name, value )
text += """<div class="errormessage">You must install and enable Java in your browser in order to access this applet.<div></object>
</object>
@@ -271,7 +199,7 @@ class Gmaj( data.Data ):
"nobutton": "false",
"urlpause": "100",
"debug": "false",
"posturl": "history_add_to?%s" % "&".join( map( lambda x: "%s=%s" % ( x[0], quote_plus( str( x[1] ) ) ), [ ( 'copy_access_from', dataset.id), ( 'history_id', dataset.history_id ), ( 'ext', 'maf' ), ( 'name', 'GMAJ Output on data %s' % dataset.hid ), ( 'info', 'Added by GMAJ' ), ( 'dbkey', dataset.dbkey ) ] ) )
"posturl": "history_add_to?%s" % "&".join( "%s=%s" % ( x[0], quote_plus( str( x[1] ) ) ) for x in [ ( 'copy_access_from', dataset.id), ( 'history_id', dataset.history_id ), ( 'ext', 'maf' ), ( 'name', 'GMAJ Output on data %s' % dataset.hid ), ( 'info', 'Added by GMAJ' ), ( 'dbkey', dataset.dbkey ) ] )
}
class_name = "edu.psu.bx.gmaj.MajApplet.class"
archive = "/static/gmaj/gmaj.jar"
@@ -331,7 +259,7 @@ class Laj( data.Text ):
"alignfile1": "display?id=%s" % dataset.id,
"buttonlabel": "Launch LAJ",
"title": "LAJ in Galaxy",
"posturl": quote_plus( "history_add_to?%s" % "&".join( [ "%s=%s" % ( key, value ) for key, value in { 'history_id': dataset.history_id, 'ext': 'lav', 'name': 'LAJ Output', 'info': 'Added by LAJ', 'dbkey': dataset.dbkey, 'copy_access_from': dataset.id }.items() ] ) ),
"posturl": quote_plus( "history_add_to?%s" % "&".join( "%s=%s" % ( key, value ) for key, value in { 'history_id': dataset.history_id, 'ext': 'lav', 'name': 'LAJ Output', 'info': 'Added by LAJ', 'dbkey': dataset.dbkey, 'copy_access_from': dataset.id }.items() ) ),
"noseq": "true"
}
class_name = "edu.psu.cse.bio.laj.LajApplet.class"
+7 -1
View File
@@ -1,3 +1,4 @@
import abc
import logging
import os
@@ -13,7 +14,6 @@ log = logging.getLogger(__name__)
class Hmmer( Text ):
edam_data = "data_1364"
edam_format = "format_1370"
file_ext = "hmm"
def set_peek(self, dataset, is_multi_byte=False):
if not dataset.dataset.purged:
@@ -29,9 +29,14 @@ class Hmmer( Text ):
except:
return "HMMER database (%s)" % ( nice_size( dataset.get_size() ) )
@abc.abstractmethod
def sniff(self, filename):
raise NotImplementedError
class Hmmer2( Hmmer ):
edam_format = "format_3328"
file_ext = "hmm2"
def sniff(self, filename):
"""HMMER2 files start with HMMER2.0
@@ -43,6 +48,7 @@ class Hmmer2( Hmmer ):
class Hmmer3( Hmmer ):
edam_format = "format_3329"
file_ext = "hmm3"
def sniff(self, filename):
"""HMMER3 files start with HMMER3/f
+3 -7
View File
@@ -1,11 +1,11 @@
"""
NGS indexes
"""
import os
import logging
import os
from metadata import MetadataElement
from text import Html
from .metadata import MetadataElement
from .text import Html
log = logging.getLogger(__name__)
@@ -18,7 +18,6 @@ class BowtieIndex( Html ):
MetadataElement( name="base_name", desc="base name for this index set", default='galaxy_generated_bowtie_index', set_in_upload=True, readonly=True )
MetadataElement( name="sequence_space", desc="sequence_space for this index set", default='unknown', set_in_upload=True, readonly=True )
file_ext = 'bowtie_index'
is_binary = True
composite_type = 'auto_primary_file'
allow_datatype_change = False
@@ -59,9 +58,6 @@ class BowtieIndex( Html ):
except:
return "Bowtie index file"
def sniff( self, filename ):
return False
class BowtieColorIndex( BowtieIndex ):
"""
+4 -4
View File
@@ -40,7 +40,7 @@ class Wiff(Binary):
def generate_primary_file(self, dataset=None):
rval = ['<html><head><title>Wiff Composite Dataset </title></head><p/>']
rval.append('<div>This composite dataset is composed of the following files:<p/><ul>')
for composite_name, composite_file in self.get_composite_files(dataset=dataset).iteritems():
for composite_name, composite_file in self.get_composite_files(dataset=dataset).items():
fn = composite_name
opt_text = ''
if composite_file.optional:
@@ -58,7 +58,7 @@ Binary.register_sniffable_binary_format("wiff", "wiff", Wiff )
class PepXmlReport(Tabular):
"""pepxml converted to tabular report"""
edam_data = "data_2536"
file_ext = "tsv"
file_ext = "pepxml.tsv"
def __init__(self, **kwd):
Tabular.__init__(self, **kwd)
@@ -72,7 +72,7 @@ class PepXmlReport(Tabular):
class ProtXmlReport(Tabular):
"""protxml converted to tabular report"""
edam_data = "data_2536"
file_ext = "tsv"
file_ext = "protxml.tsv"
comment_lines = 1
def __init__(self, **kwd):
@@ -351,7 +351,7 @@ class SPLib(Msp):
def generate_primary_file(self, dataset=None):
rval = ['<html><head><title>Spectral Library Composite Dataset </title></head><p/>']
rval.append('<div>This composite dataset is composed of the following files:<p/><ul>')
for composite_name, composite_file in self.get_composite_files(dataset=dataset).iteritems():
for composite_name, composite_file in self.get_composite_files(dataset=dataset).items():
fn = composite_name
opt_text = ''
if composite_file.optional:
+23 -25
View File
@@ -3,6 +3,7 @@ Tabular datatype
"""
from __future__ import absolute_import
import abc
import csv
import gzip
import logging
@@ -44,6 +45,10 @@ class TabularData( data.Text ):
MetadataElement( name="column_names", default=[], desc="Column names", readonly=True, visible=False, optional=True, no_value=[] )
MetadataElement( name="delimiter", default='\t', desc="Data delimiter", readonly=True, visible=False, optional=True, no_value=[] )
@abc.abstractmethod
def set_meta( self, dataset, **kwd ):
raise NotImplementedError
def set_peek( self, dataset, line_count=None, is_multi_byte=False, WIDTH=256, skipchars=None ):
super(TabularData, self).set_peek( dataset, line_count=line_count, is_multi_byte=is_multi_byte, WIDTH=WIDTH, skipchars=skipchars, line_wrap=False )
if dataset.metadata.comment_lines:
@@ -395,7 +400,7 @@ class Tabular( TabularData ):
class Taxonomy( Tabular ):
def __init__(self, **kwd):
"""Initialize taxonomy datatype"""
Tabular.__init__( self, **kwd )
super(Taxonomy, self).__init__( **kwd )
self.column_names = ['Name', 'TaxId', 'Root', 'Superkingdom', 'Kingdom', 'Subkingdom',
'Superphylum', 'Phylum', 'Subphylum', 'Superclass', 'Class', 'Subclass',
'Superorder', 'Order', 'Suborder', 'Superfamily', 'Family', 'Subfamily',
@@ -404,7 +409,7 @@ class Taxonomy( Tabular ):
def display_peek( self, dataset ):
"""Returns formated html of peek"""
return Tabular.make_html_table( self, dataset, column_names=self.column_names )
return super(Taxonomy, self).make_html_table( dataset, column_names=self.column_names )
@dataproviders.decorators.has_dataproviders
@@ -417,14 +422,14 @@ class Sam( Tabular ):
def __init__(self, **kwd):
"""Initialize taxonomy datatype"""
Tabular.__init__( self, **kwd )
super( Sam, self ).__init__( **kwd )
self.column_names = ['QNAME', 'FLAG', 'RNAME', 'POS', 'MAPQ', 'CIGAR',
'MRNM', 'MPOS', 'ISIZE', 'SEQ', 'QUAL', 'OPT'
]
def display_peek( self, dataset ):
"""Returns formated html of peek"""
return Tabular.make_html_table( self, dataset, column_names=self.column_names )
return super( Sam, self ).make_html_table( dataset, column_names=self.column_names )
def sniff( self, filename ):
"""
@@ -606,11 +611,11 @@ class Pileup( Tabular ):
MetadataElement( name="baseCol", default=3, desc="Reference base column", param=metadata.ColumnParameter )
def init_meta( self, dataset, copy_from=None ):
Tabular.init_meta( self, dataset, copy_from=copy_from )
super( Pileup, self ).init_meta( dataset, copy_from=copy_from )
def display_peek( self, dataset ):
"""Returns formated html of peek"""
return Tabular.make_html_table( self, dataset, column_parameter_alias={'chromCol': 'Chrom', 'startCol': 'Start', 'baseCol': 'Base'} )
return super( Pileup, self ).make_html_table( dataset, column_parameter_alias={'chromCol': 'Chrom', 'startCol': 'Start', 'baseCol': 'Base'} )
def repair_methods( self, dataset ):
"""Return options for removing errors along with a description"""
@@ -686,10 +691,10 @@ class Vcf( Tabular ):
def display_peek( self, dataset ):
"""Returns formated html of peek"""
return Tabular.make_html_table( self, dataset, column_names=self.column_names )
return super( Vcf, self ).make_html_table( dataset, column_names=self.column_names )
def set_meta( self, dataset, **kwd ):
Tabular.set_meta( self, dataset, **kwd )
super( Vcf, self ).set_meta( dataset, **kwd )
source = open( dataset.file_name )
# Skip comments.
@@ -741,7 +746,7 @@ class Eland( Tabular ):
def __init__(self, **kwd):
"""Initialize taxonomy datatype"""
Tabular.__init__( self, **kwd )
super( Eland, self ).__init__( **kwd )
self.column_names = ['MACHINE', 'RUN_NO', 'LANE', 'TILE', 'X', 'Y',
'INDEX', 'READ_NO', 'SEQ', 'QUAL', 'CHROM', 'CONTIG',
'POSITION', 'STRAND', 'DESC', 'SRAS', 'PRAS', 'PART_CHROM'
@@ -883,11 +888,10 @@ class BaseCSV( TabularData ):
Delimiter-separated table data.
This includes CSV, TSV and other dialects understood by the
Python 'csv' module https://docs.python.org/2/library/csv.html
Must be extended to define the dialect to use, strict_width: and file_ext.
See Python module csv for documentation of dialect settings
Must be extended to define the dialect to use, strict_width and file_ext.
See the Python module csv for documentation of dialect settings
"""
delimiter = ','
file_ext = 'csv' # File extension
peek_size = 1024 # File chunk used for sniffing CSV dialect
big_peek_size = 10240 # Large File chunk used for sniffing CSV dialect
@@ -1004,12 +1008,9 @@ class CSV( BaseCSV ):
Comma-separated table data.
Only sniffs comma-separated files with at least 2 rows and 2 columns.
"""
def __init__(self, **kwd):
BaseCSV.__init__( self, **kwd )
self.dialect = csv.excel # This is the default
self.file_ext = 'csv' # File extension
self.strict_width = False # Previous csv type did not check column width
file_ext = 'csv'
dialect = csv.excel # This is the default
strict_width = False # Previous csv type did not check column width
@dataproviders.decorators.has_dataproviders
@@ -1026,12 +1027,9 @@ class TSV( BaseCSV ):
column less to indicate first column is row names. This kind of file is
handled fine by the tabular datatype.
"""
def __init__(self, **kwd):
BaseCSV.__init__( self, **kwd )
self.dialect = csv.excel_tab
self.file_ext = 'tsv' # File extension
self.strict_width = True # Leave files with different width to tabular
file_ext = 'tsv'
dialect = csv.excel_tab
strict_width = True # Leave files with different width to tabular
class ConnectivityTable( Tabular ):
@@ -1042,7 +1040,7 @@ class ConnectivityTable( Tabular ):
structure_regexp = re.compile( "^[0-9]+" + "(?:\t|[ ]+)" + "[ACGTURYKMSWBDHVN]+" + "(?:\t|[ ]+)" + "[^\t]+" + "(?:\t|[ ]+)" + "[^\t]+" + "(?:\t|[ ]+)" + "[^\t]+" + "(?:\t|[ ]+)" + "[^\t]+")
def __init__(self, **kwd):
Tabular.__init__( self, **kwd )
super( ConnectivityTable, self ).__init__( **kwd )
self.columns = 6
self.column_names = ['base_index', 'base', 'neighbor_left', 'neighbor_right', 'partner', 'natural_numbering']
self.column_types = ['int', 'str', 'int', 'int', 'int', 'int']
+6
View File
@@ -19,6 +19,7 @@ from ..objectstore import ObjectStore, convert_bytes
try:
from azure.storage import CloudStorageAccount
from azure.storage.blob import BlockBlobService
from azure.storage.blob.models import Blob
from azure.common import AzureHttpError
except ImportError:
BlockBlobService = None
@@ -170,6 +171,11 @@ class AzureBlobObjectStore(ObjectStore):
def _get_size_in_azure(self, rel_path):
try:
properties = self.service.get_blob_properties(self.container_name, rel_path)
# Currently this returns a blob and not a BlobProperties object
# Similar issue for the ruby https://github.com/Azure/azure-storage-ruby/issues/13
# The typecheck is an attempt at future-proofing this when/if the bug is fixed.
if type(properties) is Blob:
properties = properties.properties
if properties:
size_in_bytes = properties.content_length
return size_in_bytes
+1 -1
View File
@@ -1,3 +1,3 @@
VERSION_MAJOR = "16.07"
VERSION_MAJOR = "16.10"
VERSION_MINOR = "dev"
VERSION = VERSION_MAJOR + ('.' + VERSION_MINOR if VERSION_MINOR else '')
+4 -3
View File
@@ -482,9 +482,10 @@ class GalaxyWebTransaction( base.DefaultWebTransaction,
if prev_galaxy_session:
self.sa_session.add( prev_galaxy_session )
self.sa_session.flush()
# If the old session was invalid, get a new history with our new session
# If the old session was invalid, get a new (or existing default,
# unused) history with our new session
if invalidate_existing_session:
self.new_history()
self.get_or_create_default_history()
def _ensure_logged_in_user( self, environ, session_cookie ):
# The value of session_cookie can be one of
@@ -719,7 +720,7 @@ class GalaxyWebTransaction( base.DefaultWebTransaction,
if hasattr( self.galaxy_session, 'current_history' ):
history = self.galaxy_session.current_history
if not history and util.string_as_bool( create ):
history = self.new_history()
history = self.get_or_create_default_history()
return history
def set_history( self, history ):
@@ -1091,61 +1091,36 @@ class HistoryController( BaseUIController, SharableMixin, UsesAnnotations, UsesI
count += 1
return trans.show_ok_message( "%d datasets have been deleted permanently" % count, refresh_frames=['history'] )
# TODO: use api instead
@web.expose
def delete_current( self, trans, purge=False ):
"""Delete just the active history -- this does not require a logged in user."""
history = trans.get_history()
if history.users_shared_with:
return trans.show_error_message( "History (%s) has been shared with others, unshare it before deleting it. " % history.name )
if not history.deleted:
history.deleted = True
trans.sa_session.add( history )
trans.sa_session.flush()
trans.log_event( "History id %d marked as deleted" % history.id )
if purge and trans.app.config.allow_user_dataset_purge:
for hda in history.datasets:
if trans.user:
trans.user.adjust_total_disk_usage(-hda.quota_amount(trans.user))
hda.purged = True
trans.sa_session.add( hda )
trans.log_event( "HDA id %s has been purged" % hda.id )
trans.sa_session.flush()
if hda.dataset.user_can_purge:
try:
hda.dataset.full_delete()
trans.log_event( "Dataset id %s has been purged upon the the purge of HDA id %s" % ( hda.dataset.id, hda.id ) )
trans.sa_session.add( hda.dataset )
except:
log.exception( 'Unable to purge dataset (%s) on purge of hda (%s):' % ( hda.dataset.id, hda.id ) )
history.purged = True
self.sa_session.add( history )
self.sa_session.flush()
for hda in history.datasets:
# Not all datasets have jobs associated with them (e.g., datasets imported from libraries).
if hda.creating_job_associations:
# HDA has associated job, so try marking it deleted.
job = hda.creating_job_associations[0].job
if job.history_id == history.id and not job.finished:
# No need to check other outputs since the job's parent history is this history
job.mark_deleted( trans.app.config.track_jobs_in_database )
trans.app.job_manager.job_stop_queue.put( job.id )
def delete( self, trans, id, purge=False ):
"""Delete the history -- this does not require a logged in user."""
# TODO: use api instead
try:
# get the history with the given id, delete and optionally purge
current_history = self.history_manager.get_current( trans )
history = self.history_manager.get_owned( self.decode_id( id ), trans.user, current_history=current_history )
if history.users_shared_with:
raise exceptions.ObjectAttributeInvalidException(
"History has been shared with others. Unshare it before deleting it."
)
self.history_manager.delete( history, flush=( not purge ) )
if purge:
self.history_manager.purge( history )
# Regardless of whether it was previously deleted, get the most recent history or create a new one.
most_recent_history = self.history_manager.most_recent(
user=trans.user,
filters=[
model.History.deleted == false(),
model.History.purged == false(),
]
)
if most_recent_history:
trans.set_history( most_recent_history )
return trans.show_ok_message( "History deleted, your most recent history is now active",
refresh_frames=['history'] )
# if this history is the current history for this session,
# - attempt to find the most recently used, undeleted history and switch to it.
# - If no suitable recent history is found, create a new one and switch
if history == current_history:
not_deleted_or_purged = [ model.History.deleted == false(), model.History.purged == false() ]
most_recent_history = self.history_manager.most_recent( user=trans.user, filters=not_deleted_or_purged )
if most_recent_history:
self.history_manager.set_current( trans, most_recent_history )
else:
trans.get_or_create_default_history()
trans.get_or_create_default_history()
return trans.show_ok_message( "History deleted, a new history is active", refresh_frames=['history'] )
except Exception as exc:
return trans.show_error_message( exc )
return trans.show_ok_message( "History deleted", refresh_frames=['history'] )
@web.expose
def resume_paused_jobs( self, trans, current=False, ids=None ):
+2
View File
@@ -510,7 +510,9 @@ if [ "$driver" = "python" ]; then
export GALAXY_TEST_TOOL_CONF
fi
python $test_script $coverage_arg -v --with-nosehtml --html-report-file $report_file $xunit_args $structured_data_args $extra_args
exit_status=$?
echo "Testing complete. HTML report is in \"$report_file\"." 1>&2
exit ${exit_status}
else
ensure_grunt
if [ -n "$watch" ]; then
+2
View File
@@ -176,6 +176,8 @@ RELEASE_ISSUE_TEMPLATE = string.Template("""
- [ ] Open PRs from your fork of branch ``version-${version}`` to upstream ``release_${version}`` and of ``version-${next_version}.dev`` to ``dev``.
- [ ] Update ``next_milestone`` in [P4's configuration](https://github.com/galaxyproject/p4) to `{version}` so it properly tags new PRs.
- [ ] **Deploy and Test Release**
- [ ] Update test to ensure it is running a dev at or past branch point (${freeze_date} + 1 day).
+3 -2
View File
@@ -5,6 +5,7 @@ import sys
from pkg_resources import load_entry_point
assert sys.version_info[:2] >= ( 2, 4 )
assert sys.version_info[:2] >= ( 2, 7 )
sys.exit( load_entry_point('nose', 'console_scripts', 'nosetests')() )
nose_core_TestProgram = load_entry_point('nose', 'console_scripts', 'nosetests')
nose_core_TestProgram()
@@ -0,0 +1 @@
{"version":3,"file":"jquery.complexify.js","sources":["../../src/libs/jquery.complexify.js"],"names":["$","fn","extend","complexify","options","callback","additionalComplexityForCharset","str","charset","i","length","charCodeAt","inBanlist","banMode","bannedPasswords","toLowerCase","indexOf","inArray","evaluateSecurity","password","this","val","complexity","valid","CHARSETS","Math","log","pow","strengthScaleFactor","MIN_COMPLEXITY","minimumChars","MAX_COMPLEXITY","call","defaults","window","COMPLEXIFY_BANLIST","isFunction","each","apply","bind","jQuery"],"mappings":"CAKA,SAAWA,GAETA,EAAEC,GAAGC,QACHC,WAAY,SAASC,EAASC,GAwH5B,QAASC,GAA+BC,EAAKC,GAC3C,IAAK,GAAIC,GAAIF,EAAIG,OAAS,EAAGD,GAAK,EAAGA,IACnC,GAAID,EAAQ,IAAMD,EAAII,WAAWF,IAAMF,EAAII,WAAWF,IAAMD,EAAQ,GAClE,MAAOA,GAAQ,GAAKA,EAAQ,GAAK,CAGrC,OAAO,GAGT,QAASI,GAAUL,GACjB,GAAwB,WAApBH,EAAQS,QAAsB,CAChC,IAAK,GAAIJ,GAAI,EAAGA,EAAIL,EAAQU,gBAAgBJ,OAAQD,IAClD,GAA4E,KAAxEF,EAAIQ,cAAcC,QAAQZ,EAAQU,gBAAgBL,GAAGM,eACrD,OAAO,CAGb,QAAO,EAEP,MAAOf,GAAEiB,QAAQV,EAAKH,EAAQU,iBAAmB,IAAK,GAAO,EAIjE,QAASI,KACP,GAAIC,GAAWnB,EAAEoB,MAAMC,MACnBC,EAAa,EAAGC,GAAQ,CAG5B,IAAKX,EAAUO,GAQbG,EAAa,MALb,KAAK,GAAIb,GAAIe,EAASd,OAAS,EAAGD,GAAK,EAAGA,IACxCa,GAAchB,EAA+Ba,EAAUK,EAASf,GAQpEa,GAAaG,KAAKC,IAAID,KAAKE,IAAIL,EAAYH,EAAST,UAAY,EAAEN,EAAQwB,qBAE1EL,EAASD,EAAaO,GAAkBV,EAAST,QAAUN,EAAQ0B,aAGnER,EAAcA,EAAaS,EAAkB,IAC7CT,EAAcA,EAAa,IAAO,IAAMA,EAExCjB,EAAS2B,KAAKZ,KAAMG,EAAOD,GArK7B,GAAIO,GAAiB,GACjBE,EAAiB,IACjBP,IAGD,GAAQ,KACR,GAAQ,KACR,GAAQ,KACR,GAAQ,MACR,GAAQ,KACR,GAAQ,KACR,GAAQ,KACR,IAAQ,MAGR,IAAQ,MACR,IAAQ,MACR,IAAQ,MACR,IAAQ,MACR,IAAQ,MACR,IAAQ,MACR,IAAQ,OACR,KAAQ,OACR,KAAQ,OACR,KAAQ,OACR,KAAQ,OACR,KAAQ,OACR,KAAQ,OACR,KAAQ,OACR,KAAQ,OACR,KAAQ,OACR,KAAQ,OACR,KAAQ,OACR,KAAQ,OACR,KAAQ,OACR,KAAQ,OACR,KAAQ,OACR,KAAQ,OACR,KAAQ,OACR,KAAQ,OACR,KAAQ,OACR,KAAQ,OACR,KAAQ,OACR,KAAQ,OACR,KAAQ,OACR,KAAQ,OACR,KAAQ,OACR,KAAQ,OACR,KAAQ,OACR,KAAQ,OACR,KAAQ,OACR,KAAQ,OACR,KAAQ,OACR,KAAQ,OACR,KAAQ,OACR,KAAQ,OACR,KAAQ,OACR,KAAQ,OACR,KAAQ,OACR,KAAQ,OACR,KAAQ,OACR,KAAQ,OACR,KAAQ,OACR,KAAQ,OACR,KAAQ,OACR,KAAQ,OACR,KAAQ,OACR,KAAQ,OACR,KAAQ,OACR,KAAQ,QACR,MAAQ,QACR,MAAQ,QACR,MAAQ,QACR,MAAQ,QACR,MAAQ,QACR,MAAQ,QACR,MAAQ,QACR,MAAQ,QACR,MAAQ,QACR,MAAQ,QACR,MAAQ,QACR,MAAQ,QACR,MAAQ,QACR,MAAQ,QACR,MAAQ,QACR,MAAQ,QACR,MAAQ,QACR,MAAQ,QACR,MAAQ,QACR,MAAQ,QACR,MAAQ,QACR,MAAQ,QACR,MAAQ,QACR,MAAQ,QACR,MAAQ,QACR,MAAQ,QACR,MAAQ,QACR,MAAQ,QACR,MAAQ,QACR,MAAQ,QACR,MAAQ,QACR,MAAQ,QAGPS,GACFH,aAAc,EACdF,oBAAqB,EACrBd,gBAAiBoB,OAAOC,uBACxBtB,QAAS,SAkEX,OA/DGb,GAAEoC,WAAWhC,KAAaC,IAC3BA,EAAWD,EACXA,MAGFA,EAAUJ,EAAEE,OAAO+B,EAAU7B,GAoD7BgB,KAAKiB,KAAK,WACNrC,EAAEoB,MAAMC,OACRH,EAAiBoB,MAAMlB,QAIpBA,KAAKiB,KAAK,WACfrC,EAAEoB,MAAMmB,KAAK,2CAA4CrB,SAM9DsB"}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"options-menu.js","sources":["../../../src/mvc/history/options-menu.js"],"names":["define","PopupMenu","historyCopyDialog","BASE_MVC","_l","buildMenu","isAnon","purgeAllowed","urlRoot","_","clone","menu","filter","menuOption","anon","purge","href","target","confirm","func","galaxy_main","location","html","header","Galaxy","currHistoryPanel","createNewHistory","model","done","loadCurrentHistory","collapseAll","unhideHidden","deleteHidden","create","$button","options","undefined","anonymous","root"],"mappings":"AAAAA,QACI,oBACA,0BACA,eACA,sBACD,SAAUC,EAAWC,EAAmBC,EAAUC,GAErD,YA+HA,SAASC,GAAWC,EAAQC,EAAcC,GACtC,MAAOC,GAAEC,MAAOC,GAAOC,OAAQ,SAAUC,GACrC,MAAIP,KAAWO,EAAWC,MACf,GAENP,GAAgBM,EAAWE,OACrB,GAIPF,EAAWG,OACXH,EAAWG,KAAOR,EAAUK,EAAWG,KACvCH,EAAWI,OAAS,eAGpBJ,EAAWK,UACXL,EAAWM,KAAO,WACVD,QAASL,EAAWK,WACpBE,YAAYC,SAAWR,EAAWG,SAIvC,KAlJf,GAAIL,KAEIW,KAAUlB,EAAI,iBACdmB,QAAU,IAGVD,KAAUlB,EAAI,mBACdY,KAAU,iBAGVM,KAAUlB,EAAI,4BACdY,KAAU,wBAIVM,KAAUlB,EAAI,mBACdmB,QAAU,EACVT,MAAU,IAGVQ,KAAUlB,EAAI,cACde,KAAU,WAAYK,OAAOC,iBAAiBC,sBAG9CJ,KAAUlB,EAAI,gBACde,KAAU,WACNjB,EAAmBsB,OAAOC,iBAAiBE,OACtCC,KAAM,WACHJ,OAAOC,iBAAiBI,0BAKpCP,KAAUlB,EAAI,oBACdY,KAAU,oBAGVM,KAAUlB,EAAI,kBACdY,KAAU,6BACVF,MAAU,IAGVQ,KAAUlB,EAAI,oBACdY,KAAU,wCAGVM,KAAUlB,EAAI,UACdc,QAAUd,EAAI,sCACdY,KAAU,2BAGVM,KAAUlB,EAAI,sBACdc,QAAUd,EAAI,yEACdY,KAAU,oCACVD,OAAU,EACVD,MAAU,IAKVQ,KAAUlB,EAAI,mBACdmB,QAAU,EACVT,MAAU,IAGVQ,KAAUlB,EAAI,iBACdY,KAAU,0BAGVM,KAAUlB,EAAI,oBACdY,KAAU,yCAGVM,KAAUlB,EAAI,sBACdY,KAAU,0CACVF,MAAU,IAGVQ,KAAUlB,EAAI,8BACde,KAAU,WAAYK,OAAOC,iBAAiBK,iBAG9CR,KAAUlB,EAAI,0BACdU,MAAU,EACVK,KAAU,WAAYK,OAAOC,iBAAiBM,kBAG9CT,KAAUlB,EAAI,0BACdU,MAAU,EACVK,KAAU,WAAYK,OAAOC,iBAAiBO,kBAG9CV,KAAUlB,EAAI,0BACdc,QAAUd,EAAI,0EACdY,KAAU,iCACVD,OAAU,EACVD,MAAU,IAIVQ,KAAUlB,EAAI,aACdmB,QAAU,IAGVD,KAAUlB,EAAI,yBACdY,KAAU,oBACVF,MAAU,IAGVQ,KAAUlB,EAAI,0BACdY,KAAU,sCACVF,MAAU,IAIVQ,KAAUlB,EAAI,iBACdmB,QAAU,IAGVD,KAAUlB,EAAI,oBACdY,KAAU,2BA8BdiB,EAAS,SAAUC,EAASC,GAC5BA,EAAUA,KACV,IAAI7B,GAA+B8B,SAAtBD,EAAQE,WAAyB,EAAOF,EAAQE,UACzD9B,EAAe4B,EAAQ5B,eAAgB,EACvCI,EAAON,EAAWC,EAAQC,EAAciB,OAAOc,KAEnD,OAAO,IAAIrC,GAAWiC,EAASvB,GAK/B,OAAOsB"}
{"version":3,"file":"options-menu.js","sources":["../../../src/mvc/history/options-menu.js"],"names":["define","PopupMenu","historyCopyDialog","BASE_MVC","_l","buildMenu","isAnon","purgeAllowed","urlRoot","_","clone","menu","filter","menuOption","anon","purge","href","target","confirm","func","galaxy_main","location","html","header","Galaxy","currHistoryPanel","createNewHistory","model","done","loadCurrentHistory","window","id","collapseAll","unhideHidden","deleteHidden","create","$button","options","undefined","anonymous","root"],"mappings":"AAAAA,QACI,oBACA,0BACA,eACA,sBACD,SAAUC,EAAWC,EAAmBC,EAAUC,GAErD,YAuIA,SAASC,GAAWC,EAAQC,EAAcC,GACtC,MAAOC,GAAEC,MAAOC,GAAOC,OAAQ,SAAUC,GACrC,MAAIP,KAAWO,EAAWC,MACf,GAENP,GAAgBM,EAAWE,OACrB,GAIPF,EAAWG,OACXH,EAAWG,KAAOR,EAAUK,EAAWG,KACvCH,EAAWI,OAAS,eAGpBJ,EAAWK,UACXL,EAAWM,KAAO,WACVD,QAASL,EAAWK,WACpBE,YAAYC,SAAWR,EAAWG,SAIvC,KA1Jf,GAAIL,KAEIW,KAAUlB,EAAI,iBACdmB,QAAU,IAGVD,KAAUlB,EAAI,mBACdY,KAAU,iBAGVM,KAAUlB,EAAI,4BACdY,KAAU,wBAIVM,KAAUlB,EAAI,mBACdmB,QAAU,EACVT,MAAU,IAGVQ,KAAUlB,EAAI,cACde,KAAU,WAAYK,OAAOC,iBAAiBC,sBAG9CJ,KAAUlB,EAAI,gBACde,KAAU,WACNjB,EAAmBsB,OAAOC,iBAAiBE,OACtCC,KAAM,WACHJ,OAAOC,iBAAiBI,0BAKpCP,KAAUlB,EAAI,oBACdY,KAAU,oBAGVM,KAAUlB,EAAI,kBACdY,KAAU,6BACVF,MAAU,IAGVQ,KAAUlB,EAAI,oBACdY,KAAU,wCAGVM,KAAUlB,EAAI,UACdU,MAAU,EACVK,KAAU,WACFK,QAAUA,OAAOC,kBAAoBP,QAASd,EAAI,yCAClDgB,YAAYU,OAAOT,SAASL,KAAO,qBAAuBQ,OAAOC,iBAAiBE,MAAMI,OAKhGT,KAAUlB,EAAI,sBACdW,OAAU,EACVD,MAAU,EACVK,KAAU,WACFK,QAAUA,OAAOC,kBACjBP,QAASd,EAAI,4EACbgB,YAAYU,OAAOT,SAASL,KAAO,gCAAkCQ,OAAOC,iBAAiBE,MAAMI,OAO3GT,KAAUlB,EAAI,mBACdmB,QAAU,EACVT,MAAU,IAGVQ,KAAUlB,EAAI,iBACdY,KAAU,0BAGVM,KAAUlB,EAAI,oBACdY,KAAU,yCAGVM,KAAUlB,EAAI,sBACdY,KAAU,0CACVF,MAAU,IAGVQ,KAAUlB,EAAI,8BACde,KAAU,WAAYK,OAAOC,iBAAiBO,iBAG9CV,KAAUlB,EAAI,0BACdU,MAAU,EACVK,KAAU,WAAYK,OAAOC,iBAAiBQ,kBAG9CX,KAAUlB,EAAI,0BACdU,MAAU,EACVK,KAAU,WAAYK,OAAOC,iBAAiBS,kBAG9CZ,KAAUlB,EAAI,0BACdc,QAAUd,EAAI,0EACdY,KAAU,iCACVD,OAAU,EACVD,MAAU,IAIVQ,KAAUlB,EAAI,aACdmB,QAAU,IAGVD,KAAUlB,EAAI,yBACdY,KAAU,oBACVF,MAAU,IAGVQ,KAAUlB,EAAI,0BACdY,KAAU,sCACVF,MAAU,IAIVQ,KAAUlB,EAAI,iBACdmB,QAAU,IAGVD,KAAUlB,EAAI,oBACdY,KAAU,2BA8BdmB,EAAS,SAAUC,EAASC,GAC5BA,EAAUA,KACV,IAAI/B,GAA+BgC,SAAtBD,EAAQE,WAAyB,EAAOF,EAAQE,UACzDhC,EAAe8B,EAAQ9B,eAAgB,EACvCI,EAAON,EAAWC,EAAQC,EAAciB,OAAOgB,KAEnD,OAAO,IAAIvC,GAAWmC,EAASzB,GAK/B,OAAOwB"}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+2
View File
@@ -0,0 +1,2 @@
!function(a){a.fn.extend({complexify:function(b,c){function d(a,b){for(var c=a.length-1;c>=0;c--)if(b[0]<=a.charCodeAt(c)&&a.charCodeAt(c)<=b[1])return b[1]-b[0]+1;return 0}function e(c){if("strict"===b.banMode){for(var d=0;d<b.bannedPasswords.length;d++)if(-1!==c.toLowerCase().indexOf(b.bannedPasswords[d].toLowerCase()))return!0;return!1}return a.inArray(c,b.bannedPasswords)>-1?!0:!1}function f(){var f=a(this).val(),j=0,k=!1;if(e(f))j=1;else for(var l=i.length-1;l>=0;l--)j+=d(f,i[l]);j=Math.log(Math.pow(j,f.length))*(1/b.strengthScaleFactor),k=j>g&&f.length>=b.minimumChars,j=j/h*100,j=j>100?100:j,c.call(this,k,j)}var g=49,h=120,i=[[32,32],[48,57],[65,90],[97,122],[33,47],[58,64],[91,96],[123,126],[128,255],[256,383],[384,591],[592,687],[688,767],[768,879],[880,1023],[1024,1279],[1328,1423],[1424,1535],[1536,1791],[1792,1871],[1920,1983],[2304,2431],[2432,2559],[2560,2687],[2688,2815],[2816,2943],[2944,3071],[3072,3199],[3200,3327],[3328,3455],[3456,3583],[3584,3711],[3712,3839],[3840,4095],[4096,4255],[4256,4351],[4352,4607],[4608,4991],[5024,5119],[5120,5759],[5760,5791],[5792,5887],[6016,6143],[6144,6319],[7680,7935],[7936,8191],[8192,8303],[8304,8351],[8352,8399],[8400,8447],[8448,8527],[8528,8591],[8592,8703],[8704,8959],[8960,9215],[9216,9279],[9280,9311],[9312,9471],[9472,9599],[9600,9631],[9632,9727],[9728,9983],[9984,10175],[10240,10495],[11904,12031],[12032,12255],[12272,12287],[12288,12351],[12352,12447],[12448,12543],[12544,12591],[12592,12687],[12688,12703],[12704,12735],[12800,13055],[13056,13311],[13312,19893],[19968,40959],[40960,42127],[42128,42191],[44032,55203],[55296,56191],[56192,56319],[56320,57343],[57344,63743],[63744,64255],[64256,64335],[64336,65023],[65056,65071],[65072,65103],[65104,65135],[65136,65278],[65279,65279],[65280,65519],[65520,65533]],j={minimumChars:8,strengthScaleFactor:1,bannedPasswords:window.COMPLEXIFY_BANLIST||[],banMode:"strict"};return a.isFunction(b)&&!c&&(c=b,b={}),b=a.extend(j,b),this.each(function(){a(this).val()&&f.apply(this)}),this.each(function(){a(this).bind("keyup focus input propertychange mouseup",f)})}})}(jQuery);
//# sourceMappingURL=../../maps/libs/jquery.complexify.js.map
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -1,2 +1,2 @@
define(["mvc/ui/popup-menu","mvc/history/copy-dialog","mvc/base-mvc","utils/localization"],function(a,b,c,d){"use strict";function e(a,b,c){return _.clone(f).filter(function(d){return a&&!d.anon?!1:!b&&d.purge?!1:(d.href&&(d.href=c+d.href,d.target="galaxy_main"),d.confirm&&(d.func=function(){confirm(d.confirm)&&(galaxy_main.location=d.href)}),!0)})}var f=[{html:d("History Lists"),header:!0},{html:d("Saved Histories"),href:"history/list"},{html:d("Histories Shared with Me"),href:"history/list_shared"},{html:d("History Actions"),header:!0,anon:!0},{html:d("Create New"),func:function(){Galaxy.currHistoryPanel.createNewHistory()}},{html:d("Copy History"),func:function(){b(Galaxy.currHistoryPanel.model).done(function(){Galaxy.currHistoryPanel.loadCurrentHistory()})}},{html:d("Share or Publish"),href:"history/sharing"},{html:d("Show Structure"),href:"history/display_structured",anon:!0},{html:d("Extract Workflow"),href:"workflow/build_from_current_history"},{html:d("Delete"),confirm:d("Really delete the current history?"),href:"history/delete_current"},{html:d("Delete Permanently"),confirm:d("Really delete the current history permanently? This cannot be undone."),href:"history/delete_current?purge=True",purge:!0,anon:!0},{html:d("Dataset Actions"),header:!0,anon:!0},{html:d("Copy Datasets"),href:"dataset/copy_datasets"},{html:d("Dataset Security"),href:"root/history_set_default_permissions"},{html:d("Resume Paused Jobs"),href:"history/resume_paused_jobs?current=True",anon:!0},{html:d("Collapse Expanded Datasets"),func:function(){Galaxy.currHistoryPanel.collapseAll()}},{html:d("Unhide Hidden Datasets"),anon:!0,func:function(){Galaxy.currHistoryPanel.unhideHidden()}},{html:d("Delete Hidden Datasets"),anon:!0,func:function(){Galaxy.currHistoryPanel.deleteHidden()}},{html:d("Purge Deleted Datasets"),confirm:d("Really delete all deleted datasets permanently? This cannot be undone."),href:"history/purge_deleted_datasets",purge:!0,anon:!0},{html:d("Downloads"),header:!0},{html:d("Export Tool Citations"),href:"history/citations",anon:!0},{html:d("Export History to File"),href:"history/export_archive?preview=True",anon:!0},{html:d("Other Actions"),header:!0},{html:d("Import from File"),href:"history/import_archive"}],g=function(b,c){c=c||{};var d=void 0===c.anonymous?!0:c.anonymous,f=c.purgeAllowed||!1,g=e(d,f,Galaxy.root);return new a(b,g)};return g});
define(["mvc/ui/popup-menu","mvc/history/copy-dialog","mvc/base-mvc","utils/localization"],function(a,b,c,d){"use strict";function e(a,b,c){return _.clone(f).filter(function(d){return a&&!d.anon?!1:!b&&d.purge?!1:(d.href&&(d.href=c+d.href,d.target="galaxy_main"),d.confirm&&(d.func=function(){confirm(d.confirm)&&(galaxy_main.location=d.href)}),!0)})}var f=[{html:d("History Lists"),header:!0},{html:d("Saved Histories"),href:"history/list"},{html:d("Histories Shared with Me"),href:"history/list_shared"},{html:d("History Actions"),header:!0,anon:!0},{html:d("Create New"),func:function(){Galaxy.currHistoryPanel.createNewHistory()}},{html:d("Copy History"),func:function(){b(Galaxy.currHistoryPanel.model).done(function(){Galaxy.currHistoryPanel.loadCurrentHistory()})}},{html:d("Share or Publish"),href:"history/sharing"},{html:d("Show Structure"),href:"history/display_structured",anon:!0},{html:d("Extract Workflow"),href:"workflow/build_from_current_history"},{html:d("Delete"),anon:!0,func:function(){Galaxy&&Galaxy.currHistoryPanel&&confirm(d("Really delete the current history?"))&&(galaxy_main.window.location.href="history/delete?id="+Galaxy.currHistoryPanel.model.id)}},{html:d("Delete Permanently"),purge:!0,anon:!0,func:function(){Galaxy&&Galaxy.currHistoryPanel&&confirm(d("Really delete the current history permanently? This cannot be undone."))&&(galaxy_main.window.location.href="history/delete?purge=True&id="+Galaxy.currHistoryPanel.model.id)}},{html:d("Dataset Actions"),header:!0,anon:!0},{html:d("Copy Datasets"),href:"dataset/copy_datasets"},{html:d("Dataset Security"),href:"root/history_set_default_permissions"},{html:d("Resume Paused Jobs"),href:"history/resume_paused_jobs?current=True",anon:!0},{html:d("Collapse Expanded Datasets"),func:function(){Galaxy.currHistoryPanel.collapseAll()}},{html:d("Unhide Hidden Datasets"),anon:!0,func:function(){Galaxy.currHistoryPanel.unhideHidden()}},{html:d("Delete Hidden Datasets"),anon:!0,func:function(){Galaxy.currHistoryPanel.deleteHidden()}},{html:d("Purge Deleted Datasets"),confirm:d("Really delete all deleted datasets permanently? This cannot be undone."),href:"history/purge_deleted_datasets",purge:!0,anon:!0},{html:d("Downloads"),header:!0},{html:d("Export Tool Citations"),href:"history/citations",anon:!0},{html:d("Export History to File"),href:"history/export_archive?preview=True",anon:!0},{html:d("Other Actions"),header:!0},{html:d("Import from File"),href:"history/import_archive"}],g=function(b,c){c=c||{};var d=void 0===c.anonymous?!0:c.anonymous,f=c.purgeAllowed||!1,g=e(d,f,Galaxy.root);return new a(b,g)};return g});
//# sourceMappingURL=../../../maps/mvc/history/options-menu.js.map
File diff suppressed because one or more lines are too long
+17
View File
@@ -16,6 +16,18 @@
${render_msg( message, status )}
%endif
<script>
$(function() {
$("[name='password']").complexify({'minimumChars':6}, function(valid, complexity){
var progressBar = $('.progress-bar');
var color = valid ? 'lightgreen' : 'red';
progressBar.css('background-color', color);
progressBar.css({'width': complexity + '%'});
});
});
</script>
<div class="toolForm">
<form name="change_password" id="change_password" action="${h.url_for( controller='user', action='change_password' )}" method="post" >
<input type="hidden" name="display_top" value="${display_top}"/>
@@ -32,6 +44,11 @@
<label>New password:</label>
<input type="password" name="password" value="" size="40"/>
</div>
<div class="progress">
<div id="complexity-bar" class="progress-bar" role="progressbar">
Strength
</div>
</div>
<div class="form-row">
<label>Confirm:</label>
<input type="password" name="confirm" value="" size="40"/>
+14 -1
View File
@@ -86,7 +86,15 @@ def inherit(context):
$(".errormessage").html(message);
}
$('#registration').bind('submit', function(e) {
$("[name='password']").complexify({'minimumChars':6}, function(valid, complexity){
var progressBar = $('.progress-bar');
var color = valid ? 'lightgreen' : 'red';
progressBar.css('background-color', color);
progressBar.css({'width': complexity + '%'});
});
$('#registration').bind('submit', function(e) {
$('#send').attr('disabled', 'disabled');
// we need this value to detect submitting at backend
@@ -130,6 +138,11 @@ def inherit(context):
<label>Password:</label>
<input id="password_input" type="password" name="password" value="" size="40"/>
</div>
<div class="progress">
<div id="complexity-bar" class="progress-bar" role="progressbar">
Strength
</div>
</div>
<div class="form-row">
<label>Confirm password:</label>
<input id="password_check_input" type="password" name="confirm" value="" size="40"/>
+3 -2
View File
@@ -3,7 +3,8 @@ import os.path
from stat import S_IXUSR
from os import makedirs, stat, symlink, chmod, environ
from shutil import rmtree
from galaxy.tools.deps import DependencyManager, INDETERMINATE_DEPENDENCY
from galaxy.tools.deps import DependencyManager
from galaxy.tools.deps.resolvers import NullDependency
from galaxy.tools.deps.resolvers.galaxy_packages import GalaxyPackageDependency
from galaxy.tools.deps.resolvers.modules import ModuleDependencyResolver, ModuleDependency
from galaxy.util.bunch import Bunch
@@ -141,7 +142,7 @@ advisor/2013/update3 intel/12.0 mkl/10.2.7.041
assert module.module_version == "3.0.1"
module = resolver.resolve( name="R", version="3.0.4", type="package" )
assert module == INDETERMINATE_DEPENDENCY
assert isinstance(module, NullDependency)
def test_module_dependency():
+5 -5
View File
@@ -35,21 +35,21 @@ deps =
# include list is reduced to just the inverse of Galaxy's linting
# blacklist these can both just be removed and flake8-import-order can
# be added as a dependency to Galaxy's main linting task.
[testenv:py27-lint-imports]
[testenv:py27-lint-imports]
commands = bash .ci/flake8_wrapper.sh
whitelist_externals = bash
skip_install = True
deps =
flake8<3
flake8-import-order
flake8
flake8-import-order>=0.9
[testenv:py27-lint-imports-include-list]
commands = bash .ci/flake8_wrapper_imports.sh
whitelist_externals = bash
skip_install = True
deps =
flake8<3
flake8-import-order
flake8
flake8-import-order>=0.9
[testenv:qunit]
commands = bash run_tests.sh -q