diff --git a/service/admin.py b/service/admin.py index 050c0d9e..ede3e3c1 100644 --- a/service/admin.py +++ b/service/admin.py @@ -164,6 +164,31 @@ class ServiceAddView(FormView): else: pass - - +from django.shortcuts import get_object_or_404 +from django.views.generic import UpdateView +from django.db.models import F +from django.db.models.query import EmptyQuerySet +from .forms import LinkedServiceForm +from .models import LinkedService +from exposition.models import Exposition +from conference.models import Conference + + +class ServiceUpdateView(UpdateView): + form_class = LinkedServiceForm + model = LinkedService + template_name = "admin/service/linked_service.html" + success_url = "/admin/service/all/" + + def get_object(self, queryset=None): + url = self.kwargs['url'] + service = get_object_or_404(Service, url=url) + obj = LinkedService.objects.get(service=service) + return obj + + def get_initial(self): + initial = { + 'expositions':','.join(["%s:%s"%(item.id, item.name) for item in object.expositions.all()]), + 'conferences':','.join(["%s:%s"%(item.id, item.name) for item in self.object.conferences.all()]) + } diff --git a/service/admin_urls.py b/service/admin_urls.py index 2ed5c296..c445dac2 100644 --- a/service/admin_urls.py +++ b/service/admin_urls.py @@ -2,7 +2,7 @@ from django.conf.urls import patterns, include, url from views import CallBackListView, VisitListView, TranslationListView, AdvertisingListView, \ ParticipationListView, RemoteListView,TicketsListView -from service.admin import ServiceControlList, ServiceControl, ServiceAddView +from service.admin import ServiceControlList, ServiceControl, ServiceAddView, ServiceUpdateView urlpatterns = patterns('service.admin', url(r'^control/list/$', ServiceControlList.as_view()), @@ -18,10 +18,11 @@ urlpatterns = patterns('service.admin', url(r'order/participation/$', ParticipationListView.as_view()), url(r'order/remote/$', RemoteListView.as_view()), url(r'order/tickets/$', TicketsListView.as_view()), + url('^test/(?P[a-z]*)/', ServiceUpdateView.as_view()), url('^test/$', ServiceAddView.as_view()), #ajax url(r'^get_city/$', 'get_city'), - url('^get_expos/$', 'get_country'), + #url(r'^get_country/$', 'get_country'), diff --git a/service/forms.py b/service/forms.py index 11c0eaa2..b62fac7f 100644 --- a/service/forms.py +++ b/service/forms.py @@ -147,7 +147,6 @@ class ServiceControlForm(forms.Form): widget=forms.CheckboxSelectMultiple(), choices=[(item['service_bit'], item['verbose']) for item in self.event]) -from bitfield import BitField class _ServiceForm(forms.Form): @@ -155,4 +154,33 @@ class _ServiceForm(forms.Form): countries = forms.MultipleChoiceField(choices=[(x.id,x.name) for x in Country.objects.language().all()]) all_counties = forms.BooleanField(widget=forms.CheckboxInput) expos = forms.CharField(widget=forms.HiddenInput) - confs = forms.CharField(widget=forms.HiddenInput) \ No newline at end of file + confs = forms.CharField(widget=forms.HiddenInput) + + +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) + + class Meta: + model = LinkedService + fields = ['countries', 'all_countries', 'expositions', 'conferences'] + widgets={ + 'expositions': forms.HiddenInput, + 'conferences': forms.HiddenInput + } + + def clean_expositions(self): + expositions = EmptyQuerySet() + if self.cleaned_data['expositions']: + expositions = Exposition.objects.language().filter(id__in=list(set(self.cleaned_data['expositions']))) + return expositions + + def clean_conferences(self): + conferences = EmptyQuerySet() + if self.cleaned_data['conferences']: + conferences = Conference.objects.language().filter(id__in=list(set(self.cleaned_data['conferences']))) + return conferences + diff --git a/service/models.py b/service/models.py index d0d711f3..c8d7946e 100644 --- a/service/models.py +++ b/service/models.py @@ -198,4 +198,17 @@ class CallBack(models.Model): viewed = models.DateTimeField(null=True, blank=True) class Meta: - ordering = ['-created'] \ No newline at end of file + ordering = ['-created'] + + +from country.models import Country +from exposition.models import Exposition +from conference.models import Conference + + +class LinkedService(models.Model): + service = models.ForeignKey(Service, blank=False) + countries = models.ManyToManyField(Country, blank=True) + all_countries = models.BooleanField(default=False) + expositions = models.ManyToManyField(Exposition, blank=True) + conferences = models.ManyToManyField(Conference, blank=True)