def get_vars_js(self):
     return {'urls': {'import_data': plugin_url_rule_to_js('importer.import_data'),
                      'importers': plugin_url_rule_to_js('importer.importers'),
                      'day_end_date': plugin_url_rule_to_js('importer.day_end_date'),
                      'block_end_date': plugin_url_rule_to_js('importer.block_end_date'),
                      'add_contrib': url_rule_to_js('timetable.add_contribution'),
                      'create_subcontrib_rest': url_rule_to_js('contributions.create_subcontrib_rest'),
                      'create_contrib_reference_rest': url_rule_to_js('contributions.create_contrib_reference_rest'),
                      'create_subcontrib_reference_rest': url_rule_to_js('contributions'
                                                                         '.create_subcontrib_reference_rest'),
                      'add_link': url_rule_to_js('attachments.add_link')}}
Exemple #2
0
 def get_vars_js(self):
     return {'urls': {'import_data': plugin_url_rule_to_js('importer.import_data'),
                      'importers': plugin_url_rule_to_js('importer.importers'),
                      'day_end_date': plugin_url_rule_to_js('importer.day_end_date'),
                      'block_end_date': plugin_url_rule_to_js('importer.block_end_date'),
                      'add_contrib': url_rule_to_js('timetable.add_contribution'),
                      'create_subcontrib_rest': url_rule_to_js('contributions.create_subcontrib_rest'),
                      'create_contrib_reference_rest': url_rule_to_js('contributions.create_contrib_reference_rest'),
                      'create_subcontrib_reference_rest': url_rule_to_js('contributions'
                                                                         '.create_subcontrib_reference_rest'),
                      'add_link': url_rule_to_js('attachments.add_link')}}
Exemple #3
0
def generate_global_file():
    ext_auths = [{
        'name': auth.name,
        'title': auth.title,
        'supports_groups': auth.supports_groups
    } for auth in multipass.identity_providers.values()
                 if auth.supports_search]

    indico_vars = {
        'ExperimentalEditingService': config.EXPERIMENTAL_EDITING_SERVICE,
        'Urls': {
            'Base':
            config.BASE_URL,
            'BasePath':
            url_parse(config.BASE_URL).path.rstrip('/'),
            'ExportAPIBase':
            url_for('api.httpapi', prefix='export'),
            'APIBase':
            url_for('api.httpapi', prefix='api'),
            'ImagesBase':
            config.IMAGES_BASE_URL,
            'Login':
            url_for_login(),
            'AttachmentManager':
            url_rule_to_js('attachments.management'),
            'ManagementAttachmentInfoColumn':
            url_rule_to_js('attachments.management_info_column'),
            'APIKeyCreate':
            url_for('api.key_create'),
            'APIKeyTogglePersistent':
            url_for('api.key_toggle_persistent'),
            'FontSassBundle':
            current_app.manifest['fonts.css']._paths,
            'EventCreation':
            url_rule_to_js('events.create'),
            'PermissionsDialog':
            url_rule_to_js('event_management.permissions_dialog'),
            'RegistrationForm': {
                'section': {
                    'add':
                    url_rule_to_angular('event_registration.add_section'),
                    'modify':
                    url_rule_to_angular('event_registration.modify_section'),
                    'toggle':
                    url_rule_to_angular('event_registration.toggle_section'),
                    'move':
                    url_rule_to_angular('event_registration.move_section')
                },
                'field': {
                    'add':
                    url_rule_to_angular('event_registration.add_field'),
                    'modify':
                    url_rule_to_angular('event_registration.modify_field'),
                    'toggle':
                    url_rule_to_angular('event_registration.toggle_field'),
                    'move':
                    url_rule_to_angular('event_registration.move_field')
                },
                'text': {
                    'add': url_rule_to_angular('event_registration.add_text'),
                    'modify':
                    url_rule_to_angular('event_registration.modify_text'),
                    'toggle':
                    url_rule_to_angular('event_registration.toggle_text'),
                    'move': url_rule_to_angular('event_registration.move_text')
                }
            },
            'Timetable': {
                'management': url_rule_to_js('timetable.management'),
                'default_pdf': url_rule_to_js('timetable.export_default_pdf'),
                'pdf': url_rule_to_js('timetable.export_pdf'),
                'reschedule': url_rule_to_js('timetable.reschedule'),
                'breaks': {
                    'add': url_rule_to_js('timetable.add_break')
                },
                'contributions': {
                    'add':
                    url_rule_to_js('timetable.add_contribution'),
                    'notScheduled':
                    url_rule_to_js('timetable.not_scheduled'),
                    'schedule':
                    url_rule_to_js('timetable.schedule'),
                    'protection':
                    url_rule_to_js('contributions.manage_contrib_protection'),
                    'clone':
                    url_rule_to_js('timetable.clone_contribution')
                },
                'sessionBlocks': {
                    'add': url_rule_to_js('timetable.add_session_block'),
                    'fit': url_rule_to_js('timetable.fit_session_block')
                },
                'sessions': {
                    'add': url_rule_to_js('timetable.add_session')
                },
                'entries': {
                    'delete': url_rule_to_js('timetable.delete_entry'),
                    'edit': url_rule_to_js('timetable.edit_entry'),
                    'editDatetime':
                    url_rule_to_js('timetable.edit_entry_datetime'),
                    'editTime': url_rule_to_js('timetable.edit_entry_time'),
                    'move': url_rule_to_js('timetable.move_entry'),
                    'shift': url_rule_to_js('timetable.shift_entries'),
                    'swap': url_rule_to_js('timetable.swap_entries'),
                    'info': {
                        'display': url_rule_to_js('timetable.entry_info'),
                        'manage':
                        url_rule_to_js('timetable.entry_info_manage'),
                    },
                }
            },
            'Contributions': {
                'display_contribution':
                url_rule_to_js('contributions.display_contribution')
            },
            'Sessions': {
                'display_session': url_rule_to_js('sessions.display_session')
            },
            'Categories': {
                'display': url_rule_to_js('categories.display'),
                'info': url_rule_to_js('categories.info'),
                'infoFrom': url_rule_to_js('categories.info_from'),
                'search': url_rule_to_js('categories.search')
            }
        },
        'Data': {
            'WeekDays': [
                'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday',
                'Friday', 'Saturday'
            ],
        },
        'Settings': {
            'ExtAuthenticators': ext_auths,
        },
        'FileRestrictions': {
            'MaxUploadFilesTotalSize': config.MAX_UPLOAD_FILES_TOTAL_SIZE,
            'MaxUploadFileSize': config.MAX_UPLOAD_FILE_SIZE
        }
    }

    return render_template('assets/vars_globals.js',
                           indico_vars=indico_vars,
                           config=config)
