Merge branch 'develop' of git.general-servers.com:expomap/expomap into develop

remotes/origin/1203
pavel 11 years ago
commit 2e14e2514e
  1. 1
      article/admin.py
  2. 62
      article/management/commands/article_load.py
  3. 27
      article/management/commands/news_from_old.py
  4. 69
      article/management/commands/update_news.py
  5. 37
      article/models.py
  6. 2
      article/views.py
  7. 6
      conference/management/commands/conf_load.py
  8. 26
      exposition/admin.py
  9. 3
      exposition/admin_urls.py
  10. 24
      exposition/management/commands/exposition_load.py
  11. 11
      import_xls/excel_settings.py
  12. 29
      import_xls/utils.py
  13. 17
      proj/views.py
  14. 2
      service/views.py
  15. 14
      settings/admin.py
  16. 39
      settings/forms.py
  17. 4
      templates/admin/base.html
  18. 49
      templates/admin/settings/main_page.html
  19. 3
      templates/client/article/news.html
  20. 2
      templates/client/article/news_list.html
  21. 4
      templates/client/base_catalog.html
  22. 2
      templates/client/includes/article/news_on_main_logo.html
  23. 2
      templates/client/includes/article/news_preview.html
  24. 10
      templates/client/includes/article_tags.html
  25. 73
      templates/client/includes/news.html

@ -194,6 +194,7 @@ class BlogView(FormView):
class NewsList(ListView):
model = Article
template_name = 'article/article_admin_list.html'
paginate_by = 20
def get_queryset(self):
return self.model.objects.news()

@ -0,0 +1,62 @@
# -*- coding: utf-8 -*-
import xlrd
from django.core.management.base import BaseCommand
from django.conf import settings
from article.models import Article
from import_xls.excel_settings import article_sett
from django.db import IntegrityError
NEWS_FILE = settings.MEDIA_ROOT+'/import/news.xls'
class Command(BaseCommand):
def handle(self, *args, **options):
f = open(NEWS_FILE, 'r')
book = xlrd.open_workbook(file_contents=f.read())
sheet = book.sheet_by_index(0)
row_list = [sheet.row_values(row_number) for row_number in range(sheet.nrows)]
labels = [label for label in row_list[0]]
existing = 0
for row_number, row in enumerate(row_list[2:]):
published = row[4]
if row[0] != '':
# in first column ids
try:
object = Article.objects.language('ru').get(id=int(row[0]))
object.type = Article.news
object.save()
print(object.type)
continue
except ValueError:
object = Article(type=Article.news)
object.translate('ru')
except Article.DoesNotExist:
object = Article(id= int(row[0]))
object.translate('ru')
existing += 1
else:
# if id blank - its a new place
object = Article(type=Article.news)
object.translate('ru')
for col_number, cell in enumerate(row):
label = labels[col_number]
setting = article_sett.get(label)
if setting is None:
continue
field_name = setting['field']
func = setting.get('func')
value = func(cell)
setattr(object, field_name, value)
object.publish_date = published
try:
object.save()
except Exception, e:
print(e)

@ -10,9 +10,9 @@ from django.db import IntegrityError
class Command(BaseCommand):
def handle(self, *args, **options):
db = MySQLdb.connect(host="localhost",
user="kotzilla",
passwd="qazedc",
db="old_expomap",
user="expomap",
passwd="7FbLtAGjse",
db="old_db",
charset='utf8',
cursorclass=DictCursor)
cursor = db.cursor()
@ -22,18 +22,34 @@ class Command(BaseCommand):
cid as author,
date_added as created
FROM `latest_news` order by created DESC"""
FROM `latest_news`
WHERE status = 1
AND `date_added` >= '2015-04-03'
order by created DESC"""
cursor.execute(sql)
result = cursor.fetchall()
user = User.objects.get(id=1)
Article.objects.news().delete()
#Article.objects.news().delete()
for a in result:
title = a['main_title']
id = a['id']
published = a['created']
#try:
# news = Article.objects.get(id=id)
#except Article.DoesNotExist:
# continue
#news.publish_date = published
#news.save()
if len(a['main_title'])>255 or not a['main_title']:
continue
article = Article(type=Article.news,
id=a['id'],
created=a['created'])
@ -58,5 +74,6 @@ class Command(BaseCommand):
#print(a['main_title'])

