Service control finish

remotes/origin/1203
Nazar Kotjuk 10 years ago
parent 9a254b2ff6
commit 691ea2b435
  1. 30
      service/admin.py
  2. 11
      service/admin_urls.py
  3. 30
      service/forms.py
  4. 54
      service/models.py
  5. 1
      templates/admin/includes/admin_nav.html
  6. 39
      templates/admin/service/control_list.html
  7. 15
      templates/admin/service/linked_service.html

@ -117,34 +117,6 @@ def get_city(request):
return HttpResponse('error')
class ServiceControlList(ListView):
model = Service
template_name = 'admin/service/control_list.html'
paginate_by = 20
from django.views.generic.detail import SingleObjectMixin
from django.views.generic.edit import FormMixin
from django.views.generic import DetailView
from service.forms import ServiceControlForm
class ServiceControl(FormMixin, DetailView):
form_class = ServiceControlForm
template_name = 'admin/service/control.html'
model = Service
def get_form(self, form_class):
obj = self.object
data = obj.get_current_state()
return form_class(data)
def get_context_data(self, **kwargs):
context = super(ServiceControl, self).get_context_data(**kwargs)
context['form'] = self.get_form(self.form_class)
return context
from django.shortcuts import get_object_or_404
from django.views.generic import UpdateView, ListView, DeleteView
from .forms import LinkedServiceForm
@ -157,7 +129,7 @@ class LinkedServiceUpdateView(UpdateView):
form_class = LinkedServiceForm
model = LinkedService
template_name = "admin/service/linked_service.html"
success_url = "/admin/service/test/all/"
success_url = "/admin/service/control/all/"
def get_object(self, queryset=None):
url = self.kwargs['url']

@ -2,11 +2,9 @@
from django.conf.urls import patterns, include, url
from views import CallBackListView, VisitListView, TranslationListView, AdvertisingListView, \
ParticipationListView, RemoteListView,TicketsListView
from service.admin import ServiceControlList, ServiceControl, LinkedServiceList, LinkedServiceUpdateView, LinkedServiceDeleteView
from service.admin import LinkedServiceList, LinkedServiceUpdateView, LinkedServiceDeleteView
urlpatterns = patterns('service.admin',
#url(r'^control/list/$', ServiceControlList.as_view()),
#url(r'^control/(?P<pk>.*)/$', ServiceControl.as_view()),
url(r'^add.*/$', 'service_add'),
url(r'^delete/(?P<url>.*)/$', 'service_delete'),
url(r'^change/(?P<url>.*)/$', 'service_change'),
@ -19,13 +17,10 @@ urlpatterns = patterns('service.admin',
url(r'order/remote/$', RemoteListView.as_view()),
url(r'order/tickets/$', TicketsListView.as_view()),
url(r'^control/delete/(?P<url>[a-z]*)/', LinkedServiceDeleteView.as_view(), name='linked_service_delete'),
url(r'^control/all/', LinkedServiceList.as_view(), name = 'linked_service_all'),
url(r'^control/(?P<url>[a-z]*)/', LinkedServiceUpdateView.as_view(), name= 'linked_service_update'),
url(r'^control/all/', LinkedServiceList.as_view(), name='linked_service_all'),
url(r'^control/(?P<url>[a-z]*)/', LinkedServiceUpdateView.as_view(), name='linked_service_update'),
#ajax
url(r'^get_city/$', 'get_city'),
#url(r'^get_country/$', 'get_country'),
)

@ -128,36 +128,16 @@ from country.models import Area, Country
from exposition.models import Exposition
from conference.models import Conference
class ServiceControlForm(forms.Form):
event = [{'verbose': 'Выставки', 'model': Exposition, 'id': 1, 'service_bit': 'expo'},
{'verbose': 'Конференции', 'model': Conference, 'id': 2, 'service_bit': 'conference'}]
region = forms.ChoiceField(required=False, label='Регион',
choices=[('', '')]+[(item.id, item.name)
for item in list(Area.objects.all())])
country = forms.MultipleChoiceField(required=False, label='Страны',
choices=[('', '')]+[(item.id, item.name)
for item in list(Country.objects.all())])
country_all = forms.BooleanField(required=False)
expositions = forms.CharField(label=u'Выставки', widget=forms.HiddenInput(), required=False)
conferences = forms.CharField(label=u'Конференции', widget=forms.HiddenInput(), required=False)
def __init__(self, *args, **kwargs):
super(ServiceControlForm, self).__init__(*args, **kwargs)
self.fields['event_type'] = forms.MultipleChoiceField(required=False, label = 'Тип события',
widget=forms.CheckboxSelectMultiple(),
choices=[(item['service_bit'], item['verbose'])
for item in self.event])
from .models import LinkedService
from django.db.models.query import EmptyQuerySet
class LinkedServiceForm(forms.ModelForm):
type = forms.MultipleChoiceField(choices = [(x, x) for x in list(Service.type)], widget = forms.CheckboxSelectMultiple, required=False)
expositions = forms.CharField(widget=forms.HiddenInput,required=False)
conferences = forms.CharField(widget=forms.HiddenInput, required=False)
countries = forms.MultipleChoiceField(choices=[(c.id, c.name) for c in list(set(Country.objects.language()))])
type = forms.MultipleChoiceField(label='Тип', choices = [(x, x) for x in list(Service.type)], widget = forms.CheckboxSelectMultiple, required=False)
expositions = forms.CharField(label='Выставки', widget=forms.HiddenInput,required=False)
conferences = forms.CharField(label='Конференции', widget=forms.HiddenInput, required=False)
countries = forms.MultipleChoiceField(label='Страны', choices=[(c.id, c.name) for c in list(set(Country.objects.language()))])
class Meta:
model = LinkedService
@ -167,7 +147,7 @@ class LinkedServiceForm(forms.ModelForm):
}
def clean_countries(self):
countries = Country.objects.language().filter(id__in=self.cleaned_data['countries'])
countries = Country.objects.language().filter(id__in=self.cleaned_data['countries'])
return countries
def clean_expositions(self):