Exemple #4
0
def plugin_url_rule_to_js(endpoint):
    """Like :func:`~indico.web.flask.util.url_rule_to_js` but prepending plugin name prefix to the endpoint"""
    if '.' in endpoint[1:]:  # 'foo' or '.foo' should not get the prefix
        endpoint = 'plugin_{}'.format(endpoint)
    return url_rule_to_js(endpoint)
Exemple #5
0
def plugin_url_rule_to_js(endpoint):
    """Like :func:`~indico.web.flask.util.url_rule_to_js` but prepending plugin name prefix to the endpoint"""
    if '.' in endpoint[1:]:  # 'foo' or '.foo' should not get the prefix
        endpoint = 'plugin_{}'.format(endpoint)
    return url_rule_to_js(endpoint)
Exemple #6
0
def generate_global_file(config):
    locations = Location.find_all() if config.getIsRoomBookingActive() else []
    location_names = {loc.name: loc.name for loc in locations}
    default_location = next((loc.name for loc in locations if loc.is_default), None)
    ext_auths = [(auth.id, auth.name) for auth in AuthenticatorMgr().getList() if auth.id != 'Local']
    file_type_icons = dict((k.lower(), v[2]) for k, v in config.getFileTypes().iteritems())
    material_types = dict((evt_type, [(m, m.title()) for m in MaterialFactoryRegistry._allowedMaterials[evt_type]])
                          for evt_type in ['meeting', 'simple_event', 'conference', 'category'])

    indico_vars = {
        'FileTypeIcons': file_type_icons,

        'Urls': {
            'ImagesBase': config.getImagesBaseURL(),
            'SecureImagesBase': config.getImagesBaseSecureURL(),

            'Login': urlHandlers.UHSignIn.getURL().js_router,
            'Favourites': urlHandlers.UHUserBaskets.getURL(_ignore_static=True).js_router,

            'ConferenceDisplay': urlHandlers.UHConferenceDisplay.getURL(_ignore_static=True).js_router,
            'ContributionDisplay': urlHandlers.UHContributionDisplay.getURL(_ignore_static=True).js_router,
            'SessionDisplay': urlHandlers.UHSessionDisplay.getURL(_ignore_static=True).js_router,

            'ContribToXML': urlHandlers.UHContribToXML.getURL(_ignore_static=True).js_router,
            'ContribToPDF': urlHandlers.UHContribToPDF.getURL(_ignore_static=True).js_router,

            'ConfTimeTablePDF': urlHandlers.UHConfTimeTablePDF.getURL(_ignore_static=True).js_router,
            'ConfTimeTableCustomPDF': urlHandlers.UHConfTimeTableCustomizePDF.getURL(_ignore_static=True).js_router,

            'SessionModification': urlHandlers.UHSessionModification.getURL(_ignore_static=True).js_router,
            'ContributionModification': urlHandlers.UHContributionModification.getURL(_ignore_static=True).js_router,
            'SessionProtection': urlHandlers.UHSessionModifAC.getURL(_ignore_static=True).js_router,
            'ContributionProtection': urlHandlers.UHContribModifAC.getURL(_ignore_static=True).js_router,

            'Reschedule': urlHandlers.UHConfModifReschedule.getURL(_ignore_static=True).js_router,
            'SlotCalc': urlHandlers.UHSessionModSlotCalc.getURL(_ignore_static=True).js_router,
            'FitSessionSlot': urlHandlers.UHSessionFitSlot.getURL(_ignore_static=True).js_router,

            'UploadAction': {
                'subcontribution': urlHandlers.UHSubContribModifAddMaterials.getURL(_ignore_static=True).js_router,
                'contribution': urlHandlers.UHContribModifAddMaterials.getURL(_ignore_static=True).js_router,
                'session': urlHandlers.UHSessionModifAddMaterials.getURL(_ignore_static=True).js_router,
                'conference': urlHandlers.UHConfModifAddMaterials.getURL(_ignore_static=True).js_router,
                'category': urlHandlers.UHCategoryAddMaterial.getURL(_ignore_static=True).js_router
            },

            'RoomBookingBookRoom': url_rule_to_js('rooms.room_book'),
            'RoomBookingBook': url_rule_to_js('rooms.book'),
            'RoomBookingDetails': urlHandlers.UHRoomBookingRoomDetails.getURL(_ignore_static=True).js_router,
            'RoomBookingCloneBooking': url_rule_to_js('rooms.roomBooking-cloneBooking'),
            'ConfModifSchedule': urlHandlers.UHConfModifSchedule.getURL(_ignore_static=True).js_router,
            'SubcontrModif': urlHandlers.UHContribModifSubCont.getURL(_ignore_static=True).js_router,
            'AuthorDisplay': urlHandlers.UHContribAuthorDisplay.getURL(_ignore_static=True).js_router,
            'AuthorEmail': urlHandlers.UHConferenceEmail.getURL(_ignore_static=True).js_router
        },

        'Data': {
            'MaterialTypes': material_types,
            'WeekDays': ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
            'DefaultLocation': default_location,
            'Locations': location_names
        },

        'Security': {
            'allowedTags': ','.join(security_tools.allowedTags),
            'allowedAttributes': ','.join(security_tools.allowedAttrs),
            'allowedCssProperties': ','.join(security_tools.allowedCssProperties),
            'allowedProtocols': ','.join(security_tools.allowedProtocols),
            'urlProperties': ','.join(security_tools.urlProperties),
            'sanitizationLevel': config.getSanitizationLevel()
        },

        'Settings': {
            'ExtAuthenticators': ext_auths,
            'RoomBookingModuleActive': config.getIsRoomBookingActive()
        },

        'FileRestrictions': {
            'MaxUploadFilesTotalSize': config.getMaxUploadFilesTotalSize(),
            'MaxUploadFileSize': config.getMaxUploadFileSize()
        },

        'PDFConversion': {
            'AvailablePDFConversions': fileConverter.CDSConvFileConverter.getAvailableConversions(),
            'HasFileConverter': config.hasFileConverter()
        }
    }

    return render_template('assets/vars_globals.js', indico_vars=indico_vars, config=config, url_handlers=urlHandlers)
