diff options
| author | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-10-28 19:21:41 +0200 | 
|---|---|---|
| committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-10-28 19:21:41 +0200 | 
| commit | 6f80a494ceac19d5db0650a591bf112b09ea2eba (patch) | |
| tree | bd817bec361eff377bdd7b03b3ac2b37631f8c9d | |
| parent | 6435791849e9f386dc150d63c06025148698bb2d (diff) | |
| download | Ishtar-6f80a494ceac19d5db0650a591bf112b09ea2eba.tar.bz2 Ishtar-6f80a494ceac19d5db0650a591bf112b09ea2eba.zip | |
Too many lazy evaluations and nobody do the job! Fixed.
| -rw-r--r-- | archaeological_files/forms.py | 6 | ||||
| -rw-r--r-- | archaeological_files_pdl/forms.py | 22 | ||||
| -rw-r--r-- | example_project/settings.py | 6 | ||||
| -rw-r--r-- | ishtar_common/forms.py | 23 | ||||
| -rw-r--r-- | ishtar_common/models.py | 13 | ||||
| -rw-r--r-- | ishtar_common/widgets.py | 1 | 
6 files changed, 42 insertions, 29 deletions
| diff --git a/archaeological_files/forms.py b/archaeological_files/forms.py index 04badfc10..42a645171 100644 --- a/archaeological_files/forms.py +++ b/archaeological_files/forms.py @@ -28,9 +28,9 @@ from django.core import validators  from django.utils.translation import ugettext_lazy as _  from django.utils.safestring import mark_safe -from ishtar_common.models import Person, PersonType, Organization, \ -    OrganizationType, valid_id, Department, person_type_pks_lazy, \ -    person_type_pk_lazy, organization_type_pk_lazy, organization_type_pks_lazy +from ishtar_common.models import Person, Organization, \ +    valid_id, Department, person_type_pks_lazy, \ +    person_type_pk_lazy, organization_type_pks_lazy  from archaeological_operations.models import ActType, AdministrativeAct, \      OperationType  import models diff --git a/archaeological_files_pdl/forms.py b/archaeological_files_pdl/forms.py index 5c92f689a..cf241aa18 100644 --- a/archaeological_files_pdl/forms.py +++ b/archaeological_files_pdl/forms.py @@ -26,7 +26,7 @@ from django.utils.translation import ugettext_lazy as _  from ishtar_common.models import Person, Town, Department, valid_id, \      person_type_pk_lazy, person_type_pks_lazy, organization_type_pks_lazy, \ -    organization_type_pk_lazy, organization_type_lazy, person_type_lazy +    organization_type_pk_lazy  from archaeological_files import models  from ishtar_common.forms import get_now, reverse_lazy, ManageOldType @@ -132,10 +132,10 @@ class FileFormResearchAddress(forms.Form):  class PersonOrgaForm(forms.Form):      PERSON_FIELD = 'TO BE DEFINED' -    PERSON_TYPE = person_type_lazy('general_contractor') +    PERSON_TYPE_PK = person_type_pk_lazy('general_contractor')      PERSON_LABEL = ""      ORGA_FIELD = 'TO BE DEFINED' -    ORGA_TYPE = organization_type_lazy('general_contractor') +    ORGA_TYPE_PK = organization_type_pk_lazy('general_contractor')      ORGA_LABEL = ""      def _media(self): @@ -202,10 +202,10 @@ class PersonOrgaForm(forms.Form):                  initial=initial.get(self.PERSON_FIELD, None),                  widget=widgets.JQueryPersonOrganization(                      reverse_lazy('autocomplete-person', -                                 args=[self.PERSON_TYPE.pk]), +                                 args=[self.PERSON_TYPE_PK]),                      reverse_lazy('person_create'),                      model=Person, -                    limit={'person_types': [self.PERSON_TYPE.pk], +                    limit={'person_types': [self.PERSON_TYPE_PK],                             'attached_to__isnull': True},                      js_template='ishtar/blocks/JQueryNaturalPerson.js',                      new=True), @@ -217,10 +217,10 @@ class PersonOrgaForm(forms.Form):                  initial=initial.get(self.ORGA_FIELD, None),                  widget=widgets.JQueryPersonOrganization(                      reverse_lazy('autocomplete-organization', -                                 args=[self.ORGA_TYPE.pk]), +                                 args=[self.ORGA_TYPE_PK]),                      reverse_lazy('organization_create'),                      model=models.Organization, -                    limit={'organization_type': [self.ORGA_TYPE.pk]}, +                    limit={'organization_type': [self.ORGA_TYPE_PK]},                      js_template='ishtar/blocks/JQueryCorporationPerson.js',                      new=True),                  validators=[valid_id(models.Organization)]) @@ -267,10 +267,10 @@ class FileFormGeneralContractor(PersonOrgaForm):      )      PERSON_FIELD = 'general_contractor' -    PERSON_TYPE = person_type_lazy('general_contractor') +    PERSON_TYPE_PK = person_type_pk_lazy('general_contractor')      PERSON_LABEL = _(u"General contractor")      ORGA_FIELD = 'corporation_general_contractor' -    ORGA_TYPE = organization_type_lazy('general_contractor') +    ORGA_TYPE_PK = organization_type_pk_lazy('general_contractor')      ORGA_LABEL = _(u"General contractor")      def __init__(self, *args, **kwargs): @@ -331,10 +331,10 @@ class FileFormGeneralContractor(PersonOrgaForm):                  initial=initial.get(self.PERSON_FIELD, None),                  widget=widgets.JQueryPersonOrganization(                      reverse_lazy('autocomplete-person', -                                 args=[self.PERSON_TYPE.pk]), +                                 args=[self.PERSON_TYPE_PK]),                      reverse_lazy('person_create'),                      model=Person, -                    limit={'person_types': [self.PERSON_TYPE.pk], +                    limit={'person_types': [self.PERSON_TYPE_PK],                             'attached_to__isnull': True},                      js_template='ishtar/blocks/JQueryNaturalPerson.js',                      new=True), diff --git a/example_project/settings.py b/example_project/settings.py index 26119451a..ef52d932a 100644 --- a/example_project/settings.py +++ b/example_project/settings.py @@ -237,9 +237,9 @@ except ImportError, e:  if 'test' in sys.argv:      SOUTH_TESTS_MIGRATE = False -if USE_SPATIALITE_FOR_TESTS: -    DATABASES['default']['ENGINE'] = \ -        'django.contrib.gis.db.backends.spatialite' +    if USE_SPATIALITE_FOR_TESTS: +        DATABASES['default']['ENGINE'] = \ +            'django.contrib.gis.db.backends.spatialite'  PROJECT_SLUG = locals().get('PROJECT_SLUG', 'default') diff --git a/ishtar_common/forms.py b/ishtar_common/forms.py index b0e8cb43c..043b03f61 100644 --- a/ishtar_common/forms.py +++ b/ishtar_common/forms.py @@ -31,6 +31,10 @@ from django.utils import formats  from django.utils.functional import lazy  from django.utils.translation import ugettext_lazy as _ +import models +import widgets + +  # from formwizard.forms import NamedUrlSessionFormWizard @@ -44,10 +48,23 @@ class NamedUrlSessionFormWizard(forms.Form):      def rindex(self, idx):          return self.url_name.rindex(idx) -import models -import widgets -reverse_lazy = lazy(reverse, unicode) +def my_reverse(*args, **kwargs): +    """ +    Custom reverse method in order to evaluate lazy args +    """ +    if 'args' in kwargs: +        my_args = [] +        for arg in kwargs['args']: +            if callable(arg): +                my_args.append(unicode(arg())) +            else: +                my_args.append(unicode(arg)) +        kwargs['args'] = my_args +    return reverse(*args, **kwargs) + + +reverse_lazy = lazy(my_reverse, unicode)  regexp_name = re.compile(r"^[,:/\w\-'\"() \&\[\]@]+$", re.UNICODE)  name_validator = validators.RegexValidator( diff --git a/ishtar_common/models.py b/ishtar_common/models.py index 814387bb4..c0888ec06 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -67,7 +67,6 @@ from ishtar_common.data_importer import Importer, ImportFormater, \  def post_save_user(sender, **kwargs):      user = kwargs['instance'] -    ishtaruser = None      try:          q = IshtarUser.objects.filter(username=user.username)          if not q.count(): @@ -360,9 +359,9 @@ class GeneralType(Cached, models.Model):          :param slug: textual id -        :return: the id of the item +        :return: id of the item (string)          """ -        return cls.get_or_create(slug).pk +        return unicode(cls.get_or_create(slug).pk)      @classmethod      def get_or_create_pks(cls, slugs): @@ -377,7 +376,7 @@ class GeneralType(Cached, models.Model):          items = []          for slug in slugs:              items.append(str(cls.get_or_create(slug).pk)) -        return "_".join(items) +        return u"_".join(items)      @classmethod      def get_help(cls, dct={}, exclude=[]): @@ -1580,8 +1579,7 @@ class OrganizationType(GeneralType):  post_save.connect(post_save_cache, sender=OrganizationType)  post_delete.connect(post_save_cache, sender=OrganizationType) -organization_type_lazy = lazy(OrganizationType.get_or_create, OrganizationType) -organization_type_pk_lazy = lazy(OrganizationType.get_or_create_pk, int) +organization_type_pk_lazy = lazy(OrganizationType.get_or_create_pk, unicode)  organization_type_pks_lazy = lazy(OrganizationType.get_or_create_pks, unicode)  IMPORTER_CLASSES = {} @@ -2374,8 +2372,7 @@ class PersonType(GeneralType):  post_save.connect(post_save_cache, sender=PersonType)  post_delete.connect(post_save_cache, sender=PersonType) -person_type_lazy = lazy(PersonType.get_or_create_pk, PersonType) -person_type_pk_lazy = lazy(PersonType.get_or_create_pk, int) +person_type_pk_lazy = lazy(PersonType.get_or_create_pk, unicode)  person_type_pks_lazy = lazy(PersonType.get_or_create_pks, unicode) diff --git a/ishtar_common/widgets.py b/ishtar_common/widgets.py index d3a2c975e..1183836bc 100644 --- a/ishtar_common/widgets.py +++ b/ishtar_common/widgets.py @@ -431,7 +431,6 @@ class JQueryPersonOrganization(forms.TextInput):      @classmethod      def encode_source(cls, source): -        encoded_src = ''          if isinstance(source, list):              encoded_src = JSONEncoder().encode(source)          elif isinstance(source, str) \ | 
