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)
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'])
46 'FileTypeIcons': file_type_icons
,
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
,
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')
103 'MaterialTypes': material_types
,
104 'WeekDays': ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
105 'DefaultLocation': default_location
,
106 'Locations': location_names
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()
119 'ExtAuthenticators': ext_auths
,
120 'RoomBookingModuleActive': config
.getIsRoomBookingActive()
123 'FileRestrictions': {
124 'MaxUploadFilesTotalSize': config
.getMaxUploadFilesTotalSize(),
125 'MaxUploadFileSize': config
.getMaxUploadFileSize()
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
)