remotes/origin/1203
Ivan Kovalkovskyi 10 years ago
parent 1c9e24870f
commit 97582b5f6b
  1. 10
      emencia/django/newsletter/forms.py
  2. 52
      emencia/django/newsletter/views/admin_views.py
  3. 9
      service/admin.py
  4. 3
      service/forms.py
  5. 22
      static/js/select/select2.min.js
  6. 69
      templates/admin/newsletters/contact_list.html
  7. 1
      templates/admin/service/linked_service.html

@ -6,6 +6,7 @@ from django.utils.translation import ugettext_lazy as _
from emencia.django.newsletter.models import Contact, ContactSettings
from emencia.django.newsletter.models import MailingList
from theme.models import Theme
from country.models import Country, Area
class MailingListSubscriptionForm(forms.ModelForm):
@ -64,6 +65,7 @@ class ContactForm(forms.ModelForm):
model = Contact
fields = ('email', 'first_name', )
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)
@ -76,4 +78,10 @@ class ContactSettingsForm(forms.ModelForm):
if theme:
return Theme.objects.filter(id__in=theme)
else:
return Theme.objects.none()
return Theme.objects.none()
class ContactFilterForm(forms.Form):
email = forms.EmailField(label=_("Email"), max_length=255)
theme = forms.ChoiceField(label=_("Тематика"), choices = [(t.id, t.name) for t in Theme.objects.language()])
country = forms.ChoiceField(label=_("Страна"), choices = [(c.id, c.name) for c in Country.objects.language().distinct()])
area = forms.ChoiceField(label=_("Страна"), choices = [(c.id, c.name) for c in Country.objects.language().distinct()])

@ -1,17 +1,65 @@
# -*- coding: utf-8 -*-
from django.views.generic import TemplateView, CreateView, ListView, UpdateView, DetailView
from django.views.generic import TemplateView, CreateView, ListView, UpdateView, DetailView, FormView
from django.views.generic.list import MultipleObjectMixin
from django.conf import settings
from django.http import HttpResponseRedirect
from django.shortcuts import get_object_or_404
from django.core.urlresolvers import reverse
from emencia.django.newsletter.models import Contact, ContactSettings, MailingList, Newsletter
from emencia.django.newsletter.admin_forms import ContactSettingsForm, MailingListForm, NewsletterForm
from ..forms import ContactFilterForm
from functions.admin_views import paginate_results
class ContactList(ListView):
class ContactList(FormView):
paginate_by = settings.ADMIN_PAGINATION
model = Contact
template_name = 'admin/newsletters/contact_list.html'
form_class = ContactFilterForm
queryset = Contact.objects.all()
def get_form(self, form_class):
if self.request.GET:
return form_class(self.request.GET)
else:
return form_class(**self.get_form_kwargs())
def get(self, request, *args, **kwargs):
if request.GET:
form_class = self.get_form_class()
form = self.get_form(form_class)
if form.is_valid():
return self.form_valid(form)
else:
return self.form_invalid(form)
else:
return super(ContactList, self).get(request, *args, **kwargs)
def form_valid(self, form):
"""
filtering queryset and return paginated results
"""
qs = form.filter()
result = paginate_results(qs, page=self.request.GET.get('page'))
context = self.get_context_data(form=form)
context.update({'object_list': result})
return self.render_to_response(context)
def get_context_data(self, **kwargs):
context = super(ContactList, self).get_context_data(**kwargs)
qs = self.model.objects.all()
result = paginate_results(qs, page=self.request.GET.get('page'))
context['object_list'] = result
return context
class UpdateContact(UpdateView):

@ -178,10 +178,15 @@ class LinkedServiceUpdateView(UpdateView):
return self.success_url
def form_valid(self, form):
self.object = form.save()
self.object.update_all_flags()
obj = form.save()
obj.countries = form.cleaned_data['countries']
obj.expositions = form.cleaned_data['expositions']
obj.conferences = form.cleaned_data['conferences']
obj.save()
obj.update_all_flags()
return HttpResponseRedirect(self.get_success_url())
class LinkedServiceList(ListView):
model = LinkedService
template_name = 'admin/service/linked_service_list.html'

@ -166,7 +166,8 @@ class LinkedServiceForm(forms.ModelForm):
}
def clean_countries(self):
return list(set(self.cleaned_data.get('countries')))
countries = Country.objects.language().filter(id__in=self.cleaned_data['countries'])
return countries
def clean_expositions(self):
expositions = EmptyQuerySet()

File diff suppressed because one or more lines are too long

@ -2,13 +2,70 @@
{% block body %}
<div class="box span10">
<div class="box-header well">
<h2><i class="icon-arrow-down"></i>Список контактов</h2>
</div>
<div class="box-content">
<div class="box span10">
<div class="box-header well">
<h2><i class="icon-arrow-down"></i>Список контактов</h2>
</div>
<div class="box-content">
<form class="form-horizontal" method="get">
<fieldset>
<!-- Form Name -->
<legend>Filter subscribers</legend>
<!-- Search input-->
<div class="control-group">
<label class="control-label" for="id_email">{{ form.email.label }}</label>
<div class="controls">
{# <input id="Email" name="Email" type="text" placeholder="Email"#}
{# class="input-xlarge search-query">#}
{{ form.email }}
</div>
</div>
<!-- Select Basic -->
<div class="control-group">
<label class="control-label" for="id_theme">{{ form.theme.label }}</label>
<div class="controls">
{{ form.theme }}
</div>
</div>
<!-- Select Basic -->
<div class="control-group">
<label class="control-label" for="id_country">{{ form.id_country }}</label>
<div class="controls">
{{ form.country }}
</div>
</div>
<!-- Select Basic -->
<div class="control-group">
<label class="control-label" for="id_area">{{ form.area.label }}</label>
<div class="controls">
{{ form.area }}
</div>
</div>
<!-- Button -->
<div class="control-group">
<label class="control-label" for="submit"></label>
<div class="controls">
<button id="submit" name="submit" class="btn btn-info">Filter</button>
</div>
</div>
</fieldset>
</form>
<table class="table table-hover">
<table class="table table-hover">
<thead>
<tr>

@ -136,7 +136,6 @@
<button type="reset" class="btn btn-large">Reset</button>
</div>
</div>
</div>
</form>

Loading…
Cancel
Save