commit for Monday

remotes/origin/1203
Nazar Kotjuk 12 years ago
parent 10f2958652
commit fce8b3176f
  1. 3
      functions/form_check.py
  2. 32
      proj/settings.py
  3. 26
      service/forms.py
  4. 1
      service/urls.py
  5. 12
      service/views.py
  6. 26
      static/custom_js/service.js
  7. 68
      templates/admin/accounts/create_admin.html
  8. 75
      templates/admin/accounts/translator_change.html
  9. 60
      templates/admin/accounts/translators.html
  10. 68
      templates/admin/accounts/user_all.html
  11. 220
      templates/admin/accounts/user_change.html
  12. 0
      templates/admin/article/article_add.html
  13. 0
      templates/admin/article/article_all.html
  14. 0
      templates/admin/city/city_add.html
  15. 0
      templates/admin/city/city_all.html
  16. 0
      templates/admin/company/company_add.html
  17. 0
      templates/admin/company/company_all.html
  18. 0
      templates/admin/conference/conference_add.html
  19. 0
      templates/admin/conference/conference_all.html
  20. 0
      templates/admin/country/country_add.html
  21. 0
      templates/admin/country/country_all.html
  22. 0
      templates/admin/directories/directories_add.html
  23. 0
      templates/admin/directories/directories_ajax.html
  24. 0
      templates/admin/exposition/exposition_add.html
  25. 0
      templates/admin/exposition/exposition_all.html
  26. 0
      templates/admin/news/news_add.html
  27. 0
      templates/admin/news/news_all.html
  28. 0
      templates/admin/organiser/organiser_add.html
  29. 0
      templates/admin/organiser/organiser_all.html
  30. 0
      templates/admin/place_conference/place_conference_add.html
  31. 0
      templates/admin/place_conference/place_conference_all.html
  32. 0
      templates/admin/place_exposition/place_exposition_add.html
  33. 0
      templates/admin/place_exposition/place_exposition_all.html
  34. 0
      templates/admin/proj/settings.html
  35. 0
      templates/admin/seminar/seminar_add.html
  36. 0
      templates/admin/seminar/seminar_all.html
  37. 9
      templates/admin/service/checkbox_option.html
  38. 0
      templates/admin/service/review_add.html
  39. 0
      templates/admin/service/review_all.html
  40. 33
      templates/admin/service/service_add.html
  41. 0
      templates/admin/service/service_all.html
  42. 0
      templates/admin/theme/tag_add.html
  43. 0
      templates/admin/theme/tag_all.html
  44. 0
      templates/admin/theme/theme_add.html
  45. 0
      templates/admin/theme/theme_all.html
  46. 0
      templates/admin/webinar/webinar_add.html
  47. 0
      templates/admin/webinar/webinar_all.html

@ -31,3 +31,6 @@ def translit_with_separator(string, separator='-'):
st = re.sub('%s+'%separator, separator, st)
return st
#def check_url(url, id, Model, field='url', msg='Такой урл уже занят'):
# try:

