Remove old materials from categories
[cds-indico.git] / indico / web / assets / vars_js.py
blob4f9ebcf2f7a42739cca86fc2eca5a3e72c090093
1 # This file is part of Indico.
2 # Copyright (C) 2002 - 2015 European Organization for Nuclear Research (CERN).
4 # Indico is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License as
6 # published by the Free Software Foundation; either version 3 of the
7 # License, or (at your option) any later version.
9 # Indico is distributed in the hope that it will be useful, but
10 # WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 # General Public License for more details.
14 # You should have received a copy of the GNU General Public License
15 # along with Indico; if not, see <http://www.gnu.org/licenses/>.
17 from __future__ import unicode_literals
19 from flask import render_template
20 from werkzeug.urls import url_parse
22 from indico.core.auth import multipass
23 from indico.modules.auth.util import url_for_login
24 from indico.modules.rb.models.locations import Location
25 from indico.web.flask.util import url_rule_to_js, url_for
26 from MaKaC.webinterface.common import tools as security_tools
27 from MaKaC.export import fileConverter
28 from MaKaC.webinterface import urlHandlers
29 from MaKaC.webinterface.materialFactories import MaterialFactoryRegistry
32 def generate_global_file(config):
33 locations = Location.find_all() if config.getIsRoomBookingActive() else []
34 location_names = {loc.name: loc.name for loc in locations}
35 default_location = next((loc.name for loc in locations if loc.is_default), None)
36 ext_auths = [{
37 'name': auth.name,
38 'title': auth.title,
39 'supports_groups': auth.supports_groups
40 } for auth in multipass.identity_providers.itervalues() if auth.supports_search]
41 file_type_icons = dict((k.lower(), v[2]) for k, v in config.getFileTypes().iteritems())
42 material_types = dict((evt_type, [(m, m.title()) for m in MaterialFactoryRegistry._allowedMaterials[evt_type]])
43 for evt_type in ['meeting', 'simple_event', 'conference', 'category'])
45 indico_vars = {
46 'FileTypeIcons': file_type_icons,
48 'Urls': {
49 'BasePath': url_parse(config.getBaseURL()).path.rstrip('/'),
50 'JsonRpcService': url_for('api.jsonrpc'),
51 'ExportAPIBase': url_for('api.httpapi', prefix='export'),
52 'APIBase': url_for('api.httpapi', prefix='api'),
54 'ImagesBase': config.getImagesBaseURL(),
55 'SecureImagesBase': config.getImagesBaseSecureURL(),
57 'Login': url_for_login(),
58 'Favorites': url_for('users.user_favorites'),
59 'FavoriteUserAdd': url_for('users.user_favorites_users_add'),
60 'FavoriteUserRemove': url_rule_to_js('users.user_favorites_user_remove'),
62 'ConferenceDisplay': urlHandlers.UHConferenceDisplay.getURL(_ignore_static=True).js_router,
63 'ContributionDisplay': urlHandlers.UHContributionDisplay.getURL(_ignore_static=True).js_router,
64 'SessionDisplay': urlHandlers.UHSessionDisplay.getURL(_ignore_static=True).js_router,
66 'ContribToXML': urlHandlers.UHContribToXML.getURL(_ignore_static=True).js_router,
67 'ContribToPDF': urlHandlers.UHContribToPDF.getURL(_ignore_static=True).js_router,
69 'ConfTimeTablePDF': urlHandlers.UHConfTimeTablePDF.getURL(_ignore_static=True).js_router,
70 'ConfTimeTableCustomPDF': urlHandlers.UHConfTimeTableCustomizePDF.getURL(_ignore_static=True).js_router,
72 'SessionModification': urlHandlers.UHSessionModification.getURL(_ignore_static=True).js_router,
73 'ContributionModification': urlHandlers.UHContributionModification.getURL(_ignore_static=True).js_router,
74 'SessionProtection': urlHandlers.UHSessionModifAC.getURL(_ignore_static=True).js_router,
75 'ContributionProtection': urlHandlers.UHContribModifAC.getURL(_ignore_static=True).js_router,
77 'Reschedule': urlHandlers.UHConfModifReschedule.getURL(_ignore_static=True).js_router,
78 'SlotCalc': urlHandlers.UHSessionModSlotCalc.getURL(_ignore_static=True).js_router,
79 'FitSessionSlot': urlHandlers.UHSessionFitSlot.getURL(_ignore_static=True).js_router,
81 'UploadAction': {
82 'subcontribution': urlHandlers.UHSubContribModifAddMaterials.getURL(_ignore_static=True).js_router,
83 'contribution': urlHandlers.UHContribModifAddMaterials.getURL(_ignore_static=True).js_router,
84 'session': urlHandlers.UHSessionModifAddMaterials.getURL(_ignore_static=True).js_router,
85 'conference': urlHandlers.UHConfModifAddMaterials.getURL(_ignore_static=True).js_router,
87 'AttachmentManager': url_rule_to_js('attachments.management'),
89 'RoomBookingBookRoom': url_rule_to_js('rooms.room_book'),
90 'RoomBookingBook': url_rule_to_js('rooms.book'),
91 'RoomBookingDetails': urlHandlers.UHRoomBookingRoomDetails.getURL(_ignore_static=True).js_router,
92 'RoomBookingCloneBooking': url_rule_to_js('rooms.roomBooking-cloneBooking'),
93 'ConfModifSchedule': urlHandlers.UHConfModifSchedule.getURL(_ignore_static=True).js_router,
94 'SubcontrModif': urlHandlers.UHContribModifSubCont.getURL(_ignore_static=True).js_router,
95 'AuthorDisplay': urlHandlers.UHContribAuthorDisplay.getURL(_ignore_static=True).js_router,
96 'AuthorEmail': urlHandlers.UHConferenceEmail.getURL(_ignore_static=True).js_router,
98 'APIKeyCreate': url_for('api.key_create'),
99 'APIKeyTogglePersistent': url_for('api.key_toggle_persistent')
102 'Data': {
103 'MaterialTypes': material_types,
104 'WeekDays': ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
105 'DefaultLocation': default_location,
106 'Locations': location_names
109 'Security': {
110 'allowedTags': ','.join(security_tools.allowedTags),
111 'allowedAttributes': ','.join(security_tools.allowedAttrs),
112 'allowedCssProperties': ','.join(security_tools.allowedCssProperties),
113 'allowedProtocols': ','.join(security_tools.allowedProtocols),
114 'urlProperties': ','.join(security_tools.urlProperties),
115 'sanitizationLevel': config.getSanitizationLevel()
118 'Settings': {
119 'ExtAuthenticators': ext_auths,
120 'RoomBookingModuleActive': config.getIsRoomBookingActive()
123 'FileRestrictions': {
124 'MaxUploadFilesTotalSize': config.getMaxUploadFilesTotalSize(),
125 'MaxUploadFileSize': config.getMaxUploadFileSize()
128 'PDFConversion': {
129 'AvailablePDFConversions': fileConverter.CDSConvFileConverter.getAvailableConversions(),
130 'HasFileConverter': config.hasFileConverter()
134 return render_template('assets/vars_globals.js', indico_vars=indico_vars, config=config, url_handlers=urlHandlers)