допы и фиксы при сдаче

В анонсах тоже самое - Имя в теме не отображает. Прехеадер ОК.
Если событий нет, то не выводить блок. Сейчас выводит пустой - готово
Сработала только по стране фильтрация, по городу нет.  - Исправлено
Можно прехеадер для А-Б тестов тоже вынести?  - вынесено
remotes/origin/stage5
Alexander Burdeiny 10 years ago
parent b9e8615ead
commit 6fc7d77dd3
  1. 2
      emencia/django/newsletter/admin_forms.py
  2. 4
      emencia/django/newsletter/mailer.py
  3. 30
      emencia/django/newsletter/models.py
  4. 4
      emencia/django/newsletter/templates/newsletter/announce_template.html
  5. 5
      fabfile.py
  6. 4
      templates/c_admin/newsletters/newsletter_object.html

@ -180,7 +180,7 @@ class NewsletterForm(forms.ModelForm):
class Meta: class Meta:
model = Newsletter model = Newsletter
fields = ('preheader', 'title', 'content', 'ab_testing', 'ab_first_stage', 'title2', 'content2', 'mailing_list', 'theme_for_filter', 'test_contacts', 'header_sender', fields = ('preheader', 'title', 'content', 'ab_testing', 'ab_first_stage', 'preheader2', 'title2', 'content2', 'mailing_list', 'theme_for_filter', 'test_contacts', 'header_sender',
'header_reply', 'status', 'sending_date', 'slug') 'header_reply', 'status', 'sending_date', 'slug')
widgets = { widgets = {
'ab_first_stage': forms.widgets.TextInput(attrs={'type':'number', 'min': 5, 'max': 100}), 'ab_first_stage': forms.widgets.TextInput(attrs={'type':'number', 'min': 5, 'max': 100}),

@ -272,7 +272,7 @@ class NewsLetterSender(object):
if self.newsletter.ab_testing and self.ab_state == Newsletter.A: if self.newsletter.ab_testing and self.ab_state == Newsletter.A:
title = self.title_template.render(context) title = self.title_template.render(context)
elif self.newsletter.ab_testing and self.ab_state == Newsletter.B: elif self.newsletter.ab_testing and self.ab_state == Newsletter.B:
title = self.title_template2.render(context) title = self.title_template2.render(context)
else: else:
title = self.title_template.render(context) title = self.title_template.render(context)
return title return title
@ -335,7 +335,7 @@ class NewsLetterSender(object):
theme_word=theme_word.make_agree_with_number(count).word, theme_word=theme_word.make_agree_with_number(count).word,
) )
return { return {
'name': contact.first_name or contact.last_name, 'name': contact.first_name or contact.last_name or _(u'Подписчик'),
'themes': ', '.join([self.themes.get(x) for x in contact.contactsettings.theme.all().values_list('pk', flat=True)[:3]]) + t_add, 'themes': ', '.join([self.themes.get(x) for x in contact.contactsettings.theme.all().values_list('pk', flat=True)[:3]]) + t_add,
} }

@ -167,13 +167,29 @@ class Contact(models.Model):
# making query # making query
params = Q() params = Q()
countries = self.contactsettings.country.all().values_list('pk', flat=True) _countries = set(self.contactsettings.country.all().values_list('pk', flat=True))
if countries: countries = set()
params |= Q(country__in=countries) # countries_overall = set()
_cities = self.contactsettings.city.all().values_list('pk', 'country_id')
cities = self.contactsettings.city.all().values_list('pk', flat=True) cities = set()
if cities: cities_overall = set()
params |= Q(country__in=cities)
for city, country_id in _cities:
if country_id in _countries:
cities.add(city)
countries.add(country_id)
else:
cities_overall.add(city)
countries_overall = _countries.difference(countries)
if countries_overall:
params |= Q(country_id__in=countries_overall)
if cities_overall:
params |= Q(city_id__in=cities_overall)
if countries and cities:
params |= Q(city_id__in=cities, country_id__in=countries)
if themes: if themes:
theme_ids = set([item.id for item in themes]) theme_ids = set([item.id for item in themes])

@ -33,6 +33,7 @@
{# end header #} {# end header #}
{# events #} {# events #}
{% if expo %}
{% with events=expo place=expo_places %} {% with events=expo place=expo_places %}
<table cellpadding="0" cellspacing="0" border="0" width="600" style="width: 600px; margin-bottom: 10px;"> <table cellpadding="0" cellspacing="0" border="0" width="600" style="width: 600px; margin-bottom: 10px;">
<tr> <tr>
@ -73,9 +74,11 @@
</tr> </tr>
</table> </table>
{% endwith %} {% endwith %}
{% endif %}
{# end events #} {# end events #}
{# conferencies #} {# conferencies #}
{% if conf %}
{% with events=conf place=conf_places %} {% with events=conf place=conf_places %}
<table cellpadding="0" cellspacing="0" border="0" width="600" style="width: 600px; margin-bottom: 10px;"> <table cellpadding="0" cellspacing="0" border="0" width="600" style="width: 600px; margin-bottom: 10px;">
<tr> <tr>
@ -116,6 +119,7 @@
</tr> </tr>
</table> </table>
{% endwith %} {% endwith %}
{% endif %}
{# end conferencies #} {# end conferencies #}
{% if news %} {% if news %}

5
fabfile.py vendored

@ -132,6 +132,11 @@ def stage_init(stage_num):
call_state('start', only='apache2') call_state('start', only='apache2')
def migrate(app_name):
with cd(REMOTE_HOME_DIR):
run('python manage.py migrate {app_name}'.format(app_name=app_name))
@stage(5) @stage(5)
def t1451(): def t1451():
with cd(REMOTE_HOME_DIR): with cd(REMOTE_HOME_DIR):

@ -36,9 +36,9 @@
function makeContent2() { function makeContent2() {
if ($('#id_ab_testing').is(':checked')) { if ($('#id_ab_testing').is(':checked')) {
$('div#cke_id_content2 div.cke_contents').height($('div#cke_id_content div.cke_contents').height()); $('div#cke_id_content2 div.cke_contents').height($('div#cke_id_content div.cke_contents').height());
$('#id_content2, #id_title2, #id_ab_first_stage').parents('div.control-group').show(); $('#id_content2, #id_title2, #id_preheader2, #id_ab_first_stage').parents('div.control-group').show();
} else { } else {
$('#id_content2, #id_title2, #id_ab_first_stage').parents('div.control-group').hide(); $('#id_content2, #id_title2, #id_preheader2, #id_ab_first_stage').parents('div.control-group').hide();
} }
} }
makeContent2(); makeContent2();

Loading…
Cancel
Save