From a262a9bd9e9548c2a619f9cacf07fcb1877a88fa Mon Sep 17 00:00:00 2001 From: Antoine Nguyen Date: Fri, 19 Apr 2013 17:08:53 +0200 Subject: [PATCH] Improved sql queries. see #392 --- modoboa/lib/models.py | 10 ++++++++++ modoboa/lib/parameters.py | 20 ++++++-------------- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/modoboa/lib/models.py b/modoboa/lib/models.py index 9e58b5ace..02ac15b23 100644 --- a/modoboa/lib/models.py +++ b/modoboa/lib/models.py @@ -1,11 +1,21 @@ from django.db import models from django.contrib.auth.models import User + class Parameter(models.Model): name = models.CharField(max_length=255) value = models.CharField(max_length=255) + @property + def shortname(self): + return self.name.split(".")[1].lower() + + class UserParameter(models.Model): user = models.ForeignKey("auth.User") name = models.CharField(max_length=255) value = models.CharField(max_length=255) + + @property + def shortname(self): + return self.name.split(".")[1].lower() diff --git a/modoboa/lib/parameters.py b/modoboa/lib/parameters.py index 335038a1f..b68ad73e9 100644 --- a/modoboa/lib/parameters.py +++ b/modoboa/lib/parameters.py @@ -72,13 +72,9 @@ class AdminParametersForm(GenericParametersForm): def _load_initial_values(self): from models import Parameter - for name in self.fields.keys(): - fullname = "%s.%s" % (self.app, name.upper()) - try: - p = Parameter.objects.get(name=fullname) - except Parameter.DoesNotExist: - continue - self.fields[name].initial = p.value + names = ["%s.%s" % (self.app, name.upper()) for name in self.fields.keys()] + for p in Parameter.objects.filter(name__in=names): + self.fields[p.shortname].initial = p.value def save(self): from models import Parameter @@ -117,13 +113,9 @@ class UserParametersForm(GenericParametersForm): return from models import UserParameter - for name in self.fields.keys(): - fullname = "%s.%s" % (self.app, name.upper()) - try: - p = UserParameter.objects.get(user=self.user, name=fullname) - except UserParameter.DoesNotExist: - continue - self.fields[name].initial = p.value + names = ["%s.%s" % (self.app, name.upper()) for name in self.fields.keys()] + for p in UserParameter.objects.filter(user=self.user, name__in=names): + self.fields[p.shortname].initial = p.value @staticmethod def has_access(user):