diff --git a/emencia/django/newsletter/admin_forms.py b/emencia/django/newsletter/admin_forms.py index 8450991c..2309c73e 100644 --- a/emencia/django/newsletter/admin_forms.py +++ b/emencia/django/newsletter/admin_forms.py @@ -17,6 +17,7 @@ from emencia.django.newsletter.models import ( Newsletter ) from theme.models import Theme +from haystack.query import SearchQuerySet class ContactSettingsForm(forms.ModelForm): @@ -145,20 +146,33 @@ class MailingListForm(forms.ModelForm): values = cell.value.split(';') names_to_fetch = [] pks = set() + # print(cell) + # print(field) + # for x in values: + # print(x) + # import pdb; pdb.set_trace() for val in values: - val = val.strip() - _pk = data['cached'].get(val, None) + val_stripped = val.strip() + _pk = data['cached'].get(val_stripped, None) if _pk is None: - names_to_fetch.append(val) + names_to_fetch.append(val_stripped) else: pks.add(_pk) + # print(names_to_fetch) + # print(data['model']) if names_to_fetch: - _pks = dict(data['model'].objects.language().filter(name__in=values).values_list('name', 'pk')) + # _pks = dict([(x.name_ru, x.pk) for x in SearchQuerySet().models(data['model']).filter(name__in=values)]) + sqs = SearchQuerySet().models(data['model']).filter(name_ru__in=values).load_all() + _pks = dict([(x.object.name, x.pk) for x in sqs]) + + # print(_pks) data['cached'].update(_pks) pks.update(_pks.values()) + # print(data['cached']) if pks: _field = getattr(contactsettings, field) _field.add(*pks) + # print(pks) contactsettings.save() # p = re.compile(r'([^\(pk=\d+\)]*\(pk=(?P\d+)\))') # p.finditer():