mirror of
https://github.com/lucaspalomodevelop/indico-plugins.git
synced 2026-03-12 23:27:22 +00:00
69 lines
2.9 KiB
Python
69 lines
2.9 KiB
Python
# This file is part of the Indico plugins.
|
|
# Copyright (C) 2002 - 2024 CERN
|
|
#
|
|
# The Indico plugins are free software; you can redistribute
|
|
# them and/or modify them under the terms of the MIT License;
|
|
# see the LICENSE file for more details.
|
|
|
|
from flask_pluginengine.plugin import render_plugin_template
|
|
from wtforms.fields import StringField, URLField
|
|
from wtforms.validators import DataRequired
|
|
|
|
from indico.core.plugins import IndicoPlugin
|
|
from indico.modules.attachments.views import WPEventAttachments
|
|
from indico.modules.categories.views import WPCategory, WPCategoryManagement
|
|
from indico.modules.events.contributions.views import WPContributions, WPManageContributions
|
|
from indico.modules.events.sessions.views import WPDisplaySession, WPManageSessions
|
|
from indico.modules.events.timetable.views import WPManageTimetable
|
|
from indico.modules.events.views import WPConferenceDisplay, WPSimpleEventDisplay
|
|
from indico.web.forms.base import IndicoForm
|
|
|
|
from indico_owncloud import _
|
|
from indico_owncloud.blueprint import blueprint
|
|
from indico_owncloud.util import is_configured
|
|
|
|
|
|
class PluginSettingsForm(IndicoForm):
|
|
filepicker_url = URLField(_('File-picker URL'), [DataRequired()])
|
|
service_name = StringField(_('Service name'), [],
|
|
description=_('A customized name for the cloud service. If empty, the default '
|
|
"'The cloud' will be used."))
|
|
button_icon_url = URLField(_('Custom icon URL'), [],
|
|
description=_('URL for a customized icon to show in the add attachment button. If '
|
|
'empty, the default cloud icon will be used'))
|
|
|
|
|
|
class OwncloudPlugin(IndicoPlugin):
|
|
"""OwnCloud integration
|
|
|
|
Provides an integration with OwnCloud storage servers, enabling managers
|
|
to attach files to categories/events from their cloud storage.
|
|
"""
|
|
configurable = True
|
|
settings_form = PluginSettingsForm
|
|
default_settings = {
|
|
'filepicker_url': '',
|
|
'service_name': '',
|
|
'button_icon_url': '',
|
|
}
|
|
|
|
def init(self):
|
|
super().init()
|
|
self.template_hook('attachment-sources', self._inject_owncloud_button)
|
|
wps = (
|
|
WPCategory, WPSimpleEventDisplay, WPConferenceDisplay, WPDisplaySession, WPContributions,
|
|
WPCategoryManagement, WPEventAttachments, WPManageContributions, WPManageSessions, WPManageTimetable
|
|
)
|
|
for wp in wps:
|
|
self.inject_bundle('owncloud.js', wp)
|
|
self.inject_bundle('main.css', wp)
|
|
|
|
def get_blueprints(self):
|
|
return blueprint
|
|
|
|
def _inject_owncloud_button(self, linked_object=None, **kwargs):
|
|
if is_configured():
|
|
return render_plugin_template('owncloud_button.html', linked_object=linked_object,
|
|
service_name=self.settings.get('service_name'),
|
|
button_icon_url=self.settings.get('button_icon_url'))
|