diff --git a/kalite/facility/api_resources.py b/kalite/facility/api_resources.py
index c22cdb6a16..87c0ae2353 100644
--- a/kalite/facility/api_resources.py
+++ b/kalite/facility/api_resources.py
@@ -1,7 +1,6 @@
import datetime
-import os
from dateutil.tz import tzlocal
-
+from django.db.models.signals import post_save
from tastypie import fields
from tastypie.http import HttpUnauthorized
from tastypie.resources import ModelResource, ALL_WITH_RELATIONS
@@ -40,6 +39,27 @@ class Meta:
resource_name = 'group'
authorization = TeacherOrAdminCanReadWrite()
+FACILITY_LIST = None
+
+def facility_list():
+ global FACILITY_LIST
+
+ if FACILITY_LIST is None:
+ if settings.CENTRAL_SERVER:
+ FACILITY_LIST = []
+ else:
+ # To enable login, list the id and names of all facilities.
+ # This keeps it cached so that the status api call can return this to the client side
+ # without significantly increasing DB load on every status call.
+ FACILITY_LIST = [{"id": id, "name": name} for id, name in Facility.objects.values_list("id", "name")]
+
+ return FACILITY_LIST
+
+def flag_facility_cache(**kwargs):
+ global FACILITY_LIST
+ FACILITY_LIST = None
+
+post_save.connect(flag_facility_cache, sender=Facility)
class FacilityUserResource(ModelResource):
facility = fields.ForeignKey(FacilityResource, 'facility')
@@ -188,7 +208,7 @@ def generate_status(self, request, **kwargs):
"messages": message_dicts,
"status_timestamp": datetime.datetime.now(tzlocal()),
"version": version.VERSION,
- "facilities": request.session.get("facilities"),
+ "facilities": facility_list(),
"simplified_login": settings.SIMPLIFIED_LOGIN,
"docs_exist": getattr(settings, "DOCS_EXIST", False),
"zone_id": getattr(Device.get_own_device().get_zone(), "id", "None"),
diff --git a/kalite/facility/forms.py b/kalite/facility/forms.py
index f684d23533..d0377403e2 100644
--- a/kalite/facility/forms.py
+++ b/kalite/facility/forms.py
@@ -165,14 +165,17 @@ def __init__(self, facility, *args, **kwargs):
self.fields["facility"].initial = facility
self.fields["facility"].queryset = Facility.objects.by_zone(facility.get_zone())
+ if self.fields["facility"].queryset.count() < 2:
+ self.fields["facility"].widget = forms.HiddenInput()
+
class Meta:
model = FacilityGroup
fields = ("name", "description", "facility", "zone_fallback", )
widgets = {
- "facility": forms.HiddenInput(),
"zone_fallback": forms.HiddenInput(), # TODO(jamalex): this shouldn't be in here
}
+
def clean_name(self):
name = self.cleaned_data.get("name", "")
ungrouped = re.compile("[uU]+ngrouped")
diff --git a/kalite/facility/middleware.py b/kalite/facility/middleware.py
index 21832a430f..c8f73bc07f 100644
--- a/kalite/facility/middleware.py
+++ b/kalite/facility/middleware.py
@@ -15,10 +15,6 @@ def refresh_session_facility_info(request, facility_count):
request.session["facility_count"] = facility_count
request.session["facility_exists"] = request.session["facility_count"] > 0
- # To enable simplified login, also list the id and names of all facilities in the session object.
- # This keeps it cached so that the status api call can return this to the client side
- # without significantly increasing DB load on every status call.
- request.session["facilities"] = [{"id": id, "name": name} for id, name in Facility.objects.values_list("id", "name")]
def flag_facility_cache(**kwargs):
global FACILITY_CACHE_STALE
diff --git a/kalite/facility/templates/facility/facility_group.html b/kalite/facility/templates/facility/facility_group.html
index ac1ba6c68f..9cf8a99c29 100644
--- a/kalite/facility/templates/facility/facility_group.html
+++ b/kalite/facility/templates/facility/facility_group.html
@@ -1,29 +1,12 @@
{% extends "distributed/base_manage.html" %}
{% load i18n %}
-{% block headcss %}{{ block.super }}
-
-{% endblock headcss %}
-
{% block headjs %}{{ block.super }}
{% endblock headjs %}
diff --git a/kalite/facility/views.py b/kalite/facility/views.py
index e9ef1ae1f9..20478e0009 100644
--- a/kalite/facility/views.py
+++ b/kalite/facility/views.py
@@ -184,7 +184,6 @@ def group_edit(request, facility, group_id):
"form": form,
"group_id": group_id,
"facility": facility,
- "singlefacility": request.session["facility_count"] == 1,
"title": _("Add a new group") if group_id == 'new' else _("Edit group"),
}