remotes/origin/1203
Назар Котюк 11 years ago
commit 42e094022a
  1. 1
      article/admin.py
  2. 7
      article/forms.py
  3. 2
      article/models.py
  4. 6
      exposition/models.py
  5. 4
      service/order_forms.py
  6. 12
      service/views.py
  7. 23
      templates/admin/article/blog_form.html
  8. 5
      templates/client/article/article.html
  9. 5
      templates/client/article/news.html
  10. 2
      templates/client/base_catalog.html
  11. 2
      templates/client/includes/exposition/exposition_object.html
  12. 2
      templates/client/service/translator.html
  13. 48
      theme/management/commands/tag_translate.py

@ -157,6 +157,7 @@ class BlogView(FormView):
data = {} data = {}
data['theme'] = [item.id for item in article.theme.all()] data['theme'] = [item.id for item in article.theme.all()]
data['exposition'] = article.exposition data['exposition'] = article.exposition
data['publish_date'] = article.publish_date
data['conference'] = article.conference data['conference'] = article.conference
a = ','.join(['%s:%s'%(item.id, item.name) for item in article.tag.all()]) a = ','.join(['%s:%s'%(item.id, item.name) for item in article.tag.all()])

@ -21,6 +21,7 @@ class BlogForm(forms.Form):
type = Article.blog type = Article.blog
theme = forms.ModelMultipleChoiceField(label='Тематики', queryset=Theme.objects.all(), required=False, theme = forms.ModelMultipleChoiceField(label='Тематики', queryset=Theme.objects.all(), required=False,
widget=forms.SelectMultiple(attrs={'style':'width: 550px'})) widget=forms.SelectMultiple(attrs={'style':'width: 550px'}))
publish_date = forms.DateField(label=u'Дата публикации', input_formats=['%Y-%m-%d', '%d.%m.%Y'], required=False)
tag = forms.CharField(label=u'Теги', widget=forms.HiddenInput(), required=False) tag = forms.CharField(label=u'Теги', widget=forms.HiddenInput(), required=False)
logo = forms.ImageField(label=u'Лого', required=False) logo = forms.ImageField(label=u'Лого', required=False)
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
@ -51,10 +52,12 @@ class BlogForm(forms.Form):
#create new Article object or get exists #create new Article object or get exists
if not article: if not article:
article = Article() article = Article()
article.author = author
article.author = author
article.type = self.type article.type = self.type
article.logo = data['logo'] if data['logo']:
article.logo = data['logo']
article.publish_date = data['publish_date']
# fill translated fields and save object # fill translated fields and save object
fill_with_signal(Article, article, data) fill_with_signal(Article, article, data)
# fill manytomany fields # fill manytomany fields

@ -106,7 +106,7 @@ class Article(TranslatableModel):
"set a custom description."), default=False) "set a custom description."), default=False)
# published = models. # published = models.
created = models.DateTimeField() created = models.DateTimeField(auto_now_add=True)
modified = models.DateTimeField(auto_now=True) modified = models.DateTimeField(auto_now=True)
#translated fields #translated fields

@ -365,9 +365,9 @@ def logo_name(instance, filename):
class Paid(models.Model): class Paid(models.Model):
expo = models.OneToOneField(Exposition) expo = models.OneToOneField(Exposition)
org_logo = models.ImageField(upload_to=logo_name, blank=True, max_length=255) org_logo = models.ImageField(upload_to=logo_name, blank=True, max_length=255)
oficial_link = models.ForeignKey('banners.Redirect', null=True, blank=True) oficial_link = models.ForeignKey('banners.Redirect', null=True, blank=True, related_name='expo_oficial')
participation_link = models.ForeignKey('banners.Redirect', null=True, blank=True) participation_link = models.ForeignKey('banners.Redirect', null=True, blank=True, related_name='expo_participation')
tickets_link = models.ForeignKey('banners.Redirect', null=True, blank=True) tickets_link = models.ForeignKey('banners.Redirect', null=True, blank=True, related_name='expo_tickets')
pre_save.connect(pre_save_handler, sender=Exposition) pre_save.connect(pre_save_handler, sender=Exposition)

