diff --git a/emencia/django/newsletter/forms.py b/emencia/django/newsletter/forms.py index 7f2d7acf..2c532615 100644 --- a/emencia/django/newsletter/forms.py +++ b/emencia/django/newsletter/forms.py @@ -68,6 +68,7 @@ class AllMailingListSubscriptionForm(MailingListSubscriptionForm): class ContactForm(forms.ModelForm): email = forms.CharField(required=True, widget=forms.TextInput(attrs={'placeholder': _(u'Ваш e-mail')})) first_name = forms.CharField(required=True, widget=forms.TextInput(attrs={'placeholder': _(u'Ваше имя')})) + class Meta: model = Contact fields = ('email', 'first_name', ) @@ -76,6 +77,7 @@ class ContactForm(forms.ModelForm): class ContactSettingsForm(forms.ModelForm): theme = forms.MultipleChoiceField(choices=[(str(item.id), item.name) for item in list(Theme.objects.language().all())], widget=forms.CheckboxSelectMultiple(attrs={'class': 'pr-checkbox'}), required=False) + class Meta: model = ContactSettings fields = ('exponent_practicum', 'organiser_practicum', 'theme') diff --git a/emencia/django/newsletter/models.py b/emencia/django/newsletter/models.py index 48071e40..46298791 100644 --- a/emencia/django/newsletter/models.py +++ b/emencia/django/newsletter/models.py @@ -215,8 +215,7 @@ class Contact(models.Model): ('/img/soc-medias/sm-icon-fb.png', 'fb'), ('/img/soc-medias/sm-icon-lin.png', 'linkedin'), ('/img/soc-medias/sm-icon-vk.png', 'vk'), - ('/img/soc-medias/sm-icon-twit.png', 'twit'), - ('/img/mail-logo-2.jpg','logo2')) + ('/img/soc-medias/sm-icon-twit.png', 'twit')) for img in images: fp = open(settings.STATIC_ROOT+img[0], 'rb') msg_img = MIMEImage(fp.read()) @@ -243,7 +242,8 @@ class ContactSettings(models.Model): ] contact = models.OneToOneField(Contact) - periodic = models.PositiveIntegerField(verbose_name=_(u'Периодичность отправки'), choices=PERIODIC_CHOICES, default=WEEK) + periodic = models.PositiveIntegerField(verbose_name=_(u'Периодичность отправки'), + choices=PERIODIC_CHOICES, default=WEEK) exponent_practicum = models.BooleanField(default=True, verbose_name=_(u'Практикум экспонента')) organiser_practicum = models.BooleanField(default=True, verbose_name=_(u'Практикум организатора событий')) theme = models.ManyToManyField('theme.Theme', blank=True, null=True, verbose_name=_(u'Тематики')) diff --git a/emencia/django/newsletter/urls/__init__.py b/emencia/django/newsletter/urls/__init__.py index 4c0ad81e..75de6854 100644 --- a/emencia/django/newsletter/urls/__init__.py +++ b/emencia/django/newsletter/urls/__init__.py @@ -7,16 +7,20 @@ from emencia.django.newsletter.views.expo_views import SubscribeView, Activation urlpatterns = patterns('', - url(r'^mailing/', include('emencia.django.newsletter.urls.mailing_list')), - url(r'^tracking/', include('emencia.django.newsletter.urls.tracking')), - url(r'^statistics/', include('emencia.django.newsletter.urls.statistics')), - url(r'^', include('emencia.django.newsletter.urls.newsletter')), + url(r'^mailing/', include('emencia.django.newsletter.urls.mailing_list')), + url(r'^tracking/', include('emencia.django.newsletter.urls.tracking')), + url(r'^statistics/', include('emencia.django.newsletter.urls.statistics')), + url(r'^', include('emencia.django.newsletter.urls.newsletter')), - url(r'^test-letter/', TemplateView.as_view(template_name='client/newsletters/announce_template.html')), - url(r'^activation/complete/', TemplateView.as_view(template_name='client/newsletters/activation_complete.html'), - name='subscription_activation_complete'), - url(r'^activate/(?P.*)/$', ActivationView.as_view(), name='subscription_activation'), - url(r'^subsribe/aside/$', 'emencia.django.newsletter.views.expo_views.subscribe_aside', - name='newsletter_subscription_aside'), - url(r'^$', SubscribeView.as_view(), name='newsletter_subscription'), - ) + url(r'^test-letter/', TemplateView.as_view(template_name='client/newsletters/announce_template.html')), + url(r'^activation/send/', TemplateView.as_view(template_name='client/newsletters/activation_send.html'), + name='subscription_activation_send'), + url(r'^activation/complete/', TemplateView.as_view(template_name='client/newsletters/activation_complete.html'), + name='subscription_activation_complete'), + url(r'^activate/(?P.*)/$', ActivationView.as_view(), name='subscription_activation'), + url(r'^popup/validate/$', 'emencia.django.newsletter.views.expo_views.popup_validate', + name='newsletter_subscription_popup_validate'), + url(r'^subsribe/aside/$', 'emencia.django.newsletter.views.expo_views.subscribe_aside', + name='newsletter_subscription_aside'), + url(r'^$', SubscribeView.as_view(), name='newsletter_subscription'), + ) diff --git a/emencia/django/newsletter/views/expo_views.py b/emencia/django/newsletter/views/expo_views.py index 6bc02642..a717adb9 100644 --- a/emencia/django/newsletter/views/expo_views.py +++ b/emencia/django/newsletter/views/expo_views.py @@ -12,7 +12,7 @@ from country.models import Country class SubscribeView(FormView): form_class = ContactForm template_name = 'client/newsletters/subcribe.html' - success_url = '/' + success_url = '/newsletters/activation/send/' def get_form(self, form_class): if self.request.POST: @@ -40,24 +40,25 @@ class SubscribeView(FormView): if form2.is_valid(): contact_setting = form2.save(commit=False) - if not contact_setting.contact_id: contact_setting.contact = contact contact_setting.save() form2.save_m2m() + """ # get country from request country_code = self.request.META.get('HTTP_GEOIP_COUNTRY_CODE') try: country = Country.objects.get(country_code=country_code) - contact_setting.country.add(country) - contact_setting.area.add(country.area) except Country.DoesNotExist: pass + else: + contact_setting.contact_country = country + contact_setting.save() + """ contact.send_activation() return HttpResponseRedirect(self.success_url) - def get_context_data(self, **kwargs): context = super(SubscribeView, self).get_context_data(**kwargs) context['form2'] = ContactSettingsForm(initial=self.get_initial()) @@ -137,3 +138,25 @@ def subscribe_aside(request): return HttpResponse('not form request') +def popup_validate(request): + response = {'success': False} + if request.GET: + form = ContactForm(request.GET) + if form.is_valid(): + contact = form.save() + form2 = ContactSettingsForm(request.GET) + if form2.is_valid(): + contact_setting = form2.save(commit=False) + contact_setting.contact = contact + contact_setting.exponent_practicum, contact_setting.organiser_practicum = True, True + contact_setting.save() + form2.save_m2m() + + contact.send_activation() + response['success'] = True + else: + response['errors'] = form.errors + + return HttpResponse(json.dumps(response, indent=2), content_type='application/json') + + diff --git a/settings/templatetags/template_filters.py b/settings/templatetags/template_filters.py index 7f1fbb7a..670ad842 100644 --- a/settings/templatetags/template_filters.py +++ b/settings/templatetags/template_filters.py @@ -1,11 +1,13 @@ # -*- coding: utf-8 -*- -from django import template import base64 import phonenumbers -import datetime, random +import datetime +import random +from dateutil.relativedelta import relativedelta from datetime import timedelta from django import template -from dateutil.relativedelta import relativedelta +from django.utils import translation +from theme.models import Theme from exposition.models import Exposition from conference.models import Conference from seminar.models import Seminar @@ -309,3 +311,12 @@ def how_many_years(value): delta = now - value return delta.days/365 + +@register.filter +def get_theme_name(id): + try: + theme = Theme.objects.language().get(id=id) + except Theme.DoesNotExist: + return '' + else: + return theme.name diff --git a/templates/admin/includes/admin_nav.html b/templates/admin/includes/admin_nav.html index d0135aa4..ad358b63 100644 --- a/templates/admin/includes/admin_nav.html +++ b/templates/admin/includes/admin_nav.html @@ -114,7 +114,6 @@
  • Подписчики
  • Списки рассылок
  • Рассылки
  • -
  • Статистика
  • diff --git a/templates/client/includes/footer.html b/templates/client/includes/footer.html index c329ed0e..0cbe4ab9 100644 --- a/templates/client/includes/footer.html +++ b/templates/client/includes/footer.html @@ -5,7 +5,7 @@