@ -47,60 +47,6 @@ class Service(TranslatableModel):
def get_price(self):
pr = self.price
def get_current_state(self):
"""
uses for control form
:return:
"""
from country.models import Country
country_all = False
country = []
region = []
expositions = []
conferences = []
service = self.url
event_type = [key for key, value in self.type.iteritems() if value]
if not event_type:
return {'event_type': event_type,
'region': region,
'country': country,
'country_all': country_all,
'expositions': expositions,
'conferences': conferences}
count1 = Country.objects.filter().count()
count2 = Country.objects.filter(services=getattr(Country.services, service)).count()
country_all = count1 == count2
if not country_all:
from exposition.models import Exposition
from conference.models import Conference
from country.models import Area
from django.utils.translation import get_language
lang = get_language()
countries = list(Country.objects.language(lang).filter(services=getattr(Country.services, service)))
expositions = [(item.id, item.name) for item in Exposition.enable.upcoming().exclude(country__in=countries, services=getattr(Exposition.services, service))]
conferences = [(item.id, item.name) for item in Conference.enable.upcoming().exclude(country__in=countries, services=getattr(Conference.services, service))]
region = []
countries = set(countries)
for item in list(Area.objects.language(lang).all()):
print(item)
area_countries = item.countries()
if set(area_countries).issubset(countries):
region.append((item.id, item.name))
countries = countries - set(area_countries)
country = [(item.id, item.name) for item in list(countries)]
state = {'event_type': event_type,
'region': region,
'country': country,
'country_all': country_all,
'expositions': expositions,
'conferences': conferences}
return state
from django.db.models.signals import post_save
from functions.signal_handlers import post_save_handler

@ -43,6 +43,7 @@
<li><a href="/admin/theme/blog_theme/all">Тематики для блогов</a></li>
<li><a href="/admin/theme/tag/all">Теги</a></li>
<li><a href="/admin/service/all">Услуги</a></li>
<li><a href="{% url 'linked_service_all' %}">Управление услугами</a></li>
<li><a href="/admin/settings/main-page/">Главная страница</a></li>
<li><a href="/admin/meta/all/">Мета</a></li>

@ -1,39 +0,0 @@
{% extends 'admin_list.html' %}
{% block body %}
<div class="box span8">
<div class="box-header well">
<h2><i class="icon-arrow-down"></i>Список услуг</h2>
</div>
<div class="box-content">
<table class="table table-hover">
<thead>
<tr>
<th>id</th>
<th>Название</th>
<th>&nbsp;</th>
</tr>
</thead>
<tbody>
{% for item in object_list %}
<tr>
<td>{{ item.id }}</td>
<td>{{ item.name }}</td>
<td>
<a class="btn-small btn-info" href="/admin/service/control/{{ item.id }}/">
Управлять
</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{# pagination #}
{% include 'admin/includes/admin_pagination.html' with page_obj=object_list %}
</div>
{% endblock %}

@ -119,11 +119,12 @@
{# Uses multilang.html template for translated fields #}
<form class="form-horizontal" method="post" action="">{% csrf_token %}
<fieldset>
<div class="box span8">
<div class="box-header well">
<h2><i class="icon-pencil"></i> Основная информация</h2>
<h2><i class="icon-pencil"></i> </h2>
</div>
<div class="box-content">
{% for f in form %}
<div class="control-group {% if f.errors %}error{% endif %}">
<label class="control-label"><b>{{ f.label }}:</b></label>
@ -132,11 +133,13 @@
</div>
</div>
{% endfor %}
<div class="controls">
<button type="submit" class="btn btn-large btn-primary">Submit</button>
<button type="reset" class="btn btn-large">Reset</button>
</div>
</div>
</div>
<div class="controls">
<button type="submit" class="btn btn-large btn-primary">Submit</button>
<button type="reset" class="btn btn-large">Reset</button>
</div>
</fieldset>
</form>

Loading…
Cancel
Save