mailing settings prev work

remotes/origin/stage6
Alexander Burdeiny 9 years ago
parent 5ae192a332
commit 747ec5324e
  1. 4
      accounts/views.py
  2. 34
      emencia/django/newsletter/forms.py
  3. 12
      functions/models_methods.py
  4. 15
      settings/views.py
  5. 2
      templates/client/accounts/mailing_settings.html
  6. 43
      templates/client/popups/mailing_settings_countries.html
  7. 2
      templates/client/popups/russia_cities.html

@ -106,6 +106,10 @@ class MailingSettings(ContextMixin, AjaxableResponseMixin, CreateUpdateView):
instance = None instance = None
return instance return instance
def form_valid(self, form):
print(form.cleaned_data)
return super(MailingSettings, self).form_valid(form)
class CalendarView(TemplateView): class CalendarView(TemplateView):
""" """

@ -10,6 +10,7 @@ from django.db.models import Sum
from django.http import Http404 from django.http import Http404
from django.utils import translation from django.utils import translation
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from django.utils.encoding import smart_text, force_text
from emencia.django.newsletter.models import ( from emencia.django.newsletter.models import (
Contact, Contact,
@ -55,7 +56,40 @@ class MailingListSubscriptionForm(forms.ModelForm):
exclude = ('email',) exclude = ('email',)
class ML_ModelMultipleChoiceField(forms.ModelMultipleChoiceField):
''' use it with field.queryset = Model.objects.none()
'''
def _get_choices(self):
return []
choices = property(_get_choices, forms.ChoiceField._set_choices)
def clean(self, value):
if self.required and not value:
raise ValidationError(self.error_messages['required'])
elif not self.required and not value:
return self.queryset.none()
if not isinstance(value, (list, tuple)):
raise ValidationError(self.error_messages['list'])
key = self.to_field_name or 'pk'
qs = self.queryset.filter(**{'%s__in' % key: value})
pks = set([force_text(getattr(o, key)) for o in qs])
for val in value:
if force_text(val) not in pks:
raise ValidationError(self.error_messages['invalid_choice'] % val)
# Since this overrides the inherited ModelChoiceField.clean
# we run custom validators here
self.run_validators(value)
return qs
class MailingSettingsForm(forms.ModelForm): class MailingSettingsForm(forms.ModelForm):
# r_cities = ML_ModelMultipleChoiceField()
# f_countries = ML_ModelMultipleChoiceField()
# tags = ML_ModelMultipleChoiceField()
# themes = ML_ModelMultipleChoiceField()
class Meta: class Meta:
model = Contact model = Contact
fields = [ fields = [

@ -187,12 +187,16 @@ class CityManager(TranslationManager):
lang = translation.get_language() lang = translation.get_language()
key = 'russia_cities_%s' % lang key = 'russia_cities_%s' % lang
if cached and key in cache: if cached and key in cache:
cached_cities = cache.get(key) cities = cache.get(key)
return cached_cities
else: else:
cities = list(self.language(lang).filter(country__url='russia').order_by('name').values_list('pk', 'name')) cities = list(
self.language(lang).filter(
country__url='russia', exposition_city__isnull=False,
conference_city__isnull=False
).distinct().order_by('name').values_list('pk', 'name')
)
cache.set(key, cities, self.cache_time) cache.set(key, cities, self.cache_time)
return cities return cities
def hvad_to_dict(object): def hvad_to_dict(object):

@ -13,11 +13,11 @@ from company.models import Company
from conference.models import Conference from conference.models import Conference
# every this model must have method get_subcategories # every this model must have method get_subcategories
categories = {'area':{'sub':True, 'model':Area, 'sub_categorie_name':'co'}, categories = {'area': {'sub': True, 'model': Area, 'sub_categorie_name': 'co'},
'co':{'sub':False, 'model':Country, 'sub_categorie_name':'ci'}, 'co': {'sub': False, 'model': Country, 'sub_categorie_name': 'ci'},
'th':{'sub':False, 'model':Theme, 'sub_categorie_name':'tg'}, 'th': {'sub': False, 'model': Theme, 'sub_categorie_name': 'tg'},
'ci':{'sub':False, 'model':City, 'sub_categorie_name':None}, 'ci': {'sub': False, 'model': City, 'sub_categorie_name': None},
'tg':{'sub':False, 'model':Tag, 'sub_categorie_name':None}} 'tg': {'sub': False, 'model': Tag, 'sub_categorie_name': None}}
def sub_category(request): def sub_category(request):
@ -30,12 +30,15 @@ def sub_category(request):
model = categorie['model'] model = categorie['model']
obj = get_object_or_404(model, pk=categorie_id) obj = get_object_or_404(model, pk=categorie_id)
objects = obj.get_sub_categories() objects = obj.get_sub_categories()
if model == Area and request.GET.get('norussia'):
objects = filter(lambda x: x['id'] != 159, objects)
#response = {'sub_categories': objects, 'sub':categorie['sub'], 'sub_name': categorie['sub_categorie_name']} #response = {'sub_categories': objects, 'sub':categorie['sub'], 'sub_name': categorie['sub_categorie_name']}
return HttpResponse(json.dumps(objects), content_type='application/json') return HttpResponse(json.dumps(objects), content_type='application/json')
else: else:
raise Http404 raise Http404
search_forms = {'theme':'', 'place':''} search_forms = {'theme':'', 'place':''}
# сделать с помощью haystack!!! # сделать с помощью haystack!!!
def search_autocomplete(request): def search_autocomplete(request):
@ -159,4 +162,4 @@ def get_popover(request):
html = render_to_string(popover) html = render_to_string(popover)
response['html'] = html response['html'] = html
return HttpResponse(json.dumps(response), content_type='application/json') return HttpResponse(json.dumps(response), content_type='application/json')

@ -177,7 +177,7 @@
</div> </div>
<div id="countries_modal"> <div id="countries_modal">
{% include 'client/popups/countries.html' %} {% include 'client/popups/mailing_settings_countries.html' %}
</div> </div>
</div> </div>

@ -0,0 +1,43 @@
{% load static %}
{% load i18n %}
{% load template_filters %}
<div class="popup-window countries">
<header class="clearfix">
<div class="pw-title">{% trans 'Страны' %}</div>
</header>
<div class="body">
<div class="themes_wrapper">
<div class="scroll-container">
<div class="scroll-content">
<div class="places-list">
<ul class="modal_checkboxes">
{% for value, text in search_form.area.field.choices %}
<li class="level1 level">
<label>
<input type="checkbox" name="area" id="id_{{ prefix }}{{ value }}" class="csb-menu-input" value="{{ value }}" {% for option in search_form.area.value %}{% if option == value|slugify %}checked="checked"{% endif %}{% endfor %}/>
<span class="custom_checkbox"></span>
<span class="label hidden">{{ text }}</span>
</label>
<a href="/search-form/?name=area&id={{ value }}&norussia=true" data-sub="true" class="trigger">{{ text }}</a>
<ul class="sub"></ul>
</li>
{% endfor %}
</ul>
</div>
</div>
</div>
<div class="wait-ajax"></div>
</div>
<div class="pwf-buttons-line">
<button class="modal-approve" type="submit">{% trans 'Выбрать' %}</button>
<button class="modal-clear" type="submit">{% trans 'Очистить' %}</button>
</div>
</div>
</div>

@ -16,7 +16,7 @@
{% for pk, name in r_cities %} {% for pk, name in r_cities %}
<li class="level1"> <li class="level1">
<label> <label>
<input type="checkbox" class="hidden_checkbox" name="r_cities_{{ pk }}" id="" value="{{ pk }}"/> <input type="checkbox" class="hidden_checkbox" name="r_cities" id="" value="{{ pk }}"/>
<span class="custom_checkbox"></span> <span class="custom_checkbox"></span>
<span class="label">{{ name }}</span> <span class="label">{{ name }}</span>
</label> </label>

Loading…
Cancel
Save