parent
a60c4ba173
commit
e05624c4a7
31 changed files with 291 additions and 588 deletions
@ -1,68 +0,0 @@ |
||||
{% 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 %} |
||||
@ -1,75 +0,0 @@ |
||||
{% 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 %} |
||||
@ -1,60 +0,0 @@ |
||||
{% 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> </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> </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 %} |
||||
@ -1,68 +0,0 @@ |
||||
{% 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> </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> </td> |
||||
{% endif %} |
||||
|
||||
{% if item.is_translator %} |
||||
<td>Да</td> |
||||
{% else %} |
||||
<td> </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 %} |
||||
@ -1,220 +0,0 @@ |
||||
{% 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,8 @@ |
||||
# -*- coding: utf-8 -*- |
||||
from django.db import connection |
||||
|
||||
def db_table_exists(table_name): |
||||
""" |
||||
return true if table exist |
||||
""" |
||||
return table_name in connection.introspection.table_names() |
||||
@ -1,8 +1,8 @@ |
||||
# -*- coding: utf-8 -*- |
||||
from django.conf.urls import patterns, include, url |
||||
|
||||
urlpatterns = patterns('', |
||||
url(r'^add.*/$', 'organiser.views.organiser_add'), |
||||
url(r'^change/(?P<organiser_id>\d+).*/$', 'organiser.views.organiser_change'), |
||||
url(r'^all/$', 'organiser.views.organiser_all'), |
||||
urlpatterns = patterns('organiser.views', |
||||
url(r'^add.*/$', 'organiser_add'), |
||||
url(r'^change/(?P<url>.*).*/$', 'organiser_change'), |
||||
url(r'^all/$', 'organiser_all'), |
||||
) |
||||
@ -0,0 +1,79 @@ |
||||
# -*- coding: utf-8 -*- |
||||
from django import forms |
||||
from django.conf import settings |
||||
from ckeditor.widgets import CKEditorWidget |
||||
from models import Translator |
||||
from country.models import Country |
||||
from city.models import City |
||||
#functions |
||||
from functions.translate import populate_all, fill_trans_fields_all |
||||
from functions.files import check_tmp_files |
||||
from functions.form_check import translit_with_separator |
||||
|
||||
|
||||
|
||||
class TranslatorForm(forms.Form): |
||||
""" |
||||
Create Translator form for creating translator |
||||
|
||||
__init__ uses for dynamic creates fields |
||||
|
||||
save function saves data in Translator object. If it doesnt exist create new object |
||||
""" |
||||
car = forms.BooleanField(label='Личный автомобиль', required=False) |
||||
birth = forms.DateField(label='Дата рождения') |
||||
gender = forms.ChoiceField(label='Пол', choices=[('male', 'Мужской'),('female', 'Женский')]) |
||||
|
||||
|
||||
def __init__(self, *args, **kwargs): |
||||
""" |
||||
create dynamical translated fields fields |
||||
""" |
||||
super(TranslatorForm, self).__init__(*args, **kwargs) |
||||
#creates translated forms example: name_ru, name_en |
||||
# len(10) is a hack for detect if settings.LANGUAGES is not configured it return all langs |
||||
if len(settings.LANGUAGES) in range(10): |
||||
for lid, (code, name) in enumerate(settings.LANGUAGES): |
||||
# uses enumerate for detect iteration number |
||||
# first iteration is a default lang so it required fields |
||||
required = True if lid == 0 else False |
||||
self.fields['education_%s' % code] = forms.CharField(label='Образование', required=required) |
||||
self.fields['specialization_%s' % code] = forms.CharField(label='Специализация', required=required) |
||||
self.fields['languages_%s' % code] = forms.CharField(label='Языки', required=required) |
||||
self.fields['native_language_%s' % code] = forms.CharField(label='Родной язык', required=required) |
||||
self.fields['prices_%s' % code] = forms.CharField(label='Цены', |
||||
required=required, widget=CKEditorWidget) |
||||
self.fields['discounts_%s' % code] = forms.CharField(label='Скидки', |
||||
required=False, widget=CKEditorWidget) |
||||
#meta data |
||||
self.fields['title_%s' % code] = forms.CharField(label='Тайтл', required=False, max_length=255, |
||||
widget=forms.TextInput(attrs={'style':'width: 550px'})) |
||||
self.fields['keywords_%s' % code] = forms.CharField(label='Дескрипшен', required=False, max_length=255, |
||||
widget=forms.TextInput(attrs={'style':'width: 550px'})) |
||||
self.fields['descriptions_%s' % code] = forms.CharField(label='Кейвордс', required=False, max_length=255, |
||||
widget=forms.TextInput(attrs={'style':'width: 550px'})) |
||||
|
||||
def save(self, id=None): |
||||
#create new conference object or get exists |
||||
if not id: |
||||
translator = Translator() |
||||
else: |
||||
translator = Translator.objects.get(id=id) |
||||
|
||||
data = self.cleaned_data |
||||
|
||||
translator.car = data['car'] |
||||
translator.birth = data['birth'] |
||||
translator.gender = data['gender'] |
||||
|
||||
#will be saved populated fields |
||||
zero_fields = {} |
||||
#fills all translated fields with data |
||||
#if saves new object, will fill city object. otherwise existing object of City model |
||||
fill_trans_fields_all(Translator, translator, data, id, zero_fields) |
||||
#autopopulate |
||||
#populate empty fields and fields which was already populated |
||||
conference_id = getattr(conference, 'id') |
||||
populate_all(Conference, data, conference_id, zero_fields) |
||||
#save files |
||||
check_tmp_files(conference, data['key']) |
||||
@ -0,0 +1,41 @@ |
||||
# -*- coding: utf-8 -*- |
||||
from django.db import models |
||||
from hvad.models import TranslatableModel, TranslatedFields, TranslationManager |
||||
# |
||||
from functions.custom_fields import EnumField |
||||
|
||||
|
||||
class TranslatorManager(TranslationManager): |
||||
def safe_get(self, **kwargs): |
||||
model = self.model |
||||
try: |
||||
return model.objects.get(**kwargs) |
||||
except: |
||||
return None |
||||
|
||||
|
||||
class Translator(TranslatableModel): |
||||
""" |
||||
Extra information about translators |
||||
""" |
||||
#set manager of this model |
||||
objects = TranslationManager() |
||||
|
||||
gender = EnumField(values=('male', 'female')) |
||||
|
||||
birth = models.DateField(verbose_name='Дата рождения') |
||||
car = models.BooleanField(verbose_name='Личный автомобиль', default=0) |
||||
|
||||
translations = TranslatedFields( |
||||
education = models.CharField(verbose_name='Образование', max_length=255), |
||||
specialization = models.CharField(verbose_name='Специализация', max_length=255), |
||||
languages = models.CharField(verbose_name='Языки', max_length=255), |
||||
native_language= models.CharField(verbose_name='Родной язык', max_length=255), |
||||
|
||||
prices = models.TextField(verbose_name='Тарифы'), |
||||
discounts = models.TextField(verbose_name='Скидки', blank=True), |
||||
#-----meta |
||||
title = models.CharField(max_length=255, blank=True), |
||||
descriptions = models.CharField(max_length=255, blank=True), |
||||
keywords = models.CharField(max_length=255, blank=True), |
||||
) |
||||
@ -0,0 +1,16 @@ |
||||
""" |
||||
This file demonstrates writing tests using the unittest module. These will pass |
||||
when you run "manage.py test". |
||||
|
||||
Replace this with more appropriate tests for your application. |
||||
""" |
||||
|
||||
from django.test import TestCase |
||||
|
||||
|
||||
class SimpleTest(TestCase): |
||||
def test_basic_addition(self): |
||||
""" |
||||
Tests that 1 + 1 always equals 2. |
||||
""" |
||||
self.assertEqual(1 + 1, 2) |
||||
@ -0,0 +1,9 @@ |
||||
# -*- coding: utf-8 -*- |
||||
from django.conf.urls import patterns, url |
||||
|
||||
urlpatterns = patterns('translator.views', |
||||
url(r'^add.*/$', 'translator_add'), |
||||
url(r'^delete/(?P<url>.*)/$', 'translator_delete'), |
||||
url(r'^change/(?P<url>.*)/$', 'translator_change'), |
||||
url(r'^all/$', 'translator_all'), |
||||
) |
||||
@ -0,0 +1,10 @@ |
||||
# -*- coding: utf-8 -*- |
||||
from django.shortcuts import render_to_response |
||||
from django.http import HttpResponseRedirect |
||||
from django.core.context_processors import csrf |
||||
from django.conf import settings |
||||
from django.contrib.auth.decorators import login_required |
||||
#models and forms |
||||
from models import Translator |
||||
#custom views |
||||
from functions.custom_views import objects_list, delete_object |
||||
Loading…
Reference in new issue