@ -0,0 +1,69 @@
# -*- coding: utf-8 -*-
import MySQLdb
import datetime
from django.utils.translation import activate
from MySQLdb.cursors import DictCursor
from django.core.management.base import BaseCommand, CommandError
from django.conf import settings
import xlrd
from import_xls.utils import to_theme, to_tag
from functions.translate import fill_with_signal
from article.models import Article
from accounts.models import User
from django.db import IntegrityError
from exposition.models import Exposition
NEWS_FILE = settings.MEDIA_ROOT+'/import/exported_news.xls'
BLOGS_FILE = settings.MEDIA_ROOT+'/import/blogs.xls'
class Command(BaseCommand):
def handle(self, *args, **options):
activate('ru')
f = open(BLOGS_FILE, 'r')
book = xlrd.open_workbook(file_contents=f.read())
sheet = book.sheet_by_index(0)
row_list = [sheet.row_values(row_number) for row_number in range(sheet.nrows)]
print(len(row_list))
existing = 0
for row_number, row in enumerate(row_list[2:]):
id = int(row[0])
if id == 49:
continue
main_title = row[1]
theme = row[2]
tag = row[3]
description = row[4]
article = Article.objects.language('ru').get(id=id)
#article.main_title = main_title
#article.description = description
#article.save()
to_theme(article, theme)
to_tag(article, tag)
print(id)
"""
try:
expo = Exposition.objects.filter(translations__name=event)[0]
except IndexError:
expo = None
if expo:
article.exposition = expo
article.save()
print(id)
"""