Exemple #7
0
def generate_global_file(config):
    locations = Location.find_all() if config.getIsRoomBookingActive() else []
    location_names = {loc.name: loc.name for loc in locations}
    default_location = next((loc.name for loc in locations if loc.is_default), None)
    ext_auths = [{
        'name': auth.name,
        'title': auth.title,
        'supports_groups': auth.supports_groups
    } for auth in multipass.identity_providers.itervalues() if auth.supports_search]
    file_type_icons = dict((k.lower(), v[2]) for k, v in config.getFileTypes().iteritems())

    indico_vars = {
        'FileTypeIcons': file_type_icons,

        'Urls': {
            'BasePath': url_parse(config.getBaseURL()).path.rstrip('/'),
            'JsonRpcService': url_for('api.jsonrpc'),
            'ExportAPIBase': url_for('api.httpapi', prefix='export'),
            'APIBase': url_for('api.httpapi', prefix='api'),

            'ImagesBase': config.getImagesBaseURL(),
            'SecureImagesBase': config.getImagesBaseSecureURL(),

            'Login': url_for_login(),
            'Favorites': url_for('users.user_favorites'),
            'FavoriteUserAdd': url_for('users.user_favorites_users_add'),
            'FavoriteUserRemove': url_rule_to_js('users.user_favorites_user_remove'),

            'ConferenceDisplay': urlHandlers.UHConferenceDisplay.getURL(_ignore_static=True).js_router,

            'AttachmentManager': url_rule_to_js('attachments.management'),
            'ManagementAttachmentInfoColumn': url_rule_to_js('attachments.management_info_column'),

            'RoomBookingBookRoom': url_rule_to_js('rooms.room_book'),
            'RoomBookingBook': url_rule_to_js('rooms.book'),
            'RoomBookingDetails': urlHandlers.UHRoomBookingRoomDetails.getURL(_ignore_static=True).js_router,
            'RoomBookingCloneBooking': url_rule_to_js('rooms.roomBooking-cloneBooking'),

            'APIKeyCreate': url_for('api.key_create'),
            'APIKeyTogglePersistent': url_for('api.key_toggle_persistent'),
            'FontSassBundle': core_env['fonts_sass'].urls(),

            'RegistrationForm': {
                'section': {
                    'add': url_rule_to_angular('event_registration.add_section'),
                    'modify': url_rule_to_angular('event_registration.modify_section'),
                    'toggle': url_rule_to_angular('event_registration.toggle_section'),
                    'move': url_rule_to_angular('event_registration.move_section')
                },
                'field': {
                    'add': url_rule_to_angular('event_registration.add_field'),
                    'modify': url_rule_to_angular('event_registration.modify_field'),
                    'toggle': url_rule_to_angular('event_registration.toggle_field'),
                    'move': url_rule_to_angular('event_registration.move_field')
                },
                'text': {
                    'add': url_rule_to_angular('event_registration.add_text'),
                    'modify': url_rule_to_angular('event_registration.modify_text'),
                    'toggle': url_rule_to_angular('event_registration.toggle_text'),
                    'move': url_rule_to_angular('event_registration.move_text')
                }
            },

            'Timetable': {
                'management': url_rule_to_js('timetable.management'),
                'default_pdf': url_rule_to_js('timetable.export_default_pdf'),
                'pdf': url_rule_to_js('timetable.export_pdf'),
                'reschedule': url_rule_to_js('timetable.reschedule'),
                'breaks': {
                    'add': url_rule_to_js('timetable.add_break')
                },
                'contributions': {
                    'add': url_rule_to_js('timetable.add_contribution'),
                    'notScheduled': url_rule_to_js('timetable.not_scheduled'),
                    'schedule': url_rule_to_js('timetable.schedule'),
                    'protection': url_rule_to_js('contributions.manage_contrib_protection')
                },
                'sessionBlocks': {
                    'add': url_rule_to_js('timetable.add_session_block'),
                    'fit': url_rule_to_js('timetable.fit_session_block')
                },
                'sessions': {
                    'add': url_rule_to_js('timetable.add_session')
                },
                'entries': {
                    'delete': url_rule_to_js('timetable.delete_entry'),
                    'edit': url_rule_to_js('timetable.edit_entry'),
                    'editDatetime': url_rule_to_js('timetable.edit_entry_datetime'),
                    'editTime': url_rule_to_js('timetable.edit_entry_time'),
                    'move': url_rule_to_js('timetable.move_entry'),
                    'shift': url_rule_to_js('timetable.shift_entries'),
                    'info': {
                        'display': url_rule_to_js('timetable.entry_info'),
                        'manage': url_rule_to_js('timetable.entry_info_manage'),
                    },
                }
            },

            'Contributions': {
                'display_contribution': url_rule_to_js('contributions.display_contribution')
            },

            'Sessions': {
                'display_session': url_rule_to_js('sessions.display_session')
            }
        },

        'Data': {
            'WeekDays': ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
            'DefaultLocation': default_location,
            'Locations': location_names
        },

        'Security': {
            'allowedTags': ','.join(security_tools.allowedTags),
            'allowedAttributes': ','.join(security_tools.allowedAttrs),
            'allowedCssProperties': ','.join(security_tools.allowedCssProperties),
            'allowedProtocols': ','.join(security_tools.allowedProtocols),
            'urlProperties': ','.join(security_tools.urlProperties),
            'sanitizationLevel': config.getSanitizationLevel()
        },

        'Settings': {
            'ExtAuthenticators': ext_auths,
            'RoomBookingModuleActive': config.getIsRoomBookingActive()
        },

        'FileRestrictions': {
            'MaxUploadFilesTotalSize': config.getMaxUploadFilesTotalSize(),
            'MaxUploadFileSize': config.getMaxUploadFileSize()
        }
    }

    return render_template('assets/vars_globals.js', indico_vars=indico_vars, config=config, url_handlers=urlHandlers)