@ -141,20 +141,24 @@ TEMPLATE_DIRS = (
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
'/home/kotzilla/Documents/qwer/proj/templates',
'/home/kotzilla/Documents/qwer/proj/country/tamplates',
'/home/kotzilla/Documents/qwer/proj/city/templates',
'/home/kotzilla/Documents/qwer/proj/directories/templates',
'/home/kotzilla/Documents/qwer/proj/proj/templates',
'/home/kotzilla/Documents/qwer/proj/theme/templates',
'/home/kotzilla/Documents/qwer/proj/service/templates',
'/home/kotzilla/Documents/qwer/proj/article/templates',
'/home/kotzilla/Documents/qwer/proj/place_conference/templates',
'/home/kotzilla/Documents/qwer/proj/place_exposition/templates',
'/home/kotzilla/Documents/qwer/proj/conference/templates',
'/home/kotzilla/Documents/qwer/proj/exposition/templates',
'/home/kotzilla/Documents/qwer/proj/webinar/templates',
'/home/kotzilla/Documents/qwer/proj/seminar/templates',
'/home/kotzilla/Documents/qwer/proj/news/templates',
'/home/kotzilla/Documents/qwer/proj/templates/admin/accounts',
'/home/kotzilla/Documents/qwer/proj/templates/admin/article',
'/home/kotzilla/Documents/qwer/proj/templates/admin/country',
'/home/kotzilla/Documents/qwer/proj/templates/admin/city',
'/home/kotzilla/Documents/qwer/proj/templates/admin/company',
'/home/kotzilla/Documents/qwer/proj/templates/admin/conference',
'/home/kotzilla/Documents/qwer/proj/templates/admin/directories',
'/home/kotzilla/Documents/qwer/proj/templates/admin/exposition',
'/home/kotzilla/Documents/qwer/proj/templates/admin/news',
'/home/kotzilla/Documents/qwer/proj/templates/admin/organiser',
'/home/kotzilla/Documents/qwer/proj/templates/admin/place_conference',
'/home/kotzilla/Documents/qwer/proj/templates/admin/place_exposition',
'/home/kotzilla/Documents/qwer/proj/templates/admin/proj',
'/home/kotzilla/Documents/qwer/proj/templates/admin/seminar',
'/home/kotzilla/Documents/qwer/proj/templates/admin/service',
'/home/kotzilla/Documents/qwer/proj/templates/admin/theme',
'/home/kotzilla/Documents/qwer/proj/templates/admin/webinar',
)
AUTH_USER_MODEL = 'accounts.User'

