|
|
|
|
@ -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<pk>\d+)\))') |
|
|
|
|
# p.finditer(): |
|
|
|
|
|