mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
Merge remote-tracking branch 'upstream/dev' into history-contents.limiting
This commit is contained in:
@@ -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/
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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;
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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' ],
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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"/>
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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 ):
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 ):
|
||||
"""
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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']
|
||||
|
||||
@@ -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,3 +1,3 @@
|
||||
VERSION_MAJOR = "16.07"
|
||||
VERSION_MAJOR = "16.10"
|
||||
VERSION_MINOR = "dev"
|
||||
VERSION = VERSION_MAJOR + ('.' + VERSION_MINOR if VERSION_MINOR else '')
|
||||
|
||||
@@ -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 ):
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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).
|
||||
|
||||
@@ -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 @@
|
||||
{"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
@@ -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
|
||||
Vendored
+3
-4
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -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
@@ -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"/>
|
||||
|
||||
@@ -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,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():
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user