diff --git a/uauth/organization/forms.py b/uauth/organization/forms.py
index 2c77f71..0090343 100644
--- a/uauth/organization/forms.py
+++ b/uauth/organization/forms.py
@@ -38,3 +38,7 @@ class TemplateForm(forms.Form):
class StaticForm(forms.Form):
static_file = forms.FileField(_('Static file'))
+
+
+class FederationForm(forms.Form):
+ federation_file = forms.FileField(_('Federation file'))
diff --git a/uauth/organization/templates/organization/federations.html b/uauth/organization/templates/organization/federations.html
new file mode 100644
index 0000000..b3ae989
--- /dev/null
+++ b/uauth/organization/templates/organization/federations.html
@@ -0,0 +1,28 @@
+{% extends "organization/base.html" %}
+{% load i18n %}
+
+{% block page-title %}
+{% trans 'Federations management' %}
+{% endblock %}
+
+{% block appbar %}
+
{% trans "Federations" %}
+{% trans "Add federation" %}
+{% endblock %}
+
+{% block content %}
+
+{% endblock %}
diff --git a/uauth/organization/templates/organization/manage.html b/uauth/organization/templates/organization/manage.html
index 6435f23..f6e9392 100644
--- a/uauth/organization/templates/organization/manage.html
+++ b/uauth/organization/templates/organization/manage.html
@@ -5,5 +5,6 @@
{% endblock %}
diff --git a/uauth/organization/urls.py b/uauth/organization/urls.py
index 7dd2f02..68ffa27 100644
--- a/uauth/organization/urls.py
+++ b/uauth/organization/urls.py
@@ -14,4 +14,7 @@ urlpatterns = patterns('',
url(r'^theme/template/delete$', template_delete, name='template-delete'),
url(r'^theme/static/upload$', static_upload, name='static-upload'),
url(r'^theme/static/delete$', static_delete, name='static-delete'),
+ url(r'^federations/$', federations, name='manage-federations'),
+ url(r'^federations/add$', federations_add, name='federations-add'),
+ url(r'^federations/delete$', federations_delete, name='federations-delete')
)
diff --git a/uauth/organization/views.py b/uauth/organization/views.py
index 911a7d8..93dcda0 100644
--- a/uauth/organization/views.py
+++ b/uauth/organization/views.py
@@ -263,3 +263,49 @@ class StaticDelete(ThemeView):
return redirect(self.get_success_url())
static_delete = StaticDelete.as_view()
+
+
+class FederationsView(OrganizationMixin, TemplateView):
+ template_name = 'organization/federations.html'
+
+ def get_success_url(self):
+ return reverse_lazy('manage-federations', kwargs={'organization_slug': self.kwargs['organization_slug']})
+
+ def get_context_data(self, **kwargs):
+ ctx = super(FederationsView, self).get_context_data(**kwargs)
+ org = ctx['organization']
+ federations_dir = os.path.join(settings.ORGANIZATIONS_DIR,
+ org.slug, 'federations')
+ ctx['federations_dir'] = federations_dir
+ if os.path.exists(federations_dir):
+ ctx['federations'] = os.listdir(federations_dir)
+ else:
+ ctx['federations'] = []
+ return ctx
+
+federations = FederationsView.as_view()
+
+
+class FederationsAdd(UploadMixin, FederationsView):
+ form_class = FederationForm
+ filename_param = 'federation_file'
+ upload_dir = 'federations'
+
+federations_add = FederationsAdd.as_view()
+
+
+class FederationsDelete(TemplateView):
+ def get(self, request, *args, **kwargs):
+ ctx = self.get_context_data(**kwargs)
+ s = request.GET.get('federation')
+ if os.path.exists(os.path.join(ctx['federations_dir'], f)):
+ try:
+ os.remove(os.path.join(ctx['federations_dir'], f))
+ messages.info(request, _('Federation file %s successfully removed') % f)
+ except IOError:
+ messages.error(request, _('An error occured while removing file %s') % f)
+ else:
+ messages.error(request, _('Unknown federation file %s') % f)
+ return redirect(self.get_success_url())
+
+federations_delete = FederationsDelete.as_view()
diff --git a/uauth/static/css/icons/icon-grid-hover.png b/uauth/static/css/icons/icon-grid-hover.png
new file mode 100644
index 0000000..c574806
Binary files /dev/null and b/uauth/static/css/icons/icon-grid-hover.png differ
diff --git a/uauth/static/css/icons/icon-grid.png b/uauth/static/css/icons/icon-grid.png
new file mode 100644
index 0000000..61c91bf
Binary files /dev/null and b/uauth/static/css/icons/icon-grid.png differ
diff --git a/uauth/static/css/style.css b/uauth/static/css/style.css
index 24d40ce..f58db0a 100644
--- a/uauth/static/css/style.css
+++ b/uauth/static/css/style.css
@@ -75,4 +75,5 @@ div.example {
/* icons */
li.users a {background-image: url(icons/icon-personnes.png);}
-li.theme a {background-image: url(icons/icon-ressources.png);}
\ No newline at end of file
+li.theme a {background-image: url(icons/icon-ressources.png);}
+li.federations a {background-image: url(icons/icon-grid.png);}
\ No newline at end of file