Exemple #8
0
def generate_global_file():
    locations = Location.find_all() if config.ENABLE_ROOMBOOKING else []
    location_names = {loc.name: loc.name for loc in locations}
    default_location = next((loc.name for loc in locations if loc.is_default),
                            None)
    ext_auths = [{
        'name': auth.name,
        'title': auth.title,
        'supports_groups': auth.supports_groups
    } for auth in multipass.identity_providers.itervalues()
                 if auth.supports_search]

    indico_vars = {
        'Urls': {
            'Base':
            config.BASE_URL,
            'BasePath':
            url_parse(config.BASE_URL).path.rstrip('/'),
            'JsonRpcService':
            url_for('api.jsonrpc'),
            'ExportAPIBase':
            url_for('api.httpapi', prefix='export'),
            'APIBase':
            url_for('api.httpapi', prefix='api'),
            'ImagesBase':
            config.IMAGES_BASE_URL,
            'Login':
            url_for_login(),
            'Favorites':
            url_for('users.user_favorites'),
            'FavoriteUserAdd':
            url_for('users.user_favorites_users_add'),
            'FavoriteUserRemove':
            url_rule_to_js('users.user_favorites_user_remove'),
            'AttachmentManager':
            url_rule_to_js('attachments.management'),
            'ManagementAttachmentInfoColumn':
            url_rule_to_js('attachments.management_info_column'),
            'RoomBookingBookRoom':
            url_rule_to_js('rooms.room_book'),
            'RoomBookingBook':
            url_rule_to_js('rooms.book'),
            'RoomBookingDetails':
            url_rule_to_js('rooms.roomBooking-roomDetails'),
            'RoomBookingCloneBooking':
            url_rule_to_js('rooms.roomBooking-cloneBooking'),
            'APIKeyCreate':
            url_for('api.key_create'),
            'APIKeyTogglePersistent':
            url_for('api.key_toggle_persistent'),
            'FontSassBundle':
            core_env['fonts_sass'].urls(),
            'EventCreation':
            url_rule_to_js('events.create'),
            'RegistrationForm': {
                'section': {
                    'add':
                    url_rule_to_angular('event_registration.add_section'),
                    'modify':
                    url_rule_to_angular('event_registration.modify_section'),
                    'toggle':
                    url_rule_to_angular('event_registration.toggle_section'),
                    'move':
                    url_rule_to_angular('event_registration.move_section')
                },
                'field': {
                    'add':
                    url_rule_to_angular('event_registration.add_field'),
                    'modify':
                    url_rule_to_angular('event_registration.modify_field'),
                    'toggle':
                    url_rule_to_angular('event_registration.toggle_field'),
                    'move':
                    url_rule_to_angular('event_registration.move_field')
                },
                'text': {
                    'add': url_rule_to_angular('event_registration.add_text'),
                    'modify':
                    url_rule_to_angular('event_registration.modify_text'),
                    'toggle':
                    url_rule_to_angular('event_registration.toggle_text'),
                    'move': url_rule_to_angular('event_registration.move_text')
                }
            },
            'Timetable': {
                'management': url_rule_to_js('timetable.management'),
                'default_pdf': url_rule_to_js('timetable.export_default_pdf'),
                'pdf': url_rule_to_js('timetable.export_pdf'),
                'reschedule': url_rule_to_js('timetable.reschedule'),
                'breaks': {
                    'add': url_rule_to_js('timetable.add_break')
                },
                'contributions': {
                    'add':
                    url_rule_to_js('timetable.add_contribution'),
                    'notScheduled':
                    url_rule_to_js('timetable.not_scheduled'),
                    'schedule':
                    url_rule_to_js('timetable.schedule'),
                    'protection':
                    url_rule_to_js('contributions.manage_contrib_protection')
                },
                'sessionBlocks': {
                    'add': url_rule_to_js('timetable.add_session_block'),
                    'fit': url_rule_to_js('timetable.fit_session_block')
                },
                'sessions': {
                    'add': url_rule_to_js('timetable.add_session')
                },
                'entries': {
                    'delete': url_rule_to_js('timetable.delete_entry'),
                    'edit': url_rule_to_js('timetable.edit_entry'),
                    'editDatetime':
                    url_rule_to_js('timetable.edit_entry_datetime'),
                    'editTime': url_rule_to_js('timetable.edit_entry_time'),
                    'move': url_rule_to_js('timetable.move_entry'),
                    'shift': url_rule_to_js('timetable.shift_entries'),
                    'swap': url_rule_to_js('timetable.swap_entries'),
                    'info': {
                        'display': url_rule_to_js('timetable.entry_info'),
                        'manage':
                        url_rule_to_js('timetable.entry_info_manage'),
                    },
                }
            },
            'Contributions': {
                'display_contribution':
                url_rule_to_js('contributions.display_contribution')
            },
            'Sessions': {
                'display_session': url_rule_to_js('sessions.display_session')
            },
            'Categories': {
                'info': url_rule_to_js('categories.info'),
                'infoFrom': url_rule_to_js('categories.info_from'),
                'search': url_rule_to_js('categories.search')
            }
        },
        'Data': {
            'WeekDays': [
                'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday',
                'Friday', 'Saturday'
            ],
            'DefaultLocation':
            default_location,
            'Locations':
            location_names
        },
        'Settings': {
            'ExtAuthenticators': ext_auths,
            'RoomBookingModuleActive': config.ENABLE_ROOMBOOKING
        },
        'FileRestrictions': {
            'MaxUploadFilesTotalSize': config.MAX_UPLOAD_FILES_TOTAL_SIZE,
            'MaxUploadFileSize': config.MAX_UPLOAD_FILE_SIZE
        }
    }

    return render_template('assets/vars_globals.js',
                           indico_vars=indico_vars,
                           config=config)
