├── .bowerrc ├── .codeclimate.yml ├── .coveragerc ├── .editorconfig ├── .eslintignore ├── .gitignore ├── .gitmodules ├── .jscsrc ├── .tx └── config ├── CHANGES.txt ├── LICENSE.txt ├── README.md ├── _env.tmpl ├── assembl ├── __init__.py ├── __version__.py ├── alembic │ ├── README │ ├── env.py │ ├── script.py.mako │ └── versions │ │ ├── 06a588c53002_attachments_from_youtube_inspiration.py │ │ ├── 0888e0f1a92d_timeline.py │ │ ├── 0a6cc006a44b_kill_extract_body.py │ │ ├── 10159cb599ff_add_votes.py │ │ ├── 104d2f466913_social_email.py │ │ ├── 10d81337e9f1_proposal_post.py │ │ ├── 10eaccaf8c33_publication_states.py │ │ ├── 116f128b0000_locale_as_str.py │ │ ├── 11d73c586596_token_votes.py │ │ ├── 12fd3dd74340_widgets_table.py │ │ ├── 13cb36c87aea_ancestry_index.py │ │ ├── 14296672081d_longer_preferred_email.py │ │ ├── 157237dd5620_add_content_source_error_notification.py │ │ ├── 1593228f01ab_hopefully_fix_duplicate_imported_.py │ │ ├── 163294913218_import_records.py │ │ ├── 164b0fe5831b_connected_user.py │ │ ├── 165e8b786ca0_vote_spec_question_id_nullable.py │ │ ├── 172cd43879ac_ideacontentwidgetlink_are_positive_links.py │ │ ├── 187cdadb065f_add_participant_templates_to_existing_.py │ │ ├── 1931a5603650_store_mime_type_of_post_body.py │ │ ├── 19b28b9ea376_migrate_facebook_users.py │ │ ├── 19db6b12a1e9_role_request.py │ │ ├── 1bbe7758d93e_unicode_social_username.py │ │ ├── 1c09e0b1ff2a_add_announces.py │ │ ├── 1e01b5f0e5f9_file_upload.py │ │ ├── 1e1d2b26db86_discussionkvpairs.py │ │ ├── 1e3856969b22_preferred_locale_moves_to_preferences.py │ │ ├── 1fd30009e8b8_hidden_widget_ideas.py │ │ ├── 1fdfec5c3fe9_repair_.py │ │ ├── 21fdae57b099_update_lang_pref.py │ │ ├── 227f09c8b8d4_ensure_inheritance.py │ │ ├── 236808a19c3b_delete_quad_storages.py │ │ ├── 238823d75893_notification_subscriptions.py │ │ ├── 243942b0a23d_attachment_file_size.py │ │ ├── 2487304d08c7_agent_name_index.py │ │ ├── 250035d23e83_recalc_message_id.py │ │ ├── 25ef5e68f0aa_significant_extract.py │ │ ├── 267b2f56d7b0_corrupt_idea_related_post_link.py │ │ ├── 26caf0c8f768_ensure_facebookaccounts_have_an_app_id.py │ │ ├── 27bb3c90a95d_add_logo_url_field_in_discussion.py │ │ ├── 27f58fce7b77_override_social_autologin.py │ │ ├── 287e89a8677a_metadata_on_ideaproposalpost.py │ │ ├── 28987a8e5d4f_cleanups.py │ │ ├── 28a8fd62693b_add_user_joins_notification.py │ │ ├── 28f4b541f727_widget_content_links.py │ │ ├── 28ff27fa61a9_document_data_types.py │ │ ├── 29c5ef7ad189_kill_weird_notifications.py │ │ ├── 29f0f6751c2a_obsolete_notifications_and_unverified_.py │ │ ├── 2ab6e44b72d3_add_postwithmetadata.py │ │ ├── 2b8cadc0af7e_users_with_verified_social_accounts_.py │ │ ├── 2bd68ba8f420_moderation.py │ │ ├── 2c1cd2d2af9b_idprovider_account_uniqueness2.py │ │ ├── 2c22018cd788_idprovider_account_uniqueness.py │ │ ├── 2c5b4e40daea_add_widgetpost_to_widget_link.py │ │ ├── 2df3bdfbc594_facebook_update_fields.py │ │ ├── 2df4150af427_idea_widget_link.py │ │ ├── 2e13e10be574_qnames_for_actions.py │ │ ├── 2e4ce0e3a0b2_attachment_support.py │ │ ├── 2e75c694f2d9_deduplicate_subscriptions.py │ │ ├── 2e81cd0680f5_preferences_name_unique.py │ │ ├── 2e842a54ff2_old_permissions.py │ │ ├── 2e96ee310c2f_add_flag_to_discussion_about_showing_an_.py │ │ ├── 2eb3b92b734c_idealoom_idea_source.py │ │ ├── 2f0fc6545b35_unify_empty_langstrings.py │ │ ├── 2f52aea29238_rdf_in_idea_type.py │ │ ├── 2f9ca6738fb6_deduplicate_subscriptions.py │ │ ├── 301275210522_anonymous_user.py │ │ ├── 30365b67b36d_idea_link_creation.py │ │ ├── 3167e90d6636_user_subclasses_agentprofile.py │ │ ├── 31c0cfa82b14_votes_by_widget.py │ │ ├── 328e132a35de_widget_status_store_context_link.py │ │ ├── 3294b9c51452_emails_missing_in_.py │ │ ├── 335e41a86a6b_discussion_creator.py │ │ ├── 33b361960ee7_idea_namespaced_key_value.py │ │ ├── 33c20d131cb6_fix_notification_constraints.py │ │ ├── 33d7d4945aa3_add_discussion_help_url.py │ │ ├── 34dd4e942bde_constraints_on_post_parent_id.py │ │ ├── 3546c3f3020b_usertemplate_class.py │ │ ├── 358edeb4135c_userlanguagepref_uniqueness.py │ │ ├── 368a596ab4b5_tombstone_date.py │ │ ├── 36f403b0097d_vote_history.py │ │ ├── 3738207829e0_discussion_homepage.py │ │ ├── 38239ae5d254_fix_broken_virtuoso_migration.py │ │ ├── 384c371312a8_email_ci_index.py │ │ ├── 389049a723fb_migrate_post_to_langstring.py │ │ ├── 3958ac5b0665_userstatusindiscussion.py │ │ ├── 3b4e6d894f6_materialize_actiononpost_in_a_table.py │ │ ├── 3bfbb0ef1bd6_widget_lifecycle.py │ │ ├── 3cc1683d2f24_no_reuse_langstring.py │ │ ├── 3d8923f4657a_ideainspiremewidgetlink_for_.py │ │ ├── 3da99691038d_facebook_create_tables.py │ │ ├── 3e12427ba98d_discussion_auto_subscribe_on_signup.py │ │ ├── 3eb0fa36d60a_duplicate_userlocalroles.py │ │ ├── 3ebd3f1deebe_maildir_support.py │ │ ├── 402d9945c62_body_index.py │ │ ├── 407441ce1b20_dedup_registrations.py │ │ ├── 4097019d6357_document_title.py │ │ ├── 41176a6a6758_tombstonable_content.py │ │ ├── 418b92acbcc5_boolean_discussion_subscribe_to_.py │ │ ├── 435a9acff264_user_language_preference.py │ │ ├── 43863df11763_isolate_idea_rdf_type.py │ │ ├── 43df3099d52a_revert_body_index.py │ │ ├── 44f588d96b14_source_errors.py │ │ ├── 453f5e773eff_timeline_deletion.py │ │ ├── 456ac0bc450b_normalize_email_domains_to_lower_case.py │ │ ├── 45cf6094ba3d_preferred_abstractagentaccount.py │ │ ├── 46d8492ca1c4_deduplicate_documents.py │ │ ├── 46e13114e7d4_voting_criteria.py │ │ ├── 4710aefc13ce_preferences.py │ │ ├── 475125b7bfe3_content_source_ids.py │ │ ├── 47f08d228847_add_more_discussion_fields.py │ │ ├── 48a07f038fe1_add_self_registration_to_existing_.py │ │ ├── 49432c8ab71b_kill_weird_links.py │ │ ├── 498e7af689d2_duplicate_subgraphideaassociation.py │ │ ├── 499dcb6474f8_clear_user_templates.py │ │ ├── 4af80f6ad90a_nonnull_foreign_keys.py │ │ ├── 4b3f40493485_new_discussion_fields.py │ │ ├── 4bfa6908f218_kill_lickertrange.py │ │ ├── 4bfc1da4d2e4_attachment_fix.py │ │ ├── 4bff86bd0ef4_notificationsubscription_subclasses.py │ │ ├── 4dcf98a132de_longer_locales.py │ │ ├── 4df8698f9da8_discussion_json_settings.py │ │ ├── 4e06ad70101a_insert_languagepreferenceorder.py │ │ ├── 4e6b939229c3_snapshot_old_syntheses.py │ │ ├── 4ea8eee4b157_refactor_subject_body_to_content.py │ │ ├── 4ee1c4902cea_langstring_name_uniqueness.py │ │ ├── 4f43341f787e_non_null_langstringentry_value.py │ │ ├── 4f66059c1a9c_timeline.py │ │ ├── 50639b470b96_delete_old_subject_body.py │ │ ├── 51e90ff6a48c_widget_user_config_id.py │ │ ├── 522dae49e62e_utctime.py │ │ ├── 523425ac5b3b_idea_tombstone.py │ │ ├── 525b7451056e_migrate_to_social_auth_account.py │ │ ├── 535a27ae52d8_langstringentry_error_count.py │ │ ├── 53875f39d2ff_do_not_limit_url_length.py │ │ ├── 539588abd5e0_explicit_mailbox_sender.py │ │ ├── 53b64260ffb8_langstringentry_error_code.py │ │ ├── 53d7278b1ac3_update_token_categories.py │ │ ├── 54cf00f049c2_orderless_links.py │ │ ├── 5592fcf1c810_notifications_classes.py │ │ ├── 55cac5610448_index_foreign_keys.py │ │ ├── 56b00d538b44_action_on_idea.py │ │ ├── 56eda83b3116_social_auth_tables.py │ │ ├── 588f6b14bf8_feedparsing_tables.py │ │ ├── 58ad1d489e56_split_widgets.py │ │ ├── 599eb2e48439_discussion_languages.py │ │ ├── 5a0ce18bf2b2_deduplicate_subscriptions.py │ │ ├── 5a410de37088_tombstonable_actions.py │ │ ├── 5ab9a842c31f_empty_string_is_non_linguistic.py │ │ ├── 5ae3d1ed3134_action_type_as_varchar.py │ │ ├── 5baafd563d59_clean_html_in_messages.py │ │ ├── 5c1bfc79039_provider_domain.py │ │ ├── 5eb326c815de_widget_hide_notification.py │ │ ├── 6138047cb26_add_web_analytics_piwik_site_id_field_.py │ │ ├── 632623e9685d_last_login_and_subscriptions.py │ │ ├── 63cb39048ef_move_blob_to_importedpost.py │ │ ├── 693170d95790_remove_entities_in_translations.py │ │ ├── 732b37ab3da2_new_annotation_selectors.py │ │ ├── 77288fadf58b_lur_index.py │ │ ├── 7c400c47389c_text_fragment_body.py │ │ ├── 7d138bea3a0d_unique_live_copy_of_history_class.py │ │ ├── 8be3def744e9_idea_source__update_back_imports.py │ │ ├── 8ed4db9d977f_account_last_checked.py │ │ ├── 8f144ada84_error_backoff_in_content_source.py │ │ ├── 92c7d8fc1ce3_import_record_adjustments.py │ │ ├── 92cf7ae9633_wrong_default.py │ │ ├── 9565c056759_vote_spec.py │ │ ├── a33ea73a4b2e_urireftable.py │ │ ├── aad68410c38b_langstring_on_announcements.py │ │ ├── b362d627b307_timestamped.py │ │ ├── bb2849f2c085_tos.py │ │ ├── bb43cdb36f5_add_voting_permission.py │ │ ├── c14c885ecdc2_document_av_checked.py │ │ ├── c32105f857f2_p_disc_stats.py │ │ ├── ca1c445a2e24_langstring_on_synthesis.py │ │ ├── cdb5d8b8f003_extract_attribution.py │ │ ├── cde4738d5863_imported_voter.py │ │ ├── cfdb3b895127_description_in_synthesis.py │ │ ├── d04b378fedf_spurious_notification_delivery_.py │ │ ├── d0fa685ff549_langstring_on_ideas.py │ │ ├── d1d922f0cf3a_annotation_polymorphism.py │ │ ├── d9c8dbb4dcc6_idea_and_idealink_types.py │ │ ├── da57ecf53fe6_rename_vote_date.py │ │ ├── dcc412989fc6_new_permissions.py │ │ ├── df59c42297f_sequence_schema.py │ │ ├── df96058e0fa_action_suffix.py │ │ ├── e2b03a727fd_uniqueness_must_be_conjoint_with_.py │ │ ├── e4edf454f09_langstrings.py │ │ ├── e546a1bde9_separate_widget_state.py │ │ ├── e5d1484442b_facebook_attachment.py │ │ ├── e68cb9383f0c_kill_username_table.py │ │ ├── e7b56b85b1f5_db_files_to_hashfs.py │ │ ├── ef4c35401ab_restore_lost_message_parents.py │ │ ├── f6b4dabfe49e_timeline_identifier.py │ │ ├── f73cb874d53_sponsors_and_facilitators.py │ │ ├── f77f2915bfb8_split_idea_source_table.py │ │ ├── f7d61062eccf_multi_extracts.py │ │ ├── f9d398793b56_hypothesis_importer.py │ │ ├── fc1c46a8634_keep_profile_pic_info.py │ │ ├── fc307809685e_import_records2.py │ │ ├── fcf4b698a8a_edgesense.py │ │ └── ff520e781a4_default_preferences.py ├── auth │ ├── __init__.py │ ├── generic_auth_backend.py │ ├── make_saml.py │ ├── password.py │ ├── social_auth.py │ ├── upgradable_session.py │ └── util.py ├── configs │ ├── base_env.rc │ ├── develop.rc │ ├── develop_overlay.ini │ ├── docker.rc │ ├── local_prod.rc │ ├── mac.rc │ ├── my_organization_example.rc │ ├── production.ini │ └── testing.rc ├── conftest.py ├── fabfile.py ├── lib │ ├── __init__.py │ ├── abc.py │ ├── antivirus.py │ ├── attachment_service.py │ ├── clean_input.py │ ├── config.py │ ├── database_functions.py │ ├── decl_enums.py │ ├── discussion_creation.py │ ├── enum.py │ ├── frontend_urls.py │ ├── generic_pointer.py │ ├── hash_fs.py │ ├── history_mixin.py │ ├── json.py │ ├── locale.py │ ├── logging.py │ ├── migration.py │ ├── model_watcher.py │ ├── parsedatetime.py │ ├── plaster.py │ ├── pshell_session.py │ ├── raven_client.py │ ├── rds_token_url.py │ ├── read_write_session.py │ ├── scripting.py │ ├── signals.py │ ├── sqla.py │ ├── sqla_types.py │ ├── text_search.py │ ├── utils.py │ ├── web_token.py │ └── zmqlib.py ├── locale │ ├── assembl.pot │ ├── de │ │ └── LC_MESSAGES │ │ │ └── assembl.po │ ├── en │ │ └── LC_MESSAGES │ │ │ └── assembl.po │ ├── es │ │ └── LC_MESSAGES │ │ │ └── assembl.po │ └── fr │ │ └── LC_MESSAGES │ │ └── assembl.po ├── maintenance.py ├── models │ ├── __init__.py │ ├── action.py │ ├── annotation.py │ ├── announcement.py │ ├── attachment.py │ ├── auth.py │ ├── discussion.py │ ├── edgesense_drupal.py │ ├── facebook_integration.py │ ├── feed_parsing.py │ ├── generic.py │ ├── hypothesis_source.py │ ├── idea.py │ ├── idea_content_link.py │ ├── idea_graph_view.py │ ├── idea_source.py │ ├── import_record_source.py │ ├── import_records.py │ ├── langstrings.py │ ├── mail.py │ ├── models.svg │ ├── notification.py │ ├── path_utils.py │ ├── permissions.py │ ├── post.py │ ├── preferences.py │ ├── publication_states.py │ ├── social_auth.py │ ├── timeline.py │ ├── uriref.py │ ├── user_key_values.py │ ├── vocabulary.py │ ├── votes.py │ └── widgets.py ├── nlp │ ├── __init__.py │ ├── clusters.py │ ├── data │ │ ├── facebook_locales.json │ │ ├── language-names.json │ │ ├── stopwords.xml │ │ └── stopwords │ │ │ ├── README │ │ │ ├── danish │ │ │ ├── dutch │ │ │ ├── english │ │ │ ├── finnish │ │ │ ├── french │ │ │ ├── german │ │ │ ├── hungarian │ │ │ ├── italian │ │ │ ├── norwegian │ │ │ ├── portuguese │ │ │ ├── russian │ │ │ ├── spanish │ │ │ ├── swedish │ │ │ └── turkish │ ├── indexedcorpus.py │ ├── optics.py │ ├── translation_service.py │ └── wordcounter.py ├── scripts │ ├── __init__.py │ ├── add_user.py │ ├── check_antivirus.py │ ├── clean_avatars.py │ ├── clone_database.py │ ├── clone_discussion.py │ ├── db_manage.py │ ├── deduplicate_subscriptions.py │ ├── files_gc.py │ ├── ini_files.py │ ├── link_cleanup.py │ ├── list_css_icons.py │ ├── make_er_diagram.py │ ├── po2json.py │ ├── pypsql.py │ └── rebuild_tables.py ├── semantic │ ├── __init__.py │ ├── inference.py │ ├── namespaces.py │ ├── obfuscation.py │ └── virtuoso_mapping.py ├── static │ ├── .eslintrc.json │ ├── css │ │ ├── _assembl_base_styles.scss │ │ ├── _assembl_notification_styles.scss │ │ ├── _mobile.scss │ │ ├── base │ │ │ ├── _common.scss │ │ │ ├── _functions.scss │ │ │ ├── _helpers.scss │ │ │ ├── _mixins.scss │ │ │ ├── _reset.scss │ │ │ └── _variables.scss │ │ ├── components │ │ │ ├── .gitignore │ │ │ ├── _accordion.scss │ │ │ ├── _agent.scss │ │ │ ├── _announcement.scss │ │ │ ├── _attachment.scss │ │ │ ├── _avatars.scss │ │ │ ├── _bookmarklet.scss │ │ │ ├── _box.scss │ │ │ ├── _breadcrumb.scss │ │ │ ├── _button.scss │ │ │ ├── _checkbox.scss │ │ │ ├── _contextmenu.scss │ │ │ ├── _dot.scss │ │ │ ├── _dragbox.scss │ │ │ ├── _dropdown.scss │ │ │ ├── _flipswitch.scss │ │ │ ├── _form.scss │ │ │ ├── _genie.scss │ │ │ ├── _grid.scss │ │ │ ├── _growl.scss │ │ │ ├── _icon.scss │ │ │ ├── _ideafamily.scss │ │ │ ├── _idealist.scss │ │ │ ├── _image.scss │ │ │ ├── _link.scss │ │ │ ├── _loader.scss │ │ │ ├── _loginbox.scss │ │ │ ├── _media.scss │ │ │ ├── _message.scss │ │ │ ├── _messagesend.scss │ │ │ ├── _modal.scss │ │ │ ├── _nav-bar.scss │ │ │ ├── _panel.scss │ │ │ ├── _panelsynthesis.scss │ │ │ ├── _patterns.scss │ │ │ ├── _popover.scss │ │ │ ├── _postit.scss │ │ │ ├── _radio.scss │ │ │ ├── _reusableDataFields.scss │ │ │ ├── _separator.scss │ │ │ ├── _social.scss │ │ │ ├── _text.scss │ │ │ ├── _tooltip.scss │ │ │ └── _tooltipv2.scss │ │ ├── fonts │ │ │ ├── config.json │ │ │ ├── fontello.eot │ │ │ ├── fontello.svg │ │ │ ├── fontello.ttf │ │ │ ├── fontello.woff │ │ │ └── fontello.woff2 │ │ ├── layout │ │ │ ├── _admin.scss │ │ │ ├── _content.scss │ │ │ ├── _contextpage.scss │ │ │ ├── _groupContainer.scss │ │ │ ├── _ideaList.scss │ │ │ ├── _ideaPanel.scss │ │ │ ├── _ideasShowingMessage.scss │ │ │ ├── _messagelist.scss │ │ │ ├── _navContext.scss │ │ │ ├── _panelarea.scss │ │ │ ├── _segmentList.scss │ │ │ ├── _styleguide.scss │ │ │ ├── _styleguide_new.scss │ │ │ ├── _synthesis.scss │ │ │ └── _tokenVote.scss │ │ ├── lib │ │ │ ├── _annotator.scss │ │ │ ├── _ckeditor.scss │ │ │ ├── _hopscotch.scss │ │ │ ├── _jasmine.scss │ │ │ ├── _simplegrid.scss │ │ │ ├── _tipsy.scss │ │ │ └── annotator_ext.scss │ │ ├── notifications │ │ │ └── _mail_notifications.scss │ │ ├── partials │ │ │ ├── _basic-style.scss │ │ │ └── _layout.scss │ │ └── themes │ │ │ ├── .gitignore │ │ │ ├── README │ │ │ ├── default │ │ │ ├── .gitignore │ │ │ ├── _theme.scss │ │ │ ├── assembl_notifications.scss │ │ │ ├── assembl_web.scss │ │ │ └── img │ │ │ │ ├── crowd.jpg │ │ │ │ ├── crowd2.jpg │ │ │ │ ├── logo.png │ │ │ │ └── logo_assembl_only.png │ │ │ └── vendor │ │ │ ├── .gitignore │ │ │ └── README │ ├── img │ │ ├── 404.jpg │ │ ├── assembl.png │ │ ├── avatar │ │ │ ├── default.png │ │ │ ├── default.svg │ │ │ ├── placeholder-1.png │ │ │ ├── placeholder-2.png │ │ │ ├── placeholder-3.png │ │ │ └── placeholder-4.png │ │ ├── button │ │ │ ├── arrowbutton-right.png │ │ │ └── arrowbutton.png │ │ ├── dragbox │ │ │ └── dragbox-background.png │ │ ├── favicon │ │ │ ├── favicon-120.png │ │ │ ├── favicon-128.png │ │ │ ├── favicon-144.png │ │ │ ├── favicon-152.png │ │ │ ├── favicon-167.png │ │ │ ├── favicon-180.png │ │ │ ├── favicon-192.png │ │ │ ├── favicon-195.png │ │ │ ├── favicon-196.png │ │ │ ├── favicon-228.png │ │ │ ├── favicon-32.png │ │ │ ├── favicon-57.png │ │ │ ├── favicon-96.png │ │ │ └── favicon.ico │ │ ├── icon │ │ │ ├── book.png │ │ │ ├── check.png │ │ │ ├── cog.png │ │ │ ├── comment.png │ │ │ ├── copyfolder.png │ │ │ ├── down.png │ │ │ ├── dropbox.png │ │ │ ├── favicon.ico │ │ │ ├── file.png │ │ │ ├── grave.png │ │ │ ├── heart.png │ │ │ ├── idea.svg │ │ │ ├── infinite-1.png │ │ │ ├── map.svg │ │ │ ├── panel_collapse.svg │ │ │ ├── panel_expand.svg │ │ │ ├── pencil.png │ │ │ ├── power.png │ │ │ ├── question.png │ │ │ ├── quotes.svg │ │ │ ├── rearrangeemail.png │ │ │ ├── reorder.png │ │ │ ├── reply.png │ │ │ ├── return.png │ │ │ ├── search.png │ │ │ ├── search_document.svg │ │ │ ├── settings.png │ │ │ ├── tag_new_angle.png │ │ │ ├── tag_new_angle.svg │ │ │ ├── tag_new_horizontal_right.png │ │ │ ├── tag_new_horizontal_right.svg │ │ │ ├── types │ │ │ │ ├── email.png │ │ │ │ └── webpage.png │ │ │ ├── uparrow.png │ │ │ └── user.png │ │ ├── idealist │ │ │ ├── idealist-arrow-closed-l1.png │ │ │ ├── idealist-arrow-closed.png │ │ │ ├── idealist-arrow-open-l1.png │ │ │ ├── idealist-arrow-open.png │ │ │ ├── idealist-arrow.png │ │ │ ├── idealist-bar.png │ │ │ ├── idealist-link-last-opaque.png │ │ │ ├── idealist-link-last.png │ │ │ ├── idealist-link-no-children.png │ │ │ ├── idealist-link-opaque.png │ │ │ ├── idealist-link-root.svg │ │ │ ├── idealist-link-skip-parent-no-children.svg │ │ │ ├── idealist-link-skip-parent.svg │ │ │ ├── idealist-link.png │ │ │ ├── idealist-noarrow.png │ │ │ └── sources │ │ │ │ ├── idealist-arrow-closed-l1.xcf │ │ │ │ ├── idealist-arrow-closed.xcf │ │ │ │ ├── idealist-arrow-open-l1.xcf │ │ │ │ ├── idealist-arrow-open.xcf │ │ │ │ ├── idealist-arrow.xcf │ │ │ │ ├── idealist-link-last.xcf │ │ │ │ ├── idealist-link-no-children.xcf │ │ │ │ └── idealist-link.xcf │ │ ├── idealoom.png │ │ ├── loginbox │ │ │ ├── assembl.png │ │ │ ├── facebook.png │ │ │ ├── google.png │ │ │ ├── google_icon.png │ │ │ ├── openid.png │ │ │ ├── twitter.png │ │ │ └── yahoo.png │ │ ├── messagelist │ │ │ ├── messagelist-arrow-closed-l1.png │ │ │ ├── messagelist-arrow-closed.png │ │ │ ├── messagelist-arrow-open-l1.png │ │ │ ├── messagelist-arrow-open.png │ │ │ ├── messagelist-arrow.png │ │ │ ├── messagelist-bar.png │ │ │ ├── messagelist-link-last.png │ │ │ └── messagelist-link.png │ │ ├── panel │ │ │ ├── disc.gif │ │ │ └── loading.gif │ │ ├── searchbox │ │ │ └── searchbox-field-background.png │ │ └── text │ │ │ └── textbubble.png │ ├── js │ │ ├── app │ │ │ ├── app.js │ │ │ ├── common │ │ │ │ ├── collectionManager.js │ │ │ │ └── context.js │ │ │ ├── index.js │ │ │ ├── internal_modules │ │ │ │ └── analytics │ │ │ │ │ ├── abstract.js │ │ │ │ │ ├── dispatcher.js │ │ │ │ │ └── piwik.js │ │ │ ├── models │ │ │ │ ├── accounts.js │ │ │ │ ├── actions.js │ │ │ │ ├── agents.js │ │ │ │ ├── announcement.js │ │ │ │ ├── attachments.js │ │ │ │ ├── base.js │ │ │ │ ├── discussion.js │ │ │ │ ├── discussionPreference.js │ │ │ │ ├── discussionSource.js │ │ │ │ ├── documents.js │ │ │ │ ├── flipSwitchButton.js │ │ │ │ ├── groupSpec.js │ │ │ │ ├── groupState.js │ │ │ │ ├── idea.js │ │ │ │ ├── ideaContentLink.js │ │ │ │ ├── ideaLink.js │ │ │ │ ├── infobar.js │ │ │ │ ├── langstring.js │ │ │ │ ├── languagePreference.js │ │ │ │ ├── message.js │ │ │ │ ├── notificationSubscription.js │ │ │ │ ├── panelSpec.js │ │ │ │ ├── partners.js │ │ │ │ ├── publicationFlow.js │ │ │ │ ├── roles.js │ │ │ │ ├── segment.js │ │ │ │ ├── social.js │ │ │ │ ├── sources.js │ │ │ │ ├── synthesis.js │ │ │ │ ├── timeline.js │ │ │ │ ├── tour.js │ │ │ │ ├── userCustomData.js │ │ │ │ └── widget.js │ │ │ ├── objects │ │ │ │ ├── messagesInProgress.js │ │ │ │ ├── storage.js │ │ │ │ └── viewsFactory.js │ │ │ ├── routeManager.js │ │ │ ├── router.js │ │ │ ├── tests.js │ │ │ ├── tests │ │ │ │ ├── context.spec.js │ │ │ │ ├── fixtures │ │ │ │ │ ├── langstring.json │ │ │ │ │ ├── langstringEntry.json │ │ │ │ │ ├── languageLocales.json │ │ │ │ │ └── languagePreferences.json │ │ │ │ ├── langstring.spec.js │ │ │ │ ├── mock_server.js │ │ │ │ ├── models.spec.js │ │ │ │ ├── objects.spec.js │ │ │ │ ├── routes.spec.js │ │ │ │ ├── utils.spec.js │ │ │ │ └── views.spec.js │ │ │ ├── url │ │ │ │ └── url.pegjs │ │ │ ├── utils │ │ │ │ ├── browser-detect.js │ │ │ │ ├── cookiesManager.js │ │ │ │ ├── genieEffect.js │ │ │ │ ├── growl.js │ │ │ │ ├── i18n.js │ │ │ │ ├── panelSpecTypes.js │ │ │ │ ├── permissions.js │ │ │ │ ├── roles.js │ │ │ │ ├── scrollUtils.js │ │ │ │ ├── socket.js │ │ │ │ ├── tourManager.js │ │ │ │ ├── tours │ │ │ │ │ └── appTours.js │ │ │ │ └── types.js │ │ │ └── views │ │ │ │ ├── admin │ │ │ │ ├── adminDiscussion.js │ │ │ │ ├── adminIdeaPubFlow.js │ │ │ │ ├── adminImportSettings.js │ │ │ │ ├── adminNavigationMenu.js │ │ │ │ ├── adminNotificationSubscriptions.js │ │ │ │ ├── adminPartners.js │ │ │ │ ├── adminPermissions.js │ │ │ │ ├── adminTimelineEvents.js │ │ │ │ ├── generalSource.js │ │ │ │ └── sourceEditViews.js │ │ │ │ ├── agent.js │ │ │ │ ├── allMessagesInIdeaList.js │ │ │ │ ├── announcements.js │ │ │ │ ├── attachments.js │ │ │ │ ├── authorization.js │ │ │ │ ├── baseMessageList.js │ │ │ │ ├── basePanel.js │ │ │ │ ├── breadcrumb.js │ │ │ │ ├── confirmModal.js │ │ │ │ ├── contextPage.js │ │ │ │ ├── documents.js │ │ │ │ ├── externalVisualization.js │ │ │ │ ├── facebookViews.js │ │ │ │ ├── flipSwitchButton.js │ │ │ │ ├── groups │ │ │ │ ├── defineGroupModal.js │ │ │ │ ├── groupContainer.js │ │ │ │ ├── groupContent.js │ │ │ │ ├── modalGroup.js │ │ │ │ └── panelWrapper.js │ │ │ │ ├── ideaClassificationOnMessage.js │ │ │ │ ├── ideaFamily.js │ │ │ │ ├── ideaInIdeaList.js │ │ │ │ ├── ideaInSynthesis.js │ │ │ │ ├── ideaList.js │ │ │ │ ├── ideaPanel.js │ │ │ │ ├── infobar.js │ │ │ │ ├── loader.js │ │ │ │ ├── loaderView.js │ │ │ │ ├── message.js │ │ │ │ ├── messageDeletedByAdmin.js │ │ │ │ ├── messageDeletedByUser.js │ │ │ │ ├── messageExportModal.js │ │ │ │ ├── messageFamily.js │ │ │ │ ├── messageList.js │ │ │ │ ├── messageListHeader.js │ │ │ │ ├── messageListPostQuery.js │ │ │ │ ├── messageModerationOptions.js │ │ │ │ ├── messageSend.js │ │ │ │ ├── messageTranslationQuestion.js │ │ │ │ ├── modals │ │ │ │ ├── discussionStatisticsModal.js │ │ │ │ └── ideaInModal.js │ │ │ │ ├── navBar.js │ │ │ │ ├── navigation │ │ │ │ ├── about.js │ │ │ │ ├── linkListView.js │ │ │ │ ├── navigation.js │ │ │ │ ├── notification.js │ │ │ │ └── synthesisInNavigation.js │ │ │ │ ├── orphanMessagesInIdeaList.js │ │ │ │ ├── otherInIdeaList.js │ │ │ │ ├── postFilters.js │ │ │ │ ├── preferencesView.js │ │ │ │ ├── reusableDataFields │ │ │ │ ├── ckeditorField.js │ │ │ │ ├── ckeditorLSField.js │ │ │ │ ├── editableField.js │ │ │ │ ├── editableLSField.js │ │ │ │ └── trueFalseField.js │ │ │ │ ├── scrollLogger.js │ │ │ │ ├── segmentList.js │ │ │ │ ├── simpleLangStringEdit.js │ │ │ │ ├── statistics.js │ │ │ │ ├── synthesisInIdeaList.js │ │ │ │ ├── synthesisMessage.js │ │ │ │ ├── synthesisPanel.js │ │ │ │ ├── tokenVoteSession.js │ │ │ │ ├── user │ │ │ │ ├── account.js │ │ │ │ ├── profile.js │ │ │ │ ├── tos.js │ │ │ │ ├── userNavigationMenu.js │ │ │ │ └── userNotificationSubscriptions.js │ │ │ │ ├── visitors │ │ │ │ ├── firstIdeaToShowVisitor.js │ │ │ │ ├── ideaRenderVisitor.js │ │ │ │ ├── ideaSiblingChainVisitor.js │ │ │ │ ├── messageRenderVisitor.js │ │ │ │ ├── messageRenderVisitorReSort.js │ │ │ │ └── visitor.js │ │ │ │ ├── widgetButtons.js │ │ │ │ └── widgetLinks.js │ │ └── lib │ │ │ ├── README.txt │ │ │ ├── annotator │ │ │ ├── annotator-bookmarklet.js │ │ │ ├── annotator-bookmarklet.min.js │ │ │ ├── annotator-full.js │ │ │ ├── annotator-full.min.js │ │ │ └── vendor │ │ │ │ ├── ierange.min.js │ │ │ │ ├── json2.min.js │ │ │ │ └── xpath.min.js │ │ │ ├── annotator_bkmklet.js │ │ │ ├── annotator_bkmklet.min.js │ │ │ ├── bootstrap-dropdown.js │ │ │ ├── bootstrap-tooltip.js │ │ │ ├── jquery-highlight │ │ │ └── jquery.highlight.js │ │ │ └── styleguide.js │ ├── package.json │ ├── webpack.config.js │ ├── webpack.dev.config.js │ ├── widget │ │ ├── README.md │ │ ├── card │ │ │ ├── .bowerrc │ │ │ ├── .gitignore │ │ │ ├── LICENSE_JukeTube │ │ │ ├── README.md │ │ │ ├── app │ │ │ │ ├── app.js │ │ │ │ ├── config.json │ │ │ │ ├── controllers.js │ │ │ │ ├── factory.js │ │ │ │ ├── font │ │ │ │ │ ├── fontello.eot │ │ │ │ │ ├── fontello.svg │ │ │ │ │ ├── fontello.ttf │ │ │ │ │ └── fontello.woff │ │ │ │ ├── img │ │ │ │ │ ├── ajax-loader.gif │ │ │ │ │ ├── avatar-m-40x40.png │ │ │ │ │ ├── avatar-w-40x40.png │ │ │ │ │ ├── light-bulb-7-64x64.png │ │ │ │ │ ├── slot-machine.png │ │ │ │ │ └── university2.png │ │ │ │ ├── locales │ │ │ │ │ ├── en.json │ │ │ │ │ └── fr.json │ │ │ │ ├── partials │ │ │ │ │ ├── admin_configure_instance.html │ │ │ │ │ ├── card.html │ │ │ │ │ └── cards.html │ │ │ │ ├── scss │ │ │ │ │ ├── animation.scss │ │ │ │ │ ├── card.scss │ │ │ │ │ ├── fontello.scss │ │ │ │ │ ├── global.scss │ │ │ │ │ └── widget.scss │ │ │ │ └── services.js │ │ │ ├── bower.json │ │ │ ├── config │ │ │ │ ├── game_1.json │ │ │ │ ├── game_2.json │ │ │ │ ├── game_3.json │ │ │ │ └── local.json │ │ │ ├── index.html │ │ │ ├── karma.conf.js │ │ │ ├── package.json │ │ │ └── test │ │ │ │ └── spec │ │ │ │ └── controllers.spec.js │ │ ├── creativity │ │ │ ├── .bowerrc │ │ │ ├── app │ │ │ │ ├── app.js │ │ │ │ ├── controllers.js │ │ │ │ ├── css │ │ │ │ │ ├── admin.css │ │ │ │ │ └── global.css │ │ │ │ ├── factory.js │ │ │ │ ├── locales │ │ │ │ │ ├── en.json │ │ │ │ │ └── fr.json │ │ │ │ ├── partials │ │ │ │ │ ├── admin.html │ │ │ │ │ ├── admin_configure_instance.html │ │ │ │ │ ├── admin_configure_instance_set_associated_ideas.html │ │ │ │ │ ├── admin_configure_instance_set_modules.html │ │ │ │ │ ├── admin_create_from_idea.html │ │ │ │ │ └── index.html │ │ │ │ └── services.js │ │ │ ├── bower.json │ │ │ └── index.html │ │ ├── session │ │ │ ├── .bowerrc │ │ │ ├── .gitignore │ │ │ ├── app │ │ │ │ ├── app.js │ │ │ │ ├── components │ │ │ │ │ ├── admin │ │ │ │ │ │ ├── AdminController.js │ │ │ │ │ │ ├── AdminModule.js │ │ │ │ │ │ ├── AdminView.html │ │ │ │ │ │ ├── CreateController.js │ │ │ │ │ │ └── CreateView.html │ │ │ │ │ ├── home │ │ │ │ │ │ ├── HomeController.js │ │ │ │ │ │ ├── HomeModule.js │ │ │ │ │ │ └── HomeView.html │ │ │ │ │ └── rate │ │ │ │ │ │ ├── RateController.js │ │ │ │ │ │ ├── RateModule.js │ │ │ │ │ │ └── RateView.html │ │ │ │ └── shared │ │ │ │ │ ├── directives │ │ │ │ │ ├── comments │ │ │ │ │ │ ├── Comments.js │ │ │ │ │ │ └── comments.html │ │ │ │ │ ├── rate │ │ │ │ │ │ ├── Rate.js │ │ │ │ │ │ └── rate.html │ │ │ │ │ └── vote │ │ │ │ │ │ ├── Vote.js │ │ │ │ │ │ └── vote.html │ │ │ │ │ ├── services │ │ │ │ │ ├── CardGameService.js │ │ │ │ │ ├── ConfigService.js │ │ │ │ │ ├── IdeaService.js │ │ │ │ │ ├── UserService.js │ │ │ │ │ ├── UtilsService.js │ │ │ │ │ └── WidgetService.js │ │ │ │ │ └── topMenu │ │ │ │ │ ├── TopMenuController.js │ │ │ │ │ ├── TopMenuModule.js │ │ │ │ │ └── TopMenuView.html │ │ │ ├── bower.json │ │ │ ├── config │ │ │ │ └── game_1.json │ │ │ ├── gulpfile.js │ │ │ ├── img │ │ │ │ ├── slot-machine.png │ │ │ │ └── university2.png │ │ │ ├── index.html │ │ │ ├── locales │ │ │ │ ├── en.json │ │ │ │ └── fr.json │ │ │ ├── package.json │ │ │ └── scss │ │ │ │ ├── admin.scss │ │ │ │ ├── custom.scss │ │ │ │ ├── edit.scss │ │ │ │ ├── global.scss │ │ │ │ ├── rate.scss │ │ │ │ ├── session.scss │ │ │ │ └── topMenu.scss │ │ ├── share │ │ │ ├── .bowerrc │ │ │ ├── .gitignore │ │ │ ├── bower.json │ │ │ └── index.html │ │ ├── video │ │ │ ├── .bowerrc │ │ │ ├── .gitignore │ │ │ ├── LICENSE_JukeTube │ │ │ ├── README.txt │ │ │ ├── app │ │ │ │ ├── app.js │ │ │ │ ├── config.json │ │ │ │ ├── controllers.js │ │ │ │ ├── factory.js │ │ │ │ ├── font │ │ │ │ │ ├── fontello.eot │ │ │ │ │ ├── fontello.svg │ │ │ │ │ ├── fontello.ttf │ │ │ │ │ └── fontello.woff │ │ │ │ ├── img │ │ │ │ │ ├── ajax-loader.gif │ │ │ │ │ ├── avatar-m-40x40.png │ │ │ │ │ ├── avatar-w-40x40.png │ │ │ │ │ ├── light-bulb-7-64x64.png │ │ │ │ │ ├── slot-machine.png │ │ │ │ │ └── university2.png │ │ │ │ ├── locales │ │ │ │ │ ├── en.json │ │ │ │ │ └── fr.json │ │ │ │ ├── partials │ │ │ │ │ └── videos.html │ │ │ │ ├── scss │ │ │ │ │ ├── animation.scss │ │ │ │ │ ├── fontello.scss │ │ │ │ │ ├── global.scss │ │ │ │ │ ├── video.scss │ │ │ │ │ └── widget.scss │ │ │ │ └── services.js │ │ │ ├── bower.json │ │ │ ├── config │ │ │ │ ├── game_1.json │ │ │ │ └── local.json │ │ │ ├── index.html │ │ │ ├── karma.conf.js │ │ │ ├── package.json │ │ │ └── test │ │ │ │ └── spec │ │ │ │ └── controllers.spec.js │ │ └── vote │ │ │ ├── .bowerrc │ │ │ ├── .gitignore │ │ │ ├── 2_axes_clickable_zone_and_sliders.html │ │ │ ├── 2_axes_radio_buttons.html │ │ │ ├── README.txt │ │ │ ├── README_flow.txt │ │ │ ├── app │ │ │ ├── adminConfigureInstanceSetCriteriaController.js │ │ │ ├── adminConfigureInstanceSetSettingsController.js │ │ │ ├── adminConfigureInstanceSetStartAndEndDatesController.js │ │ │ ├── adminConfigureInstanceSetVotableIdeasController.js │ │ │ ├── adminController.js │ │ │ ├── adminCreateFromIdeaController.js │ │ │ ├── app.js │ │ │ ├── controllers.js │ │ │ ├── css │ │ │ │ ├── admin.css │ │ │ │ └── global.css │ │ │ ├── factory.js │ │ │ ├── images │ │ │ │ ├── empty_vote_token.svg │ │ │ │ ├── green_empty_vote_token.svg │ │ │ │ ├── green_poker_vote_token.svg │ │ │ │ ├── question_mark_icon_with_alpha.png │ │ │ │ ├── red_empty_vote_token.svg │ │ │ │ └── red_poker_vote_token.svg │ │ │ ├── indexController.js │ │ │ ├── locales │ │ │ │ ├── en.json │ │ │ │ └── fr.json │ │ │ ├── partials │ │ │ │ ├── admin.html │ │ │ │ ├── admin_configure_instance.html │ │ │ │ ├── admin_configure_instance_set_criteria.html │ │ │ │ ├── admin_configure_instance_set_settings.html │ │ │ │ ├── admin_configure_instance_set_start_and_end_dates.html │ │ │ │ ├── admin_configure_instance_set_votable_ideas.html │ │ │ │ ├── admin_create_from_idea.html │ │ │ │ ├── index.html │ │ │ │ ├── results.html │ │ │ │ └── voted.html │ │ │ ├── resultsController.js │ │ │ └── services.js │ │ │ ├── bower.json │ │ │ ├── index.html │ │ │ ├── more_axes_sliders.html │ │ │ └── test │ │ │ └── config_test.json │ └── yarn.lock ├── tasks │ ├── __init__.py │ ├── changes_router.py │ ├── create_vmm_source.py │ ├── email_discussion_creator.py │ ├── imap.py │ ├── imapclient_source_reader.py │ ├── imaplib2_source_reader.py │ ├── notification_dispatch.py │ ├── notify.py │ ├── oembed.py │ ├── piwik.py │ ├── source_reader.py │ ├── threaded_model_watcher.py │ └── translate.py ├── templates │ ├── admin │ │ ├── discussion_edit.jinja2 │ │ ├── discussion_permissions.jinja2 │ │ ├── discussions.jinja2 │ │ ├── global_permissions.jinja2 │ │ └── test_simultaneous_ajax_calls.jinja2 │ ├── adminIndex.jinja2 │ ├── analytics_common.jinja2 │ ├── analytics_nonBackboned.jinja2 │ ├── base.jinja2 │ ├── cannot_read_discussion.jinja2 │ ├── confirm.jinja2 │ ├── discussion_list.jinja2 │ ├── do_password_change.jinja2 │ ├── email_confirmed.jinja2 │ ├── idea_in_synthesis.jinja2 │ ├── idea_nakakoji.jinja2 │ ├── includes │ │ ├── 404.jinja2 │ │ ├── fb.jinja2 │ │ ├── feature_detection.jinja2 │ │ ├── javascript.jinja2 │ │ └── updatebrowser.jinja2 │ ├── index.jinja2 │ ├── login.jinja2 │ ├── notifications │ │ ├── html_mail.jinja2 │ │ ├── html_mail_post.jinja2 │ │ ├── html_mail_post_synthesis.jinja2 │ │ ├── html_new_discussion.jinja2 │ │ └── txt_new_discussion.jinja2 │ ├── profile.jinja2 │ ├── register.jinja2 │ ├── request_password_change.jinja2 │ ├── styleguide │ │ ├── components │ │ │ ├── Dialogs.jinja2 │ │ │ ├── alert.jinja2 │ │ │ ├── avatar.jinja2 │ │ │ ├── badges.jinja2 │ │ │ ├── box.jinja2 │ │ │ ├── bubble.jinja2 │ │ │ ├── buttons.jinja2 │ │ │ ├── colors.jinja2 │ │ │ ├── forms.jinja2 │ │ │ ├── grid.jinja2 │ │ │ ├── growl.jinja2 │ │ │ ├── helpers.jinja2 │ │ │ ├── icon.jinja2 │ │ │ ├── text.jinja2 │ │ │ └── typography.jinja2 │ │ ├── components_news │ │ │ ├── Dialogs.jinja2 │ │ │ ├── boxes.jinja2 │ │ │ ├── buttons.jinja2 │ │ │ ├── colors.jinja2 │ │ │ ├── components.jinja2 │ │ │ ├── forms.jinja2 │ │ │ ├── icons.jinja2 │ │ │ └── typography.jinja2 │ │ ├── components_old │ │ │ ├── accordion.jinja2 │ │ │ ├── bar.jinja2 │ │ │ ├── box.jinja2 │ │ │ ├── button.jinja2 │ │ │ ├── checkbox.jinja2 │ │ │ ├── closebutton.jinja2 │ │ │ ├── contextmenu.jinja2 │ │ │ ├── dragbox.jinja2 │ │ │ ├── dropdown.jinja2 │ │ │ ├── form.jinja2 │ │ │ ├── icon.jinja2 │ │ │ ├── idealist.jinja2 │ │ │ ├── link.jinja2 │ │ │ ├── loginbox.jinja2 │ │ │ ├── media.jinja2 │ │ │ ├── message.jinja2 │ │ │ ├── panel.jinja2 │ │ │ ├── spacer.jinja2 │ │ │ ├── text.jinja2 │ │ │ ├── title.jinja2 │ │ │ ├── tooltip.jinja2 │ │ │ └── z-index.jinja2 │ │ ├── index.jinja2 │ │ └── index_new.jinja2 │ ├── suggestions.jinja2 │ ├── synthesis.jinja2 │ ├── system │ │ ├── circusd.conf.tmpl │ │ ├── filter-nginx-login-attempt.jinja2 │ │ ├── jail.local.jinja2 │ │ ├── nginx_default.jinja2 │ │ ├── random.ini.tmpl │ │ ├── random_docker.ini.tmpl │ │ └── saml_random.ini.tmpl │ ├── tests │ │ └── index.jinja2 │ ├── view_profile.jinja2 │ └── views │ │ ├── DiscussionSettingsCreateSource.tmpl │ │ ├── FeedPostSource.tmpl │ │ ├── IdeaLoomIdeaSource.tmpl │ │ ├── IdeaSource.tmpl │ │ ├── about.tmpl │ │ ├── adminDiscussion.tmpl │ │ ├── adminIdeaPubFlow.tmpl │ │ ├── adminImportSettings.tmpl │ │ ├── adminImportSettingsGeneralSource.tmpl │ │ ├── adminImportSettingsGeneralSourceRead.tmpl │ │ ├── adminNotification.tmpl │ │ ├── adminNotificationList.tmpl │ │ ├── adminNotificationSubscriptions.tmpl │ │ ├── adminPartnerEditForm.tmpl │ │ ├── adminPartnerForm.tmpl │ │ ├── adminPartners.tmpl │ │ ├── adminTimelineEvent.tmpl │ │ ├── adminTimelineEvents.tmpl │ │ ├── agentAvatar.tmpl │ │ ├── agentName.tmpl │ │ ├── ajaxError.tmpl │ │ ├── allMessagesInIdeaList.tmpl │ │ ├── announcementEditable.tmpl │ │ ├── announcementListEmptyEditable.tmpl │ │ ├── announcementMessage.tmpl │ │ ├── associateAccount.tmpl │ │ ├── associateAccounts.tmpl │ │ ├── attachment.tmpl │ │ ├── attachmentButton.tmpl │ │ ├── attachmentEditable.tmpl │ │ ├── attachmentText.tmpl │ │ ├── authorization.tmpl │ │ ├── basePreferenceView.tmpl │ │ ├── bookmarket.tmpl │ │ ├── boolPreferenceView.tmpl │ │ ├── ckeditorField.tmpl │ │ ├── confirmModal.tmpl │ │ ├── contextPage.tmpl │ │ ├── cookieBanner.tmpl │ │ ├── create-group.tmpl │ │ ├── defaultNotification.tmpl │ │ ├── dictPreferenceItemView.tmpl │ │ ├── discussionAdminNavigationMenu.tmpl │ │ ├── discussionStatisticsModal.tmpl │ │ ├── emailSource.tmpl │ │ ├── exportPostModal-fb-group.tmpl │ │ ├── exportPostModal-fb-page.tmpl │ │ ├── exportPostModal-fb-token-error.tmpl │ │ ├── exportPostModal-fb.tmpl │ │ ├── exportPostModal.tmpl │ │ ├── externalViz.tmpl │ │ ├── facebookSourceForm.tmpl │ │ ├── fileEmbed.tmpl │ │ ├── fileUploadEmbed.tmpl │ │ ├── firstLoginAfterAutoSubscribeToNotifications.tmpl │ │ ├── firstPost.tmpl │ │ ├── flipSwitchButton.tmpl │ │ ├── globalAdminNavigationMenu.tmpl │ │ ├── groupContent.tmpl │ │ ├── groupModal.tmpl │ │ ├── helperDebate.tmpl │ │ ├── homeIntroductionDetail.tmpl │ │ ├── hypothesisExtractSource.tmpl │ │ ├── ideaClassificationInMessage.tmpl │ │ ├── ideaClassification_collection.tmpl │ │ ├── ideaClassification_directExtract.tmpl │ │ ├── ideaClassification_directMessage.tmpl │ │ ├── ideaClassification_indirectExtract.tmpl │ │ ├── ideaClassification_indirectMessage.tmpl │ │ ├── ideaClassification_modal.tmpl │ │ ├── ideaFamily.tmpl │ │ ├── ideaInIdeaList.tmpl │ │ ├── ideaInSynthesis.tmpl │ │ ├── ideaList.tmpl │ │ ├── ideaPanel.tmpl │ │ ├── ideaTypeInIdeaPanel.tmpl │ │ ├── instigator.tmpl │ │ ├── introductions.tmpl │ │ ├── joinDiscussion.tmpl │ │ ├── jsonPreferenceView.tmpl │ │ ├── langStringEntry.tmpl │ │ ├── listPreferenceItemView.tmpl │ │ ├── listPreferenceView.tmpl │ │ ├── loader.tmpl │ │ ├── message.tmpl │ │ ├── messageDeletedByUser.tmpl │ │ ├── messageFamily.tmpl │ │ ├── messageList.tmpl │ │ ├── messageListHeader.tmpl │ │ ├── messageModerationOptions.tmpl │ │ ├── messageSend.tmpl │ │ ├── message_translation_question.tmpl │ │ ├── message_translation_question_selection.tmpl │ │ ├── modalWithIframe.tmpl │ │ ├── modalWithoutIframe.tmpl │ │ ├── moderatedBody.tmpl │ │ ├── navBar.tmpl │ │ ├── navBarLeft.tmpl │ │ ├── navBarRight.tmpl │ │ ├── navigation.tmpl │ │ ├── notificationByEmail.tmpl │ │ ├── notificationByEmails.tmpl │ │ ├── orphanMessagesInIdeaList.tmpl │ │ ├── otherInIdeaList.tmpl │ │ ├── panelWrapper.tmpl │ │ ├── partnerItem.tmpl │ │ ├── partnerList.tmpl │ │ ├── partnersInAdmin.tmpl │ │ ├── passwordPreferenceView.tmpl │ │ ├── permissionsPanel.tmpl │ │ ├── piwikIframeModal.tmpl │ │ ├── preferenceItemView.tmpl │ │ ├── preferenceView.tmpl │ │ ├── pubFlowInIdeaPanel.tmpl │ │ ├── scalarPreferenceView.tmpl │ │ ├── segment.tmpl │ │ ├── segmentList.tmpl │ │ ├── showSegmentByAnnotation.tmpl │ │ ├── sidebar-notification.tmpl │ │ ├── simpleLangStringEdit.tmpl │ │ ├── simpleLink.tmpl │ │ ├── socialProviders.tmpl │ │ ├── sourceFacebook.tmpl │ │ ├── statistics.tmpl │ │ ├── stringPreferenceView.tmpl │ │ ├── synthesisContext.tmpl │ │ ├── synthesisInIdeaList.tmpl │ │ ├── synthesisInNavigationPanel.tmpl │ │ ├── synthesisItemInNavigation.tmpl │ │ ├── synthesisPanel.tmpl │ │ ├── synthesisPanelMessage.tmpl │ │ ├── templateSubscription.tmpl │ │ ├── textPreferenceView.tmpl │ │ ├── tokenBags.tmpl │ │ ├── tokenCategoryAllocationCollection.tmpl │ │ ├── tokenCategoryExclusivePairCollection.tmpl │ │ ├── tokenIdeaAllocation.tmpl │ │ ├── tokenVoteCollection.tmpl │ │ ├── tokenVoteItem.tmpl │ │ ├── tokenVoteResultCollectionView.tmpl │ │ ├── tokenVoteResultSingleView.tmpl │ │ ├── tokenVoteResultView.tmpl │ │ ├── tokenVoteSessionModal.tmpl │ │ ├── top_loader.tmpl │ │ ├── tos_infobar.tmpl │ │ ├── trueFalseField.tmpl │ │ ├── uploadView.tmpl │ │ ├── userAccount.tmpl │ │ ├── userAccountForm.tmpl │ │ ├── userNavigationMenu.tmpl │ │ ├── userNotificationSubscriptions.tmpl │ │ ├── userProfile.tmpl │ │ ├── userSubscriber.tmpl │ │ ├── userSubscriptions.tmpl │ │ ├── userTOS.tmpl │ │ ├── widgetButton.tmpl │ │ ├── widgetLink.tmpl │ │ └── widget_infobar.tmpl ├── tests │ ├── __init__.py │ ├── fixtures │ │ ├── __init__.py │ │ ├── auth.py │ │ ├── base.py │ │ ├── creativity_session.py │ │ ├── discussion.py │ │ ├── documents.py │ │ ├── idea_content_links.py │ │ ├── ideas.py │ │ ├── jack_layton_fixtures_maildir │ │ │ └── cur │ │ │ │ ├── 1 │ │ │ │ ├── 2 │ │ │ │ ├── 3 │ │ │ │ ├── 4 │ │ │ │ ├── 5 │ │ │ │ ├── 6 │ │ │ │ ├── 7 │ │ │ │ ├── 8 │ │ │ │ ├── 9 │ │ │ │ ├── 10 │ │ │ │ ├── 11 │ │ │ │ ├── 12 │ │ │ │ ├── 13 │ │ │ │ ├── 14 │ │ │ │ ├── 15 │ │ │ │ ├── 16 │ │ │ │ ├── 17 │ │ │ │ ├── 18 │ │ │ │ ├── 19 │ │ │ │ └── 20 │ │ ├── langstring.py │ │ ├── mailbox.py │ │ ├── posts.py │ │ ├── preferences.py │ │ ├── user.py │ │ └── user_language_preference.py │ ├── model_tests │ │ ├── test_auth.py │ │ ├── test_langstring.py │ │ ├── test_mail.py │ │ ├── test_notifications.py │ │ ├── test_parsedef.py │ │ ├── test_path_utils.py │ │ └── test_widgets.py │ ├── utils │ │ └── __init__.py │ └── views_tests │ │ ├── test_api.py │ │ ├── test_api2.py │ │ ├── test_browser.py │ │ ├── test_themes.py │ │ ├── test_view_auth.py │ │ └── test_view_notification.py ├── tweens │ ├── __init__.py │ └── logging.py ├── validation.py ├── view_def │ ├── __init__.py │ ├── changes.json │ ├── cif.json │ ├── cif2.json │ ├── cif_reverse.json │ ├── contributors.json │ ├── creativity_widget.json │ ├── default.json │ ├── default_reverse.json │ ├── etalab.json │ ├── extended.json │ ├── id_only.json │ ├── import.json │ ├── min_idea_content_link.json │ ├── notifications.json │ ├── partial.json │ ├── partial_post.json │ ├── private.json │ ├── voting_widget.json │ ├── webannotation.json │ ├── webannotation2.json │ └── webannotation3.json └── views │ ├── __init__.py │ ├── admin │ ├── __init__.py │ └── views.py │ ├── api │ ├── __init__.py │ ├── agent.py │ ├── auth.py │ ├── discussion.py │ ├── extract.py │ ├── generic.py │ ├── idea.py │ ├── post.py │ ├── sources.py │ ├── synthesis.py │ ├── token.py │ └── utils.py │ ├── api2 │ ├── __init__.py │ ├── api_notes.txt │ ├── attachments.py │ ├── auth.py │ ├── content_source.py │ ├── discussion.py │ ├── idea_content_link.py │ ├── ideas.py │ ├── notification.py │ ├── post.py │ ├── preferences.py │ ├── synthesis.py │ ├── timeline.py │ ├── user_key_values.py │ ├── votes.py │ └── widget.py │ ├── auth │ ├── __init__.py │ └── views.py │ ├── discussion │ ├── __init__.py │ └── views.py │ ├── discussion_list │ ├── __init__.py │ └── views.py │ ├── errors.py │ └── traversal.py ├── assembl_cloc_additional_definitions.txt ├── autoprefixer_options.json ├── bower.json ├── bower.json.README ├── doc ├── INSTALL.rst ├── Makefile ├── analytics │ ├── events.rst │ └── piwik_reporting_api.rst ├── auth.dot ├── auth.pdf ├── backend_rest_api.rst ├── backups.rst ├── borg_backup_script │ └── idealoom_borg_backup.sh ├── conf.py ├── configuration.rst ├── convert_virtuoso_to_postgresql.rst ├── developper_tasks.rst ├── docker.rst ├── documenting.rst ├── endpoints.rst ├── example_debate.rst ├── fontello.rst ├── how_to_open_pencil_ep_files.txt ├── import_sample_data_howto.txt ├── index.rst ├── localization.rst ├── login_flowchart.ep ├── login_flowchart.pdf ├── new_class.rst ├── notifications_fr.md ├── panel_architecture.rst ├── permissions_and_roles.rst ├── python_requirements.rst ├── recursion_example.py ├── reprocess_content_howto.txt ├── routes.rst ├── sample_nginx_config │ └── idealoom.yourdomain.com ├── sample_systemd_script │ └── idealoom.service ├── sample_upstart_script │ └── idealoom.conf ├── scroll_read_detect_algo.txt ├── services.rst ├── sourcereader.dot ├── spam.rst ├── synchronization.rst ├── tech_stack.rst ├── testing.rst ├── umlgraph │ ├── .gitignore │ ├── Makefile │ ├── schema_desired.java │ ├── schema_messages.java │ └── schema_now.java └── vmm.rst ├── docker ├── Dockerfile ├── docker-compose-stage1.yml.jinja2 ├── docker-compose.yml.jinja2 └── idealoom_subprocess.rc.jinja2 ├── fabfile.py ├── maintenance.ini ├── message-extraction.ini ├── requirements-dev-3.frozen.txt ├── requirements-prod-3.frozen ├── requirements-tests-3.frozen ├── requirements.in ├── requirements_chrouter.in ├── requirements_dev.in ├── requirements_doc.in ├── requirements_tests.in ├── setup.cfg ├── setup.py └── var ├── db └── virtuoso.ini.tmpl ├── log └── .gitignore └── run └── .gitignore /.bowerrc: -------------------------------------------------------------------------------- 1 | { 2 | "directory": "assembl/static/js/bower", 3 | "interactive": false 4 | } 5 | -------------------------------------------------------------------------------- /.codeclimate.yml: -------------------------------------------------------------------------------- 1 | # Save as .codeclimate.yml (note leading .) in project root directory 2 | engines: 3 | csslint: 4 | enabled: true 5 | duplication: 6 | enabled: true 7 | config: 8 | languages: 9 | - ruby 10 | - javascript 11 | - python 12 | - php 13 | eslint: 14 | enabled: true 15 | channel: "eslint-2" 16 | fixme: 17 | enabled: true 18 | radon: 19 | enabled: true 20 | ratings: 21 | paths: 22 | - "**.css" 23 | - "**.inc" 24 | - "**.js" 25 | - "**.jsx" 26 | - "**.module" 27 | - "**.php" 28 | - "**.py" 29 | - "**.rb" 30 | exclude_paths: 31 | - assembl/static/widget/* 32 | - test_*.py 33 | - assembl/static/js/*/tests/* 34 | - assembl/alembic/versions/* 35 | - assembl/static/js/lib/annotator/* 36 | -------------------------------------------------------------------------------- /.coveragerc: -------------------------------------------------------------------------------- 1 | #Reference: http://nedbatchelder.com/code/coverage/config.html 2 | 3 | [run] 4 | omit = 5 | */test_*.py 6 | */tests.py 7 | assembl/tests/* 8 | assembl/alembic/versions/* 9 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | ; EditorConfig is awesome: http://EditorConfig.org 2 | 3 | ; top-most EditorConfig file 4 | root = true 5 | 6 | ; Unix-style newlines with a newline ending every file 7 | [*] 8 | end_of_line = lf 9 | insert_final_newline = true 10 | 11 | ; 4 space indentation 12 | ; [*.py] 13 | ; indent_style = space 14 | ; indent_size = 4 15 | 16 | ; Javascript 17 | [*.js] 18 | indent_style = space 19 | indent_size = 4 20 | 21 | ; Css 22 | [*.scss] 23 | indent_style = space 24 | indent_size = 4 25 | 26 | ; tmpl 27 | [*.tmpl] 28 | indent_style = space 29 | indent_size = 4 30 | 31 | 32 | ; Jinja 33 | [*.jinja2] 34 | indent_style = space 35 | indent_size = 4 36 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | node_modules/** 2 | assembl/static/js/build/** 3 | assembl/static/js/bower/** 4 | assembl/static/js/lib/** 5 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "assembl/semantic/ontology"] 2 | path = assembl/semantic/ontology 3 | url = git://github.com/conversence/ontology.git 4 | -------------------------------------------------------------------------------- /.jscsrc: -------------------------------------------------------------------------------- 1 | // should allow comments in this type of config 2 | { 3 | "excludeFiles": [ 4 | "node_modules/**", 5 | "assembl/static/js/build/**", 6 | "assembl/static/js/bower/**", 7 | "assembl/static/js/lib/**" 8 | ], 9 | "preset": "airbnb" 10 | } 11 | -------------------------------------------------------------------------------- /.tx/config: -------------------------------------------------------------------------------- 1 | [main] 2 | host = https://www.transifex.com 3 | 4 | [idealoom.idealoom] 5 | file_filter = assembl/locale//LC_MESSAGES/assembl.po 6 | source_file = assembl/locale/assembl.pot 7 | source_lang = en 8 | type = PO 9 | 10 | -------------------------------------------------------------------------------- /CHANGES.txt: -------------------------------------------------------------------------------- 1 | 0.1.0 2 | --- 3 | 4 | - Initial upload to PyPI 5 | 6 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright 2013-2014 Clouds Collective of skills inc. 2 | Copyright 2012-2014 Caravan Web Worker Cooperative inc. 3 | Copyright 2012-2013 Technologies Coeus inc. 4 | Copyright 2014-2015 Imagination for People 5 | Copyright 2014-2016 Bluenove Group inc. 6 | Copyright 2016-2018 Solutions Conversence inc. 7 | 8 | Idealoom is free software: you can redistribute it and/or modify 9 | it under the terms of the GNU Affero General Public License version 3 10 | as published by the Free Software Foundation. 11 | 12 | You may obtain a copy of the License at 13 | http://www.gnu.org/licenses/agpl-3.0 14 | 15 | Idealoom is distributed in the hope that it will be useful, 16 | but WITHOUT ANY WARRANTY; without even the implied warranty of 17 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 | GNU Affero General Public License for more details. 19 | -------------------------------------------------------------------------------- /_env.tmpl: -------------------------------------------------------------------------------- 1 | # these are things that you may want to put in a .env file. Correct full path. 2 | 3 | source venv/bin/activate 4 | export CIRCUSCTL_ENDPOINT=ipc://{full path to}/idealoom/var/run/circus_endpoint 5 | 6 | # if using fish: set -gx instead of export 7 | 8 | # if using fish: this block gives autocomplete to the fab command. 9 | if test -e fabfile.py ; 10 | complete -c fab -e 11 | complete -c fab -s c -r 12 | complete -c fab -x -d command -a ( fab -l | tail +3 | awk -e '{printf $1 " "}') 13 | end 14 | -------------------------------------------------------------------------------- /assembl/alembic/README: -------------------------------------------------------------------------------- 1 | Generic single-database configuration. -------------------------------------------------------------------------------- /assembl/alembic/versions/0a6cc006a44b_kill_extract_body.py: -------------------------------------------------------------------------------- 1 | """kill extract.body 2 | 3 | Revision ID: 0a6cc006a44b 4 | Revises: 7c400c47389c 5 | Create Date: 2017-10-15 22:20:08.800849 6 | 7 | """ 8 | 9 | # revision identifiers, used by Alembic. 10 | revision = '0a6cc006a44b' 11 | down_revision = '7c400c47389c' 12 | 13 | from alembic import context, op 14 | import sqlalchemy as sa 15 | import transaction 16 | 17 | 18 | from assembl.lib import config 19 | 20 | 21 | def upgrade(pyramid_env): 22 | with context.begin_transaction(): 23 | op.drop_column('extract', 'body') 24 | 25 | 26 | def downgrade(pyramid_env): 27 | with context.begin_transaction(): 28 | op.add_column('extract', sa.Column('body', sa.UnicodeText)) 29 | -------------------------------------------------------------------------------- /assembl/alembic/versions/14296672081d_longer_preferred_email.py: -------------------------------------------------------------------------------- 1 | """longer preferred_email 2 | 3 | Revision ID: 14296672081d 4 | Revises: 384c371312a8 5 | Create Date: 2016-05-15 19:32:12.064005 6 | 7 | """ 8 | 9 | # revision identifiers, used by Alembic. 10 | revision = '14296672081d' 11 | down_revision = '384c371312a8' 12 | 13 | from alembic import context, op 14 | import sqlalchemy as sa 15 | import transaction 16 | 17 | 18 | from assembl.lib import config 19 | 20 | 21 | def upgrade(pyramid_env): 22 | with context.begin_transaction(): 23 | op.alter_column('user', 'preferred_email', type_=sa.String(100)) 24 | 25 | 26 | def downgrade(pyramid_env): 27 | with context.begin_transaction(): 28 | op.alter_column('user', 'preferred_email', type_=sa.String(50)) 29 | -------------------------------------------------------------------------------- /assembl/alembic/versions/187cdadb065f_add_participant_templates_to_existing_.py: -------------------------------------------------------------------------------- 1 | """add participant templates to existing discussions 2 | 3 | Revision ID: 187cdadb065f 4 | Revises: 48a07f038fe1 5 | Create Date: 2014-11-11 13:40:40.497189 6 | 7 | """ 8 | 9 | # revision identifiers, used by Alembic. 10 | revision = '187cdadb065f' 11 | down_revision = '48a07f038fe1' 12 | 13 | from alembic import context, op 14 | import sqlalchemy as sa 15 | import transaction 16 | 17 | 18 | from assembl.lib import config 19 | 20 | 21 | def upgrade(pyramid_env): 22 | # Do stuff with the app's models here. 23 | from assembl import models as m 24 | db = m.get_session_maker()() 25 | with transaction.manager: 26 | for d in db.query(m.Discussion).all(): 27 | d.get_participant_template() 28 | 29 | 30 | def downgrade(pyramid_env): 31 | pass 32 | -------------------------------------------------------------------------------- /assembl/alembic/versions/1bbe7758d93e_unicode_social_username.py: -------------------------------------------------------------------------------- 1 | """unicode social username 2 | 3 | Revision ID: 1bbe7758d93e 4 | Revises: 14296672081d 5 | Create Date: 2016-05-16 06:53:53.204274 6 | 7 | """ 8 | 9 | # revision identifiers, used by Alembic. 10 | revision = '1bbe7758d93e' 11 | down_revision = '14296672081d' 12 | 13 | from alembic import context, op 14 | import sqlalchemy as sa 15 | import transaction 16 | 17 | from assembl.lib import config 18 | from assembl.lib.sqla import mark_changed 19 | 20 | 21 | def upgrade(pyramid_env): 22 | with context.begin_transaction(): 23 | op.alter_column('social_auth_account', 'username', type_=sa.Unicode(200)) 24 | 25 | 26 | 27 | def downgrade(pyramid_env): 28 | with context.begin_transaction(): 29 | op.alter_column('social_auth_account', 'username', type_=sa.Unicode(200)) 30 | -------------------------------------------------------------------------------- /assembl/alembic/versions/227f09c8b8d4_ensure_inheritance.py: -------------------------------------------------------------------------------- 1 | """ensure inheritance 2 | 3 | Revision ID: 227f09c8b8d4 4 | Revises: 43df3099d52a 5 | Create Date: 2015-05-19 16:00:32.297452 6 | 7 | """ 8 | 9 | # revision identifiers, used by Alembic. 10 | revision = '227f09c8b8d4' 11 | down_revision = '43df3099d52a' 12 | 13 | from alembic import context, op 14 | import sqlalchemy as sa 15 | import transaction 16 | 17 | 18 | from assembl.lib import config 19 | from assembl.scripts.rebuild_tables import ensure_inheritance 20 | 21 | 22 | def upgrade(pyramid_env): 23 | ensure_inheritance() 24 | 25 | def downgrade(pyramid_env): 26 | pass 27 | -------------------------------------------------------------------------------- /assembl/alembic/versions/236808a19c3b_delete_quad_storages.py: -------------------------------------------------------------------------------- 1 | """delete quad storages 2 | 3 | Revision ID: 236808a19c3b 4 | Revises: 5a0ce18bf2b2 5 | Create Date: 2015-01-09 10:35:14.910892 6 | 7 | """ 8 | 9 | # revision identifiers, used by Alembic. 10 | revision = '236808a19c3b' 11 | down_revision = '5a0ce18bf2b2' 12 | 13 | from alembic import context 14 | 15 | 16 | def upgrade(pyramid_env): 17 | from assembl.semantic.virtuoso_mapping import AppQuadStorageManager 18 | with context.begin_transaction(): 19 | aqsm = AppQuadStorageManager() 20 | aqsm.drop_all_discussion_storages_but(-1) 21 | 22 | 23 | def downgrade(pyramid_env): 24 | with context.begin_transaction(): 25 | pass 26 | -------------------------------------------------------------------------------- /assembl/alembic/versions/25ef5e68f0aa_significant_extract.py: -------------------------------------------------------------------------------- 1 | """significant extract 2 | 3 | Revision ID: 25ef5e68f0aa 4 | Revises: 47f08d228847 5 | Create Date: 2014-08-26 15:25:21.892197 6 | 7 | """ 8 | 9 | # revision identifiers, used by Alembic. 10 | revision = '25ef5e68f0aa' 11 | down_revision = '47f08d228847' 12 | 13 | from alembic import context, op 14 | import sqlalchemy as sa 15 | import transaction 16 | 17 | 18 | from assembl.lib import config 19 | 20 | 21 | def upgrade(pyramid_env): 22 | with context.begin_transaction(): 23 | op.add_column( 24 | 'extract', sa.Column( 25 | 'important', sa.SmallInteger, server_default='0')) 26 | 27 | 28 | def downgrade(pyramid_env): 29 | with context.begin_transaction(): 30 | op.drop_column('extract', 'important') 31 | -------------------------------------------------------------------------------- /assembl/alembic/versions/26caf0c8f768_ensure_facebookaccounts_have_an_app_id.py: -------------------------------------------------------------------------------- 1 | """Ensure facebookAccounts have an app_id 2 | 3 | Revision ID: 26caf0c8f768 4 | Revises: 157237dd5620 5 | Create Date: 2015-10-27 16:49:58.486625 6 | 7 | """ 8 | 9 | # revision identifiers, used by Alembic. 10 | revision = '26caf0c8f768' 11 | down_revision = '157237dd5620' 12 | 13 | from alembic import context, op 14 | 15 | from assembl.lib import config 16 | 17 | 18 | def upgrade(pyramid_env): 19 | with context.begin_transaction(): 20 | op.execute( 21 | "update facebook_account set app_id='%s' where app_id is null" % 22 | (config.get("facebook.consumer_key"),)) 23 | 24 | 25 | def downgrade(pyramid_env): 26 | with context.begin_transaction(): 27 | pass 28 | -------------------------------------------------------------------------------- /assembl/alembic/versions/2e75c694f2d9_deduplicate_subscriptions.py: -------------------------------------------------------------------------------- 1 | """deduplicate_subscriptions 2 | 3 | Revision ID: 2e75c694f2d9 4 | Revises: 29c5ef7ad189 5 | Create Date: 2015-02-06 12:29:19.466109 6 | 7 | """ 8 | 9 | import sys 10 | from os.path import dirname 11 | 12 | sys.path.append(dirname(__file__)) 13 | 14 | # Import does not like this filename 15 | _m = __import__('5a0ce18bf2b2_deduplicate_subscriptions', 16 | globals(), locals(), ['upgrade', 'downgrade'], 0) 17 | 18 | # revision identifiers, used by Alembic. 19 | revision = '2e75c694f2d9' 20 | down_revision = '29c5ef7ad189' 21 | 22 | upgrade = _m.upgrade 23 | downgrade = _m.downgrade 24 | -------------------------------------------------------------------------------- /assembl/alembic/versions/2f9ca6738fb6_deduplicate_subscriptions.py: -------------------------------------------------------------------------------- 1 | """deduplicate subscriptions 2 | 3 | Revision ID: 2f9ca6738fb6 4 | Revises: 44f588d96b14 5 | Create Date: 2015-03-09 12:26:56.025030 6 | 7 | """ 8 | 9 | # revision identifiers, used by Alembic. 10 | revision = '2f9ca6738fb6' 11 | down_revision = '44f588d96b14' 12 | 13 | from alembic import context, op 14 | import sqlalchemy as sa 15 | import transaction 16 | from assembl.scripts.deduplicate_subscriptions import deduplicate 17 | 18 | from assembl.lib import config 19 | 20 | def upgrade(pyramid_env): 21 | from assembl import models as m 22 | db = m.get_session_maker()() 23 | with transaction.manager: 24 | deduplicate(db) 25 | 26 | 27 | def downgrade(pyramid_env): 28 | pass 29 | -------------------------------------------------------------------------------- /assembl/alembic/versions/3167e90d6636_user_subclasses_agentprofile.py: -------------------------------------------------------------------------------- 1 | """user subclasses agentprofile 2 | 3 | Revision ID: 3167e90d6636 4 | Revises: None 5 | Create Date: 2014-01-09 09:13:45.551458 6 | 7 | """ 8 | 9 | # revision identifiers, used by Alembic. 10 | revision = '3167e90d6636' 11 | down_revision = None 12 | 13 | from alembic import context, op 14 | import sqlalchemy as sa 15 | import transaction 16 | 17 | 18 | from assembl.lib import config 19 | 20 | 21 | def upgrade(pyramid_env): 22 | with context.begin_transaction(): 23 | op.execute( 24 | "update agent_profile set type='user' " 25 | "where id in (select id from \"user\")") 26 | 27 | 28 | def downgrade(pyramid_env): 29 | with context.begin_transaction(): 30 | op.execute("update agent_profile set type='agent_profile'") 31 | -------------------------------------------------------------------------------- /assembl/alembic/versions/328e132a35de_widget_status_store_context_link.py: -------------------------------------------------------------------------------- 1 | """widget status; store context link 2 | 3 | Revision ID: 328e132a35de 4 | Revises: 1593228f01ab 5 | Create Date: 2014-06-25 09:27:59.054020 6 | 7 | """ 8 | 9 | # revision identifiers, used by Alembic. 10 | revision = '328e132a35de' 11 | down_revision = '38239ae5d254' 12 | 13 | from alembic import context, op 14 | import sqlalchemy as sa 15 | import transaction 16 | 17 | 18 | from assembl.lib import config 19 | 20 | 21 | def upgrade(pyramid_env): 22 | with context.begin_transaction(): 23 | op.add_column('idea_widget_link', 24 | sa.Column('context_url', sa.String())) 25 | 26 | 27 | def downgrade(pyramid_env): 28 | with context.begin_transaction(): 29 | op.drop_column('idea_widget_link', 'context_url') 30 | -------------------------------------------------------------------------------- /assembl/alembic/versions/335e41a86a6b_discussion_creator.py: -------------------------------------------------------------------------------- 1 | """discussion creator 2 | 3 | Revision ID: 335e41a86a6b 4 | Revises: 33b361960ee7 5 | Create Date: 2016-11-14 12:32:52.653637 6 | 7 | """ 8 | 9 | # revision identifiers, used by Alembic. 10 | revision = '335e41a86a6b' 11 | down_revision = '33b361960ee7' 12 | 13 | from alembic import context, op 14 | import sqlalchemy as sa 15 | import transaction 16 | 17 | 18 | from assembl.lib import config 19 | 20 | 21 | def upgrade(pyramid_env): 22 | with context.begin_transaction(): 23 | op.add_column('discussion', sa.Column( 24 | 'creator_id', sa.Integer, sa.ForeignKey('user.id', ondelete="SET NULL"))) 25 | 26 | def downgrade(pyramid_env): 27 | with context.begin_transaction(): 28 | op.drop_column('discussion', 'creator_id') 29 | -------------------------------------------------------------------------------- /assembl/alembic/versions/33d7d4945aa3_add_discussion_help_url.py: -------------------------------------------------------------------------------- 1 | """add discussion.help_url 2 | 3 | Revision ID: 33d7d4945aa3 4 | Revises: 8f144ada84 5 | Create Date: 2015-05-04 10:56:24.276578 6 | 7 | """ 8 | 9 | # revision identifiers, used by Alembic. 10 | revision = '33d7d4945aa3' 11 | down_revision = '8f144ada84' 12 | 13 | from alembic import context, op 14 | import sqlalchemy as sa 15 | import transaction 16 | 17 | 18 | from assembl.lib import config 19 | 20 | 21 | def upgrade(pyramid_env): 22 | with context.begin_transaction(): 23 | op.add_column( 24 | 'discussion', 25 | sa.Column('help_url', sa.String(), nullable=True)) 26 | 27 | 28 | def downgrade(pyramid_env): 29 | with context.begin_transaction(): 30 | op.drop_column('discussion', 'help_url') 31 | -------------------------------------------------------------------------------- /assembl/alembic/versions/418b92acbcc5_boolean_discussion_subscribe_to_.py: -------------------------------------------------------------------------------- 1 | """boolean discussion.subscribe_to_notifications_on_signup 2 | 3 | Revision ID: 418b92acbcc5 4 | Revises: 104d2f466913 5 | Create Date: 2015-02-16 15:50:26.282031 6 | 7 | """ 8 | 9 | # revision identifiers, used by Alembic. 10 | revision = '418b92acbcc5' 11 | down_revision = '104d2f466913' 12 | 13 | from alembic import context, op 14 | import sqlalchemy as sa 15 | import transaction 16 | 17 | 18 | def upgrade(pyramid_env): 19 | with context.begin_transaction(): 20 | op.execute('''ALTER TABLE discussion 21 | ADD CHECK (subscribe_to_notifications_on_signup IN (0, 1))''') 22 | 23 | 24 | def downgrade(pyramid_env): 25 | with context.begin_transaction(): 26 | pass 27 | -------------------------------------------------------------------------------- /assembl/alembic/versions/453f5e773eff_timeline_deletion.py: -------------------------------------------------------------------------------- 1 | """timeline deletion 2 | 3 | Revision ID: 453f5e773eff 4 | Revises: 227f09c8b8d4 5 | Create Date: 2015-05-24 22:18:38.437603 6 | 7 | """ 8 | 9 | # revision identifiers, used by Alembic. 10 | from builtins import next 11 | revision = '453f5e773eff' 12 | down_revision = '227f09c8b8d4' 13 | 14 | from alembic import context 15 | import transaction 16 | 17 | from assembl.scripts.rebuild_tables import rebuild_fkey 18 | 19 | 20 | def upgrade(pyramid_env): 21 | from assembl import models as m 22 | db = m.get_session_maker()() 23 | with transaction.manager: 24 | fk = next(iter( 25 | m.TimelineEvent.__table__.c.previous_event_id.foreign_keys)) 26 | rebuild_fkey(db, fk) 27 | 28 | 29 | def downgrade(pyramid_env): 30 | with context.begin_transaction(): 31 | pass 32 | -------------------------------------------------------------------------------- /assembl/alembic/versions/49432c8ab71b_kill_weird_links.py: -------------------------------------------------------------------------------- 1 | """kill weird links 2 | 3 | Revision ID: 49432c8ab71b 4 | Revises: 54cf00f049c2 5 | Create Date: 2015-07-02 19:24:32.646353 6 | 7 | """ 8 | 9 | # revision identifiers, used by Alembic. 10 | revision = '49432c8ab71b' 11 | down_revision = '54cf00f049c2' 12 | 13 | from alembic import context, op 14 | import sqlalchemy as sa 15 | import transaction 16 | 17 | 18 | from assembl.lib import config 19 | from assembl.scripts.link_cleanup import kill_weird_links 20 | 21 | def upgrade(pyramid_env): 22 | from assembl import models as m 23 | db = m.get_session_maker()() 24 | with transaction.manager: 25 | kill_weird_links(db) 26 | 27 | 28 | def downgrade(pyramid_env): 29 | with context.begin_transaction(): 30 | pass 31 | -------------------------------------------------------------------------------- /assembl/alembic/versions/4b3f40493485_new_discussion_fields.py: -------------------------------------------------------------------------------- 1 | """new discussion fields 2 | 3 | Revision ID: 4b3f40493485 4 | Revises: 2e13e10be574 5 | Create Date: 2014-08-04 11:35:21.253147 6 | 7 | """ 8 | 9 | # revision identifiers, used by Alembic. 10 | revision = '4b3f40493485' 11 | down_revision = '2e13e10be574' 12 | 13 | from alembic import context, op 14 | import sqlalchemy as sa 15 | import transaction 16 | 17 | 18 | from assembl.lib import config 19 | 20 | 21 | def upgrade(pyramid_env): 22 | with context.begin_transaction(): 23 | op.add_column('discussion', sa.Column( 24 | 'objectives', sa.UnicodeText)) 25 | 26 | def downgrade(pyramid_env): 27 | with context.begin_transaction(): 28 | op.drop_column('discussion', 'objectives') 29 | -------------------------------------------------------------------------------- /assembl/alembic/versions/4df8698f9da8_discussion_json_settings.py: -------------------------------------------------------------------------------- 1 | """discussion json settings 2 | 3 | Revision ID: 4df8698f9da8 4 | Revises: 5ae3d1ed3134 5 | Create Date: 2014-12-09 21:23:02.902813 6 | 7 | """ 8 | 9 | # revision identifiers, used by Alembic. 10 | revision = '4df8698f9da8' 11 | down_revision = '5ae3d1ed3134' 12 | 13 | from alembic import context, op 14 | import sqlalchemy as sa 15 | 16 | 17 | def upgrade(pyramid_env): 18 | with context.begin_transaction(): 19 | op.add_column( 20 | 'discussion', 21 | sa.Column('settings', sa.Text())) 22 | 23 | 24 | def downgrade(pyramid_env): 25 | with context.begin_transaction(): 26 | op.drop_column('discussion', 'settings') 27 | -------------------------------------------------------------------------------- /assembl/alembic/versions/4e06ad70101a_insert_languagepreferenceorder.py: -------------------------------------------------------------------------------- 1 | """Insert LanguagePreferenceOrder 2 | 3 | Revision ID: 4e06ad70101a 4 | Revises: 4f43341f787e 5 | Create Date: 2016-03-08 08:46:55.859966 6 | 7 | """ 8 | 9 | # revision identifiers, used by Alembic. 10 | revision = '4e06ad70101a' 11 | down_revision = '4f43341f787e' 12 | 13 | from alembic import context, op 14 | 15 | 16 | def upgrade(pyramid_env): 17 | with context.begin_transaction(): 18 | op.execute("""UPDATE user_language_preference 19 | SET source_of_evidence = source_of_evidence + 1 20 | WHERE source_of_evidence > 2""") 21 | 22 | 23 | def downgrade(pyramid_env): 24 | with context.begin_transaction(): 25 | op.execute("""UPDATE user_language_preference 26 | SET source_of_evidence = source_of_evidence - 1 27 | WHERE source_of_evidence > 3""") 28 | -------------------------------------------------------------------------------- /assembl/alembic/versions/4f43341f787e_non_null_langstringentry_value.py: -------------------------------------------------------------------------------- 1 | """non-null LangStringEntry.value 2 | 3 | Revision ID: 4f43341f787e 4 | Revises: 27bb3c90a95d 5 | Create Date: 2016-02-12 17:16:48.412974 6 | 7 | """ 8 | 9 | # revision identifiers, used by Alembic. 10 | revision = '4f43341f787e' 11 | down_revision = '27bb3c90a95d' 12 | 13 | from alembic import context, op 14 | import sqlalchemy as sa 15 | 16 | 17 | def upgrade(pyramid_env): 18 | with context.begin_transaction(): 19 | op.execute("update langstring_entry set value='' where value is null") 20 | 21 | 22 | def downgrade(pyramid_env): 23 | with context.begin_transaction(): 24 | pass 25 | -------------------------------------------------------------------------------- /assembl/alembic/versions/51e90ff6a48c_widget_user_config_id.py: -------------------------------------------------------------------------------- 1 | """widget_user_config_id 2 | 3 | Revision ID: 51e90ff6a48c 4 | Revises: 10d81337e9f1 5 | Create Date: 2014-06-06 12:57:02.325938 6 | 7 | """ 8 | 9 | # revision identifiers, used by Alembic. 10 | revision = '51e90ff6a48c' 11 | down_revision = '10d81337e9f1' 12 | 13 | from alembic import context, op 14 | import sqlalchemy as sa 15 | import transaction 16 | 17 | 18 | from assembl.lib import config 19 | 20 | 21 | def upgrade(pyramid_env): 22 | with context.begin_transaction(): 23 | # D'oh! 24 | op.add_column('widget_user_config', 25 | sa.Column('id', sa.Integer, primary_key=True)) 26 | 27 | 28 | def downgrade(pyramid_env): 29 | with context.begin_transaction(): 30 | op.drop_column('widget_user_config', 'id') 31 | -------------------------------------------------------------------------------- /assembl/alembic/versions/535a27ae52d8_langstringentry_error_count.py: -------------------------------------------------------------------------------- 1 | """langstringentry.error_count 2 | 3 | Revision ID: 535a27ae52d8 4 | Revises: 50639b470b96 5 | Create Date: 2016-01-29 13:57:26.049415 6 | 7 | """ 8 | 9 | # revision identifiers, used by Alembic. 10 | revision = '535a27ae52d8' 11 | down_revision = '50639b470b96' 12 | 13 | from alembic import context, op 14 | import sqlalchemy as sa 15 | import transaction 16 | 17 | 18 | def upgrade(pyramid_env): 19 | with context.begin_transaction(): 20 | op.add_column( 21 | "langstring_entry", 22 | sa.Column("error_count", sa.Integer)) 23 | 24 | 25 | def downgrade(pyramid_env): 26 | with context.begin_transaction(): 27 | op.drop_column("langstring_entry", "error_count") 28 | -------------------------------------------------------------------------------- /assembl/alembic/versions/53b64260ffb8_langstringentry_error_code.py: -------------------------------------------------------------------------------- 1 | """langstringentry.error_code 2 | 3 | Revision ID: 53b64260ffb8 4 | Revises: 535a27ae52d8 5 | Create Date: 2016-02-03 09:44:07.159544 6 | 7 | """ 8 | 9 | # revision identifiers, used by Alembic. 10 | revision = '53b64260ffb8' 11 | down_revision = '535a27ae52d8' 12 | 13 | from alembic import context, op 14 | import sqlalchemy as sa 15 | import transaction 16 | 17 | 18 | def upgrade(pyramid_env): 19 | with context.begin_transaction(): 20 | op.add_column( 21 | "langstring_entry", 22 | sa.Column("error_code", sa.SmallInteger)) 23 | 24 | 25 | def downgrade(pyramid_env): 26 | with context.begin_transaction(): 27 | op.drop_column("langstring_entry", "error_code") 28 | -------------------------------------------------------------------------------- /assembl/alembic/versions/599eb2e48439_discussion_languages.py: -------------------------------------------------------------------------------- 1 | """discussion languages 2 | 3 | Revision ID: 599eb2e48439 4 | Revises: 2f9ca6738fb6 5 | Create Date: 2015-03-09 13:14:25.180624 6 | 7 | """ 8 | 9 | # revision identifiers, used by Alembic. 10 | revision = '599eb2e48439' 11 | down_revision = '2f9ca6738fb6' 12 | 13 | from alembic import context, op 14 | import sqlalchemy as sa 15 | import transaction 16 | 17 | 18 | from assembl.lib import config 19 | 20 | 21 | def upgrade(pyramid_env): 22 | with context.begin_transaction(): 23 | op.add_column( 24 | 'discussion', 25 | sa.Column('preferred_locales', sa.String())) 26 | 27 | 28 | def downgrade(pyramid_env): 29 | with context.begin_transaction(): 30 | op.drop_column('discussion', 'preferred_locales') 31 | -------------------------------------------------------------------------------- /assembl/alembic/versions/5a410de37088_tombstonable_actions.py: -------------------------------------------------------------------------------- 1 | """tombstonable actions 2 | 3 | Revision ID: 5a410de37088 4 | Revises: 163294913218 5 | Create Date: 2015-06-19 16:09:03.510558 6 | 7 | """ 8 | 9 | # revision identifiers, used by Alembic. 10 | revision = '5a410de37088' 11 | down_revision = '163294913218' 12 | 13 | from alembic import context, op 14 | import sqlalchemy as sa 15 | 16 | 17 | def upgrade(pyramid_env): 18 | with context.begin_transaction(): 19 | op.add_column('action', sa.Column('tombstone_date', sa.DateTime)) 20 | 21 | 22 | def downgrade(pyramid_env): 23 | with context.begin_transaction(): 24 | op.drop_column('action', 'tombstone_date') 25 | -------------------------------------------------------------------------------- /assembl/alembic/versions/6138047cb26_add_web_analytics_piwik_site_id_field_.py: -------------------------------------------------------------------------------- 1 | """add web_analytics_piwik_site_id field in discussion table 2 | 3 | Revision ID: 6138047cb26 4 | Revises: 418b92acbcc5 5 | Create Date: 2015-02-24 16:50:16.854035 6 | 7 | """ 8 | 9 | # revision identifiers, used by Alembic. 10 | revision = '6138047cb26' 11 | down_revision = '418b92acbcc5' 12 | 13 | from alembic import context, op 14 | import sqlalchemy as sa 15 | import transaction 16 | 17 | 18 | from assembl.lib import config 19 | 20 | 21 | def upgrade(pyramid_env): 22 | with context.begin_transaction(): 23 | op.add_column( 24 | 'discussion', 25 | sa.Column('web_analytics_piwik_id_site', sa.Integer, nullable=True)) 26 | 27 | 28 | def downgrade(pyramid_env): 29 | with context.begin_transaction(): 30 | op.drop_column('discussion', 'web_analytics_piwik_id_site') 31 | -------------------------------------------------------------------------------- /assembl/alembic/versions/8be3def744e9_idea_source__update_back_imports.py: -------------------------------------------------------------------------------- 1 | """idea_source__update_back_imports 2 | 3 | Revision ID: 8be3def744e9 4 | Revises: 92c7d8fc1ce3 5 | Create Date: 2019-04-05 13:45:06.315691 6 | 7 | """ 8 | 9 | # revision identifiers, used by Alembic. 10 | revision = '8be3def744e9' 11 | down_revision = '92c7d8fc1ce3' 12 | 13 | from alembic import context, op 14 | import sqlalchemy as sa 15 | import transaction 16 | 17 | 18 | from assembl.lib import config 19 | 20 | 21 | def upgrade(pyramid_env): 22 | with context.begin_transaction(): 23 | op.add_column( 24 | 'idea_source', sa.Column('update_back_imports', sa.Boolean)) 25 | 26 | 27 | def downgrade(pyramid_env): 28 | with context.begin_transaction(): 29 | op.drop_column('idea_source', 'update_back_imports') 30 | -------------------------------------------------------------------------------- /assembl/alembic/versions/8f144ada84_error_backoff_in_content_source.py: -------------------------------------------------------------------------------- 1 | """error_backoff in content_source 2 | 3 | Revision ID: 8f144ada84 4 | Revises: 475125b7bfe3 5 | Create Date: 2015-04-30 15:39:06.539895 6 | 7 | """ 8 | 9 | # revision identifiers, used by Alembic. 10 | revision = '8f144ada84' 11 | down_revision = '475125b7bfe3' 12 | 13 | from alembic import context, op 14 | import sqlalchemy as sa 15 | 16 | 17 | def upgrade(pyramid_env): 18 | with context.begin_transaction(): 19 | op.add_column('content_source', 20 | sa.Column('error_backoff_until', sa.DateTime)) 21 | 22 | 23 | def downgrade(pyramid_env): 24 | with context.begin_transaction(): 25 | op.drop_column('content_source', 'error_backoff_until') 26 | 27 | -------------------------------------------------------------------------------- /assembl/alembic/versions/a33ea73a4b2e_urireftable.py: -------------------------------------------------------------------------------- 1 | """urireftable 2 | 3 | Revision ID: a33ea73a4b2e 4 | Revises: 5baafd563d59 5 | Create Date: 2017-09-10 10:02:13.323941 6 | 7 | """ 8 | 9 | # revision identifiers, used by Alembic. 10 | revision = 'a33ea73a4b2e' 11 | down_revision = '5baafd563d59' 12 | 13 | from alembic import context, op 14 | import sqlalchemy as sa 15 | import transaction 16 | 17 | 18 | from assembl.lib import config 19 | 20 | 21 | def upgrade(pyramid_env): 22 | with context.begin_transaction(): 23 | op.create_table( 24 | 'uriref', 25 | sa.Column("id", sa.Integer, primary_key=True), 26 | sa.Column("val", sa.Unicode, nullable=False, unique=True), 27 | ) 28 | 29 | 30 | def downgrade(pyramid_env): 31 | with context.begin_transaction(): 32 | op.drop_table('uriref') 33 | -------------------------------------------------------------------------------- /assembl/alembic/versions/cfdb3b895127_description_in_synthesis.py: -------------------------------------------------------------------------------- 1 | """description in synthesis 2 | 3 | Revision ID: cfdb3b895127 4 | Revises: d1d922f0cf3a 5 | Create Date: 2018-04-21 20:28:51.348799 6 | 7 | """ 8 | 9 | # revision identifiers, used by Alembic. 10 | revision = 'cfdb3b895127' 11 | down_revision = 'd1d922f0cf3a' 12 | 13 | from alembic import context, op 14 | import sqlalchemy as sa 15 | import transaction 16 | 17 | 18 | from assembl.lib import config 19 | 20 | 21 | def upgrade(pyramid_env): 22 | with context.begin_transaction(): 23 | op.add_column( 24 | 'sub_graph_idea_association', 25 | sa.Column('include_body', sa.Boolean, server_default='false')) 26 | 27 | 28 | def downgrade(pyramid_env): 29 | with context.begin_transaction(): 30 | op.drop_column( 31 | 'sub_graph_idea_association', 'include_body') 32 | -------------------------------------------------------------------------------- /assembl/alembic/versions/d04b378fedf_spurious_notification_delivery_.py: -------------------------------------------------------------------------------- 1 | """spurious Notification.delivery_confirmation_date 2 | 3 | Revision ID: d04b378fedf 4 | Revises: 28a8fd62693b 5 | Create Date: 2015-07-21 10:17:06.740524 6 | 7 | """ 8 | 9 | # revision identifiers, used by Alembic. 10 | revision = 'd04b378fedf' 11 | down_revision = '28a8fd62693b' 12 | 13 | from alembic import context, op 14 | import sqlalchemy as sa 15 | import transaction 16 | 17 | 18 | from assembl.lib import config 19 | 20 | 21 | def upgrade(pyramid_env): 22 | with context.begin_transaction(): 23 | # This was set by a stupid default, never by real data 24 | op.execute('update notification set delivery_confirmation_date=null') 25 | 26 | def downgrade(pyramid_env): 27 | pass 28 | -------------------------------------------------------------------------------- /assembl/alembic/versions/da57ecf53fe6_rename_vote_date.py: -------------------------------------------------------------------------------- 1 | """rename vote_date 2 | 3 | Revision ID: da57ecf53fe6 4 | Revises: 2b8cadc0af7e 5 | Create Date: 2017-05-25 12:26:34.919489 6 | 7 | """ 8 | 9 | # revision identifiers, used by Alembic. 10 | revision = 'da57ecf53fe6' 11 | down_revision = '2b8cadc0af7e' 12 | 13 | from alembic import context, op 14 | import sqlalchemy as sa 15 | import transaction 16 | 17 | 18 | from assembl.lib import config 19 | 20 | 21 | def upgrade(pyramid_env): 22 | with context.begin_transaction(): 23 | op.alter_column( 24 | 'idea_vote', 'vote_date', new_column_name='creation_date') 25 | 26 | 27 | def downgrade(pyramid_env): 28 | with context.begin_transaction(): 29 | op.alter_column( 30 | 'idea_vote', 'creation_date', new_column_name='vote_date') 31 | -------------------------------------------------------------------------------- /assembl/alembic/versions/df96058e0fa_action_suffix.py: -------------------------------------------------------------------------------- 1 | """action suffix 2 | 3 | Revision ID: df96058e0fa 4 | Revises: ff520e781a4 5 | Create Date: 2015-07-13 07:23:56.311962 6 | 7 | """ 8 | 9 | # revision identifiers, used by Alembic. 10 | revision = 'df96058e0fa' 11 | down_revision = 'ff520e781a4' 12 | 13 | from alembic import context, op 14 | 15 | from assembl.lib import config 16 | 17 | 18 | def upgrade(pyramid_env): 19 | with context.begin_transaction(): 20 | op.execute(""" UPDATE action SET "type"=concat("type",'_P') """) 21 | 22 | 23 | def downgrade(pyramid_env): 24 | with context.begin_transaction(): 25 | op.execute( 26 | 'UPDATE action SET "type"=subseq("type",0,length("type")-2)') 27 | -------------------------------------------------------------------------------- /assembl/alembic/versions/e546a1bde9_separate_widget_state.py: -------------------------------------------------------------------------------- 1 | """separate widget state 2 | 3 | Revision ID: e546a1bde9 4 | Revises: 12fd3dd74340 5 | Create Date: 2014-04-20 10:51:39.237594 6 | 7 | """ 8 | 9 | # revision identifiers, used by Alembic. 10 | revision = 'e546a1bde9' 11 | down_revision = '12fd3dd74340' 12 | 13 | from alembic import context, op 14 | import sqlalchemy as sa 15 | import transaction 16 | 17 | 18 | from assembl.lib import config 19 | 20 | 21 | def upgrade(pyramid_env): 22 | with context.begin_transaction(): 23 | op.add_column('widget', sa.Column('state', sa.Text)) 24 | 25 | 26 | def downgrade(pyramid_env): 27 | with context.begin_transaction(): 28 | op.drop_column('widget', 'state') 29 | -------------------------------------------------------------------------------- /assembl/alembic/versions/ef4c35401ab_restore_lost_message_parents.py: -------------------------------------------------------------------------------- 1 | """restore lost message parents 2 | 3 | Revision ID: ef4c35401ab 4 | Revises: 328e132a35de 5 | Create Date: 2014-07-14 11:20:17.005163 6 | 7 | """ 8 | 9 | # revision identifiers, used by Alembic. 10 | revision = 'ef4c35401ab' 11 | down_revision = '328e132a35de' 12 | 13 | from alembic import context, op 14 | import sqlalchemy as sa 15 | import transaction 16 | 17 | 18 | from assembl.lib import config 19 | 20 | 21 | def upgrade(pyramid_env): 22 | from assembl import models as m 23 | db = m.get_session_maker()() 24 | with transaction.manager: 25 | orphans = db.query(m.Post).filter(m.Post.ancestry != '', m.Post.parent_id == None).all() 26 | for p in orphans: 27 | p.parent_id = int(p.ancestry.split(',')[-2]) 28 | -------------------------------------------------------------------------------- /assembl/alembic/versions/f6b4dabfe49e_timeline_identifier.py: -------------------------------------------------------------------------------- 1 | """timeline_identifier 2 | 3 | Revision ID: f6b4dabfe49e 4 | Revises: 0888e0f1a92d 5 | Create Date: 2017-03-08 08:57:47.379976 6 | 7 | """ 8 | 9 | # revision identifiers, used by Alembic. 10 | revision = 'f6b4dabfe49e' 11 | down_revision = '0888e0f1a92d' 12 | 13 | from alembic import context, op 14 | import sqlalchemy as sa 15 | 16 | 17 | def upgrade(pyramid_env): 18 | with context.begin_transaction(): 19 | op.add_column( 20 | 'timeline_event', 21 | sa.Column('identifier', sa.String(60))) 22 | 23 | 24 | def downgrade(pyramid_env): 25 | with context.begin_transaction(): 26 | op.drop_column('timeline_event', 'identifier') 27 | -------------------------------------------------------------------------------- /assembl/configs/local_prod.rc: -------------------------------------------------------------------------------- 1 | # Allows to work on production settings in the abstract. Do not use except in fab tasks. 2 | _extends = base_env.rc 3 | public_hostname = localhost 4 | -------------------------------------------------------------------------------- /assembl/configs/mac.rc: -------------------------------------------------------------------------------- 1 | _extends = develop.rc 2 | _mac = true 3 | # Use the underlying user 4 | _postgres_db_user = __delete_key__ 5 | lcctype = UTF-8 6 | -------------------------------------------------------------------------------- /assembl/lib/__init__.py: -------------------------------------------------------------------------------- 1 | """Various utility modules""" 2 | 3 | def includeme(config): 4 | config.include('.discussion_creation') 5 | config.include('.raven_client') 6 | # config.include('.logging') # done in assembl/__init__.py 7 | -------------------------------------------------------------------------------- /assembl/lib/hash_fs.py: -------------------------------------------------------------------------------- 1 | from os import path 2 | 3 | from hashfs.hashfs import HashFS 4 | 5 | from .config import get 6 | 7 | _hashfs = None 8 | 9 | 10 | def get_hashfs(): 11 | global _hashfs 12 | if _hashfs is None: 13 | root = get('upload_root', 'var/uploads') 14 | if root[0] != '/': 15 | root = path.abspath(path.join( 16 | path.dirname(__file__), '..', '..', root)) 17 | _hashfs = HashFS(root) 18 | return _hashfs 19 | -------------------------------------------------------------------------------- /assembl/lib/parsedatetime.py: -------------------------------------------------------------------------------- 1 | import isodate 2 | 3 | 4 | def parse_datetime(value, raise_error=None): 5 | """Parse a datetime from a ISO 8601 string""" 6 | try: 7 | if 'T' not in value: 8 | value += "T00:00:00" 9 | value = isodate.parse_datetime(value) 10 | # we store naive UTC in the database. 11 | if value.tzinfo is not None: 12 | value -= value.utcoffset() 13 | value = value.replace(tzinfo=None) 14 | return value 15 | except isodate.ISO8601Error as e: 16 | if raise_error: 17 | raise e 18 | return None 19 | -------------------------------------------------------------------------------- /assembl/lib/pshell_session.py: -------------------------------------------------------------------------------- 1 | """Initial objects for the pshell sessions""" 2 | from __future__ import absolute_import 3 | import sys 4 | 5 | from pyramid.paster import get_appsettings 6 | from .sqla import get_session_maker, configure_engine 7 | from assembl.lib.config import set_config as _set_config 8 | 9 | # an implicit session for pshell 10 | app_settings = get_appsettings(sys.argv[1], 'idealoom') 11 | _set_config(app_settings) 12 | configure_engine(app_settings, False) 13 | db = get_session_maker() 14 | -------------------------------------------------------------------------------- /assembl/lib/scripting.py: -------------------------------------------------------------------------------- 1 | """ Helper functions for scripts. """ 2 | 3 | import sys 4 | 5 | 6 | def exitonbreak(target): 7 | """ Cleanly exit on CTRL-C. """ 8 | def wrapper(): 9 | try: 10 | target() 11 | except KeyboardInterrupt as e: 12 | sys.stderr.write('\nTrapped a Break. Exiting.\n') 13 | sys.exit(1) 14 | return wrapper 15 | -------------------------------------------------------------------------------- /assembl/nlp/data/stopwords.xml: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /assembl/nlp/data/stopwords/README: -------------------------------------------------------------------------------- 1 | Stopwords Corpus 2 | 3 | This corpus contains lists of stop words for several languages. These 4 | are high-frequency grammatical words which are usually ignored in text 5 | retrieval applications. 6 | 7 | They were obtained from: 8 | http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/snowball/stopwords/ 9 | 10 | -------------------------------------------------------------------------------- /assembl/nlp/data/stopwords/danish: -------------------------------------------------------------------------------- 1 | og 2 | i 3 | jeg 4 | det 5 | at 6 | en 7 | den 8 | til 9 | er 10 | som 11 | på 12 | de 13 | med 14 | han 15 | af 16 | for 17 | ikke 18 | der 19 | var 20 | mig 21 | sig 22 | men 23 | et 24 | har 25 | om 26 | vi 27 | min 28 | havde 29 | ham 30 | hun 31 | nu 32 | over 33 | da 34 | fra 35 | du 36 | ud 37 | sin 38 | dem 39 | os 40 | op 41 | man 42 | hans 43 | hvor 44 | eller 45 | hvad 46 | skal 47 | selv 48 | her 49 | alle 50 | vil 51 | blev 52 | kunne 53 | ind 54 | når 55 | være 56 | dog 57 | noget 58 | ville 59 | jo 60 | deres 61 | efter 62 | ned 63 | skulle 64 | denne 65 | end 66 | dette 67 | mit 68 | også 69 | under 70 | have 71 | dig 72 | anden 73 | hende 74 | mine 75 | alt 76 | meget 77 | sit 78 | sine 79 | vor 80 | mod 81 | disse 82 | hvis 83 | din 84 | nogle 85 | hos 86 | blive 87 | mange 88 | ad 89 | bliver 90 | hendes 91 | været 92 | thi 93 | jer 94 | sådan 95 | -------------------------------------------------------------------------------- /assembl/nlp/data/stopwords/turkish: -------------------------------------------------------------------------------- 1 | acaba 2 | ama 3 | aslında 4 | az 5 | bazı 6 | belki 7 | biri 8 | birkaç 9 | birşey 10 | biz 11 | bu 12 | çok 13 | çünkü 14 | da 15 | daha 16 | de 17 | defa 18 | diye 19 | eğer 20 | en 21 | gibi 22 | hem 23 | hep 24 | hepsi 25 | her 26 | hiç 27 | için 28 | ile 29 | ise 30 | kez 31 | ki 32 | kim 33 | mı 34 | mu 35 | mü 36 | nasıl 37 | ne 38 | neden 39 | nerde 40 | nerede 41 | nereye 42 | niçin 43 | niye 44 | o 45 | sanki 46 | şey 47 | siz 48 | şu 49 | tüm 50 | ve 51 | veya 52 | ya 53 | yani 54 | -------------------------------------------------------------------------------- /assembl/scripts/__init__.py: -------------------------------------------------------------------------------- 1 | """Scripts that can be run from the CLI""" 2 | 3 | import logging 4 | 5 | from pyramid.paster import get_appsettings, bootstrap 6 | 7 | from ..lib.sqla import configure_engine, get_session_maker 8 | from ..lib.zmqlib import configure_zmq 9 | from ..lib.model_watcher import configure_model_watcher 10 | from ..lib.config import set_config 11 | 12 | 13 | def boostrap_configuration(config): 14 | logging.config.fileConfig(config) 15 | env = bootstrap(config) 16 | settings = get_appsettings(config, 'idealoom') 17 | set_config(settings) 18 | configure_zmq(settings['changes_socket'], False) 19 | configure_model_watcher(env['registry'], 'idealoom') 20 | configure_engine(settings, True) 21 | return get_session_maker()() 22 | -------------------------------------------------------------------------------- /assembl/scripts/list_css_icons.py: -------------------------------------------------------------------------------- 1 | """List icons defined in Fontello""" 2 | from __future__ import print_function 3 | # to run: python assembl/scripts/list_css_icons.py 4 | 5 | import json 6 | 7 | 8 | def main(): 9 | with open('assembl/static/css/fonts/config.json') as data_file: 10 | data = json.load(data_file) 11 | l = [i["css"] for i in data["glyphs"]] 12 | print(l) 13 | 14 | if __name__ == '__main__': 15 | main() 16 | -------------------------------------------------------------------------------- /assembl/semantic/__init__.py: -------------------------------------------------------------------------------- 1 | """package of semantic Web (RDF) modules. 2 | 3 | Currently deprecated, as it is based on Virtuoso 4 | and we gave up on that approach.""" 5 | from os import path 6 | 7 | from rdflib import URIRef 8 | 9 | REMOTE_ROOT = URIRef('http://purl.org/catalyst/') 10 | context_url = REMOTE_ROOT + 'jsonld' 11 | ontology_dir = path.abspath(path.join(path.dirname(__file__), 'ontology')) 12 | local_context_loc = path.join(ontology_dir, 'context.jsonld') 13 | DEFAULT_ROOT = ontology_dir + "/" 14 | 15 | _jsonld_context = None 16 | 17 | def jsonld_context(ontology_root=DEFAULT_ROOT): 18 | global _jsonld_context 19 | if _jsonld_context is None: 20 | from rdflib.plugins.shared.jsonld.context import Context 21 | _jsonld_context = Context(local_context_loc) 22 | return _jsonld_context 23 | -------------------------------------------------------------------------------- /assembl/static/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": [ 3 | "prettier" 4 | ], 5 | "parser": "babel-eslint" 6 | } 7 | -------------------------------------------------------------------------------- /assembl/static/css/_assembl_notification_styles.scss: -------------------------------------------------------------------------------- 1 | @import "base/variables.scss"; 2 | @import "notifications/_mail_notifications.scss"; 3 | -------------------------------------------------------------------------------- /assembl/static/css/base/_functions.scss: -------------------------------------------------------------------------------- 1 | $browser-context: 12; // Default 2 | 3 | @function em($pixels, $context: $browser-context) { 4 | @return ($pixels / $context) * 1em; 5 | } -------------------------------------------------------------------------------- /assembl/static/css/components/.gitignore: -------------------------------------------------------------------------------- 1 | growl.css 2 | 3 | -------------------------------------------------------------------------------- /assembl/static/css/components/_agent.scss: -------------------------------------------------------------------------------- 1 | .agentName { 2 | display: inline; 3 | } -------------------------------------------------------------------------------- /assembl/static/css/components/_announcement.scss: -------------------------------------------------------------------------------- 1 | 2 | //For announcementMessage, 3 | //Style is actually defined in message.scss, so constants can be easily reused. 4 | .announcementEditable { 5 | .js_announcement_shouldPropagateDown_region { 6 | display: inline; 7 | } 8 | .announcement_title { 9 | font-size: 18px; //To patch announcementMessage 10 | } 11 | } -------------------------------------------------------------------------------- /assembl/static/css/components/_avatars.scss: -------------------------------------------------------------------------------- 1 | // Avatars 2 | 3 | .agentAvatar { 4 | float: left; 5 | display: inline-block; 6 | margin-right: 5px; 7 | } 8 | .avatar { 9 | display: block; 10 | padding: 1px; 11 | 12 | img { 13 | display: inline-block; 14 | border-radius: $borderRadiusMS; 15 | opacity: 1; 16 | @include transition(opacity 0.2s); 17 | overflow: hidden; 18 | } 19 | 20 | 21 | &:hover, 22 | &:focus { 23 | img { 24 | opacity: 0.8; 25 | } 26 | } 27 | 28 | &.img-rounded { 29 | padding: 0; 30 | 31 | img { 32 | border-radius: 50%; 33 | //border: 3px solid $blue2; 34 | } 35 | } 36 | } 37 | 38 | a:hover, a:focus { 39 | .avatar { 40 | img { 41 | opacity: 0.8; 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /assembl/static/css/components/_bookmarklet.scss: -------------------------------------------------------------------------------- 1 | .bookmarklet { 2 | border-radius: 4px; 3 | font-size: inherit; 4 | position: relative; 5 | cursor: move; 6 | color: #fff; 7 | text-decoration: none; 8 | background: rgba(0,0,0,0.25); 9 | padding: 4px; 10 | display: block; 11 | } 12 | -------------------------------------------------------------------------------- /assembl/static/css/components/_breadcrumb.scss: -------------------------------------------------------------------------------- 1 | .breadcrumb { 2 | display: inline; /* or "inline-block" if we want no line break in the same element (separated by ">") */ 3 | } 4 | 5 | .breadcrumb:after { 6 | content: ">"; 7 | font-weight: bold; 8 | color: $txtGray; 9 | padding-right: 5px; 10 | padding-left: 5px; 11 | } 12 | 13 | .breadcrumb:last-child:after { 14 | content: ""; 15 | } 16 | -------------------------------------------------------------------------------- /assembl/static/css/components/_contextmenu.scss: -------------------------------------------------------------------------------- 1 | // The right click menu 2 | // ==================== 3 | .contextmenu { 4 | position: absolute; 5 | display: inline-block; 6 | padding: 10px * 1.2 10px * 1.5; 7 | border: solid 1px #e4e4e3; 8 | box-shadow: 0 2px 3px #ccc; 9 | border-radius: 5px; 10 | background-color: #fff; 11 | } 12 | 13 | // A link within the .contextmenu 14 | // ------------------------------ 15 | .contextmenu-item { 16 | display: block; 17 | line-height: 22px; 18 | cursor: pointer; 19 | } 20 | .contextmenu-item, .contextmenu-item a { 21 | color: $gray1; 22 | &:hover, &.is-hovered { 23 | color: $black; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /assembl/static/css/components/_dot.scss: -------------------------------------------------------------------------------- 1 | 2 | // Adds a gray dot before the word 3 | // ======== 4 | #onlinedot { 5 | @include display(flex); 6 | @include flex-direction(row); 7 | 8 | .dot-offline { 9 | display: block; 10 | line-height: $theme_header_height; 11 | } 12 | 13 | .dot-online { 14 | display: none; 15 | } 16 | } 17 | 18 | 19 | // Online version 20 | // ********** 21 | #onlinedot.is-online { 22 | 23 | &:before { 24 | background-color: #13a89e; 25 | } 26 | 27 | .dot-offline { 28 | display: none; 29 | } 30 | 31 | .dot-online { 32 | display: inline-block; 33 | white-space: nowrap; 34 | text-overflow: ellipsis; 35 | overflow: hidden; 36 | line-height: $theme_header_height; 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /assembl/static/css/components/_dragbox.scss: -------------------------------------------------------------------------------- 1 | // Box used when user drag something 2 | // ====================== 3 | .dragbox { 4 | line-height: 20px; 5 | //padding: 5px; 6 | 7 | position: absolute; 8 | top: 10px; 9 | left: 10px; 10 | @include z-index("underground"); 11 | 12 | background-color: $yellow; 13 | box-shadow: 0 3px 3px rgba(0, 0, 0, .15); 14 | border: solid 1px $orange; 15 | 16 | font-size: 11px; 17 | color: #c7a25a; 18 | cursor: move; 19 | 20 | &:before { 21 | content: url(#{$img-dir}/dragbox/dragbox-background.png); 22 | margin-right: 5px; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /assembl/static/css/components/_image.scss: -------------------------------------------------------------------------------- 1 | // DELETE THIS FILE AFTER REFACTORING 2 | .image-rounded { 3 | border-radius: 2px; 4 | } -------------------------------------------------------------------------------- /assembl/static/css/components/_link.scss: -------------------------------------------------------------------------------- 1 | // DELETE THIS FILE AFTER REFACTORING 2 | 3 | // Link component 4 | // ============== 5 | .link { 6 | cursor: pointer; 7 | color: #484848; 8 | text-decoration: none; 9 | &:hover { 10 | color: $gray3; 11 | } 12 | 13 | &:active { 14 | color: $gray1; 15 | } 16 | } 17 | 18 | // Segment link 19 | // ============ 20 | .segment-link { 21 | @extend .link; 22 | } 23 | -------------------------------------------------------------------------------- /assembl/static/css/components/_loader.scss: -------------------------------------------------------------------------------- 1 | // blocked and with a loading message 2 | // **************** 3 | .loader-wrapper { 4 | position: relative; 5 | min-height: 16px; /* the size of the loader image */ 6 | height: 100%; 7 | width: 100%; 8 | } 9 | .is-loading { 10 | cursor: wait; 11 | 12 | &:after { 13 | position: absolute; 14 | top: 0; 15 | right: 0; 16 | bottom: 0; 17 | left: 0; 18 | @include z-index("float"); 19 | 20 | display: block; 21 | content: ""; 22 | background: transparent url(#{$img-dir}/panel/loading.gif) no-repeat 50% 50%; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /assembl/static/css/components/_media.scss: -------------------------------------------------------------------------------- 1 | // DELETE THIS FILE AFTER REFACTORING 2 | // The famous media element 3 | // ===================== 4 | .media { 5 | } 6 | 7 | // To aling the object at the left 8 | // --------------------- 9 | .media-imgleft { 10 | float: left; 11 | margin: { 12 | right: 10px; 13 | bottom: 10px; 14 | } 15 | } 16 | 17 | // The content of the media 18 | // --------------------- 19 | .media-body { 20 | overflow: hidden; 21 | } 22 | 23 | // The title within a media 24 | // ------------------- 25 | .media-title { 26 | padding-top: 3px; 27 | margin-bottom: 10px; 28 | } 29 | -------------------------------------------------------------------------------- /assembl/static/css/components/_radio.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/css/components/_radio.scss -------------------------------------------------------------------------------- /assembl/static/css/components/_reusableDataFields.scss: -------------------------------------------------------------------------------- 1 | 2 | 3 | .TrueFalseField { 4 | display: inline; 5 | } -------------------------------------------------------------------------------- /assembl/static/css/components/_separator.scss: -------------------------------------------------------------------------------- 1 | .separator { /* empty */ } 2 | 3 | 4 | 5 | // Default spacer 6 | // ============== 7 | .spacer { 8 | @include clearfix(); 9 | 10 | display: block; 11 | line-height: 10px; 12 | height: 10px; 13 | } 14 | 15 | // A big spacer 16 | // +++++++++++ 17 | .spacer.spacer--big { 18 | line-height: 10px * 2; 19 | height: 10px * 2; 20 | } 21 | 22 | // A huge spacer 23 | // +++++++++++ 24 | .spacer.spacer--huge { 25 | line-height: 10px * 4; 26 | height: 10px * 4; 27 | } 28 | -------------------------------------------------------------------------------- /assembl/static/css/fonts/fontello.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/css/fonts/fontello.eot -------------------------------------------------------------------------------- /assembl/static/css/fonts/fontello.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/css/fonts/fontello.ttf -------------------------------------------------------------------------------- /assembl/static/css/fonts/fontello.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/css/fonts/fontello.woff -------------------------------------------------------------------------------- /assembl/static/css/fonts/fontello.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/css/fonts/fontello.woff2 -------------------------------------------------------------------------------- /assembl/static/css/layout/_ideaList.scss: -------------------------------------------------------------------------------- 1 | .ideaList { 2 | position: relative; 3 | height: 100%; 4 | hr { 5 | border: 0; 6 | height: 1px; 7 | background: darken(desaturate($theme_navigation_bg, 100%), 7%); 8 | } 9 | } -------------------------------------------------------------------------------- /assembl/static/css/layout/_navContext.scss: -------------------------------------------------------------------------------- 1 | .nav-container{ 2 | ul { 3 | margin:0; 4 | padding:0; 5 | .label{ 6 | border-bottom:1px solid $gray1; 7 | } 8 | li{ 9 | list-style-type: none; 10 | .panel-header { 11 | border:none; 12 | } 13 | } 14 | 15 | li > a { 16 | display: block; 17 | position: relative; 18 | min-width: 110px; 19 | padding: 8px; 20 | background-color: $white; 21 | //border-top: 1px solid $gray; 22 | text-decoration: none; 23 | color: $gray1; 24 | } 25 | } 26 | 27 | 28 | } -------------------------------------------------------------------------------- /assembl/static/css/layout/_panelarea.scss: -------------------------------------------------------------------------------- 1 | $panelarea-min-width: 420px; 2 | $panelarea-min-height: 400px; 3 | 4 | // The wrapper for all .panel 5 | // ================= 6 | .panelarea { 7 | position: absolute; 8 | top: 36px; 9 | right: 0; 10 | bottom: 4px; 11 | left: 0; 12 | min-height: $panelarea-min-height; 13 | display: block; 14 | overflow: { 15 | x: auto; 16 | y: hidden; 17 | } 18 | white-space: nowrap; 19 | } 20 | 21 | .discussionlist { 22 | width: 1200px; 23 | margin: 0 auto; 24 | .bx { 25 | width: 220px; 26 | height: 150px; 27 | margin: 10px; 28 | text-align: center; 29 | box-sizing: border-box; 30 | .discussion { 31 | a { 32 | text-decoration: none; 33 | color: #000000; 34 | } 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /assembl/static/css/layout/_segmentList.scss: -------------------------------------------------------------------------------- 1 | .capture { 2 | .popin { 3 | width: 450px; 4 | } 5 | } 6 | 7 | .web-capture { 8 | font-family: $baseFontFamily; 9 | font-size: $smallFontSize; 10 | p { 11 | margin: 10px 0 10px 0; 12 | } 13 | } 14 | 15 | .panel-body { 16 | top: 0; 17 | } 18 | 19 | .clipboard { 20 | .postitlist { 21 | padding: 15px; 22 | margin-bottom: 20px; 23 | border: 1px dashed transparent; 24 | } 25 | &.is-dragover { 26 | .postitlist { 27 | border: 1px dashed #cccccc; 28 | @include border-radius(3px); 29 | min-height: 20px; //So we see the border when the list is empty 30 | } 31 | } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /assembl/static/css/lib/_ckeditor.scss: -------------------------------------------------------------------------------- 1 | .cke { 2 | box-shadow: none !important; 3 | } 4 | 5 | .cke_top { 6 | background: 0 !important; 7 | box-shadow: none !important ; 8 | border: 0 !important; 9 | } 10 | 11 | .cke_chrome { 12 | border: 0 !important; 13 | box-shadow: none !important ; 14 | } 15 | 16 | 17 | .cke_inner { 18 | padding: 0 10px !important; 19 | background: transparent !important; 20 | } 21 | 22 | .cke_toolgroup, 23 | .cke_toolgroup:hover { 24 | border: 0 !important; 25 | background: 0 !important; 26 | box-shadow: none !important; 27 | } 28 | 29 | a.cke_button_off:hover, 30 | a.cke_button_off:focus, 31 | a.cke_button_off:active, 32 | a.cke_button_disabled:hover, 33 | a.cke_button_disabled:focus, 34 | a.cke_button_disabled:active { 35 | background: #ebebeb !important; 36 | } 37 | 38 | .cke_button {} 39 | .cke_button_icon {} 40 | -------------------------------------------------------------------------------- /assembl/static/css/lib/annotator_ext.scss: -------------------------------------------------------------------------------- 1 | $theme_message_highlight_background: white; 2 | $baseFontFamily: "Open Sans", sans-serif !default; 3 | @import "bourbon"; 4 | @import "./_annotator.scss"; 5 | -------------------------------------------------------------------------------- /assembl/static/css/partials/_layout.scss: -------------------------------------------------------------------------------- 1 | // breakpoints 2 | 3 | $S: 768px; 4 | $M: 1024px; 5 | $L: 1600px; 6 | 7 | // media queries 8 | 9 | @mixin MQ($canvas) { 10 | @if $canvas == S { 11 | @media only screen and (min-width: $S) { @content; } 12 | } 13 | @else if $canvas == M { 14 | @media only screen and (min-width: $M) { @content; } 15 | } 16 | @else if $canvas == L { 17 | @media only screen and (min-width: $L) { @content; } 18 | } 19 | } 20 | 21 | // super light grid - it works with the .cd-container class inside style.scss 22 | 23 | @mixin column($percentage, $float-direction:left) { 24 | width: 100% * $percentage; 25 | float: $float-direction; 26 | } 27 | 28 | -------------------------------------------------------------------------------- /assembl/static/css/themes/.gitignore: -------------------------------------------------------------------------------- 1 | *.map 2 | *.css 3 | 4 | -------------------------------------------------------------------------------- /assembl/static/css/themes/README: -------------------------------------------------------------------------------- 1 | You can create additional themes by creating a folder with a theme.scss inside 2 | 3 | Use the default theme as an example. 4 | 5 | You can select which theme is active with default_theme in the ini file. 6 | 7 | For example: 8 | 9 | default_theme = folder_you_created -------------------------------------------------------------------------------- /assembl/static/css/themes/default/.gitignore: -------------------------------------------------------------------------------- 1 | *.css 2 | 3 | -------------------------------------------------------------------------------- /assembl/static/css/themes/default/assembl_notifications.scss: -------------------------------------------------------------------------------- 1 | @import "./_theme.scss"; 2 | @import "../../assembl_notification_styles.scss"; 3 | -------------------------------------------------------------------------------- /assembl/static/css/themes/default/assembl_web.scss: -------------------------------------------------------------------------------- 1 | @import "./_theme.scss"; 2 | @import "../../assembl_base_styles.scss"; 3 | -------------------------------------------------------------------------------- /assembl/static/css/themes/default/img/crowd.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/css/themes/default/img/crowd.jpg -------------------------------------------------------------------------------- /assembl/static/css/themes/default/img/crowd2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/css/themes/default/img/crowd2.jpg -------------------------------------------------------------------------------- /assembl/static/css/themes/default/img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/css/themes/default/img/logo.png -------------------------------------------------------------------------------- /assembl/static/css/themes/default/img/logo_assembl_only.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/css/themes/default/img/logo_assembl_only.png -------------------------------------------------------------------------------- /assembl/static/css/themes/vendor/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | 3 | !README 4 | !.gitignore 5 | -------------------------------------------------------------------------------- /assembl/static/css/themes/vendor/README: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/css/themes/vendor/README -------------------------------------------------------------------------------- /assembl/static/img/404.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/404.jpg -------------------------------------------------------------------------------- /assembl/static/img/assembl.png: -------------------------------------------------------------------------------- 1 | idealoom.png -------------------------------------------------------------------------------- /assembl/static/img/avatar/default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/avatar/default.png -------------------------------------------------------------------------------- /assembl/static/img/avatar/placeholder-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/avatar/placeholder-1.png -------------------------------------------------------------------------------- /assembl/static/img/avatar/placeholder-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/avatar/placeholder-2.png -------------------------------------------------------------------------------- /assembl/static/img/avatar/placeholder-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/avatar/placeholder-3.png -------------------------------------------------------------------------------- /assembl/static/img/avatar/placeholder-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/avatar/placeholder-4.png -------------------------------------------------------------------------------- /assembl/static/img/button/arrowbutton-right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/button/arrowbutton-right.png -------------------------------------------------------------------------------- /assembl/static/img/button/arrowbutton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/button/arrowbutton.png -------------------------------------------------------------------------------- /assembl/static/img/dragbox/dragbox-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/dragbox/dragbox-background.png -------------------------------------------------------------------------------- /assembl/static/img/favicon/favicon-120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/favicon/favicon-120.png -------------------------------------------------------------------------------- /assembl/static/img/favicon/favicon-128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/favicon/favicon-128.png -------------------------------------------------------------------------------- /assembl/static/img/favicon/favicon-144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/favicon/favicon-144.png -------------------------------------------------------------------------------- /assembl/static/img/favicon/favicon-152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/favicon/favicon-152.png -------------------------------------------------------------------------------- /assembl/static/img/favicon/favicon-167.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/favicon/favicon-167.png -------------------------------------------------------------------------------- /assembl/static/img/favicon/favicon-180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/favicon/favicon-180.png -------------------------------------------------------------------------------- /assembl/static/img/favicon/favicon-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/favicon/favicon-192.png -------------------------------------------------------------------------------- /assembl/static/img/favicon/favicon-195.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/favicon/favicon-195.png -------------------------------------------------------------------------------- /assembl/static/img/favicon/favicon-196.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/favicon/favicon-196.png -------------------------------------------------------------------------------- /assembl/static/img/favicon/favicon-228.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/favicon/favicon-228.png -------------------------------------------------------------------------------- /assembl/static/img/favicon/favicon-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/favicon/favicon-32.png -------------------------------------------------------------------------------- /assembl/static/img/favicon/favicon-57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/favicon/favicon-57.png -------------------------------------------------------------------------------- /assembl/static/img/favicon/favicon-96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/favicon/favicon-96.png -------------------------------------------------------------------------------- /assembl/static/img/favicon/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/favicon/favicon.ico -------------------------------------------------------------------------------- /assembl/static/img/icon/book.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/icon/book.png -------------------------------------------------------------------------------- /assembl/static/img/icon/check.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/icon/check.png -------------------------------------------------------------------------------- /assembl/static/img/icon/cog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/icon/cog.png -------------------------------------------------------------------------------- /assembl/static/img/icon/comment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/icon/comment.png -------------------------------------------------------------------------------- /assembl/static/img/icon/copyfolder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/icon/copyfolder.png -------------------------------------------------------------------------------- /assembl/static/img/icon/down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/icon/down.png -------------------------------------------------------------------------------- /assembl/static/img/icon/dropbox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/icon/dropbox.png -------------------------------------------------------------------------------- /assembl/static/img/icon/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/icon/favicon.ico -------------------------------------------------------------------------------- /assembl/static/img/icon/file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/icon/file.png -------------------------------------------------------------------------------- /assembl/static/img/icon/grave.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/icon/grave.png -------------------------------------------------------------------------------- /assembl/static/img/icon/heart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/icon/heart.png -------------------------------------------------------------------------------- /assembl/static/img/icon/infinite-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/icon/infinite-1.png -------------------------------------------------------------------------------- /assembl/static/img/icon/pencil.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/icon/pencil.png -------------------------------------------------------------------------------- /assembl/static/img/icon/power.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/icon/power.png -------------------------------------------------------------------------------- /assembl/static/img/icon/question.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/icon/question.png -------------------------------------------------------------------------------- /assembl/static/img/icon/rearrangeemail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/icon/rearrangeemail.png -------------------------------------------------------------------------------- /assembl/static/img/icon/reorder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/icon/reorder.png -------------------------------------------------------------------------------- /assembl/static/img/icon/reply.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/icon/reply.png -------------------------------------------------------------------------------- /assembl/static/img/icon/return.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/icon/return.png -------------------------------------------------------------------------------- /assembl/static/img/icon/search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/icon/search.png -------------------------------------------------------------------------------- /assembl/static/img/icon/settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/icon/settings.png -------------------------------------------------------------------------------- /assembl/static/img/icon/tag_new_angle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/icon/tag_new_angle.png -------------------------------------------------------------------------------- /assembl/static/img/icon/tag_new_horizontal_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/icon/tag_new_horizontal_right.png -------------------------------------------------------------------------------- /assembl/static/img/icon/types/email.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/icon/types/email.png -------------------------------------------------------------------------------- /assembl/static/img/icon/types/webpage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/icon/types/webpage.png -------------------------------------------------------------------------------- /assembl/static/img/icon/uparrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/icon/uparrow.png -------------------------------------------------------------------------------- /assembl/static/img/icon/user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/icon/user.png -------------------------------------------------------------------------------- /assembl/static/img/idealist/idealist-arrow-closed-l1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/idealist/idealist-arrow-closed-l1.png -------------------------------------------------------------------------------- /assembl/static/img/idealist/idealist-arrow-closed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/idealist/idealist-arrow-closed.png -------------------------------------------------------------------------------- /assembl/static/img/idealist/idealist-arrow-open-l1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/idealist/idealist-arrow-open-l1.png -------------------------------------------------------------------------------- /assembl/static/img/idealist/idealist-arrow-open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/idealist/idealist-arrow-open.png -------------------------------------------------------------------------------- /assembl/static/img/idealist/idealist-arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/idealist/idealist-arrow.png -------------------------------------------------------------------------------- /assembl/static/img/idealist/idealist-bar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/idealist/idealist-bar.png -------------------------------------------------------------------------------- /assembl/static/img/idealist/idealist-link-last-opaque.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/idealist/idealist-link-last-opaque.png -------------------------------------------------------------------------------- /assembl/static/img/idealist/idealist-link-last.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/idealist/idealist-link-last.png -------------------------------------------------------------------------------- /assembl/static/img/idealist/idealist-link-no-children.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/idealist/idealist-link-no-children.png -------------------------------------------------------------------------------- /assembl/static/img/idealist/idealist-link-opaque.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/idealist/idealist-link-opaque.png -------------------------------------------------------------------------------- /assembl/static/img/idealist/idealist-link-root.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /assembl/static/img/idealist/idealist-link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/idealist/idealist-link.png -------------------------------------------------------------------------------- /assembl/static/img/idealist/idealist-noarrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/idealist/idealist-noarrow.png -------------------------------------------------------------------------------- /assembl/static/img/idealist/sources/idealist-arrow-closed-l1.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/idealist/sources/idealist-arrow-closed-l1.xcf -------------------------------------------------------------------------------- /assembl/static/img/idealist/sources/idealist-arrow-closed.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/idealist/sources/idealist-arrow-closed.xcf -------------------------------------------------------------------------------- /assembl/static/img/idealist/sources/idealist-arrow-open-l1.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/idealist/sources/idealist-arrow-open-l1.xcf -------------------------------------------------------------------------------- /assembl/static/img/idealist/sources/idealist-arrow-open.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/idealist/sources/idealist-arrow-open.xcf -------------------------------------------------------------------------------- /assembl/static/img/idealist/sources/idealist-arrow.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/idealist/sources/idealist-arrow.xcf -------------------------------------------------------------------------------- /assembl/static/img/idealist/sources/idealist-link-last.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/idealist/sources/idealist-link-last.xcf -------------------------------------------------------------------------------- /assembl/static/img/idealist/sources/idealist-link-no-children.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/idealist/sources/idealist-link-no-children.xcf -------------------------------------------------------------------------------- /assembl/static/img/idealist/sources/idealist-link.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/idealist/sources/idealist-link.xcf -------------------------------------------------------------------------------- /assembl/static/img/idealoom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/idealoom.png -------------------------------------------------------------------------------- /assembl/static/img/loginbox/assembl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/loginbox/assembl.png -------------------------------------------------------------------------------- /assembl/static/img/loginbox/facebook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/loginbox/facebook.png -------------------------------------------------------------------------------- /assembl/static/img/loginbox/google.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/loginbox/google.png -------------------------------------------------------------------------------- /assembl/static/img/loginbox/google_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/loginbox/google_icon.png -------------------------------------------------------------------------------- /assembl/static/img/loginbox/openid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/loginbox/openid.png -------------------------------------------------------------------------------- /assembl/static/img/loginbox/twitter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/loginbox/twitter.png -------------------------------------------------------------------------------- /assembl/static/img/loginbox/yahoo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/loginbox/yahoo.png -------------------------------------------------------------------------------- /assembl/static/img/messagelist/messagelist-arrow-closed-l1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/messagelist/messagelist-arrow-closed-l1.png -------------------------------------------------------------------------------- /assembl/static/img/messagelist/messagelist-arrow-closed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/messagelist/messagelist-arrow-closed.png -------------------------------------------------------------------------------- /assembl/static/img/messagelist/messagelist-arrow-open-l1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/messagelist/messagelist-arrow-open-l1.png -------------------------------------------------------------------------------- /assembl/static/img/messagelist/messagelist-arrow-open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/messagelist/messagelist-arrow-open.png -------------------------------------------------------------------------------- /assembl/static/img/messagelist/messagelist-arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/messagelist/messagelist-arrow.png -------------------------------------------------------------------------------- /assembl/static/img/messagelist/messagelist-bar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/messagelist/messagelist-bar.png -------------------------------------------------------------------------------- /assembl/static/img/messagelist/messagelist-link-last.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/messagelist/messagelist-link-last.png -------------------------------------------------------------------------------- /assembl/static/img/messagelist/messagelist-link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/messagelist/messagelist-link.png -------------------------------------------------------------------------------- /assembl/static/img/panel/disc.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/panel/disc.gif -------------------------------------------------------------------------------- /assembl/static/img/panel/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/panel/loading.gif -------------------------------------------------------------------------------- /assembl/static/img/searchbox/searchbox-field-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/searchbox/searchbox-field-background.png -------------------------------------------------------------------------------- /assembl/static/img/text/textbubble.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/img/text/textbubble.png -------------------------------------------------------------------------------- /assembl/static/js/app/models/userCustomData.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Custom key-value storage bound to a user and a namespace 3 | * @module app.models.userCustomData 4 | */ 5 | 6 | import Backbone from "backbone"; 7 | 8 | import Ctx from "../common/context.js"; 9 | 10 | // We do not use Base.Model.extend(), because we want to keep Backbone's default behaviour with model urls 11 | /** 12 | * User custom data model 13 | * Frontend model for :py:class:`assembl.models.user_key_values.DiscussionPerUserNamespacedKeyValue` 14 | * @class app.models.userCustomData.UserCustomDataModel 15 | * @extends Backbone.Model 16 | */ 17 | class UserCustomDataModel extends Backbone.Model.extend({ 18 | urlRoot: Ctx.getApiV2DiscussionUrl("user_ns_kv"), 19 | }) {} 20 | 21 | export default { 22 | Model: UserCustomDataModel, 23 | }; 24 | -------------------------------------------------------------------------------- /assembl/static/js/app/tests.js: -------------------------------------------------------------------------------- 1 | /** 2 | * List of the unit tests executed. 3 | * @module app.tests 4 | */ 5 | import mocha from "mocha"; 6 | import { setRenderer } from "backbone.marionette"; 7 | import TemplateCache from "marionette.templatecache"; 8 | setRenderer(TemplateCache.render); 9 | 10 | window.mocha = mocha; 11 | mocha.setup("bdd"); 12 | 13 | // use require instead of import so it comes after setup 14 | require("./tests/routes.spec.js"); 15 | require("./tests/context.spec.js"); 16 | require("./tests/models.spec.js"); 17 | require("./tests/utils.spec.js"); 18 | require("./tests/objects.spec.js"); 19 | require("./tests/langstring.spec.js"); 20 | require("./tests/views.spec.js"); 21 | 22 | mocha.run(); 23 | -------------------------------------------------------------------------------- /assembl/static/js/app/tests/fixtures/langstring.json: -------------------------------------------------------------------------------- 1 | { 2 | "@id": "local:LangString/1", 3 | "@type": "LangString", 4 | "@view": "default", 5 | "entries": [] 6 | } 7 | -------------------------------------------------------------------------------- /assembl/static/js/app/tests/fixtures/languageLocales.json: -------------------------------------------------------------------------------- 1 | { 2 | "en": "en", 3 | "fr": "fr", 4 | "it": "it", 5 | "de": "de", 6 | "en_from_fr": "en-x-mtfrom-fr", 7 | "fr_from_en": "fr-x-mtfrom-en", 8 | "en_from_it": "en-x-mtfrom-it", 9 | "it_from_en": "it-x-mtfrom-en", 10 | "fr_from_it": "fr-x-mtfrom-it", 11 | "it_from_fr": "it-x-mtfrom-fr", 12 | "en_from_de": "en-x-mtfrom-de", 13 | "de_from_en": "de-x-mtfrom-en", 14 | "de_from_fr": "de-x-mtfrom-fr", 15 | "fr_from_de": "fr-x-mtfrom-de", 16 | "it_from_de": "it-x-mtfrom-de", 17 | "de_from_it": "de-x-mtfrom-it" 18 | } 19 | -------------------------------------------------------------------------------- /assembl/static/js/app/tests/utils.spec.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | * @module app.tests.utils.spec 4 | */ 5 | 6 | import $ from "jquery"; 7 | import PanelSpecTypes from "../utils/panelSpecTypes.js"; 8 | import { expect } from "chai"; 9 | 10 | describe("Utils module", function () { 11 | describe("panelSpecType", function () { 12 | it("getByRawId should throw error if PanelSpecTypes id undefined", function () { 13 | var panel = function () { 14 | return PanelSpecTypes.getByRawId("toto"); 15 | }; 16 | 17 | expect(panel).to.throw(); 18 | }); 19 | }); 20 | 21 | describe("socket", function () { 22 | // testing socket event etc... 23 | 24 | it("socket should work perfect", function () { 25 | expect(true).to.be.true; 26 | }); 27 | }); 28 | }); 29 | -------------------------------------------------------------------------------- /assembl/static/js/app/utils/i18n.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | * @module app.utils.i18n 4 | */ 5 | /** 6 | * Wrapper for Jed 7 | * 8 | * */ 9 | import Jed from "jed"; 10 | /* json is a global set in javascript.jinja2 */ 11 | 12 | export default new Jed(json); 13 | -------------------------------------------------------------------------------- /assembl/static/js/app/utils/roles.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | * @module app.utils.roles 4 | */ 5 | 6 | var Roles = { 7 | /* System roles */ 8 | EVERYONE: "system.Everyone", 9 | AUTHENTICATED: "system.Authenticated", //Never received by frontend as current user role 10 | PARTICIPANT: "r:participant", //Yes, this is a system role as well now that we can escalate to it using self-register 11 | // The following Roles are NOT system roles. No code should depend on them 12 | /*CATCHER: 'r:catcher', 13 | MODERATOR: 'r:moderator', 14 | ADMINISTRATOR: 'r:administrator', 15 | SYSADMIN: 'r:sysadmin'*/ 16 | }; 17 | 18 | export default Roles; 19 | -------------------------------------------------------------------------------- /assembl/static/js/app/views/authorization.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | * @module app.views.authorization 4 | */ 5 | 6 | import Ctx from "../common/context.js"; 7 | import { View } from "backbone.marionette"; 8 | 9 | class authorization extends View.extend({ 10 | template: "#tmpl-authorization", 11 | className: "authorization", 12 | }) { 13 | initialize(options) { 14 | this.error = options.error; 15 | this.message = options.message; 16 | } 17 | 18 | serializeData() { 19 | return { 20 | error: this.error, 21 | message: this.message, 22 | }; 23 | } 24 | 25 | templateContext() { 26 | return { 27 | urlLogIn: function () { 28 | return "/login?next=/" + Ctx.getDiscussionSlug() + "/"; 29 | }, 30 | }; 31 | } 32 | } 33 | 34 | export default authorization; 35 | -------------------------------------------------------------------------------- /assembl/static/js/app/views/loader.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | * @module app.views.loader 4 | */ 5 | 6 | import _ from "underscore"; 7 | import IdeaLoom from "../app.js"; 8 | import Ctx from "../common/context.js"; 9 | import { View } from "backbone.marionette"; 10 | 11 | class LoaderView extends View.extend({ 12 | template: "#tmpl-loader", 13 | }) { 14 | onRender() { 15 | // Get rid of that pesky wrapping-div. 16 | // Assumes 1 child element present in template. 17 | this.$el = this.$el.children(); 18 | 19 | // Unwrap the element to prevent infinitely 20 | // nesting elements during re-render. 21 | this.$el.unwrap(); 22 | this.setElement(this.$el); 23 | } 24 | } 25 | 26 | export default LoaderView; 27 | -------------------------------------------------------------------------------- /assembl/static/js/app/views/messageDeletedByAdmin.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | * @module app.views.message 4 | */ 5 | 6 | import i18n from "../utils/i18n.js"; 7 | 8 | import MessageDeletedByUserView from "./messageDeletedByUser.js"; 9 | 10 | /** 11 | * @class app.views.message.MessageDeletedByAdminView 12 | */ 13 | class MessageDeletedByAdminView extends MessageDeletedByUserView.extend({ 14 | body: i18n.gettext("This message has been deleted by an administrator."), 15 | }) {} 16 | 17 | export default MessageDeletedByAdminView; 18 | -------------------------------------------------------------------------------- /assembl/static/js/app/views/navigation/notification.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | * @module app.views.navigation.notification 4 | */ 5 | 6 | import { View } from "backbone.marionette"; 7 | 8 | class sidebarNotification extends View.extend({ 9 | template: "#tmpl-sidebar-notification", 10 | }) {} 11 | 12 | export default sidebarNotification; 13 | -------------------------------------------------------------------------------- /assembl/static/js/app/views/visitors/visitor.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | * @module app.views.visitors.visitor 4 | */ 5 | 6 | var Visitor = function () {}; 7 | 8 | Visitor.prototype.visit = function (object, ancestry) { 9 | return true; 10 | }; 11 | 12 | /** 13 | * @param object: The object travested back up. undefined if we are at the virtual root. 14 | * @param children_data [] of the result of post_visit for each children. If undefined, it means nothing was visited 15 | * 16 | */ 17 | Visitor.prototype.post_visit = function (object, children_data) { 18 | return undefined; 19 | }; 20 | 21 | export default Visitor; 22 | -------------------------------------------------------------------------------- /assembl/static/js/lib/README.txt: -------------------------------------------------------------------------------- 1 | This folder is meant to libraries that are not in bower or node, or that we 2 | created ourselves but didn't yet spinoff. 3 | 4 | Please, before you add a library, check to see if it isn't already available 5 | from note or bower 6 | -------------------------------------------------------------------------------- /assembl/static/js/lib/jquery-highlight/jquery.highlight.js: -------------------------------------------------------------------------------- 1 | (function($){ 2 | 3 | var CLASS = 'is-highlighted', 4 | TIME = 1000; 5 | 6 | $.fn.highlight = function(){ 7 | var that = this; 8 | 9 | that.addClass(CLASS); 10 | 11 | setTimeout(function(){ 12 | that.removeClass(CLASS); 13 | }, TIME); 14 | 15 | return this; 16 | }; 17 | 18 | })(jQuery); -------------------------------------------------------------------------------- /assembl/static/widget/card/.bowerrc: -------------------------------------------------------------------------------- 1 | { 2 | "directory": "bower_components" 3 | } 4 | -------------------------------------------------------------------------------- /assembl/static/widget/card/.gitignore: -------------------------------------------------------------------------------- 1 | app/css/ 2 | bower_components/ 3 | node_modules/ 4 | -------------------------------------------------------------------------------- /assembl/static/widget/card/app/font/fontello.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/widget/card/app/font/fontello.eot -------------------------------------------------------------------------------- /assembl/static/widget/card/app/font/fontello.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/widget/card/app/font/fontello.ttf -------------------------------------------------------------------------------- /assembl/static/widget/card/app/font/fontello.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/widget/card/app/font/fontello.woff -------------------------------------------------------------------------------- /assembl/static/widget/card/app/img/ajax-loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/widget/card/app/img/ajax-loader.gif -------------------------------------------------------------------------------- /assembl/static/widget/card/app/img/avatar-m-40x40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/widget/card/app/img/avatar-m-40x40.png -------------------------------------------------------------------------------- /assembl/static/widget/card/app/img/avatar-w-40x40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/widget/card/app/img/avatar-w-40x40.png -------------------------------------------------------------------------------- /assembl/static/widget/card/app/img/light-bulb-7-64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/widget/card/app/img/light-bulb-7-64x64.png -------------------------------------------------------------------------------- /assembl/static/widget/card/app/img/slot-machine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/widget/card/app/img/slot-machine.png -------------------------------------------------------------------------------- /assembl/static/widget/card/app/img/university2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/widget/card/app/img/university2.png -------------------------------------------------------------------------------- /assembl/static/widget/card/app/partials/card.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | -------------------------------------------------------------------------------- /assembl/static/widget/card/app/scss/global.scss: -------------------------------------------------------------------------------- 1 | @import "card"; 2 | @import "widget"; 3 | 4 | 5 | -------------------------------------------------------------------------------- /assembl/static/widget/card/config/local.json: -------------------------------------------------------------------------------- 1 | { 2 | "persmission": ["read", "write"], 3 | "youtube_api_key": "AIzaSyC8lCVIHWdtBwnTtKzKl4dy8k5C_raqyK4" 4 | } -------------------------------------------------------------------------------- /assembl/static/widget/card/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "creativity", 3 | "version": "0.0.1", 4 | "description": "widget of creativity by I4P", 5 | "main": "index.js", 6 | "directories": { 7 | "test": "test" 8 | }, 9 | "scripts": { 10 | "test": "echo \"Error: no test specified\" && exit 1" 11 | }, 12 | "author": "hellsingblack@gmail.com", 13 | "license": "MIT", 14 | "dependencies": { 15 | }, 16 | "devDependencies": { 17 | "karma-jasmine": "~0.3.7", 18 | "jasmine-core": "2.4.1", 19 | "karma-chrome-launcher": "~0.2.2" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /assembl/static/widget/creativity/.bowerrc: -------------------------------------------------------------------------------- 1 | { 2 | "directory": "bower_components" 3 | } 4 | -------------------------------------------------------------------------------- /assembl/static/widget/creativity/app/css/admin.css: -------------------------------------------------------------------------------- 1 | .item { 2 | border: 1px solid #000; 3 | margin: 6px 0 6px 10px; 4 | } 5 | 6 | .item .item-title { 7 | background: #eee; 8 | padding: 5px; 9 | border-bottom: 1px solid #000; 10 | } 11 | 12 | .item .item-content { 13 | padding: 4px 10px; 14 | } 15 | 16 | #step_criteria_groups_and_appearance span.with-title { 17 | border-bottom: 1px dotted #666; 18 | } 19 | 20 | ul li { 21 | margin-bottom: 10px; 22 | } -------------------------------------------------------------------------------- /assembl/static/widget/creativity/app/css/global.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 10px; 3 | font: 10px sans-serif; 4 | } -------------------------------------------------------------------------------- /assembl/static/widget/creativity/app/factory.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | creativityApp.factory('utils', function($translate) { 4 | 5 | var fn = {}; 6 | 7 | fn.changeLanguage = function(langKey) { 8 | $translate.use(langKey); 9 | } 10 | 11 | return fn; 12 | }); 13 | -------------------------------------------------------------------------------- /assembl/static/widget/creativity/app/partials/index.html: -------------------------------------------------------------------------------- 1 | 5 | 6 |
7 |
8 |

