Bigin creating dynamic page of services

remotes/origin/1203
Nazar Kotjuk 12 years ago
parent b8df218b79
commit 10f2958652
  1. 10
      accounts/forms.py
  2. 13
      service/forms.py
  3. 17
      service/templates/service_add.html
  4. 2
      service/urls.py
  5. 22
      service/views.py
  6. 15
      static/custom_js/service.js

@ -70,6 +70,16 @@ class UserForm(forms.ModelForm):
'date_joined', 'date_registered', 'date_modified') 'date_joined', 'date_registered', 'date_modified')
def clean_url(self):
url = self.cleaned_data.get('url')
try:
user = User.objects.get(url=translit_with_separator(url))
if (user.url == translit_with_separator(url)):
return url
except:
return url
raise forms.ValidationError('Такой урл уже занят')
def clean_phone(self): def clean_phone(self):
""" """
phone code checking phone code checking

@ -64,17 +64,6 @@ class ServiceForm(forms.Form):
else: else:
service = Service.objects.get(id=id) service = Service.objects.get(id=id)
#flag = 0
#for item in data['types']:
# flag = flag | getattr(Theme.types, item)
#generates bitfield
# countries = reduce(lambda x,y: x|y, (getattr(Service.country, item) for item in data['country']))
# service.country= countries
# cities = reduce(lambda x,y: x|y, (getattr(Service.city, item) for item in data['city']))
# service.city = cities
service.url = translit_with_separator(data['url']) if data['url'] else translit_with_separator(data['name_ru']) service.url = translit_with_separator(data['url']) if data['url'] else translit_with_separator(data['name_ru'])
service.price = data['price']+' '+data['currency']#%s %s'%(data['price'], data['currency']) service.price = data['price']+' '+data['currency']#%s %s'%(data['price'], data['currency'])
@ -111,7 +100,7 @@ class ServiceForm(forms.Form):
url = cleaned_data.get('url') url = cleaned_data.get('url')
try: try:
service = Service.objects.get(url=translit_with_separator(url)) service = Service.objects.get(url=translit_with_separator(url))
if (url ==service.url): if (translit_with_separator(url) == service.url):
return url return url
except: except:
return url return url

@ -8,6 +8,7 @@
<link href="{% static 'js/select/select2.css' %}" rel="stylesheet"/> <link href="{% static 'js/select/select2.css' %}" rel="stylesheet"/>
<script src="{% static 'js/select/select2.js' %}"></script> <script src="{% static 'js/select/select2.js' %}"></script>
<script src="{% static 'custom_js/make_select.js' %}"></script> <script src="{% static 'custom_js/make_select.js' %}"></script>
<script src="{% static 'custom_js/service.js' %}"></script>
<style> <style>
li{ li{
list-style-type: none; list-style-type: none;
@ -16,13 +17,7 @@
display: none; display: none;
} }
</style> </style>
<script>
$(document).ready(function(){
$('.reg').click(function(){
$(this).next().toggle();
});
});
</script>
{% endblock %} {% endblock %}
@ -75,13 +70,13 @@
<div class="control-group {% if form.europa.errors %}error{% endif %}"> <div class="control-group {% if form.europa.errors %}error{% endif %}">
<label class="control-label">Страны:</label> <label class="control-label">Страны:</label>
<div class="controls"> <div class="controls">
<label class="reg" style="margin-top: 20px;">{{ form.europa.label }}:</label> <p style="margin-top: 5px;"><input type="checkbox"> {{ form.europa.label }}:</p>
{{ form.europa }} {{ form.europa }}
<label class="reg">{{ form.asia.label }}:</label> <p><input type="checkbox"> {{ form.asia.label }}:</p>
{{ form.asia }} {{ form.asia }}
<label class="reg">{{ form.america.label }}:</label> <p><input type="checkbox"> {{ form.america.label }}:</p>
{{ form.america }} {{ form.america }}
<label class="reg">{{ form.africa.label }}:</label> <p><input type="checkbox"> {{ form.africa.label }}:</p>
{{ form.africa }} {{ form.africa }}
</div> </div>
</div> </div>

@ -6,6 +6,8 @@ urlpatterns = patterns('',
url(r'^change/(.*)/$', 'service.views.service_change'), url(r'^change/(.*)/$', 'service.views.service_change'),
url(r'^all/$', 'service.views.service_all'), url(r'^all/$', 'service.views.service_all'),
url(r'^get_city/$', 'service.views.get_city'),
url(r'^review/add.*/$', 'service.views.review_add'), url(r'^review/add.*/$', 'service.views.review_add'),
url(r'^review/change/(?P<review_id>\d+).*/$', 'service.views.review_change'), url(r'^review/change/(?P<review_id>\d+).*/$', 'service.views.review_change'),
url(r'^review/all/$', 'service.views.review_all'), url(r'^review/all/$', 'service.views.review_all'),

@ -9,6 +9,7 @@ from django.contrib.auth.decorators import login_required
from models import Service, Review from models import Service, Review
from forms import ServiceForm, ReviewForm from forms import ServiceForm, ReviewForm
from country.models import Country from country.models import Country
from city.models import City
#custom views #custom views
from functions.custom_views import objects_list from functions.custom_views import objects_list
@ -42,15 +43,18 @@ def service_change(request, url):
return HttpResponseRedirect('/service/all') return HttpResponseRedirect('/service/all')
else: else:
data = {} data = {}
#bitfield
# data['country'] = [item for item, bool in service.country if bool==True]
# data['city'] = [item for item, bool in service.city if bool==True]
try: try:
data['price'] = service.price.split(' ')[0] data['price'] = service.price.split(' ')[0]
data['currency'] = service.price.split(' ')[1] data['currency'] = service.price.split(' ')[1]
except:pass except:pass
data['service_id'] = service_id #countries sorted by this service
services_in_countries = Country.objects.filter(services=getattr(Country.services, str(service_id)))
data['europa'] = services_in_countries
data['asia'] = services_in_countries
data['africa'] = services_in_countries
data['america'] = services_in_countries
data['url'] = service.url data['url'] = service.url
#data from translated fields #data from translated fields
@ -135,4 +139,10 @@ def review_change(request, review_id):
args['form'] = form args['form'] = form
args['languages'] = settings.LANGUAGES args['languages'] = settings.LANGUAGES
return render_to_response('review_add.html', args) return render_to_response('review_add.html', args)
def get_city(request):
if request.GET:
country_id = request.GET['id']
City.objects.filter(country=country_id)
return HttpResponse(id)

@ -0,0 +1,15 @@
$(document).ready(function(){
$("input:checkbox[name='europa'] ").click(function(){
if ($(this).is(':checked')){
$.get(
"/service/get_city/",
{'id': $(this).val()},
function(j){
console.log(j);
});
}
else{
console.log('false');
}
})
});
Loading…
Cancel
Save