Exemple #9
0
 def js_router(self):
     return url_rule_to_js(self._endpoint)
Exemple #10
0
def generate_global_file(config):
    locations = Location.find_all() if config.getIsRoomBookingActive() else []
    location_names = {loc.name: loc.name for loc in locations}
    default_location = next((loc.name for loc in locations if loc.is_default), None)
    ext_auths = [{
        'name': auth.name,
        'title': auth.title,
        'supports_groups': auth.supports_groups
    } for auth in multipass.identity_providers.itervalues() if auth.supports_search]
    file_type_icons = dict((k.lower(), v[2]) for k, v in config.getFileTypes().iteritems())

    indico_vars = {
        'FileTypeIcons': file_type_icons,

        'Urls': {
            'BasePath': url_parse(config.getBaseURL()).path.rstrip('/'),
            'JsonRpcService': url_for('api.jsonrpc'),
            'ExportAPIBase': url_for('api.httpapi', prefix='export'),
            'APIBase': url_for('api.httpapi', prefix='api'),

            'ImagesBase': config.getImagesBaseURL(),
            'SecureImagesBase': config.getImagesBaseSecureURL(),

            'Login': url_for_login(),
            'Favorites': url_for('users.user_favorites'),
            'FavoriteUserAdd': url_for('users.user_favorites_users_add'),
            'FavoriteUserRemove': url_rule_to_js('users.user_favorites_user_remove'),

            'ConferenceDisplay': urlHandlers.UHConferenceDisplay.getURL(_ignore_static=True).js_router,
            'ContributionDisplay': urlHandlers.UHContributionDisplay.getURL(_ignore_static=True).js_router,
            'SessionDisplay': urlHandlers.UHSessionDisplay.getURL(_ignore_static=True).js_router,

            'ContribToXML': urlHandlers.UHContribToXML.getURL(_ignore_static=True).js_router,
            'ContribToPDF': urlHandlers.UHContribToPDF.getURL(_ignore_static=True).js_router,

            'ConfTimeTablePDF': urlHandlers.UHConfTimeTablePDF.getURL(_ignore_static=True).js_router,
            'ConfTimeTableCustomPDF': urlHandlers.UHConfTimeTableCustomizePDF.getURL(_ignore_static=True).js_router,

            'SessionModification': urlHandlers.UHSessionModification.getURL(_ignore_static=True).js_router,
            'ContributionModification': urlHandlers.UHContributionModification.getURL(_ignore_static=True).js_router,
            'SessionProtection': urlHandlers.UHSessionModifAC.getURL(_ignore_static=True).js_router,
            'ContributionProtection': urlHandlers.UHContribModifAC.getURL(_ignore_static=True).js_router,

            'Reschedule': urlHandlers.UHConfModifReschedule.getURL(_ignore_static=True).js_router,
            'SlotCalc': urlHandlers.UHSessionModSlotCalc.getURL(_ignore_static=True).js_router,
            'FitSessionSlot': urlHandlers.UHSessionFitSlot.getURL(_ignore_static=True).js_router,

            'UploadAction': {
                'contribution': urlHandlers.UHContribModifAddMaterials.getURL(_ignore_static=True).js_router,
            },
            'AttachmentManager': url_rule_to_js('attachments.management'),

            'RoomBookingBookRoom': url_rule_to_js('rooms.room_book'),
            'RoomBookingBook': url_rule_to_js('rooms.book'),
            'RoomBookingDetails': urlHandlers.UHRoomBookingRoomDetails.getURL(_ignore_static=True).js_router,
            'RoomBookingCloneBooking': url_rule_to_js('rooms.roomBooking-cloneBooking'),
            'ConfModifSchedule': urlHandlers.UHConfModifSchedule.getURL(_ignore_static=True).js_router,
            'SubcontrModif': urlHandlers.UHContribModifSubCont.getURL(_ignore_static=True).js_router,
            'AuthorDisplay': urlHandlers.UHContribAuthorDisplay.getURL(_ignore_static=True).js_router,
            'AuthorEmail': urlHandlers.UHConferenceEmail.getURL(_ignore_static=True).js_router,

            'APIKeyCreate': url_for('api.key_create'),
            'APIKeyTogglePersistent': url_for('api.key_toggle_persistent'),
            'FontSassBundle': core_env['fonts_sass'].urls()
        },

        'Data': {
            'WeekDays': ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
            'DefaultLocation': default_location,
            'Locations': location_names
        },

        'Security': {
            'allowedTags': ','.join(security_tools.allowedTags),
            'allowedAttributes': ','.join(security_tools.allowedAttrs),
            'allowedCssProperties': ','.join(security_tools.allowedCssProperties),
            'allowedProtocols': ','.join(security_tools.allowedProtocols),
            'urlProperties': ','.join(security_tools.urlProperties),
            'sanitizationLevel': config.getSanitizationLevel()
        },

        'Settings': {
            'ExtAuthenticators': ext_auths,
            'RoomBookingModuleActive': config.getIsRoomBookingActive()
        },

        'FileRestrictions': {
            'MaxUploadFilesTotalSize': config.getMaxUploadFilesTotalSize(),
            'MaxUploadFileSize': config.getMaxUploadFileSize()
        }
    }

    return render_template('assets/vars_globals.js', indico_vars=indico_vars, config=config, url_handlers=urlHandlers)