{{'creativityModulesListTitle' | translate}}

9 | 10 |
11 | {{ value.name | translate }} 12 |
13 |
14 |
15 |
-------------------------------------------------------------------------------- /assembl/static/widget/creativity/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "catalyst-creativity-widget", 3 | "version": "0.0.1", 4 | "homepage": "https://github.com/assembl/assembl", 5 | "authors": [ 6 | "Quentin Grimaud " 7 | ], 8 | "description": "Shows the user a selection menu of available creativity widgets. Features a widget CRUD for the admin", 9 | "license": "MIT", 10 | "private": true, 11 | "dependencies": 12 | { 13 | "angularjs": "~1.3", 14 | "bootstrap": "~3.1.1", 15 | "angular-route": "~1.3", 16 | "angular-resource": "~1.3", 17 | "angular-sanitize": "~1.3", 18 | "jquery": "~2.1.0", 19 | "angular-translate": "~2", 20 | "angular-translate-loader-static-files": "~2", 21 | "underscore": "~1.6.0" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /assembl/static/widget/session/.bowerrc: -------------------------------------------------------------------------------- 1 | { 2 | "directory": "./bower_components" 3 | } -------------------------------------------------------------------------------- /assembl/static/widget/session/.gitignore: -------------------------------------------------------------------------------- 1 | css/ 2 | bower_components/ 3 | -------------------------------------------------------------------------------- /assembl/static/widget/session/app/shared/directives/rate/rate.html: -------------------------------------------------------------------------------- 1 | {{'comments' | translate}} 2 |
    3 |
  • 4 | 12 |
  • 13 |
-------------------------------------------------------------------------------- /assembl/static/widget/session/app/shared/directives/vote/vote.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /assembl/static/widget/session/app/shared/services/IdeaService.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Resolve configuration before access to a controller 3 | * */ 4 | SessionApp.factory('IdeaService', ['$resource', function($resource) { 5 | 6 | return $resource('/data/GenericIdeaNode/:id/?view=creativity_widget', null, { 7 | 8 | 'get': { 9 | method: 'GET', params: { id: '@id' }, 10 | transformResponse: function(idea) { 11 | idea = angular.fromJson(idea); 12 | return idea; 13 | } 14 | } 15 | 16 | }); 17 | }]); 18 | -------------------------------------------------------------------------------- /assembl/static/widget/session/app/shared/services/UserService.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Resolve configuration before access to a controller 3 | * */ 4 | SessionApp.factory('UserService', ['$resource', function($resource) { 5 | return $resource('/data/Conversation/:id/all_users/current', null, { 6 | 7 | 'get': { 8 | method: 'GET', params: { id: '@id' }, 9 | transformResponse: function(widget) { 10 | widget = angular.fromJson(widget); 11 | return widget; 12 | } 13 | }, 14 | 15 | 'getAuthorize': { 16 | method: 'GET', params: { id: '@id' }, 17 | transformResponse: function(widget) { 18 | widget = angular.fromJson(widget); 19 | return widget.permissions; 20 | } 21 | } 22 | 23 | }); 24 | }]); 25 | -------------------------------------------------------------------------------- /assembl/static/widget/session/app/shared/topMenu/TopMenuModule.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var TopMenuModule = angular.module('TopMenuModule', []); 4 | -------------------------------------------------------------------------------- /assembl/static/widget/session/app/shared/topMenu/TopMenuView.html: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /assembl/static/widget/session/img/slot-machine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/widget/session/img/slot-machine.png -------------------------------------------------------------------------------- /assembl/static/widget/session/img/university2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/widget/session/img/university2.png -------------------------------------------------------------------------------- /assembl/static/widget/session/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "creativity", 3 | "version": "0.0.1", 4 | "description": "widget of creativity by I4P", 5 | "main": "index.js", 6 | "directories": { 7 | "test": "test" 8 | }, 9 | "scripts": { 10 | "test": "echo \"Error: no test specified\" && exit 1" 11 | }, 12 | "author": "hellsingblack@gmail.com", 13 | "license": "MIT", 14 | "dependencies": { 15 | }, 16 | "devDependencies": { 17 | "karma-jasmine": "~0.3.7", 18 | "jasmine-core": "2.4.1", 19 | "karma-chrome-launcher": "~0.2.2" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /assembl/static/widget/session/scss/admin.scss: -------------------------------------------------------------------------------- 1 | .session-admin { 2 | border-color: transparent; 3 | box-shadow: none; 4 | 5 | .panel-admin{ 6 | width: 80%; 7 | margin: 0 auto; 8 | 9 | .step_select_criteria{ 10 | .success-steps-3 i{ 11 | font-size: 100px; 12 | } 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /assembl/static/widget/session/scss/custom.scss: -------------------------------------------------------------------------------- 1 | .btn-purple{ 2 | color: #fff; 3 | background-color: #961ff4; 4 | border-color: transparent; 5 | &:hover{ 6 | color: #fff; 7 | background-color: #961ff4; 8 | border-color: transparent; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /assembl/static/widget/session/scss/edit.scss: -------------------------------------------------------------------------------- 1 | .edit-container{ 2 | #settings-edit { 3 | width: 60%; 4 | margin: 2em auto; 5 | } 6 | section { 7 | .panel-form { 8 | margin-bottom: 15px; 9 | .json_parse { 10 | resize: vertical; 11 | width: 100%; 12 | height: 30em; 13 | } 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /assembl/static/widget/session/scss/global.scss: -------------------------------------------------------------------------------- 1 | @import "session"; 2 | @import "rate"; 3 | @import "edit"; 4 | @import "admin"; 5 | @import "topMenu"; 6 | @import "custom"; 7 | 8 | nav{ 9 | display: block; 10 | margin-bottom: 0; 11 | border-bottom: 1px solid #dddddd; 12 | } 13 | .nav-tabs { 14 | border-bottom: none; 15 | width: 25%; 16 | margin: 0 auto; 17 | } 18 | 19 | ::-webkit-scrollbar { 20 | width: .5em; 21 | height: .5em; 22 | } 23 | 24 | ::-webkit-scrollbar-thumb { 25 | background: slategray; 26 | } 27 | 28 | ::-webkit-scrollbar-track { 29 | background: transparent; 30 | } 31 | -------------------------------------------------------------------------------- /assembl/static/widget/session/scss/topMenu.scss: -------------------------------------------------------------------------------- 1 | .nav>li>a:focus, .nav>li>a:hover { 2 | background-color: transparent; 3 | } 4 | 5 | .custom-header{ 6 | background-color: #ffffff; 7 | border-radius: 0; 8 | border-color: transparent; 9 | box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.5); 10 | margin-bottom: 1px; 11 | .custom-header-menu{ 12 | min-height: 50px; 13 | &.active-menu{ 14 | border-bottom: 3px solid #b36fe0; 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /assembl/static/widget/share/.bowerrc: -------------------------------------------------------------------------------- 1 | { 2 | "directory": "bower_components" 3 | } 4 | -------------------------------------------------------------------------------- /assembl/static/widget/share/.gitignore: -------------------------------------------------------------------------------- 1 | bower_components/ 2 | -------------------------------------------------------------------------------- /assembl/static/widget/share/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "assembl-share-widget", 3 | "version": "0.0.1", 4 | "homepage": "https://github.com/assembl/assembl", 5 | "authors": [ 6 | "Quentin Grimaud " 7 | ], 8 | "description": "Widget which enables sharing an URL", 9 | "license": "MIT", 10 | "private": true, 11 | "dependencies": { 12 | "expando": "https://github.com/expando/expando.github.com.git#0e8c3980c1" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /assembl/static/widget/video/.bowerrc: -------------------------------------------------------------------------------- 1 | { 2 | "directory": "bower_components" 3 | } 4 | -------------------------------------------------------------------------------- /assembl/static/widget/video/.gitignore: -------------------------------------------------------------------------------- 1 | app/css/ 2 | bower_components/ 3 | -------------------------------------------------------------------------------- /assembl/static/widget/video/app/font/fontello.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/widget/video/app/font/fontello.eot -------------------------------------------------------------------------------- /assembl/static/widget/video/app/font/fontello.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/widget/video/app/font/fontello.ttf -------------------------------------------------------------------------------- /assembl/static/widget/video/app/font/fontello.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/widget/video/app/font/fontello.woff -------------------------------------------------------------------------------- /assembl/static/widget/video/app/img/ajax-loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/widget/video/app/img/ajax-loader.gif -------------------------------------------------------------------------------- /assembl/static/widget/video/app/img/avatar-m-40x40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/widget/video/app/img/avatar-m-40x40.png -------------------------------------------------------------------------------- /assembl/static/widget/video/app/img/avatar-w-40x40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/widget/video/app/img/avatar-w-40x40.png -------------------------------------------------------------------------------- /assembl/static/widget/video/app/img/light-bulb-7-64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/widget/video/app/img/light-bulb-7-64x64.png -------------------------------------------------------------------------------- /assembl/static/widget/video/app/img/slot-machine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/widget/video/app/img/slot-machine.png -------------------------------------------------------------------------------- /assembl/static/widget/video/app/img/university2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/widget/video/app/img/university2.png -------------------------------------------------------------------------------- /assembl/static/widget/video/app/scss/global.scss: -------------------------------------------------------------------------------- 1 | @import "video"; 2 | @import "widget"; 3 | 4 | 5 | -------------------------------------------------------------------------------- /assembl/static/widget/video/config/local.json: -------------------------------------------------------------------------------- 1 | { 2 | "persmission": ["read", "write"], 3 | "youtube_api_key": "AIzaSyC8lCVIHWdtBwnTtKzKl4dy8k5C_raqyK4" 4 | } -------------------------------------------------------------------------------- /assembl/static/widget/video/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "creativity", 3 | "version": "0.0.1", 4 | "description": "widget of creativity by I4P", 5 | "main": "index.js", 6 | "directories": { 7 | "test": "test" 8 | }, 9 | "scripts": { 10 | "test": "echo \"Error: no test specified\" && exit 1" 11 | }, 12 | "author": "hellsingblack@gmail.com", 13 | "license": "MIT", 14 | "dependencies": { 15 | }, 16 | "devDependencies": { 17 | "karma-jasmine": "~0.3.7", 18 | "jasmine-core": "2.4.1", 19 | "karma-chrome-launcher": "~0.2.2" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /assembl/static/widget/vote/.bowerrc: -------------------------------------------------------------------------------- 1 | { 2 | "directory": "./bower_components" 3 | } -------------------------------------------------------------------------------- /assembl/static/widget/vote/.gitignore: -------------------------------------------------------------------------------- 1 | bower_components/ 2 | -------------------------------------------------------------------------------- /assembl/static/widget/vote/2_axes_radio_buttons.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 |
7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 |

25 | 26 | 27 | 28 | 29 | 30 |
31 | 32 | 33 | -------------------------------------------------------------------------------- /assembl/static/widget/vote/app/css/admin.css: -------------------------------------------------------------------------------- 1 | .item { 2 | border: 1px solid #000; 3 | margin: 6px 0 6px 10px; 4 | } 5 | 6 | .item .item-title { 7 | background: #eee; 8 | padding: 5px; 9 | border-bottom: 1px solid #000; 10 | } 11 | 12 | .item .item-content { 13 | padding: 4px 10px; 14 | } 15 | 16 | #step_criteria_groups_and_appearance span.with-title { 17 | border-bottom: 1px dotted #666; 18 | } 19 | 20 | #admin li { 21 | margin-bottom: 5px; 22 | } 23 | 24 | input.wide { 25 | width: 500px; 26 | } 27 | 28 | label.light { 29 | font-weight: initial; 30 | } -------------------------------------------------------------------------------- /assembl/static/widget/vote/app/factory.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | voteApp.factory('utils', function($translate) { 4 | 5 | var fn = {}; 6 | 7 | fn.changeLanguage = function(langKey) { 8 | $translate.use(langKey); 9 | } 10 | 11 | return fn; 12 | }); 13 | -------------------------------------------------------------------------------- /assembl/static/widget/vote/app/images/question_mark_icon_with_alpha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/static/widget/vote/app/images/question_mark_icon_with_alpha.png -------------------------------------------------------------------------------- /assembl/static/widget/vote/app/partials/voted.html: -------------------------------------------------------------------------------- 1 |
2 |

3 | Your vote has been successfully submitted! 4 |

5 |
-------------------------------------------------------------------------------- /assembl/static/widget/vote/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "catalyst-vote-widget", 3 | "version": "0.0.1", 4 | "homepage": "https://github.com/assembl/assembl", 5 | "authors": [ 6 | "Quentin Grimaud " 7 | ], 8 | "description": "Widget which enables voting in Assembl", 9 | "license": "MIT", 10 | "private": true, 11 | "dependencies": { 12 | "bootstrap": "~3.3.5", 13 | "jquery": "~2.1.0", 14 | "underscore": "~1.8.3", 15 | "d3": "~3.5.5", 16 | "d3-tip": "~0.6.7", 17 | "messageformat": "~0.1.8", 18 | "angularjs": "~1.3", 19 | "angular-strap": "~2.2.4", 20 | "angular-route": "~1.3", 21 | "angular-resource": "~1.3", 22 | "angular-sanitize": "~1.3", 23 | "angular-translate-loader-static-files": "~2", 24 | "angular-translate": "~2" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /assembl/static/widget/vote/test/config_test.json: -------------------------------------------------------------------------------- 1 | { 2 | "useraname":"test 1", 3 | "persmission":["read","write"], 4 | "url":{ 5 | "synthesis":"http://app.com/test/rest/synthesis", 6 | "message":"http://app.com/test/rest/message", 7 | "comment":"http://app.com/test/rest/comment" 8 | } 9 | } -------------------------------------------------------------------------------- /assembl/tasks/imap.py: -------------------------------------------------------------------------------- 1 | """A celery process that reads messages from an IMAP source.""" 2 | from . import celery 3 | 4 | 5 | @celery.task(ignore_result=True, shared=False) 6 | def import_mails(mbox_id, only_new=True): 7 | from ..models import IMAPMailbox 8 | # in case of previous issues 9 | IMAPMailbox.default_db.rollback() 10 | mailbox = IMAPMailbox.get(mbox_id) 11 | assert mailbox is not None 12 | IMAPMailbox.do_import_content(mailbox, only_new) 13 | -------------------------------------------------------------------------------- /assembl/templates/admin/discussion_edit.jinja2: -------------------------------------------------------------------------------- 1 | {% extends 'base.jinja2' %} 2 | 3 | {% block content %} 4 | 5 | 6 |
7 | 8 | {% endblock %} 9 | -------------------------------------------------------------------------------- /assembl/templates/analytics_common.jinja2: -------------------------------------------------------------------------------- 1 | 2 | {% if web_analytics.get('enabled', False) %} 3 | 4 | {% if "piwik" in web_analytics %} 5 | {{ web_analytics['piwik']['script']|safe }} 6 | 11 | {% endif %} 12 | {% endif %} 13 | 14 | {% block analytics_extra_scripts %} 15 | {% endblock %} 16 | -------------------------------------------------------------------------------- /assembl/templates/analytics_nonBackboned.jinja2: -------------------------------------------------------------------------------- 1 | {% extends 'analytics_common.jinja2' %} 2 | 3 | {% block analytics_extra_scripts %} 4 | {% if web_analytics.get('enabled', False) %} 5 | 6 | 7 | 8 | 9 | {% endif %} 10 | {% endblock %} 11 | 12 | -------------------------------------------------------------------------------- /assembl/templates/cannot_read_discussion.jinja2: -------------------------------------------------------------------------------- 1 | {% extends 'base.jinja2' %} 2 | 3 | {% block content %} 4 |

401 {{ gettext("You are not authorized to read this discussion.") }}

5 |

{{ gettext('You may logout and login as another user with those permissions.') |format(logout=get_route('logout'))|safe}}

6 | {% endblock %} 7 | -------------------------------------------------------------------------------- /assembl/templates/confirm.jinja2: -------------------------------------------------------------------------------- 1 | {% extends 'base.jinja2' %} 2 | 3 | {% block content %} 4 | 9 | 10 |
11 |
12 |

{{title}}

13 |
14 | 15 |
16 | {% if error %} 17 |
{{error}}
18 | {% endif %} 19 | 20 |
21 | 22 | 23 | 24 |
25 |
26 |
27 | {% endblock %} 28 | -------------------------------------------------------------------------------- /assembl/templates/idea_nakakoji.jinja2: -------------------------------------------------------------------------------- 1 | {% if idea %} 2 |
3 | {{idea.long_title or idea.short_title}} 🔗 4 | {% if idea.definition %} 5 |
{{idea.definition|safe}}
6 | {% endif %} 7 |
8 | {% endif %} 9 |
10 | {% for child in children %} 11 | {{child|safe}} 12 | {% endfor %} 13 |
14 | -------------------------------------------------------------------------------- /assembl/templates/includes/404.jinja2: -------------------------------------------------------------------------------- 1 |
2 | 3 |

404

4 |
5 | -------------------------------------------------------------------------------- /assembl/templates/styleguide/components/alert.jinja2: -------------------------------------------------------------------------------- 1 |
2 |

You must be logged in to comment. Click here to login.

3 |
-------------------------------------------------------------------------------- /assembl/templates/styleguide/components/badges.jinja2: -------------------------------------------------------------------------------- 1 |

Labels

2 | 123 3 | Found 32 messages (6 unread) 4 | 5 | 6 |

Tags

7 | 8 | 9 | Not read messages 10 | 11 | 12 | 13 | 14 | 15 | 16 | Orphan Messages 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /assembl/templates/styleguide/components/bubble.jinja2: -------------------------------------------------------------------------------- 1 |
2 |
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
3 |
-------------------------------------------------------------------------------- /assembl/templates/styleguide/components/growl.jinja2: -------------------------------------------------------------------------------- 1 |
2 | ×yes it works
3 | 4 |
5 | ×yes it works
6 | 7 |
8 | ×yes it works
9 | 10 |
11 | ×yes it works
-------------------------------------------------------------------------------- /assembl/templates/styleguide/components_news/Dialogs.jinja2: -------------------------------------------------------------------------------- 1 |
2 |

Dialogs

3 |
4 | 5 |
6 |
7 | -------------------------------------------------------------------------------- /assembl/templates/styleguide/components_news/boxes.jinja2: -------------------------------------------------------------------------------- 1 |
2 |

Boxes

3 |
4 | 5 |
6 |
7 | -------------------------------------------------------------------------------- /assembl/templates/styleguide/components_news/buttons.jinja2: -------------------------------------------------------------------------------- 1 |
2 |

Buttons

3 |
4 | 5 |
6 |
7 | -------------------------------------------------------------------------------- /assembl/templates/styleguide/components_news/colors.jinja2: -------------------------------------------------------------------------------- 1 |
2 |

Colors

3 | 4 |
5 | {% set color_list = { 6 | 'purple':'#9013FE', 7 | 'purple1':'#A846FE', 8 | 'purple2':'#C078FE', 9 | 'purple3':'#D8ABFF', 10 | 'purple4':'#EFDEFF' 11 | } 12 | %} 13 | 14 | {% for color in color_list|sort %} 15 |
16 |
17 |
${{color}}: {{color_list[color]}};
18 |
19 | {% endfor %} 20 | 21 |
22 | 23 |
24 | -------------------------------------------------------------------------------- /assembl/templates/styleguide/components_news/components.jinja2: -------------------------------------------------------------------------------- 1 |
2 |

Components

3 |
4 | 5 |
6 |
7 | -------------------------------------------------------------------------------- /assembl/templates/styleguide/components_news/typography.jinja2: -------------------------------------------------------------------------------- 1 |
2 |

Typography

3 | 4 |
5 |

Heading,

6 |

Aa - . Lorem ipsum dolor sit amet, consectetur adipisicing elit. Omnis voluptate distinctio reprehenderit, autem deleniti ad voluptatum eaque. Optio ea aperiam nisi distinctio nemo repellat, voluptate fugiat. Quidem neque illum, blanditiis!

7 |
8 |
9 | -------------------------------------------------------------------------------- /assembl/templates/styleguide/components_old/bar.jinja2: -------------------------------------------------------------------------------- 1 |
2 |
.bar-left
3 |
.bar
4 |
.bar-right
5 |
6 | 7 |
8 | 9 |

Main bar

10 |
11 |
.bar-left
12 |
.bar.bar--main
13 |
.bar-right
14 |
15 | 16 |
17 | 18 |

Title bar

19 |
20 |
.bar-left
21 |
.bar.bar--title
22 |
.bar-right
23 |
24 | -------------------------------------------------------------------------------- /assembl/templates/styleguide/components_old/box.jinja2: -------------------------------------------------------------------------------- 1 |
2 | A generic box 3 |
4 | 5 |
6 | This is a default .box 7 |
8 | 9 |
10 | 11 |
12 | .box.box--collapsed 13 |
14 | 15 |
16 | 17 |
18 | .box.box--dashed 19 |
20 | 21 |
22 | 23 |
24 | .box.box--centered 25 |
26 | -------------------------------------------------------------------------------- /assembl/templates/styleguide/components_old/checkbox.jinja2: -------------------------------------------------------------------------------- 1 |
2 | A fancy checkbox 3 |
4 | 5 |
6 | 7 | 12 | 13 | .chk 14 | 15 |
16 | 17 | 22 | 23 | .chk.chk--muted 24 | -------------------------------------------------------------------------------- /assembl/templates/styleguide/components_old/closebutton.jinja2: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | 5 |
6 | It is position:absolute. 7 |
8 | -------------------------------------------------------------------------------- /assembl/templates/styleguide/components_old/contextmenu.jinja2: -------------------------------------------------------------------------------- 1 |
2 | The famous contextmenu 3 |
4 | 5 | 6 | -------------------------------------------------------------------------------- /assembl/templates/styleguide/components_old/dragbox.jinja2: -------------------------------------------------------------------------------- 1 |
2 | The box shown when the user drag something. 3 |
4 | 5 |
6 | This is a .dragbox 7 |
8 | 9 |
10 |
11 | 12 |
13 | Drag me 14 |
15 | 16 |
17 | 18 | 31 | 32 | -------------------------------------------------------------------------------- /assembl/templates/styleguide/components_old/form.jinja2: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 |
6 | 7 | .defaultfield
8 | 9 | 10 |
11 | 12 | .formfield
13 | 14 | 15 |
16 | 17 | .formtextarea
18 | 19 | 20 |
21 | -------------------------------------------------------------------------------- /assembl/templates/styleguide/components_old/icon.jinja2: -------------------------------------------------------------------------------- 1 |
2 | 3 | {% set icon_list = ['up-dir', 'right-dir', 'down-dir', 'left-dir', 'edit', 'cancel', 'trash-1', 'star-empty', 'star', 'heart', 'pin-outline', 'pin', 'heart-empty', 'cog', 'reply', 'trash', 'menu', 'menu-1', 'download-1', 'upload', 'sort', 'plus-squared', 'plus-squared-small', 'minus-squared-small', 'minus-squared', 'ok-squared', 'collapse', 'collapse-top', 'user', 'download', 'search', 'play'] %} 4 | 5 | 6 | {% for icon in icon_list %} 7 |
8 | i.icon-{{icon}} 9 |
10 | {% endfor %} 11 | 12 |
13 | -------------------------------------------------------------------------------- /assembl/templates/styleguide/components_old/link.jinja2: -------------------------------------------------------------------------------- 1 | Empty a tag 2 | 3 |
4 | 5 | a with href 6 | 7 |
8 | 9 | a.link 10 | 11 |
12 | 13 | span.link -------------------------------------------------------------------------------- /assembl/templates/styleguide/components_old/loginbox.jinja2: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | 5 |
6 | 7 |
-------------------------------------------------------------------------------- /assembl/templates/styleguide/components_old/media.jinja2: -------------------------------------------------------------------------------- 1 |
2 |
3 | User 4 |
5 |
6 |
7 | André Farzat a dit 8 |
9 | Ramones ou Beatles: Qui est le meilleur ? 10 |
11 |
12 | -------------------------------------------------------------------------------- /assembl/templates/styleguide/components_old/spacer.jinja2: -------------------------------------------------------------------------------- 1 |
2 | The default spacer 3 |
4 | 5 |
-------------------------------------------------------------------------------- /assembl/templates/styleguide/components_old/text.jinja2: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 |
5 | I am a .textbubble 6 |
7 | 8 |
9 | 10 |
11 | 12 |
13 | Beginning with ... Ending with. 14 |
15 | 16 |
17 | 18 | 19 |
20 | 21 |

.text-small

22 |

.text-muted

23 |

.text-big

24 |

.text-bold

25 | 26 |
27 | 28 |

.text-left

29 |

.text-center

30 |

.text-right

31 | -------------------------------------------------------------------------------- /assembl/templates/styleguide/components_old/title.jinja2: -------------------------------------------------------------------------------- 1 | {% for i in [1,2,3,4,5,6] %} 2 | Heading {{i}} 3 | {% endfor %} 4 | 5 |
6 | 7 |
.title-debatname
8 | -------------------------------------------------------------------------------- /assembl/templates/styleguide/components_old/tooltip.jinja2: -------------------------------------------------------------------------------- 1 |
2 | 3 |
Simple tooltip
4 | -------------------------------------------------------------------------------- /assembl/templates/styleguide/components_old/z-index.jinja2: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |
NameValue
Float2
Floor1
Underground-1
27 | -------------------------------------------------------------------------------- /assembl/templates/synthesis.jinja2: -------------------------------------------------------------------------------- 1 |
2 |
3 | {{subject|safe}} 4 |
5 |
6 | {{introduction|safe}} 7 |
8 | {{content|safe}} 9 |
10 | {{conclusion|safe}} 11 |
12 |
13 | -------------------------------------------------------------------------------- /assembl/templates/system/filter-nginx-login-attempt.jinja2: -------------------------------------------------------------------------------- 1 | [Definition] 2 | 3 | failregex = ^ \- \- \[\] "POST (/\w+)*/(login|signup|requestPasswordChange)\b 4 | ^ \- \- \[\] "POST /data/(User|AgentProfile)(/(do_password_change|password_reset))?\b 5 | ^ \- \- \[\] "POST /data/\w+/(all_users|all_participants|simple_participants|creator)(/(do_password_change|password_reset|((\-|\d+)/(verify_password|verify))))?\b 6 | 7 | ignoreregex = -------------------------------------------------------------------------------- /assembl/templates/system/jail.local.jinja2: -------------------------------------------------------------------------------- 1 | # Configurations for reducing brute-force hacking 2 | 3 | [nginx-login-attempt] 4 | 5 | port = http,https 6 | logpath = %(nginx_access_log)s 7 | enabled = true 8 | bantime = {{ bantime }} 9 | maxretry = {{ maxretry }} 10 | findtime = {{ findtime }} -------------------------------------------------------------------------------- /assembl/templates/system/random.ini.tmpl: -------------------------------------------------------------------------------- 1 | [app:idealoom] 2 | security.email_token_salt = {random66} 3 | beaker.session.validate_key = {random66} 4 | beaker.session.encrypt_key = {random66} 5 | session.secret = {random66} 6 | -------------------------------------------------------------------------------- /assembl/templates/system/random_docker.ini.tmpl: -------------------------------------------------------------------------------- 1 | [app:idealoom] 2 | _sentry_secret_key = {random66} 3 | _sentry_db_password = {random12} 4 | _sentry_admin_password = {random12} 5 | -------------------------------------------------------------------------------- /assembl/templates/system/saml_random.ini.tmpl: -------------------------------------------------------------------------------- 1 | [app:idealoom] 2 | SOCIAL_AUTH_SAML_SP_PUBLIC_CERT = {saml_cert} 3 | SOCIAL_AUTH_SAML_SP_PRIVATE_KEY = {saml_key} 4 | -------------------------------------------------------------------------------- /assembl/templates/views/DiscussionSettingsCreateSource.tmpl: -------------------------------------------------------------------------------- 1 |
2 |

{{ gettext('Create a data source:') }} 3 |

4 | 11 |

12 |
13 |
14 | 15 |
16 | -------------------------------------------------------------------------------- /assembl/templates/views/adminNotification.tmpl: -------------------------------------------------------------------------------- 1 | 5 | 6 | -------------------------------------------------------------------------------- /assembl/templates/views/adminNotificationList.tmpl: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | 5 | 6 | 7 |
8 |
9 |
-------------------------------------------------------------------------------- /assembl/templates/views/agentAvatar.tmpl: -------------------------------------------------------------------------------- 1 | <% if(agent.get('name')) { %> 2 | <%= agent.get('name') %> 3 | <% } else { %> 4 | {{ gettext('anonymous') }} 5 | <% } %> 6 | -------------------------------------------------------------------------------- /assembl/templates/views/agentName.tmpl: -------------------------------------------------------------------------------- 1 | 3 | title="<%= agent.get('preferred_email') %>" 4 | <% } %> ><% if(agent.get('name')) { %><%= agent.get('name') %><% } else { %>{{ gettext('Anonymous') }}<% } %> -------------------------------------------------------------------------------- /assembl/templates/views/allMessagesInIdeaList.tmpl: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 |
5 | <%= num_posts %> 6 |
7 | 8 | <% var num_unread_posts = (num_posts - num_read_posts); %> 9 |
10 | {{ gettext('All messages') }} 11 | <% if(Ctx.isUserConnected()) { %> 12 | <%= num_unread_posts %> 13 | <% } %> 14 |
15 |
16 | -------------------------------------------------------------------------------- /assembl/templates/views/announcementEditable.tmpl: -------------------------------------------------------------------------------- 1 |
2 | <%= title %> 3 |
4 |
5 | <%= body %> 6 |
7 |
8 | {{gettext("Propagate this announcement to sub-ideas:")}}
9 |
10 |

{{gettext('Delete this announcement')}}

11 | -------------------------------------------------------------------------------- /assembl/templates/views/announcementListEmptyEditable.tmpl: -------------------------------------------------------------------------------- 1 |

{{ gettext('Add a new announcement to this idea') }}

2 | -------------------------------------------------------------------------------- /assembl/templates/views/announcementMessage.tmpl: -------------------------------------------------------------------------------- 1 | {% set precise_date = "<%= ctx.getReadableDateTime(created) %>" %} 2 | {% set nice_date = "<%= ctx.getNiceDate(created, false, true) %>" %} 3 |
<%= title %>
4 |
<%= body %>
5 |
6 |
7 |
8 | 9 | <% if(!hide_creator) { %> 10 |
{{ gettext('')|format(nice_date=nice_date,precise_date=precise_date)|safe }}
11 | <% } %> 12 |
13 |
-------------------------------------------------------------------------------- /assembl/templates/views/associateAccounts.tmpl: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | 5 |
6 |
7 |
8 |
-------------------------------------------------------------------------------- /assembl/templates/views/attachment.tmpl: -------------------------------------------------------------------------------- 1 |
-------------------------------------------------------------------------------- /assembl/templates/views/attachmentButton.tmpl: -------------------------------------------------------------------------------- 1 |
2 | 5 |
6 | -------------------------------------------------------------------------------- /assembl/templates/views/attachmentEditable.tmpl: -------------------------------------------------------------------------------- 1 |

<%= header %>

2 | 5 |
6 | -------------------------------------------------------------------------------- /assembl/templates/views/attachmentText.tmpl: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /assembl/templates/views/authorization.tmpl: -------------------------------------------------------------------------------- 1 |
2 |

<%= error %>

3 |

<%= message %>

4 |
-------------------------------------------------------------------------------- /assembl/templates/views/basePreferenceView.tmpl: -------------------------------------------------------------------------------- 1 |
2 |
3 | <%= JSON.stringify(preference) %> 4 |
5 |
6 | 7 | <%= JSON.stringify(preferenceData) %> 8 | 9 |
10 |
11 | -------------------------------------------------------------------------------- /assembl/templates/views/boolPreferenceView.tmpl: -------------------------------------------------------------------------------- 1 | > 2 | -------------------------------------------------------------------------------- /assembl/templates/views/confirmModal.tmpl: -------------------------------------------------------------------------------- 1 |
2 | <% if(icon) { %><% } %> 3 |
4 | 5 |
6 |
7 | <%= contentText %> 8 |
9 |
10 |
11 | 12 | 16 | -------------------------------------------------------------------------------- /assembl/templates/views/contextPage.tmpl: -------------------------------------------------------------------------------- 1 | 2 | {# 3 |
4 |
5 |
6 |

{{ gettext('Timeline') }}

7 |

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

8 |
9 |
10 |
11 | #} 12 | 13 |
14 | 15 |
16 | 17 |
18 | 19 |
20 | 21 |
22 | -------------------------------------------------------------------------------- /assembl/templates/views/cookieBanner.tmpl: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assembl/templates/views/defaultNotification.tmpl: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 | 9 |
10 |
11 |
12 |
-------------------------------------------------------------------------------- /assembl/templates/views/dictPreferenceItemView.tmpl: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | 5 | 6 | 7 | <% if (canModify) { %> 8 | 9 | <% } %> 10 |
11 | -------------------------------------------------------------------------------- /assembl/templates/views/exportPostModal-fb-group.tmpl: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | 9 | 10 |
11 |
12 | -------------------------------------------------------------------------------- /assembl/templates/views/externalViz.tmpl: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assembl/templates/views/fileEmbed.tmpl: -------------------------------------------------------------------------------- 1 | <%= url %> -------------------------------------------------------------------------------- /assembl/templates/views/fileUploadEmbed.tmpl: -------------------------------------------------------------------------------- 1 | <% if (percent !== null ) { %> 2 | <%= name %> (<%=percent%>%) 3 | <% } else { %> 4 | <%= name %> 5 | <% } %> 6 | -------------------------------------------------------------------------------- /assembl/templates/views/globalAdminNavigationMenu.tmpl: -------------------------------------------------------------------------------- 1 | 12 | -------------------------------------------------------------------------------- /assembl/templates/views/groupContent.tmpl: -------------------------------------------------------------------------------- 1 | <% if( Ctx.getCurrentInterfaceType() === Ctx.InterfaceTypes.EXPERT ){ %> 2 |
3 | 4 |
5 |
6 | <% } else { %> 7 |
8 |
9 |
10 | <% } %> 11 | -------------------------------------------------------------------------------- /assembl/templates/views/groupModal.tmpl: -------------------------------------------------------------------------------- 1 |
2 | 3 |

<%= title %>

4 |
5 |
6 | 7 |
8 | {# 9 | 12 | #} -------------------------------------------------------------------------------- /assembl/templates/views/helperDebate.tmpl: -------------------------------------------------------------------------------- 1 |
2 |
3 |

{{ gettext('Welcome!') }}

4 |

{{ gettext('Pick a topic and start contributing')}}

5 |

{{ gettext('This table of contents helps you find the conversations and topics you are interested in so you don’t get overwhelmed. Topics include messages from all related sub-topics as well.') }}

6 |

{{ gettext('This is a safe and respectful space. All ideas are welcome!') }}

7 |

8 |
9 |
-------------------------------------------------------------------------------- /assembl/templates/views/homeIntroductionDetail.tmpl: -------------------------------------------------------------------------------- 1 |
2 | 3 |

<%= title %>

4 |
5 |
6 |
7 | <%= content %> 8 |
9 |
10 | -------------------------------------------------------------------------------- /assembl/templates/views/ideaClassificationInMessage.tmpl: -------------------------------------------------------------------------------- 1 | <% if (count > 0) { %> 2 | <%= linked_to_msg %> 3 | 4 | <% _.each(first, function(n, i, l){ %> 5 | <% if ((count > 3) && (i ===2)) { %> 6 | <%= n %> 7 | <% } else { %> 8 | <%= n %> 9 | <% } %> 10 | <% })%> 11 | <% if (rest.length > 0 ) { %> 12 | <%= other_ideas_msg %> 13 | <% } %> 14 | 15 | <% } %> 16 | -------------------------------------------------------------------------------- /assembl/templates/views/ideaClassification_collection.tmpl: -------------------------------------------------------------------------------- 1 | 2 |
3 | -------------------------------------------------------------------------------- /assembl/templates/views/ideaClassification_directExtract.tmpl: -------------------------------------------------------------------------------- 1 |
2 |
3 | <%= i18n.sprintf('{{gettext("%s has considered this message relevant to the idea:")|safe}}', harvester) %> 4 |
5 |
6 |
7 | {{ gettext("Considering this extract:") }} 8 |
9 | 10 | <%= extractText %> 11 | 12 | <%= i18n.sprintf('{{gettext("by %s")}}', postAuthor)%> 13 |
14 |
15 |
16 |
17 | <%= viewIdea %> 18 |
19 | -------------------------------------------------------------------------------- /assembl/templates/views/ideaClassification_directMessage.tmpl: -------------------------------------------------------------------------------- 1 |
2 |
3 | <%= i18n.sprintf('{{gettext("%s started this new discussion thread directly on the idea:")|safe}}', author) %> 4 |
5 |
6 |
7 |
8 | <%= viewIdea %> 9 |
10 | -------------------------------------------------------------------------------- /assembl/templates/views/ideaClassification_indirectExtract.tmpl: -------------------------------------------------------------------------------- 1 |
2 |
3 | <%= i18n.sprintf('{{gettext("This message is part of a thread, which %s considered relevant to the idea:")|safe}}', harvester) %> 4 |
5 |
6 |
7 | {{gettext("Considering this extract:")}} 8 |
9 | 10 | <%= extractText %> 11 | 12 | <%= i18n.sprintf('{{gettext("by %s")}}', postAuthor)%> 13 |
14 |
15 |
16 |
17 | <%= viewIdea %> 18 |
19 | -------------------------------------------------------------------------------- /assembl/templates/views/ideaClassification_indirectMessage.tmpl: -------------------------------------------------------------------------------- 1 |
2 |
3 | <%= i18n.sprintf('{{gettext("This message is part of a thread, started by %s on the idea:")|safe}}', author) %> 4 |
5 |
6 |
7 |
8 | <%= viewIdea %> 9 |
10 | -------------------------------------------------------------------------------- /assembl/templates/views/ideaClassification_modal.tmpl: -------------------------------------------------------------------------------- 1 |
2 | 3 |

<%= title_msg %>

4 |
5 |
6 |
7 |
8 | <%= visible_because_msg %> 9 |
10 |
11 |
12 |
13 | -------------------------------------------------------------------------------- /assembl/templates/views/ideaFamily.tmpl: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 |
5 |
6 | 7 | 8 | -------------------------------------------------------------------------------- /assembl/templates/views/instigator.tmpl: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | <% if( _.size(instigator) || userCanEditDiscussion){ %> 5 | <% if(userCanEditDiscussion){ %> 6 |

{{ gettext('Instigated by') }}

{{ gettext('edit instigator') }} 7 | <% } else { %> 8 |

{{ gettext('Instigated by') }}

9 | <% } %> 10 | <% } %> 11 |
12 |
13 |
14 |
15 |
16 | <% if( _.size(instigator) ){ %> 17 |
18 | <% } %> 19 |
20 |
21 |
-------------------------------------------------------------------------------- /assembl/templates/views/jsonPreferenceView.tmpl: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | -------------------------------------------------------------------------------- /assembl/templates/views/langStringEntry.tmpl: -------------------------------------------------------------------------------- 1 |
2 | 11 | 12 | 13 |
14 | -------------------------------------------------------------------------------- /assembl/templates/views/listPreferenceItemView.tmpl: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 | 6 | <% if (canModify) { %> 7 | 8 | <% } %> 9 |
10 | -------------------------------------------------------------------------------- /assembl/templates/views/listPreferenceView.tmpl: -------------------------------------------------------------------------------- 1 |
2 |
3 | <% if (canModify) { %> 4 | 5 | <% } %> 6 |
7 | -------------------------------------------------------------------------------- /assembl/templates/views/loader.tmpl: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | -------------------------------------------------------------------------------- /assembl/templates/views/message_translation_question_selection.tmpl: -------------------------------------------------------------------------------- 1 |
<%= question %>
2 |
3 | 10 |
11 | 16 | -------------------------------------------------------------------------------- /assembl/templates/views/modalWithIframe.tmpl: -------------------------------------------------------------------------------- 1 |
2 | 3 |

<%= modal_title %>

4 |
5 | 6 |
7 | 8 | 10 | -------------------------------------------------------------------------------- /assembl/templates/views/modalWithoutIframe.tmpl: -------------------------------------------------------------------------------- 1 |
2 | 3 |

<%= modal_title %>

4 |
5 | 6 |
7 |
8 |
9 | 10 | 13 | -------------------------------------------------------------------------------- /assembl/templates/views/navBar.tmpl: -------------------------------------------------------------------------------- 1 | 4 | 5 | 8 | 9 | 12 | -------------------------------------------------------------------------------- /assembl/templates/views/notificationByEmail.tmpl: -------------------------------------------------------------------------------- 1 | <% if(account.get('verified') && account.get('email') !== null && account.get('email').length>0){ %> 2 | id="<%= account.get('@id') %>" name="email_account"> 3 | <%= account.get('email') %> 4 | <% } %> 5 | -------------------------------------------------------------------------------- /assembl/templates/views/notificationByEmails.tmpl: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 | 6 |
7 |
8 |
9 |
10 |
-------------------------------------------------------------------------------- /assembl/templates/views/orphanMessagesInIdeaList.tmpl: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 |
5 | <%= num_orphan_posts %> 6 |
7 | {# TODO <% var num_unread_posts = (num_posts - num_read_posts); %>#} 8 |
9 | {{ gettext('Messages yet to be organised') }} 10 | {# <%= num_unread_posts %> #} 11 |
12 |
-------------------------------------------------------------------------------- /assembl/templates/views/otherInIdeaList.tmpl: -------------------------------------------------------------------------------- 1 |
2 | {{ gettext('Messages not in the table of ideas') }} 3 |
-------------------------------------------------------------------------------- /assembl/templates/views/partnerItem.tmpl: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | <%= organization.get('name') %> 5 | <%= htmlEntities(organization.get('description')) %> 6 | 7 | -------------------------------------------------------------------------------- /assembl/templates/views/partnerList.tmpl: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | <% if(nbOrganisations === 0){ %> 5 | <% if(userCanEditDiscussion){ %> 6 |

{{ gettext('Partners') }}

{{ gettext('edit partners') }} 7 | <% } %> 8 | <% } else { %> 9 | <% if(userCanEditDiscussion){ %> 10 |

{{ gettext('Partners') }}

{{ gettext('edit partners') }} 11 | <% } else { %> 12 |

{{ gettext('Partners') }}

13 | <% } %> 14 | <% } %> 15 |
16 |
17 |
18 |
-------------------------------------------------------------------------------- /assembl/templates/views/passwordPreferenceView.tmpl: -------------------------------------------------------------------------------- 1 | > 2 | -------------------------------------------------------------------------------- /assembl/templates/views/piwikIframeModal.tmpl: -------------------------------------------------------------------------------- 1 |
2 | 3 |

{{ gettext('Set cookies') }}

4 |
5 |
6 |
7 | 8 |
9 |
10 | 13 | -------------------------------------------------------------------------------- /assembl/templates/views/preferenceItemView.tmpl: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 |
5 |
6 | 7 | 8 | 9 | 10 |
11 | <% if (canModify) { %> 12 |
13 | 14 |
15 | <% } %> 16 |
17 | -------------------------------------------------------------------------------- /assembl/templates/views/preferenceView.tmpl: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 |
5 |
6 |

{{ gettext('Preferences') }}

7 |
8 |
9 |
10 |
11 |
12 |
13 | 14 |
15 |
16 |
17 |
18 |
19 |
20 |
-------------------------------------------------------------------------------- /assembl/templates/views/pubFlowInIdeaPanel.tmpl: -------------------------------------------------------------------------------- 1 |
2 |
{{ gettext('Idea publication status') }}: <% 3 | if (pubStateName) { print(pubStateName) } else { print(i18n.gettext('None')) } %>
4 | <% _.each(transitions, (transition) => { %> 5 | 6 | <% }); %> 7 |
8 | -------------------------------------------------------------------------------- /assembl/templates/views/scalarPreferenceView.tmpl: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /assembl/templates/views/segmentList.tmpl: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 |

{{ gettext('Annotation on the web') }}

5 |

{{ gettext('If you desire catching extracts out of %s (exemple : Wikipedia),')|format(platform_name) }} 6 | {{ gettext('click here to activate the annotation') }}

7 |
8 | 9 |

{{ gettext('Extracts not yet associated with an idea') }}

10 | 11 |
12 | 13 | 16 | 17 |
18 | 19 | -------------------------------------------------------------------------------- /assembl/templates/views/showSegmentByAnnotation.tmpl: -------------------------------------------------------------------------------- 1 |
2 |
3 | {{ gettext('You will be redirected to another idea in connection with the nugget on which you clicked.') }} 4 |
5 |
6 |
7 | 8 | 12 | -------------------------------------------------------------------------------- /assembl/templates/views/sidebar-notification.tmpl: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assembl/templates/views/simpleLangStringEdit.tmpl: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 |
5 | -------------------------------------------------------------------------------- /assembl/templates/views/simpleLink.tmpl: -------------------------------------------------------------------------------- 1 |
  • <%= title %>
  • -------------------------------------------------------------------------------- /assembl/templates/views/sourceFacebook.tmpl: -------------------------------------------------------------------------------- 1 |
    2 |
    3 | -------------------------------------------------------------------------------- /assembl/templates/views/statistics.tmpl: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |
    4 |
    5 |

    {{ gettext('Statistics') }}

    6 |
    7 |
    {{ gettext('Loading...') }}
    8 |
    9 |
    10 |
    11 |
    12 |
    13 |
    14 |
    15 |
    16 |
    -------------------------------------------------------------------------------- /assembl/templates/views/stringPreferenceView.tmpl: -------------------------------------------------------------------------------- 1 | > 2 | -------------------------------------------------------------------------------- /assembl/templates/views/synthesisInIdeaList.tmpl: -------------------------------------------------------------------------------- 1 |
    2 | 3 | 4 |
    5 | <%= num_synthesis_posts %> 6 |
    7 | {# TODO <% var num_unread_posts = (num_posts - num_read_posts); %>#} 8 |
    9 | {{ gettext('Syntheses') }} 10 | {# <%= num_unread_posts %> #} 11 |
    12 |
    -------------------------------------------------------------------------------- /assembl/templates/views/synthesisInNavigationPanel.tmpl: -------------------------------------------------------------------------------- 1 |
      2 | -------------------------------------------------------------------------------- /assembl/templates/views/synthesisItemInNavigation.tmpl: -------------------------------------------------------------------------------- 1 |
    • 2 |
      <%= subject %>
      3 |
      <%= date %>
      4 |
    • 5 | -------------------------------------------------------------------------------- /assembl/templates/views/synthesisPanelMessage.tmpl: -------------------------------------------------------------------------------- 1 |
      2 | 3 |
      4 | 5 | 6 |
      7 |
      8 | 9 |
      10 | 11 |
      12 | 13 |
      14 |
      {{ gettext('Conclusion') }}
      15 |
      16 |
      17 |
      -------------------------------------------------------------------------------- /assembl/templates/views/templateSubscription.tmpl: -------------------------------------------------------------------------------- 1 | <% if(role) { %> 2 | > 3 | <%= i18n.gettext(subscription.get('human_readable_description')) %> 4 | <% } else { %> 5 | 6 | <%= i18n.gettext(subscription.get('human_readable_description')) %> 7 | <% } %> 8 | -------------------------------------------------------------------------------- /assembl/templates/views/textPreferenceView.tmpl: -------------------------------------------------------------------------------- 1 |
      2 | 4 |
      5 | -------------------------------------------------------------------------------- /assembl/templates/views/tokenBags.tmpl: -------------------------------------------------------------------------------- 1 |
      2 |
      3 |
      4 |
      5 | -------------------------------------------------------------------------------- /assembl/templates/views/tokenCategoryAllocationCollection.tmpl: -------------------------------------------------------------------------------- 1 |
      2 | -------------------------------------------------------------------------------- /assembl/templates/views/tokenCategoryExclusivePairCollection.tmpl: -------------------------------------------------------------------------------- 1 |
      2 |
      3 |
      4 |
      5 | -------------------------------------------------------------------------------- /assembl/templates/views/tokenIdeaAllocation.tmpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/templates/views/tokenIdeaAllocation.tmpl -------------------------------------------------------------------------------- /assembl/templates/views/tokenVoteCollection.tmpl: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
      <%= i18n.sprintf('{{gettext("Ideas (%s)")}}', numberOfIdeas) %>{{gettext("Your votes")}}
      10 | -------------------------------------------------------------------------------- /assembl/templates/views/tokenVoteItem.tmpl: -------------------------------------------------------------------------------- 1 |
      2 |
      <%= ideaTitle %>
      3 |
      4 |
      5 |
      6 |
      7 |
      8 | -------------------------------------------------------------------------------- /assembl/templates/views/tokenVoteResultCollectionView.tmpl: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | <% _.each(categories, function(category){ %> 6 | 10 | <% }); %> 11 | 12 | 13 | 14 |
      {{gettext("Ideas")}} 7 | <%= category %> 8 | 9 |
      15 | -------------------------------------------------------------------------------- /assembl/templates/views/tokenVoteResultSingleView.tmpl: -------------------------------------------------------------------------------- 1 |
      2 |
      <%= ideaTitle %>
      3 |
      4 |
      5 | <% if (showDescriptionButton) { %> 6 | 10 | <% } %> 11 |
      12 |
      13 | <% _.each(categoryResult, function(result){ %> 14 |
      15 | <% }); %> 16 | -------------------------------------------------------------------------------- /assembl/templates/views/tokenVoteResultView.tmpl: -------------------------------------------------------------------------------- 1 |
      2 |
      3 |
      <%= questionTitle %>
      4 |
      <%= questionDescription %>
      5 |
      6 |
      7 |
      {{gettext("Vote Summary")}}
      8 |
      <%= statement %>
      9 |
      10 |
      11 |
      12 | 16 | -------------------------------------------------------------------------------- /assembl/templates/views/tokenVoteSessionModal.tmpl: -------------------------------------------------------------------------------- 1 |
      2 | 3 |

      <%= popin_title %>

      4 |
      5 |
      6 |
      7 |
      8 |
      <%= question_title %>
      9 |
      <%= question_description %>
      10 |
      11 |
      <%= available_tokens_info %>
      12 |
      13 |
      14 |
      15 |
      16 |
      17 |
      18 | <%= save_vote %> 19 |
      20 |
      21 | -------------------------------------------------------------------------------- /assembl/templates/views/top_loader.tmpl: -------------------------------------------------------------------------------- 1 |
      2 | 4 |
      5 |
      6 |
      7 |
      8 |
      9 |
      10 | -------------------------------------------------------------------------------- /assembl/templates/views/tos_infobar.tmpl: -------------------------------------------------------------------------------- 1 |
      2 |
      <%= message %>
      3 | 4 |
      -------------------------------------------------------------------------------- /assembl/templates/views/trueFalseField.tmpl: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assembl/templates/views/uploadView.tmpl: -------------------------------------------------------------------------------- 1 |
      2 |
      3 | -------------------------------------------------------------------------------- /assembl/templates/views/userSubscriptions.tmpl: -------------------------------------------------------------------------------- 1 | <% if(role){ %> 2 | > 3 | <%= i18n.gettext(subscription.get('human_readable_description')) %> 4 | <% } else { %> 5 | 6 | <%= i18n.gettext(subscription.get('human_readable_description')) %> 7 | <% } %> 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /assembl/templates/views/widgetButton.tmpl: -------------------------------------------------------------------------------- 1 |

      <%= description %>

      2 |
      3 | <%= button_text %> 4 | <% if (canSeeResults){ %> 5 | See Results 6 | <% } %> 7 | 8 | <% if (until_text) { %> 9 |

      <%= until_text %>

      10 | <% } %> 11 |
      12 | -------------------------------------------------------------------------------- /assembl/templates/views/widgetLink.tmpl: -------------------------------------------------------------------------------- 1 | <%= text %> 2 | -------------------------------------------------------------------------------- /assembl/templates/views/widget_infobar.tmpl: -------------------------------------------------------------------------------- 1 |
      2 |
      <%= message %> <% if (shows_button){ %><%= call_to_action_msg %><% } %>
      3 | 4 |
      -------------------------------------------------------------------------------- /assembl/tests/__init__.py: -------------------------------------------------------------------------------- 1 | """Testing machinery: fixtures and other utils.""" 2 | -------------------------------------------------------------------------------- /assembl/tests/fixtures/__init__.py: -------------------------------------------------------------------------------- 1 | """All fixtures for backend testing""" 2 | -------------------------------------------------------------------------------- /assembl/tests/fixtures/preferences.py: -------------------------------------------------------------------------------- 1 | from __future__ import print_function 2 | import pytest 3 | 4 | 5 | @pytest.fixture(scope="function") 6 | def default_preferences(request, test_session, base_registry): 7 | """A Preference fixture with default settings""" 8 | from assembl.models import Preferences 9 | from assembl.auth.social_auth import adjust_settings 10 | settings = base_registry.settings 11 | adjust_settings(settings) 12 | Preferences.init_from_settings(settings) 13 | prefs = Preferences.get_default_preferences() 14 | test_session.add(prefs) 15 | test_session.flush() 16 | 17 | def fin(): 18 | print("finalizer default_preferences") 19 | test_session.delete(prefs) 20 | test_session.flush() 21 | request.addfinalizer(fin) 22 | return prefs 23 | -------------------------------------------------------------------------------- /assembl/tests/model_tests/test_widgets.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | import pytest 4 | 5 | 6 | def test_delete_widget( 7 | test_session, creativity_session_widget, 8 | creativity_session_widget_new_idea): 9 | test_session.flush() 10 | test_session.delete(creativity_session_widget) 11 | test_session.flush() 12 | -------------------------------------------------------------------------------- /assembl/tests/views_tests/test_themes.py: -------------------------------------------------------------------------------- 1 | from assembl.views import find_theme 2 | 3 | 4 | def test_find_themes(): 5 | # At least the default theme should be present. Enough for a canari test 6 | theme_name = 'default' 7 | expected_relative_path = 'default' 8 | retval = find_theme(theme_name) 9 | assert retval == expected_relative_path, "find_themes returned %s but we expected %s" % (retval, expected_relative_path) 10 | -------------------------------------------------------------------------------- /assembl/tweens/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/tweens/__init__.py -------------------------------------------------------------------------------- /assembl/tweens/logging.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | from ..lib.logging import getLogger 4 | 5 | 6 | def logging_tween_factory(handler, registry): 7 | """This defines a tween that will log queries.""" 8 | def logging_tween(request): 9 | request.logger().info('request', method=request.method, path=request.path, getargs=request.GET) 10 | try: 11 | response = handler(request) 12 | request.logger().info('response', status=response.status) 13 | return response 14 | except Exception as e: 15 | request.logger().error("responseError", exc_info=True) 16 | raise e 17 | 18 | return logging_tween 19 | -------------------------------------------------------------------------------- /assembl/validation.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/assembl/validation.py -------------------------------------------------------------------------------- /assembl/view_def/etalab.json: -------------------------------------------------------------------------------- 1 | { 2 | "_default": { 3 | "id": true, 4 | "_default": false 5 | }, 6 | "Conversation": { 7 | "createdAt": "creation_date", 8 | "name": "topic", 9 | "slug": true, 10 | "url": "&get_url", 11 | "status": "'\"running\"", 12 | "adminName": "creator_name", 13 | "adminEmail": "creator_email" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /assembl/view_def/webannotation2.json: -------------------------------------------------------------------------------- 1 | { 2 | "Excerpt": { 3 | "id": "&local_uri_as_resource", 4 | "type": "'\"SpecificResource\"", 5 | "source": "content", 6 | "selector": "&fragements_as_web_annotatation", 7 | "_default": false 8 | } 9 | } -------------------------------------------------------------------------------- /assembl/view_def/webannotation3.json: -------------------------------------------------------------------------------- 1 | { 2 | "Excerpt": { 3 | "type": "'\"Dataset\"", 4 | "format": "'\"application/ld+json\"", 5 | "value": "&extract_graph_json_wrap_flat", 6 | "_default": false 7 | } 8 | } -------------------------------------------------------------------------------- /assembl/views/admin/__init__.py: -------------------------------------------------------------------------------- 1 | """The administration views""" 2 | from assembl.lib.frontend_urls import FrontendUrls 3 | 4 | 5 | def frontend_include(config): 6 | FrontendUrls.register_frontend_admin_routes(config) 7 | 8 | 9 | def includeme(config): 10 | config.add_route('base_admin', '/admin') 11 | config.add_route('discussion_admin', '/admin/discussions/') 12 | config.add_route('general_permissions', '/admin/permissions') 13 | config.add_route('discussion_permissions', 14 | '/admin/permissions/discussion/{discussion_id:\d+}') 15 | config.add_route('discussion_edit', 16 | '/admin/discussion/edit/{discussion_id:\d+}') 17 | config.add_route('test_simultaneous_ajax_calls', '/admin/test_simultaneous_ajax_calls/') 18 | config.include(frontend_include, route_prefix='/admin') 19 | -------------------------------------------------------------------------------- /assembl/views/discussion/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | def includeme(config): 3 | pass 4 | -------------------------------------------------------------------------------- /assembl/views/discussion_list/__init__.py: -------------------------------------------------------------------------------- 1 | """A view that shows multiple discussions. Probably should not exist.""" 2 | def includeme(config): 3 | pass 4 | -------------------------------------------------------------------------------- /assembl/views/errors.py: -------------------------------------------------------------------------------- 1 | from enum import Enum 2 | 3 | # These optional errors subtypes allow to refine the meaning of an 4 | # HTTP error code, so the frontend can better direct the user to 5 | # correct their action. 6 | # In particular, it can specify affected form elements. 7 | # which element is affected. 8 | # Not mandatory unless it adds information that the frontend will use. 9 | 10 | 11 | class ErrorTypes(Enum): 12 | """These are agreed-upon error names between frontend and backend. 13 | Always keep in sync with ...""" 14 | SHORT_NAME = 1 15 | INVALID_EMAIL = 2 16 | EXISTING_EMAIL = 3 17 | EXISTING_USERNAME = 4 18 | PASSWORD = 5 19 | -------------------------------------------------------------------------------- /assembl_cloc_additional_definitions.txt: -------------------------------------------------------------------------------- 1 | JINJA2 2 | filter remove_html_comments 3 | filter call_regexp_common HTML 4 | extension jinja2 5 | extension tmpl 6 | 3rd_gen_scale 1.90 7 | -------------------------------------------------------------------------------- /autoprefixer_options.json: -------------------------------------------------------------------------------- 1 | { 2 | "autoprefixer": 3 | { 4 | "browsers": [ 5 | "ie >= 10", 6 | "ff >= 24", 7 | "Opera >= 10", 8 | "Safari >= 7", 9 | "Chrome >= 25" 10 | ] 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "assembl", 3 | "version": "1.0.0", 4 | "homepage": "https://github.com/assembl/assembl", 5 | "authors": [ 6 | "Andre Farzat ", 7 | "Gaby Hourlier " 8 | ], 9 | "description": "I4P online debate and synthesis platform", 10 | "license": "MIT", 11 | "private": true, 12 | "ignore": [ 13 | "**/.*", 14 | "node_modules", 15 | "bower", 16 | "test", 17 | "tests" 18 | ], 19 | "dependencies": { 20 | "ink": "~1.0.5", 21 | "Backbone.Subset": "https://github.com/assembl/Backbone.Subset.git#~0.1.1", 22 | "jquery.dotdotdot": "https://github.com/assembl/jQuery.dotdotdot.git#fix-paragraph-and-read-more-not-showing" 23 | }, 24 | "resolutions": { 25 | "underscore": "1.8.3", 26 | "jquery": "3.2.1", 27 | "backbone": "1.3.3" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /bower.json.README: -------------------------------------------------------------------------------- 1 | Since comments aren't allowed in json... 2 | 3 | mocha is in bower.json only so it can get served from static when running tests 4 | in templates/tests/index.jinja2 -------------------------------------------------------------------------------- /doc/auth.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/doc/auth.pdf -------------------------------------------------------------------------------- /doc/endpoints.rst: -------------------------------------------------------------------------------- 1 | IdeaLoom's routes and APIs 2 | ========================== 3 | 4 | IdeaLoom has 2 major APIs. 5 | 6 | - The "classic" API, based on cornice_. 7 | - The "traversal" or "magical" or "generic" API. 8 | 9 | .. toctree:: 10 | :maxdepth: 1 11 | 12 | services 13 | backend_rest_api 14 | routes 15 | 16 | .. _cornice: https://cornice.readthedocs.io/en/latest/ 17 | -------------------------------------------------------------------------------- /doc/fontello.rst: -------------------------------------------------------------------------------- 1 | Fontello 2 | -------- 3 | 4 | To add icons to Fontello, first run ``fab devenv start_edit_fontello_fonts``. 5 | This will open a web page on Fontello with our icons preselected, and initialize a local ID. 6 | Select more icons on this page, upload SVG files, and name them as "name" not "icon-name". When you are done, run ``fab devenv compile_fontello_fonts``. The updated fonts will be in ``assembl/static/css/fonts``, add them with git. 7 | You need to add them on _icon.scss with the right unicode. You have to clear the cache to see them on Chrome. 8 | 9 | To edit the svg paths themselves, take the SVG paths in config.json and edit them in a svg editor, such as http://svg-edit.googlecode.com/svn/branches/stable/editor/svg-editor.html 10 | -------------------------------------------------------------------------------- /doc/how_to_open_pencil_ep_files.txt: -------------------------------------------------------------------------------- 1 | They are evolus pencil files (http://pencil.evolus.vn/) 2 | Pencil is a GUI tool used to quickly create and display 3 | mockups. It is used to show class diagrams, relationships 4 | or dataflows. 5 | 6 | A recent fork can be found here: 7 | 8 | https://github.com/prikhi/pencil/releases 9 | -------------------------------------------------------------------------------- /doc/login_flowchart.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversence/idealoom/5d64544c46b66d825b40d42773e96e4ddab50977/doc/login_flowchart.pdf -------------------------------------------------------------------------------- /doc/panel_architecture.rst: -------------------------------------------------------------------------------- 1 | Group and panels architecture 2 | ============================= 3 | 4 | The class hierarchy is the following 5 | 6 | * :js:class:`groupContainer` 7 | * :js:attr:`groupContainer.collection` : contains a :js:class:`GroupSpecs` collection 8 | * :js:class:`GroupSpecModel` 9 | * :js:attr:`GroupSpecModel.panels` : contains a :js:class:`PanelSpecs` collection 10 | * :js:class:`PanelSpecModel` 11 | * :js:attr:`PanelSpecModel.type` : one of :js:class:`PanelSpecTypes` 12 | * :js:attr:`groupContainer`.children : is a :js:class:`groupContent` iterator 13 | * :js:attr:`groupContent`.children : is a :js:class:`PanelWrapper` iterator 14 | * :js:class:`PanelWrapper` 15 | * :js:attr:`PanelWrapper.contentsView` : is a subclass of :js:class:`AssemblPanel`, of which every panel inherits 16 | -------------------------------------------------------------------------------- /doc/reprocess_content_howto.txt: -------------------------------------------------------------------------------- 1 | pshell local.ini 2 | 3 | mailboxes = db.query(models.AbstractMailbox) 4 | for mailbox in mailboxes: 5 | mailbox.reprocess_content() 6 | -------------------------------------------------------------------------------- /doc/routes.rst: -------------------------------------------------------------------------------- 1 | Static routes 2 | ------------- 3 | 4 | .. autopyramid:: local.ini 5 | :format: httpdomain 6 | -------------------------------------------------------------------------------- /doc/services.rst: -------------------------------------------------------------------------------- 1 | .. _classical_api: 2 | 3 | Cornice RESTful services 4 | ------------------------ 5 | 6 | Routes begin with ``/api/v1/`` and correspond to :py:mod:`assembl.views.api`. 7 | Each of these routes and the code they contain are 8 | designed manually and have been written with performance in mind, as 9 | they are the most critical ones (they are the first ones called by the 10 | front-end side of the application, or are called often, or require heavy 11 | database work). 12 | 13 | .. cornice-autodoc:: 14 | :modules: assembl.views.api 15 | -------------------------------------------------------------------------------- /doc/umlgraph/.gitignore: -------------------------------------------------------------------------------- 1 | *.dot 2 | *.png 3 | *.pdf 4 | 5 | -------------------------------------------------------------------------------- /doc/umlgraph/Makefile: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Requires umlgraph (http://www.umlgraph.org/doc/indexw.html) 4 | # and dot (graphviz) 5 | 6 | SOURCES=schema_now.java schema_desired.java schema_messages.java 7 | DOTFILES=$(subst .java,.dot,$(SOURCES)) 8 | PDFFILES=$(subst .dot,.pdf,$(DOTFILES)) 9 | PNGFILES=$(subst .dot,.png,$(DOTFILES)) 10 | 11 | all: $(DOTFILES) $(PDFFILES) $(PNGFILES) 12 | 13 | clean: 14 | rm -f $(DOTFILES) 15 | 16 | %.dot : %.java 17 | umlgraph $(subst .java,,$<) dot 18 | 19 | #http://stackoverflow.com/questions/14784405/how-to-set-the-output-size-in-graphviz-for-the-dot-format 20 | #Max google doc resolution is 3500 by 2500 pixels, so we scale to that... 21 | %.png : %.dot 22 | dot -Tpng -Gsize=35,25! -Gdpi=100 -o $@ $< 23 | 24 | %.pdf : %.dot 25 | dot -Tpdf -o $@ $< 26 | -------------------------------------------------------------------------------- /fabfile.py: -------------------------------------------------------------------------------- 1 | from assembl.fabfile import * 2 | -------------------------------------------------------------------------------- /maintenance.ini: -------------------------------------------------------------------------------- 1 | [app:main] 2 | use = egg:assembl#maintenance 3 | available_languages = fr en 4 | 5 | [server:main] 6 | use = egg:waitress#main 7 | host = 0.0.0.0 8 | #Default port is 6543 9 | port = 6543 10 | 11 | [uwsgi] 12 | umask = 000 13 | master = 1 14 | processes = 1 15 | lazy = 1 16 | die-on-term = 1 17 | socket = %d/var/run/uwsgi.sock 18 | stats = %d/var/run/uwsgi_stats.sock 19 | plugin=python 20 | virtualenv=%dvenv 21 | pythonpath=%d 22 | paste=config://%d%s 23 | -------------------------------------------------------------------------------- /message-extraction.ini: -------------------------------------------------------------------------------- 1 | [python: views/**.py] 2 | [python: lib/*.py] 3 | [python: auth/*.py] 4 | [python: models/*.py] 5 | [python: tasks/*.py] 6 | [python: nlp/*.py] 7 | [jinja2: templates/**.jinja2] 8 | [jinja2: templates/**.tmpl] 9 | [javascript: static/js/app/**.js] 10 | extract_messages = i18n.gettext, i18n.ngettext 11 | encoding = utf-8 12 | -------------------------------------------------------------------------------- /requirements_chrouter.in: -------------------------------------------------------------------------------- 1 | -e git+https://github.com/conversence/pyoembed.git@async#egg=pyoembed 2 | -e git+https://github.com/conversence/sockjs.git@juanjoa#egg=sockjs 3 | chardet==5.2.0 4 | aiocache==0.12.3 5 | aiocontextvars==0.2.2 ; python_version < '3.7' 6 | aiohttp==3.11.11 7 | # aiohttp-cors==0.7.0 8 | 9 | # Those chrouter reqs repeat requirements in requirements.in, keep in sync. 10 | PyJWT==2.10.1 11 | pytz==2024.2 12 | pyzmq==26.2.0 13 | sentry-sdk==2.20.0 14 | simplejson==3.19.3 15 | -------------------------------------------------------------------------------- /requirements_dev.in: -------------------------------------------------------------------------------- 1 | -e git+https://github.com/assembl/sqltap.git@readonly_binds#egg=sqltap 2 | ipython==8.31.0 3 | pyramid-debugtoolbar-ajax==0.1.5 4 | pyramid-debugtoolbar==4.12.1 5 | pyramid-ipython==0.2 6 | -------------------------------------------------------------------------------- /requirements_doc.in: -------------------------------------------------------------------------------- 1 | # Until https://github.com/SurveyMonkey/pyramid_autodoc/pull/12 is merged 2 | -e git+https://github.com/matthewnorman/pyramid_autodoc@sphinx_161_no_domains_v2#egg=pyramid_autodoc 3 | cornice_sphinx==0.4 4 | # https://github.com/Cornices/cornice.ext.sphinx/issues/22 5 | Sphinx==3.5.4 6 | sphinxcontrib-httpdomain==1.8.1 7 | sphinxcontrib-zopeext==0.3.2 8 | sqlalchemy-schemadisplay==1.4 9 | -------------------------------------------------------------------------------- /requirements_tests.in: -------------------------------------------------------------------------------- 1 | -e git+https://github.com/conversence/jasmine-splinter-runner.git#egg=jasmine-splinter-runner 2 | codecov==2.1.13 3 | flaky==3.8.1 4 | mock==5.1.0 5 | pytest-cov==6.0.0 6 | pytest-localserver==0.9.0.post0 7 | pytest-mock==3.14.0 8 | pytest-splinter==3.3.2 9 | pytest==8.3.4 10 | WebTest==3.0.3 11 | # Do I still need this? 12 | # cov-core==1.15.0 13 | -------------------------------------------------------------------------------- /setup.cfg: -------------------------------------------------------------------------------- 1 | [compile_catalog] 2 | directory = assembl/locale 3 | domain = assembl 4 | statistics = true 5 | 6 | [extract_messages] 7 | add_comments = TRANSLATORS: 8 | output_file = assembl/locale/assembl.pot 9 | width = 80 10 | mapping_file = message-extraction.ini 11 | 12 | [init_catalog] 13 | domain = assembl 14 | input_file = assembl/locale/assembl.pot 15 | output_dir = assembl/locale 16 | 17 | [update_catalog] 18 | domain = assembl 19 | input_file = assembl/locale/assembl.pot 20 | output_dir = assembl/locale 21 | previous = true 22 | 23 | [tool:pytest] 24 | python_files=test* 25 | test-settings-file=testing.ini 26 | logging-level=INFO 27 | addopts = --splinter-webdriver chrome 28 | norecursedirs=bower static 29 | -------------------------------------------------------------------------------- /var/log/.gitignore: -------------------------------------------------------------------------------- 1 | *.log 2 | 3 | -------------------------------------------------------------------------------- /var/run/.gitignore: -------------------------------------------------------------------------------- 1 | *.pid 2 | *.sock 3 | --------------------------------------------------------------------------------