@ -131,8 +131,8 @@ LANGS = [(_(u'Русский'), _(u'Русский'))]
from theme.models import Theme from theme.models import Theme
class TranslationForm(AbstractOrderForm): class TranslationForm(AbstractOrderForm):
languages = forms.CharField(required=False) languages = forms.CharField(required=False, widget=forms.TextInput(attrs={'placeholder': _(u'Знание языков')}))
themes = forms.CharField(required=False) themes = forms.CharField(required=False, widget=forms.TextInput(attrs={'placeholder': _(u'Тематика')}))
fr = forms.DateField(input_formats=settings.CLIENT_DATE_FORMAT, fr = forms.DateField(input_formats=settings.CLIENT_DATE_FORMAT,
widget=forms.DateInput(attrs={'class': 'date dateFrom', 'placeholder': _(u'дд.мм.гггг')})) widget=forms.DateInput(attrs={'class': 'date dateFrom', 'placeholder': _(u'дд.мм.гггг')}))
to = forms.DateField(input_formats=settings.CLIENT_DATE_FORMAT, to = forms.DateField(input_formats=settings.CLIENT_DATE_FORMAT,

@ -8,6 +8,7 @@ from django.shortcuts import get_object_or_404
from django.http import Http404 from django.http import Http404
import json import json
from django.http import HttpResponseRedirect, HttpResponse from django.http import HttpResponseRedirect, HttpResponse
from meta.views import MetadataMixin
#from functions.search_forms import CompanySearchForm #from functions.search_forms import CompanySearchForm
from order_forms import TranslationForm, CatalogForm, VisitForm, RemoteForm, ParticipationForm, TicketsForm,\ from order_forms import TranslationForm, CatalogForm, VisitForm, RemoteForm, ParticipationForm, TicketsForm,\
@ -17,7 +18,10 @@ from order_forms import TranslationForm, CatalogForm, VisitForm, RemoteForm, Par
order_forms = {'translator': TranslationForm, 'catalog': CatalogForm, 'participation': ParticipationForm, order_forms = {'translator': TranslationForm, 'catalog': CatalogForm, 'participation': ParticipationForm,
'remote': RemoteForm, 'tickets': TicketsForm, 'visit': VisitForm, 'buildstand': BuildStandForm} 'remote': RemoteForm, 'tickets': TicketsForm, 'visit': VisitForm, 'buildstand': BuildStandForm}
class ServiceView(FormView): meta = {'translator': 80, 'participation': 85,
'remote': 84, 'tickets': 81, 'visit': 82}
class ServiceView(MetadataMixin, FormView):
success_url = '/service/thanks/' success_url = '/service/thanks/'
def dispatch(self, request, *args, **kwargs): def dispatch(self, request, *args, **kwargs):
@ -45,6 +49,12 @@ class ServiceView(FormView):
#messages.success(self.request, _(u'Ваш запрос был успешно отправлен')) #messages.success(self.request, _(u'Ваш запрос был успешно отправлен'))
return HttpResponseRedirect(self.success_url) return HttpResponseRedirect(self.success_url)
def get_context_data(self, **kwargs):
url = self.kwargs.get('url')
meta_id = meta.get(url)
kwargs.update({'meta_id': meta_id})
return super(ServiceView, self).get_context_data(**kwargs)
def advertise(request): def advertise(request):

@ -13,6 +13,21 @@
<script src="{% static 'custom_js/file_post_ajax.js' %}"></script> <script src="{% static 'custom_js/file_post_ajax.js' %}"></script>
<script src="{% static 'custom_js/select_tag.js' %}"></script> <script src="{% static 'custom_js/select_tag.js' %}"></script>
<link href="{% static 'js/datetimepicker/css/datetimepicker.css' %}" rel="stylesheet"/>
<script src="{% static 'js/datetimepicker/js/bootstrap-datetimepicker.js' %}"></script>
<script>
$(document).ready(function(){
$('#id_publish_date').datetimepicker({
todayHighlight: true,
format : 'yyyy-mm-dd',
minView:2
});
});
</script>
{% endblock %} {% endblock %}
{% block body %} {% block body %}
@ -29,6 +44,14 @@
{# main_title #} {# main_title #}
{% include 'admin/forms/multilang.html' with field='main_title' form=form languages=languages %} {% include 'admin/forms/multilang.html' with field='main_title' form=form languages=languages %}
<div class="control-group {% if form.publish_date.errors %}error{% endif %}">
<label class="control-label"><b>{{ form.publish_date.label }}:</b></label>
<div class="controls">
{{ form.publish_date }}
<span class="help-inline">{{ form.publish_date.errors }}</span>
</div>
</div>
{# theme #} {# theme #}
<div class="control-group {% if form.theme.errors %}error{% endif %}"> <div class="control-group {% if form.theme.errors %}error{% endif %}">
<label class="control-label"><b>{{ form.theme.label }}:</b></label> <label class="control-label"><b>{{ form.theme.label }}:</b></label>

@ -19,7 +19,10 @@
{% include 'client/includes/article/article_logo.html' with obj=object %} {% include 'client/includes/article/article_logo.html' with obj=object %}
<h1>{{ object.main_title }}</h1> <h1>{{ object.main_title }}</h1>
<strong><span>{{ object.created|date:"d E Y" }}</span><a class="profile_link" href="{{ object.author.get_permanent_url }}" title="">{{ object.author.get_full_name }}</a></strong> <strong><span>{{ object.publish_date|date:"d E Y" }}</span><a class="profile_link" href="{{ object.author.get_permanent_url }}" title="">{{ object.author.get_full_name }}</a></strong>
{% if request.user.is_admin %}
<a target="_blank" class="button green " href="/admin/article/blog/{{ object.slug }}/">{% trans 'изменить' %}</a>
{% endif %}
<p style="text-align: justify" align="justify">&nbsp;</p><hr> <p style="text-align: justify" align="justify">&nbsp;</p><hr>
<div class="content-text"> <div class="content-text">
{{ object.description|safe }} {{ object.description|safe }}

@ -20,7 +20,10 @@
{% include 'includes/article/article_logo.html' with obj=object %} {% include 'includes/article/article_logo.html' with obj=object %}
<h1>{{ object.main_title }}</h1> <h1>{{ object.main_title }}</h1>
<strong><span>{{ object.created|date:"d E Y" }}</span>{% if object.get_event %}<a class="flag" href="{{ object.get_event.get_permanent_url }}" title="">{{ object.get_event.name }}</a>{% endif %}</strong> <strong><span>{{ object.published|date:"d E Y" }}</span>{% if object.get_event %}<a class="flag" href="{{ object.get_event.get_permanent_url }}" title="">{{ object.get_event.name }}</a>{% endif %}</strong>
{% if request.user.is_admin %}
<a target="_blank" class="button green " href="/admin/article/news/{{ object.slug }}/">{% trans 'изменить' %}</a>
{% endif %}
</div> </div>
<div class="content-text"> <div class="content-text">
{{ object.description|safe }} {{ object.description|safe }}

@ -69,7 +69,7 @@
{% endwith %} {% endwith %}
{% block under_search_baner %} {% block under_search_baner %}
<div class="abn"> <div class="abn">
<a href="/redirect/redirect/10/"><img src="{% static 'client/img/partners/wire_760x70.gif' %}" alt="" /></a> <a target="_blank" href="/redirect/redirect/10/"><img src="{% static 'client/img/partners/wire_760x70.gif' %}" alt="" /></a>
</div> </div>
{% endblock %} {% endblock %}

@ -78,7 +78,7 @@
{% endwith %} {% endwith %}
</div> </div>
{% if request.user.is_admin %} {% if request.user.is_admin %}
<a class="button green " href="/admin/exposition/{{ object.url }}/">{% trans 'изменить' %}</a> <a target="_blank" class="button green " href="/admin/exposition/{{ object.url }}/">{% trans 'изменить' %}</a>
{% endif %} {% endif %}
</div> </div>
<div class="ib-add"><a class="button blue2 icon-find" href="http://www.booking.com/searchresults.html?aid={{ book_aid }}&city={{ object.city.id }}">{% trans 'Найти отель' %}</a></div> <div class="ib-add"><a class="button blue2 icon-find" href="http://www.booking.com/searchresults.html?aid={{ book_aid }}&city={{ object.city.id }}">{% trans 'Найти отель' %}</a></div>

@ -62,11 +62,13 @@
<div class="mf-line cols-2 rq-trans"> <div class="mf-line cols-2 rq-trans">
<div class="mf-field"> <div class="mf-field">
{{ form.languages }}
<input id="id_languages" name="languages" placeholder="{% trans 'Знание языков' %}" type="text" value="{{ form.languages.value }}"> <input id="id_languages" name="languages" placeholder="{% trans 'Знание языков' %}" type="text" value="{{ form.languages.value }}">
</div> </div>
<div class="mf-field"> <div class="mf-field">
{{ form.themes }}
<input id="id_themes" name="themes" placeholder="{% trans 'Тематика' %}" type="text" value="{{ form.themes.value }}"> <input id="id_themes" name="themes" placeholder="{% trans 'Тематика' %}" type="text" value="{{ form.themes.value }}">
</div> </div>

@ -4,55 +4,23 @@ import xlrd, xlwt
from django.conf import settings from django.conf import settings
from import_xls.excel_settings import import_settings from import_xls.excel_settings import import_settings
INFLECT_FILE = settings.MEDIA_ROOT+'/import/themes_inflect.xls'
class Command(BaseCommand): class Command(BaseCommand):
def handle(self, *args, **options): def handle(self, *args, **options):
f = open(settings.MEDIA_ROOT+'/import/tags2.xls', 'r') f = open(INFLECT_FILE, 'r')
book = xlrd.open_workbook(file_contents=f.read()) book = xlrd.open_workbook(file_contents=f.read())
sheet = book.sheet_by_index(0) sheet = book.sheet_by_index(0)
row_list = [sheet.row_values(row_number) for row_number in range(sheet.nrows)] row_list = [sheet.row_values(row_number) for row_number in range(sheet.nrows)]
# all field names in excel file (must be in second row) # all field names in excel file (must be in second row)
field_names = [name for name in row_list[1]] field_names = [name for name in row_list[1]]
for row_number, row in enumerate(row_list):
# go through all rows in file
if row_number > 1:
# first two fields are verbose name and name
if row[0] != '':
# in first column ids
try:
object = Tag.objects.language('en').get(id=int(row[0]))
except:
continue
for col_number, cell in enumerate(row):
# go through row cells
# field name current cell
field_name = field_names[col_number]
setting = import_settings.get(field_name)
if setting is not None:
# if setting exist for this field
func = setting.get('func')
if func is not None:
extra_value = setting.get('extra_values')
if extra_value is not None:
# if setting has extra value then
# it is some field like city, theme, tag
# that has relation and can be created
# in function we add language(need for relation fields) for row_number, row in enumerate(row_list[2:]):
# and extra value from object (like for city need country) id = int(row[0])
value = func(cell, 'en', getattr(object, extra_value)) a = row[3]
else: print a.encode('utf8')
value = func(cell) Theme.objects.filter(id=id).update(inflect=a)
if field_name != 'theme':
setattr(object, field_name, value)
else:
setattr(object, field_name, value[0])
print('pre save %s'%str(object))
try:
object.save()
except:
pass
print('post save %s'%str(object))
Loading…
Cancel
Save