Exemple #11
0
def generate_global_file(config):
    locations = Location.find_all() if config.getIsRoomBookingActive() else []
    location_names = {loc.name: loc.name for loc in locations}
    default_location = next((loc.name for loc in locations if loc.is_default), None)
    ext_auths = [
        {"name": auth.name, "title": auth.title, "supports_groups": auth.supports_groups}
        for auth in multipass.identity_providers.itervalues()
        if auth.supports_search
    ]
    file_type_icons = dict((k.lower(), v[2]) for k, v in config.getFileTypes().iteritems())
    material_types = dict(
        (evt_type, [(m, m.title()) for m in MaterialFactoryRegistry._allowedMaterials[evt_type]])
        for evt_type in ["meeting", "simple_event", "conference", "category"]
    )

    indico_vars = {
        "FileTypeIcons": file_type_icons,
        "Urls": {
            "BasePath": url_parse(config.getBaseURL()).path.rstrip("/"),
            "JsonRpcService": url_for("api.jsonrpc"),
            "ExportAPIBase": url_for("api.httpapi", prefix="export"),
            "APIBase": url_for("api.httpapi", prefix="api"),
            "ImagesBase": config.getImagesBaseURL(),
            "SecureImagesBase": config.getImagesBaseSecureURL(),
            "Login": url_for_login(),
            "Favorites": url_for("users.user_favorites"),
            "FavoriteUserAdd": url_for("users.user_favorites_users_add"),
            "FavoriteUserRemove": url_rule_to_js("users.user_favorites_user_remove"),
            "ConferenceDisplay": urlHandlers.UHConferenceDisplay.getURL(_ignore_static=True).js_router,
            "ContributionDisplay": urlHandlers.UHContributionDisplay.getURL(_ignore_static=True).js_router,
            "SessionDisplay": urlHandlers.UHSessionDisplay.getURL(_ignore_static=True).js_router,
            "ContribToXML": urlHandlers.UHContribToXML.getURL(_ignore_static=True).js_router,
            "ContribToPDF": urlHandlers.UHContribToPDF.getURL(_ignore_static=True).js_router,
            "ConfTimeTablePDF": urlHandlers.UHConfTimeTablePDF.getURL(_ignore_static=True).js_router,
            "ConfTimeTableCustomPDF": urlHandlers.UHConfTimeTableCustomizePDF.getURL(_ignore_static=True).js_router,
            "SessionModification": urlHandlers.UHSessionModification.getURL(_ignore_static=True).js_router,
            "ContributionModification": urlHandlers.UHContributionModification.getURL(_ignore_static=True).js_router,
            "SessionProtection": urlHandlers.UHSessionModifAC.getURL(_ignore_static=True).js_router,
            "ContributionProtection": urlHandlers.UHContribModifAC.getURL(_ignore_static=True).js_router,
            "Reschedule": urlHandlers.UHConfModifReschedule.getURL(_ignore_static=True).js_router,
            "SlotCalc": urlHandlers.UHSessionModSlotCalc.getURL(_ignore_static=True).js_router,
            "FitSessionSlot": urlHandlers.UHSessionFitSlot.getURL(_ignore_static=True).js_router,
            "UploadAction": {
                "subcontribution": urlHandlers.UHSubContribModifAddMaterials.getURL(_ignore_static=True).js_router,
                "contribution": urlHandlers.UHContribModifAddMaterials.getURL(_ignore_static=True).js_router,
                "session": urlHandlers.UHSessionModifAddMaterials.getURL(_ignore_static=True).js_router,
                "conference": urlHandlers.UHConfModifAddMaterials.getURL(_ignore_static=True).js_router,
                "category": urlHandlers.UHCategoryAddMaterial.getURL(_ignore_static=True).js_router,
            },
            "RoomBookingBookRoom": url_rule_to_js("rooms.room_book"),
            "RoomBookingBook": url_rule_to_js("rooms.book"),
            "RoomBookingDetails": urlHandlers.UHRoomBookingRoomDetails.getURL(_ignore_static=True).js_router,
            "RoomBookingCloneBooking": url_rule_to_js("rooms.roomBooking-cloneBooking"),
            "ConfModifSchedule": urlHandlers.UHConfModifSchedule.getURL(_ignore_static=True).js_router,
            "SubcontrModif": urlHandlers.UHContribModifSubCont.getURL(_ignore_static=True).js_router,
            "AuthorDisplay": urlHandlers.UHContribAuthorDisplay.getURL(_ignore_static=True).js_router,
            "AuthorEmail": urlHandlers.UHConferenceEmail.getURL(_ignore_static=True).js_router,
            "APIKeyCreate": url_for("api.key_create"),
            "APIKeyTogglePersistent": url_for("api.key_toggle_persistent"),
        },
        "Data": {
            "MaterialTypes": material_types,
            "WeekDays": ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
            "DefaultLocation": default_location,
            "Locations": location_names,
        },
        "Security": {
            "allowedTags": ",".join(security_tools.allowedTags),
            "allowedAttributes": ",".join(security_tools.allowedAttrs),
            "allowedCssProperties": ",".join(security_tools.allowedCssProperties),
            "allowedProtocols": ",".join(security_tools.allowedProtocols),
            "urlProperties": ",".join(security_tools.urlProperties),
            "sanitizationLevel": config.getSanitizationLevel(),
        },
        "Settings": {"ExtAuthenticators": ext_auths, "RoomBookingModuleActive": config.getIsRoomBookingActive()},
        "FileRestrictions": {
            "MaxUploadFilesTotalSize": config.getMaxUploadFilesTotalSize(),
            "MaxUploadFileSize": config.getMaxUploadFileSize(),
        },
        "PDFConversion": {
            "AvailablePDFConversions": fileConverter.CDSConvFileConverter.getAvailableConversions(),
            "HasFileConverter": config.hasFileConverter(),
        },
    }

    return render_template("assets/vars_globals.js", indico_vars=indico_vars, config=config, url_handlers=urlHandlers)