@ -10,6 +10,10 @@ from models import Review, Service
from country.models import Country, City
from functions.form_check import translit_with_separator
from django.forms.util import ErrorList
class ServiceForm(forms.Form):
europa = forms.ModelMultipleChoiceField(queryset=Country.objects.filter(region='europa'), required=False,
@ -31,6 +35,8 @@ class ServiceForm(forms.Form):
currency_list = [('USD','USD'), ('EUR','EUR'), ('RUB','RUB')]
currency = forms.ChoiceField(choices=currency_list)
service_id = forms.CharField(required=False, widget=forms.HiddenInput())
def __init__(self, *args, **kwargs):
@ -92,12 +98,32 @@ class ServiceForm(forms.Form):
update(services = F('services').bitand(~getattr(Country.services, str(service.id))))
def clean(self):
id = self.cleaned_data.get('service_id')
url = self.cleaned_data.get('url')
try:
service = Service.objects.get(url=translit_with_separator(url))
if (str(service.id) != str(id)):
msg = 'Такой урл уже занят'
self._errors['url'] = ErrorList([msg])
del self.cleaned_data['url']
except:
pass
return self.cleaned_data
def clean_url(self):
"""
check name which must be unique because it generate slug field
"""
cleaned_data = super(ServiceForm, self).clean()
url = cleaned_data.get('url')
id = cleaned_data.get('service_id')
try:
service = Service.objects.get(url=translit_with_separator(url))
if (translit_with_separator(url) == service.url):

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

@ -54,6 +54,8 @@ def service_change(request, url):
data['asia'] = services_in_countries
data['africa'] = services_in_countries
data['america'] = services_in_countries
#hidden field
data['service_id'] = service_id
data['url'] = service.url
@ -141,8 +143,14 @@ def review_change(request, review_id):
return render_to_response('review_add.html', args)
def get_country(request):
if request.GET:
country_region = request.GET['region']
countries = Country.objects.filter(region=country_region)
return render_to_response('checkbox_option.html', {'options': countries})
def get_city(request):
if request.GET:
country_id = request.GET['id']
City.objects.filter(country=country_id)
return HttpResponse(id)
cities = City.objects.filter(country=country_id)
return render_to_response('checkbox_option.html', {'options': cities})

@ -1,15 +1,33 @@
$(document).ready(function(){
$("input:checkbox[name='europa'] ").click(function(){
if ($(this).is(':checked')){
$('.toggle').click(function(){
$(this).parent().next().toggle();
return false;
});
$('.check').click(function(){
var $input = $(this).prev();
if ($input.is(':checked')){
$input.prop('checked', false);
$input.parent().next().find('input').prop('checked', false);
}
else{
$input.prop('checked', true);
$input.parent().next().find('input').prop('checked', true);
}
return false;
});
$("input:checkbox[name='europa'] ").change(function(){
var $this = $(this);
if ($this.is(':checked')){
$.get(
"/service/get_city/",
{'id': $(this).val()},
function(j){
console.log(j);
$this.parent().after(j);
console.log($this);
});
}
else{
console.log('false');
$this.parent().next().remove();
}
})
});

@ -0,0 +1,68 @@
{% extends 'base.html' %}
{% load static %}
{% block scripts %}
{% endblock %}
{% block body%}
<form method="post" class="form-horizontal" enctype="multipart/form-data"> {% csrf_token %}
<fieldset>
<legend><i class="icon-edit"></i>Создать администратора</legend>
<div class="box span8">
<div class="box-header well">
<h2><i class="icon-pencil"></i> </h2>
</div>
<div class="box-content">
{# email #}
<div class="control-group {% if form.email.errors %}error{% endif %}">
<label class="control-label">{{ form.email.label }}:</label>
<div class="controls">
{{ form.email }}
<span class="help-inline">{{ form.email.errors }}</span>
</div>
</div>
{# password1 #}
<div class="control-group {% if form.password1.errors %}error{% endif %}">
<label class="control-label">{{ form.password1.label }}:</label>
<div class="controls">
{{ form.password1 }}
<span class="help-inline">{{ form.password1.errors }}</span>
</div>
</div>
{# password2 #}
<div class="control-group {% if form.password2.errors %}error{% endif %}">
<label class="control-label">{{ form.password2.label }}:</label>
<div class="controls">
{{ form.password2 }}
<span class="help-inline">{{ form.password2.errors }}</span>
</div>
</div>
{# first_name #}
<div class="control-group {% if form.first_name.errors %}error{% endif %}">
<label class="control-label">{{ form.first_name.label }}:</label>
<div class="controls">
{{ form.first_name }}
<span class="help-inline">{{ form.first_name.errors }}</span>
</div>
</div>
{# last_name #}
<div class="control-group {% if form.last_name.errors %}error{% endif %}">
<label class="control-label">{{ form.last_name.label }}:</label>
<div class="controls">
{{ form.last_name }}
<span class="help-inline">{{ form.last_name.errors }}</span>
</div>
</div>
</div>
</div>
<div class="controls">
<input class="btn btn-large btn-primary" type="submit" value="Добавить">
<input class="btn btn-large" type="reset" value="Отмена">
</div>
</fieldset>
</form>
{% endblock %}

@ -0,0 +1,75 @@
{% extends 'base.html' %}
{% block body %}
<form method="post" class="form-horizontal" enctype="multipart/form-data"> {% csrf_token %}
<fieldset>
<legend><i class="icon-edit"></i>Изменить переводчика</legend>
<div class="box span8">
<div class="box-header well">
<h2><i class="icon-pencil"></i>Информация</h2>
</div>
<div class="box-content">
{# education #}
<div class="control-group {% if form.education.errors %}error{% endif %}">
<label class="control-label">{{ form.education.label }}:</label>
<div class="controls">{{ form.education }}
<span class="help-inline">{{ form.education.errors }}</span>
</div>
</div>
{# specialization #}
<div class="control-group {% if form.specialization.errors %}error{% endif %}">
<label class="control-label">{{ form.specialization.label }}:</label>
<div class="controls">{{ form.specialization }}
<span class="help-inline">{{ form.specialization.errors }}</span>
</div>
</div>
{# languages #}
<div class="control-group {% if form.languages.errors %}error{% endif %}">
<label class="control-label">{{ form.languages.label }}:</label>
<div class="controls">{{ form.languages }}
<span class="help-inline">{{ form.languages.errors }}</span>
</div>
</div>
{# native_language #}
<div class="control-group {% if form.native_language.errors %}error{% endif %}">
<label class="control-label">{{ form.native_language.label }}:</label>
<div class="controls">{{ form.native_language }}
<span class="help-inline">{{ form.native_language.errors }}</span>
</div>
</div>
{# car #}
<div class="control-group {% if form.car.errors %}error{% endif %}">
<label class="control-label">{{ form.car.label }}:</label>
<div class="controls">{{ form.car }}
<span class="help-inline">{{ form.car.errors }}</span>
</div>
</div>
{# prices #}
<div class="control-group {% if form.prices.errors %}error{% endif %}">
<label class="control-label">{{ form.prices.label }}:</label>
<div class="controls">{{ form.prices }}
<span class="help-inline">{{ form.prices.errors }}</span>
</div>
</div>
{# discounts #}
<div class="control-group {% if form.discounts.errors %}error{% endif %}">
<label class="control-label">{{ form.discounts.label }}:</label>
<div class="controls">{{ form.discounts }}
<span class="help-inline">{{ form.discounts.errors }}</span>
</div>
</div>
</div>
</div>
<div class="controls">
<input class="btn btn-large btn-primary" type="submit" value="Добавить">
<input class="btn btn-large" type="reset" value="Отмена">
</div>
</div>
</fieldset>
</form>
{% endblock %}

@ -0,0 +1,60 @@
{% extends 'base.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>Email</th>
<th>Полное имя</th>
<th>Переводчик</th>
<th>&nbsp;</th>
</tr>
</thead>
<tbody>
{% for item in objects %}
<tr>
<td>{{ item.id }}</td>
<td>{{ item.email }}</td>
<td>{{ item.get_full_name }}</td>
{% if item.is_translator %}
<td>Да</td>
{% else %}
<td>&nbsp;</td>
{% endif %}
<td class="center sorting_1">
<a class="btn btn-info" href="/accounts/translators/{{ item.id }}">
<i class="icon-edit icon-white"></i> Изменить
</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{# pagination #}
<div class="pagination pagination-centered">
<ul>
{% if objects.has_previous %}
<li> <a href="?page={{ objects.previous_page_number }}"></a></li>
{% endif %}
{% if objects.has_next %}
<li><a href="?page={{ objects.next_page_number }}"></a></li>
{% endif %}
</ul>
</div>
</div>
{% endblock %}

@ -0,0 +1,68 @@
{% extends 'base.html' %}
{% load static %}
{% 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>Email</th>
<th>Полное имя</th>
<th>Админ</th>
<th>Переводчик</th>
<th>&nbsp;</th>
</tr>
</thead>
<tbody>
{% for item in objects %}
<tr>
<td>{{ item.id }}</td>
<td>{{ item.email }}</td>
<td>{{ item.get_full_name }}</td>
{% if item.is_admin %}
<td>Да</td>
{% else %}
<td>&nbsp;</td>
{% endif %}
{% if item.is_translator %}
<td>Да</td>
{% else %}
<td>&nbsp;</td>
{% endif %}
<td class="center sorting_1">
<a class="btn btn-info" href="/accounts/change/{{ item.id }}">
<i class="icon-edit icon-white"></i> Изменить
</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{# pagination #}
<div class="pagination pagination-centered">
<ul>
{% if objects.has_previous %}
<li> <a href="?page={{ objects.previous_page_number }}"></a></li>
{% endif %}
{% if objects.has_next %}
<li><a href="?page={{ objects.next_page_number }}"></a></li>
{% endif %}
</ul>
</div>
</div>
{% endblock %}

@ -0,0 +1,220 @@
{% extends 'base.html' %}
{% load static %}
{% block scripts %}
<script src="{% static 'ckeditor/ckeditor/ckeditor.js' %}"></script>
{# selects #}
<link href="{% static 'js/select/select2.css' %}" rel="stylesheet"/>
<script src="{% static 'js/select/select2.js' %}"></script>
<script src="{% static 'custom_js/make_select.js' %}"></script>
<script>
$(document).ready(function(){
$('#rst_pswd').click(function(){
$.get(
"/accounts/reset_password_email/", {'email': $('#id_email').val()}, function(j){
alert(j);
});
return false;
})
})
</script>
{% endblock %}
{% block body %}
<form method="post" class="form-horizontal" enctype="multipart/form-data"> {% csrf_token %}
<fieldset>
<legend><i class="icon-edit"></i>Изменить пользователя</legend>
<div class="box span8">
<div class="box-header well">
<h2><i class="icon-pencil"></i> Основная информация</h2>
</div>
<div class="box-content">
{{ form.user_id }}
{# email #}
<div class="control-group {% if form.email.errors %}error{% endif %}">
<label class="control-label">{{ form.email.label }}:</label>
<div class="controls">
{{ form.email }}
<span class="help-inline">{{ form.email.errors }}</span>
</div>
</div>
{# first_name #}
<div class="control-group {% if form.first_name.errors %}error{% endif %}">
<label class="control-label">{{ form.first_name.label }}:</label>
<div class="controls">
{{ form.first_name }}
<span class="help-inline">{{ form.first_name.errors }}</span>
</div>
</div>
{# last_name #}
<div class="control-group {% if form.last_name.errors %}error{% endif %}">
<label class="control-label">{{ form.last_name.label }}:</label>
<div class="controls">
{{ form.last_name }}
<span class="help-inline">{{ form.last_name.errors }}</span>
</div>
</div>
{# url #}
<div class="control-group {% if form.url.errors %}error{% endif %}">
<label class="control-label">{{ form.url.label }}:</label>
<div class="controls">
{{ form.url }}
<span class="help-inline">{{ form.url.errors }}</span>
</div>
</div>
{# country #}
<div class="control-group {% if form.country.errors %}error{% endif %}">
<label class="control-label">{{ form.country.label }}:</label>
<div class="controls">
{{ form.country }}
<span class="help-inline">{{ form.country.errors }}</span>
</div>
</div>
{# city #}
<div class="control-group {% if form.city.errors %}error{% endif %}">
<label class="control-label">{{ form.city.label }}:</label>
<div class="controls">
{{ form.city }}
<span class="help-inline">{{ form.city.errors }}</span>
</div>
</div>
{# position #}
<div class="control-group {% if form.position.errors %}error{% endif %}">
<label class="control-label">{{ form.position.label }}:</label>
<div class="controls">
{{ form.position }}
<span class="help-inline">{{ form.position.errors }}</span>
</div>
</div>
</div>
</div>
<div class="box span8">
<div class="box-header well">
<h2><i class="icon-pencil"></i> Дополнительная информация</h2>
</div>
<div class="box-content">
{# avatar #}
<div class="control-group {% if form.avatar.errors %}error{% endif %}">
<label class="control-label">{{ form.avatar.label }}:</label>
<div class="controls">
{{ form.avatar }}
<span class="help-inline">{{ form.avatar.errors }}</span>
</div>
</div>
{# about #}
<div class="control-group {% if form.about.errors %}error{% endif %}">
<label class="control-label">{{ form.about.label }}:</label>
<div class="controls">
{{ form.about }}
<span class="help-inline">{{ form.about.errors }}</span>
</div>
</div>
{# phone #}
<div class="control-group {% if form.phone.errors %}error{% endif %}">
<label class="control-label">{{ form.phone.label }}:</label>
<div class="controls">
{{ form.phone }}
<span class="help-inline">{{ form.phone.errors }}</span>
</div>
</div>
{# web_page #}
<div class="control-group {% if form.web_page.errors %}error{% endif %}">
<label class="control-label">{{ form.web_page.label }}:</label>
<div class="controls">
{{ form.web_page }}
<span class="help-inline">{{ form.web_page.errors }}</span>
</div>
</div>
{# social #}
<div class="control-group {% if form.social.errors %}error{% endif %}">
<label class="control-label">{{ form.social.label }}:</label>
<div class="controls">
{{ form.social }}
<span class="help-inline">{{ form.social.errors }}</span>
</div>
</div>
{# company #}
<div class="control-group {% if form.company.errors %}error{% endif %}">
<label class="control-label">{{ form.company.label }}:</label>
<div class="controls">
{{ form.company }}
<span class="help-inline">{{ form.company.errors }}</span>
</div>
</div>
{# organiser #}
<div class="control-group {% if form.organiser.errors %}error{% endif %}">
<label class="control-label">{{ form.organiser.label }}:</label>
<div class="controls">
{{ form.organiser }}
<span class="help-inline">{{ form.organiser.errors }}</span>
</div>
</div>
{# is_translator #}
<div class="control-group {% if form.is_translator.errors %}error{% endif %}">
<label class="control-label">{{ form.is_translator.label }}:</label>
<div class="controls">
{{ form.is_translator }}
<span class="help-inline">{{ form.is_translator.errors }}</span>
</div>
</div>
</div>
</div>
<div class="box span8">
<div class="box-header well">
<h2><i class="icon-pencil"></i>Мета данные</h2>
</div>
<div class="box-content">
{# descriptions #}
<div class="control-group {% if form.descriptions.errors %}error{% endif %}">
<label class="control-label">{{ form.descriptions.label }}:</label>
<div class="controls">
{{ form.descriptions }}
<span class="help-inline">{{ form.descriptions.errors }}</span>
</div>
</div>
{# title #}
<div class="control-group {% if form.title.errors %}error{% endif %}">
<label class="control-label">{{ form.title.label }}:</label>
<div class="controls">
{{ form.title }}
<span class="help-inline">{{ form.title.errors }}</span>
</div>
</div>
{# keywords #}
<d iv class="control-group {% if form.keywords.errors %}error{% endif %}">
<label class="control-label">{{ form.keywords.label }}:</label>
<div class="controls">
{{ form.keywords }}
<span class="help-inline">{{ form.keywords.errors }}</span>
</div>
</div>
</div>
<div class="controls">
<input class="btn btn-large btn-primary" type="submit" value="Добавить">
<input class="btn btn-large" type="reset" value="Отмена">
</div>
</div>
</fieldset>
</form>
{% comment %}
{% for field in form %}
{{ field }}
{% endfor %}
{% endcomment %}
{% endblock %}

@ -0,0 +1,9 @@
<ul>
{% for item in options %}
<li>
<label for="id_{{ item.country }}_{{ item.id }}">
<input type="checkbox" id="id_{{ item.country }}_{{ item.id }}" name="{{ item.country }}"
checked="true" value="{{ item.id }}">{{ item.name }}</label>
</li>
{% endfor %}
</ul>

@ -16,6 +16,14 @@
.region{
display: none;
}
.country_child{
margin-left: 20px;
}
.toggle{
border: none;
box-shadow: none;
}
</style>
@ -34,6 +42,7 @@
<h2><i class="icon-pencil"></i> Информация о услуге</h2>
</div>
<div class="box-content">
{{ form.service_id }}
{# name #}
{% with field='name' form=form languages=languages %}
{% include 'admin/forms/multilang.html' %}
@ -70,13 +79,29 @@
<div class="control-group {% if form.europa.errors %}error{% endif %}">
<label class="control-label">Страны:</label>
<div class="controls">
<p style="margin-top: 5px;"><input type="checkbox"> {{ form.europa.label }}:</p>
<p style="margin-top: 5px;"><input type="checkbox">
<a class="check" href="#"><i class="icon-ok"></i></a>
{{ form.europa.label }}
<a class="btn toggle" href="#"><span class="caret"></span></a>
</p>
{{ form.europa }}
<p><input type="checkbox"> {{ form.asia.label }}:</p>
<p><input type="checkbox">
<a class="check" href="#"><i class="icon-ok"></i></a>
{{ form.asia.label }}
<a class="btn toggle" href="#"><span class="caret"></span></a>
</p>
{{ form.asia }}
<p><input type="checkbox"> {{ form.america.label }}:</p>
<p><input type="checkbox">
<a class="check" href="#"><i class="icon-ok"></i></a>
{{ form.america.label }}
<a class="btn toggle" href="#"><span class="caret"></span></a>
</p>
{{ form.america }}
<p><input type="checkbox"> {{ form.africa.label }}:</p>
<p><input type="checkbox">
<a class="check" href="#"><i class="icon-ok"></i></a>
{{ form.africa.label }}
<a class="btn toggle" href="#"><span class="caret"></span></a>
</p>
{{ form.africa }}
</div>
</div>
Loading…
Cancel
Save