@ -3,6 +3,7 @@ import copy
from django.db import models
from django.contrib.contenttypes import generic
from django.utils.translation import ugettext_lazy as _
from django.utils import translation
from django.utils.timezone import now
from hvad.models import TranslatableModel, TranslatedFields, TranslationManager
from django.utils.html import strip_tags
@ -10,10 +11,12 @@ from sorl.thumbnail import ImageField
from functions.url_utils import slugify, unique_slug
from functions.model_utils import base_concrete_model
from functions.form_check import translit_with_separator
from django.core.cache import cache
class ArticleManager(TranslationManager):
cache_time = 60
def safe_get(self, **kwargs):
model = self.model
try:
@ -35,6 +38,30 @@ class ArticleManager(TranslationManager):
model = self.model
return self.language().filter(type=model.blog)
def main_page_news(self):
lang = translation.get_language()
key = 'main_page_news_%s'%lang
cached_news = cache.get(key)
if cached_news:
return cached_news
else:
news = list(self.news().filter(publish_date__isnull=False).order_by('-main_page', '-publish_date')[:3])
cache.set(key, news, self.cache_time)
return news
def main_page_blogs(self):
lang = translation.get_language()
key = 'main_page_blogs_%s'%lang
cached_blogs = cache.get(key)
if cached_blogs:
return cached_blogs
else:
blogs = list(self.blogs().filter(publish_date__isnull=False).order_by('-main_page', '-publish_date')[:3])
cache.set(key, blogs, self.cache_time)
return blogs
return list(self.blogs().filter(publish_date__isnull=False).order_by('-main_page', '-publish_date')[:3])
class Article(TranslatableModel):
"""
Create Article model
@ -213,6 +240,16 @@ class Article(TranslatableModel):
return preview[0]
else:
return None
def get_catalog(self):
if self.type == 1:
return '/blogs/'
elif self.type == 2:
return '/news/'
def similar(self):
themes = [item ['id'] for item in self.theme.all().values('id')]
return list(Article.objects.language().exclude(id=self.id).filter(type=self.type, publish_date__isnull=False, theme__in=themes).order_by('-publish_date')[:3])
from django.db.models.signals import post_save
from functions.signal_handlers import post_save_handler

@ -29,7 +29,7 @@ class NewsList(ListView):
return qs
else:
return self.model.objects.news()
return self.model.objects.news().filter(publish_date__isnull=False).order_by('-publish_date')
def get_context_data(self, **kwargs):
context = super(NewsList, self).get_context_data(object_list=self.object_list)

@ -8,12 +8,13 @@ from django.db import IntegrityError
CONF_FILE = settings.MEDIA_ROOT+'/import/conf.xls'
ADDCONF_FILE = settings.MEDIA_ROOT+'/import/add_conf.xls'
class Command(BaseCommand):
def handle(self, *args, **options):
f = open(CONF_FILE, 'r')
f = open(ADDCONF_FILE, 'r')
book = xlrd.open_workbook(file_contents=f.read())
sheet = book.sheet_by_index(0)
row_list = [sheet.row_values(row_number) for row_number in range(sheet.nrows)]
@ -21,6 +22,8 @@ class Command(BaseCommand):
existing = 0
for row_number, row in enumerate(row_list[1:]):
if row[0] != '':
try:
@ -93,3 +96,4 @@ class Command(BaseCommand):
continue
else:
func(object, method['value'])

@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
import json
from django.shortcuts import render_to_response
from django.http import HttpResponseRedirect, HttpResponse
from django.core.context_processors import csrf
@ -8,6 +9,7 @@ from django.forms.models import modelformset_factory
from django.contrib.contenttypes.models import ContentType
from django.contrib.auth.decorators import login_required
# models and forms
from haystack.query import SearchQuerySet
from models import Exposition, TimeTable, Statistic, TmpTimeTable
from forms import ExpositionCreateForm, ExpositionDeleteForm, TimeTableForm, StatisticForm, ExpositionFilterForm
from theme.models import Tag
@ -360,4 +362,26 @@ class ExpositionListView(AdminListView):
def upload_exposition_photo(request, expo_id):
return upload_photo(request, expo_id, Exposition)
return upload_photo(request, expo_id, Exposition)
def get_by_lang(item, field, lang='en'):
"""
:param item: searchresult object
field: translated field
:return:
"""
return getattr(item, field+'_'+lang)
from django.utils import translation
def search_expo(request):
term = request.GET['term'].capitalize()
lang = translation.get_language()
if not term:
qs = SearchQuerySet().models(Exposition).order_by('text')[:30]
else:
qs = SearchQuerySet().models(Exposition).autocomplete(content_auto=term).order_by('text')[:30]
result = [{'id': item.pk, 'label': get_by_lang(item, 'name', lang)} for item in qs]
return HttpResponse(json.dumps(result), content_type='application/json')

@ -11,8 +11,11 @@ urlpatterns = patterns('exposition.admin',
url(r'^all/$', ExpositionListView.as_view()),
url(r'^switch/(?P<url>.*)/(?P<action>.*)$', 'exposition_switch'),
#url(r'^copy/(?P<url>.*)$', 'exposition_copy'),
url(r'^search/$', 'search_expo'),
url(r'^(?P<url>.*)/$', ExpositionView.as_view()),
url(r'^$', ExpositionView.as_view()),
)

@ -5,6 +5,7 @@ from django.conf import settings
from exposition.models import Exposition
from import_xls.excel_settings import event_sett
from django.db import IntegrityError
from django.utils import translation
CHINA_FILE = settings.MEDIA_ROOT+'/import/expo_china_ru.xlsx'
GERMANY_FILE = settings.MEDIA_ROOT+'/import/expo_germany_ru.xlsx'
@ -17,22 +18,29 @@ LA_FILE = settings.MEDIA_ROOT+'/import/expo_la.xlsx'
NA_EU_ASIA_FILE = settings.MEDIA_ROOT+'/import/expo_na_eu_ sa.xls'
NA_EU_ASIA_FILE2 = settings.MEDIA_ROOT+'/import/expo_na_eu_ sa_part2.xls'
RUSSIA_FILE = settings.MEDIA_ROOT+'/import/expo_russia.xls'
GEORGIA_FILE = settings.MEDIA_ROOT+'/import/georgia.xls'
class Command(BaseCommand):
def handle(self, *args, **options):
f = open(RUSSIA_FILE, 'r')
f = open(GEORGIA_FILE, 'r')
book = xlrd.open_workbook(file_contents=f.read())
sheet = book.sheet_by_index(0)
row_list = [sheet.row_values(row_number) for row_number in range(sheet.nrows)]
labels = [label for label in row_list[0]]
existing = 0
for row_number, row in enumerate(row_list[1:]):
#print(row_number)
name = row[2]
if row[0] != '':
# in first column ids
try:
object = Exposition.objects.language('ru').get(id=int(row[0]))
existing += 1
@ -49,6 +57,15 @@ class Command(BaseCommand):
# if id blank - its a new place
object = Exposition()
object.translate('ru')
"""
try:
object = Exposition.objects.language('ru').filter(translations__name=name)[0]
existing += 1
except IndexError:
pass
"""
methods = []
for col_number, cell in enumerate(row):
@ -83,12 +100,13 @@ class Command(BaseCommand):
pass
else:
setattr(object, field_name, value)
try:
object.save()
except IntegrityError:
continue
print('post save %s'% str(object))
@ -101,3 +119,5 @@ class Command(BaseCommand):
continue
else:
func(object, method['value'])
print(existing)

@ -330,6 +330,17 @@ place_exp_sett = {
u'Мобильное приложение':{u'field': u'mobile_application', u'func': bool},
}
article_sett = {
u'ID':{u'field': u'id', u'func': to_int},
u'Заголовок':{u'field': u'main_title', u'func': unicode},
u'Описание':{u'field': u'description', u'func': unicode},
u'Айди автора':{u'field': u'author', u'func': to_user},
u'Создана':{u'field': u'created', u'func': to_datetime}
}
event_sett = {
u'ID':{u'field': u'id', u'func': to_int},
u'Url':{u'field': u'url', u'func': unicode},

@ -12,6 +12,7 @@ from city.models import City
from theme.models import Theme, Tag
from functions.files import get_alternative_filename
from exposition.models import BIT_AUDIENCE
from accounts.models import User
def to_int(val):
@ -29,12 +30,23 @@ def to_date(value):
return None
if isinstance(value, unicode) or isinstance(value, str):
t = time.strptime(value, "%d.%m.%Y")
try:
t = time.strptime(value, "%d.%m.%Y")
except ValueError:
t = time.strptime(value, "%d/%m/%Y")
if isinstance(value, float):
t = xlrd.xldate_as_tuple(value, 0)+(0,0,0)
return time.strftime("%Y-%m-%d", t)
def to_datetime(value):
if not value:
return None
if isinstance(value, unicode) or isinstance(value, str):
t = time.strptime(value, "%Y-%m-%d %H:%M:%S")
return time.strftime("%Y-%m-%d %H:%M:%S", t)
def to_country(value):
try:
query = get_translation_aware_manager(Country)
@ -72,6 +84,9 @@ def to_theme(obj, value):
else:
theme_ids = value.split(',')
if theme_ids == ['']:
return
obj.theme.clear()
obj.theme.add(*Theme.objects.filter(id__in=theme_ids))
def to_tag(obj,value):
@ -80,6 +95,7 @@ def to_tag(obj,value):
names = value.split(',')
translation.activate('en')
if names:
obj.tag.clear()
obj.tag.add(*Tag.objects.filter(translations__name__in=names, theme__in=obj.theme.all()))
else:
return
@ -190,4 +206,11 @@ def check_quality_label(obj, value, label):
return bit
if value:
setattr(bit, label, True)
return bit
return bit
def to_user(value):
try:
return User.objects.get(id=value)
except User.DoesNotExist:
return User.objects.get(id=1)

@ -17,15 +17,15 @@ from accounts.forms import RegistrationCompleteForm
def expo_context(request):
cont = {'theme_search_form': ThemeSearch(), 'expo_catalog': Exposition.catalog,
'book_aid': settings.BOOKING_AID}
'book_aid': settings.BOOKING_AID, 'blogs': Article.objects.main_page_blogs(),
'news_list': Article.objects.main_page_news()
}
user = request.user
if not user.is_anonymous() and not user.url:
cont.update({'reg_complete': RegistrationCompleteForm(instance=user)})
if not request.GET:
cont.update({'search_form': ExpositionSearchForm()})
return cont
@ -34,16 +34,13 @@ class MainPageView(TemplateView):
def get_context_data(self, **kwargs):
context = super(MainPageView, self).get_context_data(**kwargs)
events = Exposition.objects.language().filter(main_page=1)
events = Exposition.objects.language().select_related('country', 'city', 'place').filter(main_page=1)
exposition_themes = Theme.objects.language().order_by('-main_page').filter(types=Theme.types.exposition)[:6]
conference_themes = Theme.objects.language().order_by('-main_page').filter(types=Theme.types.conference)[:6]
news_list = Article.objects.news().filter(main_page=1)
blogs = Article.objects.blogs().filter(main_page=1)
args = {'events': events, 'exposition_themes': exposition_themes,
'conference_themes': conference_themes, 'news_list': news_list,
'blogs': blogs, 'search_form': ExpositionSearchForm, 'search_action': '/expo/search/'}
args = {'events': events, 'exposition_themes': exposition_themes, 'conference_themes': conference_themes,
'search_form': ExpositionSearchForm, 'search_action': '/expo/search/'}
context.update(args)

@ -47,6 +47,8 @@ def advertise(request):
response['errors'] = form.errors
return HttpResponse(json.dumps(response), content_type='application/json')
else:
raise HttpResponse('not ajax')
from service.models import CallBack, Visit, Translation, Advertising, Participation, Remote, Tickets

@ -62,10 +62,10 @@ import datetime
def main_page(request):
now = datetime.datetime.now()
expositions = Exposition.objects.filter(main_page__gt=0)
conferences = Conference.objects.filter(main_page__gt=0)
seminars = Seminar.objects.filter(main_page__gt=0)
webinars = Webinar.objects.filter(main_page__gt=0)
expositions = Exposition.objects.filter(main_page=1)
conferences = Conference.objects.filter(main_page=1)
seminars = Seminar.objects.filter(main_page=1)
webinars = Webinar.objects.filter(main_page=1)
events = {'expositions':expositions, 'conferences': conferences,
'seminars':seminars, 'webinars': webinars}
@ -83,9 +83,9 @@ def main_page(request):
news_form.fields['main_page_news'].widget.attrs['data-init-text'] = json.dumps(a)
article_form = MainPageArticle(initial={'article' : blogs})
args = {'event_form' : MainPageEvent(initial=events), 'theme_form' : MainPageThemes(initial=themes),
event_data = {'expositions': ','.join(['%s:%s'%(item.id, item.name) for item in expositions])}
event_form = MainPageEvent(initial=event_data)
args = {'event_form' : event_form, 'theme_form' : MainPageThemes(initial=themes),
'article_form' : article_form,
'news_form' : news_form, 'photoreport_form' : MainPagePhotoreport(),}
args.update(csrf(request))

@ -77,6 +77,34 @@ from article.models import Article
import datetime
class MainPageEvent(forms.Form):
expositions = forms.CharField(label=u'Выставки', widget=forms.HiddenInput(), required=False)
conferences = forms.CharField(label=u'Конференции', widget=forms.HiddenInput(), required=False)
def save(self):
data = self.cleaned_data
expositions = data['expositions']
conferences = data['conferences']
Exposition.objects.filter(main_page=1).update(main_page=0)
Exposition.objects.filter(id__in=expositions).update(main_page=1)
#Conference.objects.filter(main_page=1).update(main_page=0)
#Conference.update(main_page=1)
def clean_expositions(self):
expositions = self.cleaned_data.get('expositions')
if expositions:
res = []
for id in expositions.split(','):
try:
res.append(int(id))
except:
continue
return res
else:
return []
"""
class MainPageEvent(forms.Form):
def __init__(self, *args, **kwargs):
super(MainPageEvent, self).__init__(*args, **kwargs)
@ -112,26 +140,27 @@ class MainPageEvent(forms.Form):
seminars.update(main_page=1)
Webinar.objects.all().update(main_page=0)
webinars.update(main_page=1)
"""
class MainPageThemes(forms.Form):
exposition_themes = forms.ModelMultipleChoiceField(queryset=Theme.objects.filter(types=Theme.types.exposition),
required=False)
conference_themes = forms.ModelMultipleChoiceField(queryset=Theme.objects.filter(types=Theme.types.conference),
required=False)
seminar_themes = forms.ModelMultipleChoiceField(queryset=Theme.objects.filter(types=Theme.types.seminar),
required=False)
#seminar_themes = forms.ModelMultipleChoiceField(queryset=Theme.objects.filter(types=Theme.types.seminar),
# required=False)
def save(self):
data = self.cleaned_data
exposition_themes = data['exposition_themes']
conference_themes = data['conference_themes']
seminar_themes = data['seminar_themes']
#seminar_themes = data['seminar_themes']
Theme.objects.filter(types=Theme.types.exposition).update(main_page=0)
Theme.objects.filter(types=Theme.types.conference).update(main_page=0)
Theme.objects.filter(types=Theme.types.seminar).update(main_page=0)
#Theme.objects.filter(types=Theme.types.seminar).update(main_page=0)
exposition_themes.update(main_page=1)
conference_themes.update(main_page=1)
seminar_themes.update(main_page=1)
#seminar_themes.update(main_page=1)

@ -103,6 +103,8 @@
<li><a href="/admin/service/all">Услуги</a></li>
<li><a href="/admin/settings">Настройки</a></li>
<li><a href="/admin/settings/main-page/">Главная страница</a></li>
<li><a href="/admin/meta/all/">Мета</a></li>
<li class="divider"></li>
<li><a href="/admin/import-theme">Импорт тематик</a></li>
<li><a href="/admin/import-tag">Импорт тегов</a></li>
@ -175,4 +177,6 @@
</div>
</body>
<script src="{% static 'custom_js/main.js' %}"></script>
{% block bot_scripts %}
{% endblock %}
</html>

@ -16,11 +16,13 @@
<div class="box-content">
<form method="post" class="form-inline" action="events/">{% csrf_token %}
{{ event_form.expositions.label }}:&nbsp;&nbsp;&nbsp;&nbsp;{{event_form.expositions }}&nbsp;&nbsp;&nbsp;&nbsp;
{% comment %}
{{ event_form.conferences.label }}:&nbsp;&nbsp;&nbsp;&nbsp; {{event_form.conferences }}
<br/>
<br/>
{{ event_form.seminars.label }}:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{event_form.seminars }}&nbsp;&nbsp;&nbsp;&nbsp;
{{ event_form.webinars.label }}:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {{event_form.webinars }}
{% endcomment %}
<hr/>
@ -84,4 +86,51 @@
</div>
</div>
</div>
{% endblock %}
{% block bot_scripts %}
<script>
$(document).ready(function(){
$('#id_expositions').select2({
placeholder: "Выставки",
multiple: true,
ajax: {
url: "/admin/exposition/search/",
width: '550px',
dataType: "json",
quietMillis: 200,
multiple: true,
data: function(term, page, theme){
return {term: term,
page: page};
},
results: function (data) {
var results = [];
$.each(data, function(index, item){
results.push({
id: item.id,
text: item.label
});
});
return {results: results};
}
},
initSelection : function(element, callback) {
var data = [];
$(element.val().split(",")).each(function(i) {
var item = this.split(':');
data.push({
id: item[0],
text: item[1]
});
});
callback(data);
}
});
});
</script>
{% endblock %}

@ -35,7 +35,6 @@
</div>
<div class="rq-to-hide">
<div class="s-comments">
<div class="sect-title blog_link">{% trans 'Похожие новости' %}<a class="button more" href="/news/">{% trans 'Все новости' %}</a></div>
<div class="cat-list sc-comments">
@ -45,7 +44,7 @@
<a href="{{ news.get_permanent_url }}" title="">{% include 'includes/show_logo.html' with obj=news %}</a>
<h3><a href="{{ news.get_permanent_url }}" title="">{{ news.main_title }}</a></h3>
<p>{{ news.preview }}</p>
<strong><span>{{ news.created|date:"d E Y" }}</span>{% if news.get_event %}<a href="{{ news.get_event.get_permanent_url }}" title=""><b>{{ news.get_event.name }}</b></a><{% endif %}/strong>
<strong><span>{{ news.publish_date|date:"d E Y" }}</span>{% if news.get_event %}<a href="{{ news.get_event.get_permanent_url }}" title=""><b>{{ news.get_event.name }}</b></a><{% endif %}</strong>
</div>
</div>
{% endfor %}

@ -44,7 +44,7 @@
{% include 'includes/article/news_preview.html' with obj=news %}</a>
<h3><a href="{{ news.get_permanent_url }}" title="">{{ news.main_title }}</a></h3>
{{ news.preview }}
<strong><span>{{ news.created|date:"d E Y" }}</span>{% with event=news.get_event %}{% if event %}<a href="{{ event.get_permanent_url }}" title=""><b>{{ event.name }}</b></a>{% endif %}{% endwith %}</strong>
<strong><span>{{ news.publish_date|date:"d E Y" }}</span>{% with event=news.get_event %}{% if event %}<a href="{{ event.get_permanent_url }}" title=""><b>{{ event.name }}</b></a>{% endif %}{% endwith %}</strong>
</div>
</div>
{% endfor %}

@ -44,7 +44,9 @@
{% endblock %}
{% include 'client/includes/side_confs.html' %}
<hr />
{% include 'client/includes/news.html' %}
<div class="s-news-list">
{% include 'client/includes/news.html' with news=news_list %}
</div>
{% block aside_vk %}
<div class="vk-widget">

@ -2,7 +2,7 @@
{% load thumbnail %}
{% if obj.logo %}
{% thumbnail obj.logo "80x80" as im %}
{% thumbnail obj.logo "80x80" format="PNG" as im %}
<img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}" class="pic" alt="">
{% endthumbnail %}
{% else %}

@ -2,7 +2,7 @@
{% load thumbnail %}
{% if obj.logo %}
{% thumbnail obj.logo "70x70" as im %}
{% thumbnail obj.logo "70x70" format="PNG" as im %}
<img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}" class="pic" alt="">
{% endthumbnail %}
{% else %}

@ -1,4 +1,6 @@
<i class="icon"></i>
{% for tag in obj.tag.all %}
<a href="?tag={{ tag.id }}" title="">{{ tag.name }}</a>,
{% endfor %}
{% with tags=obj.tag.all %}
{% for tag in obj.tag.all %}
<a href="{{ obj.get_catalog }}?tag={{ tag.id }}" title="">{{ tag.name }}</a>{% if forloop.counter != tags|length %},{% endif %}
{% endfor %}
{% endwith %}

@ -1,42 +1,45 @@
{% load static %}
{% load i18n %}
{% load template_filters %}
<div class="s-news-list">
{% if False|random_social %}
<header>
<a href="#">{% trans 'Новости событий' %}</a>
<a href="/news/">{% trans 'Новости событий' %}</a>
</header>
<ul>
<!--
<li>
<a href="#">
<span class="nl-pict"></span>
<span class="nl-body">
<span class="nl-text">ОАО «НПК «РЕКОД» на Международной конференции «Земля из космоса — наиболее эффективные решения»</span>
<span class="nl-date">20 августа</span>
</span>
</a>
</li>
<li>
<a href="#">
<span class="nl-pict"><img src="img/_del-temp/expo-bn-2-s.jpg" alt="" /></span>
<span class="nl-body">
<span class="nl-text">«Лоскутная радуга» на выставке «АРТ-Красноярск-2013»</span>
<span class="nl-date">20 августа</span>
</span>
</a>
</li>
<li>
<a href="#">
<span class="nl-pict"><img src="img/_del-temp/expo-bn-2-s.jpg" alt="" /></span>
<span class="nl-body">
<span class="nl-text">На выставке «Арт-Красноярск» организуют настоящий праздник искусства</span>
<span class="nl-date">20 августа</span>
</span>
</a>
</li>
-->
{% for item in news_list %}
<li>
<a href="{{ item.get_permanent_url }}">
<span class="nl-pict">
{% include 'client/includes/article/news_on_main_logo.html' with obj=item %}
</span>
<span class="nl-body">
<span class="nl-text">{{ item.main_title }}</span>
<span class="nl-date">{{ item.created|date:"d E Y" }}</span>
</span>
</a>
</li>
{% endfor %}
</ul>
<footer><a class="more" href="/news/">{% trans 'Все новости' %}</a></footer>
</div>
{% else %}
<header>
<a href="/blogs/">{% trans 'Статьи' %}</a>
</header>
<ul>
{% for item in blogs %}
<li>
<a href="{{ item.get_permanent_url }}">
<span class="nl-pict">
{% include 'client/includes/article/news_on_main_logo.html' with obj=item %}
</span>
<span class="nl-body">
<span class="nl-text">{{ item.main_title }}</span>
<span class="nl-date">{{ item.created|date:"d E Y" }}</span>
</span>
</a>
</li>
{% endfor %}
</ul>
<footer><a class="more" href="/blogs/">{% trans 'Все статьи' %}</a></footer>
{% endif %}
Loading…
Cancel
Save