Exemple #12
0
def generate_global_file():
    locations = Location.find_all() if config.ENABLE_ROOMBOOKING else []
    location_names = {loc.name: loc.name for loc in locations}
    default_location = next((loc.name for loc in locations if loc.is_default), None)
    ext_auths = [{
        'name': auth.name,
        'title': auth.title,
        'supports_groups': auth.supports_groups
    } for auth in multipass.identity_providers.itervalues() if auth.supports_search]

    indico_vars = {
        'Urls': {
            'Base': config.BASE_URL,
            'BasePath': url_parse(config.BASE_URL).path.rstrip('/'),
            'JsonRpcService': url_for('api.jsonrpc'),
            'ExportAPIBase': url_for('api.httpapi', prefix='export'),
            'APIBase': url_for('api.httpapi', prefix='api'),

            'ImagesBase': config.IMAGES_BASE_URL,

            'Login': url_for_login(),
            'Favorites': url_for('users.user_favorites'),
            'FavoriteUserAdd': url_for('users.user_favorites_users_add'),
            'FavoriteUserRemove': url_rule_to_js('users.user_favorites_user_remove'),

            'AttachmentManager': url_rule_to_js('attachments.management'),
            'ManagementAttachmentInfoColumn': url_rule_to_js('attachments.management_info_column'),

            'RoomBookingBookRoom': url_rule_to_js('rooms.room_book'),
            'RoomBookingBook': url_rule_to_js('rooms.book'),
            'RoomBookingDetails': url_rule_to_js('rooms.roomBooking-roomDetails'),
            'RoomBookingCloneBooking': url_rule_to_js('rooms.roomBooking-cloneBooking'),

            'APIKeyCreate': url_for('api.key_create'),
            'APIKeyTogglePersistent': url_for('api.key_toggle_persistent'),
            'FontSassBundle': core_env['fonts_sass'].urls(),

            'EventCreation': url_rule_to_js('events.create'),
            'PermissionsDialog': url_rule_to_js('event_management.permissions_dialog'),

            'RegistrationForm': {
                'section': {
                    'add': url_rule_to_angular('event_registration.add_section'),
                    'modify': url_rule_to_angular('event_registration.modify_section'),
                    'toggle': url_rule_to_angular('event_registration.toggle_section'),
                    'move': url_rule_to_angular('event_registration.move_section')
                },
                'field': {
                    'add': url_rule_to_angular('event_registration.add_field'),
                    'modify': url_rule_to_angular('event_registration.modify_field'),
                    'toggle': url_rule_to_angular('event_registration.toggle_field'),
                    'move': url_rule_to_angular('event_registration.move_field')
                },
                'text': {
                    'add': url_rule_to_angular('event_registration.add_text'),
                    'modify': url_rule_to_angular('event_registration.modify_text'),
                    'toggle': url_rule_to_angular('event_registration.toggle_text'),
                    'move': url_rule_to_angular('event_registration.move_text')
                }
            },

            'Timetable': {
                'management': url_rule_to_js('timetable.management'),
                'default_pdf': url_rule_to_js('timetable.export_default_pdf'),
                'pdf': url_rule_to_js('timetable.export_pdf'),
                'reschedule': url_rule_to_js('timetable.reschedule'),
                'breaks': {
                    'add': url_rule_to_js('timetable.add_break')
                },
                'contributions': {
                    'add': url_rule_to_js('timetable.add_contribution'),
                    'notScheduled': url_rule_to_js('timetable.not_scheduled'),
                    'schedule': url_rule_to_js('timetable.schedule'),
                    'protection': url_rule_to_js('contributions.manage_contrib_protection'),
                    'clone': url_rule_to_js('timetable.clone_contribution')
                },
                'sessionBlocks': {
                    'add': url_rule_to_js('timetable.add_session_block'),
                    'fit': url_rule_to_js('timetable.fit_session_block')
                },
                'sessions': {
                    'add': url_rule_to_js('timetable.add_session')
                },
                'entries': {
                    'delete': url_rule_to_js('timetable.delete_entry'),
                    'edit': url_rule_to_js('timetable.edit_entry'),
                    'editDatetime': url_rule_to_js('timetable.edit_entry_datetime'),
                    'editTime': url_rule_to_js('timetable.edit_entry_time'),
                    'move': url_rule_to_js('timetable.move_entry'),
                    'shift': url_rule_to_js('timetable.shift_entries'),
                    'swap': url_rule_to_js('timetable.swap_entries'),
                    'info': {
                        'display': url_rule_to_js('timetable.entry_info'),
                        'manage': url_rule_to_js('timetable.entry_info_manage'),
                    },
                }
            },

            'Contributions': {
                'display_contribution': url_rule_to_js('contributions.display_contribution')
            },

            'Sessions': {
                'display_session': url_rule_to_js('sessions.display_session')
            },

            'Categories': {
                'info': url_rule_to_js('categories.info'),
                'infoFrom': url_rule_to_js('categories.info_from'),
                'search': url_rule_to_js('categories.search')
            }
        },

        'Data': {
            'WeekDays': ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
            'DefaultLocation': default_location,
            'Locations': location_names
        },

        'Settings': {
            'ExtAuthenticators': ext_auths,
            'RoomBookingModuleActive': config.ENABLE_ROOMBOOKING
        },

        'FileRestrictions': {
            'MaxUploadFilesTotalSize': config.MAX_UPLOAD_FILES_TOTAL_SIZE,
            'MaxUploadFileSize': config.MAX_UPLOAD_FILE_SIZE
        }
    }

    return render_template('assets/vars_globals.js', indico_vars=indico_vars, config=config)
Exemple #13
0
 def js_router(self):
     return url_rule_to_js(self._endpoint)
Exemple #14
0
def generate_global_file(config):
    locations = Location.find_all() if config.getIsRoomBookingActive() else []
    location_names = {loc.name: loc.name for loc in locations}
    default_location = next((loc.name for loc in locations if loc.is_default),
                            None)
    ext_auths = [{
        'name': auth.name,
        'title': auth.title,
        'supports_groups': auth.supports_groups
    } for auth in multipass.identity_providers.itervalues()
                 if auth.supports_search]
    file_type_icons = dict(
        (k.lower(), v[2]) for k, v in config.getFileTypes().iteritems())
    material_types = dict(
        (evt_type,
         [(m, m.title())
          for m in MaterialFactoryRegistry._allowedMaterials[evt_type]])
        for evt_type in ['meeting', 'simple_event', 'conference', 'category'])

    indico_vars = {
        'FileTypeIcons': file_type_icons,
        'Urls': {
            'JsonRpcService':
            url_for('api.jsonrpc'),
            'ExportAPIBase':
            url_for('api.httpapi', prefix='export'),
            'APIBase':
            url_for('api.httpapi', prefix='api'),
            'ImagesBase':
            config.getImagesBaseURL(),
            'SecureImagesBase':
            config.getImagesBaseSecureURL(),
            'Login':
            url_for_login(),
            'Favorites':
            url_for('users.user_favorites'),
            'FavoriteUserAdd':
            url_for('users.user_favorites_users_add'),
            'FavoriteUserRemove':
            url_rule_to_js('users.user_favorites_user_remove'),
            'ConferenceDisplay':
            urlHandlers.UHConferenceDisplay.getURL(
                _ignore_static=True).js_router,
            'ContributionDisplay':
            urlHandlers.UHContributionDisplay.getURL(
                _ignore_static=True).js_router,
            'SessionDisplay':
            urlHandlers.UHSessionDisplay.getURL(_ignore_static=True).js_router,
            'ContribToXML':
            urlHandlers.UHContribToXML.getURL(_ignore_static=True).js_router,
            'ContribToPDF':
            urlHandlers.UHContribToPDF.getURL(_ignore_static=True).js_router,
            'ConfTimeTablePDF':
            urlHandlers.UHConfTimeTablePDF.getURL(
                _ignore_static=True).js_router,
            'ConfTimeTableCustomPDF':
            urlHandlers.UHConfTimeTableCustomizePDF.getURL(
                _ignore_static=True).js_router,
            'SessionModification':
            urlHandlers.UHSessionModification.getURL(
                _ignore_static=True).js_router,
            'ContributionModification':
            urlHandlers.UHContributionModification.getURL(
                _ignore_static=True).js_router,
            'SessionProtection':
            urlHandlers.UHSessionModifAC.getURL(_ignore_static=True).js_router,
            'ContributionProtection':
            urlHandlers.UHContribModifAC.getURL(_ignore_static=True).js_router,
            'Reschedule':
            urlHandlers.UHConfModifReschedule.getURL(
                _ignore_static=True).js_router,
            'SlotCalc':
            urlHandlers.UHSessionModSlotCalc.getURL(
                _ignore_static=True).js_router,
            'FitSessionSlot':
            urlHandlers.UHSessionFitSlot.getURL(_ignore_static=True).js_router,
            'UploadAction': {
                'subcontribution':
                urlHandlers.UHSubContribModifAddMaterials.getURL(
                    _ignore_static=True).js_router,
                'contribution':
                urlHandlers.UHContribModifAddMaterials.getURL(
                    _ignore_static=True).js_router,
                'session':
                urlHandlers.UHSessionModifAddMaterials.getURL(
                    _ignore_static=True).js_router,
                'conference':
                urlHandlers.UHConfModifAddMaterials.getURL(
                    _ignore_static=True).js_router,
                'category':
                urlHandlers.UHCategoryAddMaterial.getURL(
                    _ignore_static=True).js_router
            },
            'RoomBookingBookRoom':
            url_rule_to_js('rooms.room_book'),
            'RoomBookingBook':
            url_rule_to_js('rooms.book'),
            'RoomBookingDetails':
            urlHandlers.UHRoomBookingRoomDetails.getURL(
                _ignore_static=True).js_router,
            'RoomBookingCloneBooking':
            url_rule_to_js('rooms.roomBooking-cloneBooking'),
            'ConfModifSchedule':
            urlHandlers.UHConfModifSchedule.getURL(
                _ignore_static=True).js_router,
            'SubcontrModif':
            urlHandlers.UHContribModifSubCont.getURL(
                _ignore_static=True).js_router,
            'AuthorDisplay':
            urlHandlers.UHContribAuthorDisplay.getURL(
                _ignore_static=True).js_router,
            'AuthorEmail':
            urlHandlers.UHConferenceEmail.getURL(
                _ignore_static=True).js_router,
            'APIKeyCreate':
            url_for('api.key_create'),
            'APIKeyTogglePersistent':
            url_for('api.key_toggle_persistent')
        },
        'Data': {
            'MaterialTypes':
            material_types,
            'WeekDays': [
                'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday',
                'Friday', 'Saturday'
            ],
            'DefaultLocation':
            default_location,
            'Locations':
            location_names
        },
        'Security': {
            'allowedTags': ','.join(security_tools.allowedTags),
            'allowedAttributes': ','.join(security_tools.allowedAttrs),
            'allowedCssProperties':
            ','.join(security_tools.allowedCssProperties),
            'allowedProtocols': ','.join(security_tools.allowedProtocols),
            'urlProperties': ','.join(security_tools.urlProperties),
            'sanitizationLevel': config.getSanitizationLevel()
        },
        'Settings': {
            'ExtAuthenticators': ext_auths,
            'RoomBookingModuleActive': config.getIsRoomBookingActive()
        },
        'FileRestrictions': {
            'MaxUploadFilesTotalSize': config.getMaxUploadFilesTotalSize(),
            'MaxUploadFileSize': config.getMaxUploadFileSize()
        },
        'PDFConversion': {
            'AvailablePDFConversions':
            fileConverter.CDSConvFileConverter.getAvailableConversions(),
            'HasFileConverter':
            config.hasFileConverter()
        }
    }

    return render_template('assets/vars_globals.js',
                           indico_vars=indico_vars,
                           config=config,
                           url_handlers=urlHandlers)