fix some bugs

remotes/origin/1203
Nazarii Kotiuk 10 years ago
parent 9f1f988191
commit 3ed618f0c0
  1. 1
      .gitignore
  2. 22
      accounts/models.py
  3. 1
      accounts/views.py
  4. 4
      exposition/forms.py
  5. 8
      exposition/models.py
  6. 2
      proj/admin_urls.py
  7. 2
      proj/urls.py
  8. 31
      settings/admin.py
  9. 13
      settings/admin_urls.py
  10. 10
      settings/forms.py
  11. 1
      static/client
  12. 6
      templates/admin/exposition/exposition.html
  13. 70
      templates/admin/settings/main_page.html
  14. 2
      templates/admin/timetable_list.html
  15. 2
      templates/client/exposition/search.html
  16. 19
      templates/client/includes/accounts/simple_user.html
  17. 4
      templates/client/includes/exposition/search_result.html
  18. 1
      templates/client/static_client/client
  19. 12
      theme/manager.py

1
.gitignore vendored

@ -11,6 +11,7 @@ media
logs/
Thumbs.db
/proj/local.py
static/client

@ -294,22 +294,22 @@ class EventFilter(models.Model):
areas = self.area.all()
cities = self.city.all()
if themes.count():
qs = qs.filter(theme__in=list(themes))
if themes.exists():
qs = qs.filter(theme__in=set(themes))
if tags.count():
qs = qs.filter(tag__in=list(tags))
if tags.exists():
qs = qs.filter(tag__in=set(tags))
if cities.count():
qs = qs.filter(city__in=list(cities))
if cities.exists():
qs = qs.filter(city__in=set(cities))
if areas.count():
qs = qs.filter(country__area__in=list(areas))
if areas.exists():
qs = qs.filter(country__area__in=set(areas))
if countries.count():
qs = qs.filter(country__in=list(countries))
if countries.exists():
qs = qs.filter(country__in=set(countries))
return qs.order_by('data_begin')
return qs.order_by('data_begin').distinct()
def calculate_rating(user):

@ -2,6 +2,7 @@
import dateutil.relativedelta as rdelta
import json
import datetime
from django.core.urlresolvers import reverse
import calendar as python_calendar
from django.shortcuts import get_object_or_404
from django.http import HttpResponseRedirect, HttpResponse, Http404

@ -550,9 +550,9 @@ class TimeTableForm(forms.Form):
required = True if lid == 0 else False
self.fields['name_%s' % code] = forms.CharField(label='Название программы', required=required,
widget=forms.TextInput(attrs={'style':'width: 550px'}))
self.fields['programe_%s' % code] = forms.CharField(label='Программа', required=required,
self.fields['programe_%s' % code] = forms.CharField(label='Программа', required=False,
widget=CKEditorWidget)
self.fields['speaker_%s' % code] = forms.CharField(label='Спикеры', required=False,
self.fields['speaker_%s' % code] = forms.CharField(label='Организатор', required=False,
widget=forms.TextInput(attrs={'style':'width: 550px'}))
self.fields['place_%s' % code] = forms.CharField(label='Место проведения', required=False,
widget=forms.TextInput(attrs={'style':'width: 550px'}))

@ -261,7 +261,7 @@ class Exposition(TranslatableModel, EventMixin, ExpoMixin):
return '/expo/add-note/%s/'%self.url
def get_timetables_days(self):
tables = self.business_program.all()
tables = list(self.business_program.all())
days = []
for t in tables:
d = t.begin.replace(hour = 0, minute = 0, second = 0, microsecond = 0)
@ -312,7 +312,7 @@ class TimeTable(TranslatableModel):
TimeTable for business program
"""
exposition = models.ForeignKey(Exposition, related_name='TimeTable')
exposition = models.ForeignKey(Exposition, related_name='business_program')
begin = models.DateTimeField(verbose_name='Начало')
end = models.DateTimeField(verbose_name='Конец')
timetable_organiser = models.ForeignKey(Organiser, null=True, blank=True)
@ -322,8 +322,8 @@ class TimeTable(TranslatableModel):
#translated fields
translations = TranslatedFields(
name = models.CharField(verbose_name='Название программы', max_length=255, blank=True),
programe = models.TextField(verbose_name='Программа'),
speaker = models.CharField(verbose_name='Спикеры', max_length=255, blank=True),
programe = models.TextField(verbose_name='Программа', blank=True),
speaker = models.CharField(verbose_name='Организатор', max_length=255, blank=True),
place = models.CharField(verbose_name='Место проведения', max_length=255, blank=True)
)

@ -12,7 +12,7 @@ urlpatterns = required(
url(r'^$', AdminIndex.as_view()),
url(r'^', include('import_xls.admin_urls')),
url(r'^accounts/', include('accounts.admin_urls')),
url(r'page/', include('core.admin_urls')),
#url(r'page/', include('core.admin_urls')),
url(r'^article/', include('article.admin_urls')),
url(r'^photogallery/', include('photologue.admin_urls')),
url(r'^city/', include('city.admin_urls')),

@ -31,10 +31,8 @@ handler404 = 'proj.views.error404'
urlpatterns = patterns('',
url(r'^acquire_email/$', 'registration.backends.default.views.acquire_email', name = 'acquire_email'),
url(r'^rss/', include('core.urls')),
#url(r'^__debug__/', include(debug_toolbar.urls)),
url(r'^sitemap-(?P<section>.+)\.xml$', views.sitemap, {'sitemaps': sitemaps}),
url(r'^admin/', include('proj.admin_urls')),
#url(r'^sitemap.xml$', 'django.contrib.sitemaps.views.sitemap', {'sitemaps': sitemaps}),
url(r'^sitemap\.xml$', views.index, {'sitemaps': sitemaps}),
url(r'^sitemap-(?P<section>.+)\.xml$', views.sitemap, {'sitemaps': sitemaps}),
url(r'^robots.txt$', Robot.as_view()),

@ -2,21 +2,19 @@
import json
from django.shortcuts import render_to_response
from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse
from django.core.context_processors import csrf
from forms import MainPageArticle, MainPageNews, MainPageThemes
def handle_form(request, Form):
def handle_form(request, form):
if request.POST:
form = Form(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect('/admin/settings/main-page/')
else:
f = form(request.POST)
return HttpResponseRedirect('/admin/settings/main-page/')
if f.is_valid():
f.save()
return HttpResponseRedirect('/admin/settings/main-page/')
return HttpResponseRedirect(reverse('settings_main_page'))
def handle_news(request):
@ -31,32 +29,17 @@ def handle_themes(request):
return handle_form(request, MainPageThemes)
from exposition.models import Exposition
from conference.models import Conference
from seminar.models import Seminar
from webinar.models import Webinar
from theme.models import Theme
from article.models import Article
import datetime
def main_page(request):
now = datetime.datetime.now()
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}
exposition_themes = Theme.objects.filter(main_page__gt=0, types=Theme.types.exposition)
confrence_themes = Theme.objects.filter(main_page__gt=0, types=Theme.types.conference)
seminar_themes = Theme.objects.filter(main_page__gt=0, types=Theme.types.seminar)
news = Article.objects.news().filter(main_page=1)
blogs = Article.objects.blogs().filter(main_page=1)
themes = {'exposition_themes': exposition_themes, 'conference_themes': confrence_themes,
'seminar_themes':seminar_themes}
themes = {'exposition_themes': exposition_themes, 'conference_themes': confrence_themes}
news_form = MainPageNews(initial={'main_page_news':','.join(['%d'%item.id for item in news])})
a = [{'id': int(item.id), 'text': item.main_title} for item in news]

@ -1,9 +1,12 @@
# -*- coding: utf-8 -*-
from django.conf.urls import patterns, include, url
from .admin import handle_themes, handle_news, handle_articles, main_page
urlpatterns = patterns('',
url(r'^main-page/themes/', handle_themes, name='settings_main_page_themes'),
url(r'^main-page/news/$', handle_news, name='settings_main_page_news'),
url(r'^main-page/blogs/$', handle_articles, name='settings_main_page_articles'),
url(r'^main-page/$', main_page, name='settings_main_page'),
urlpatterns = patterns('settings.admin',
url(r'^main-page/$', 'main_page'),
url(r'^main-page/themes/$', 'handle_themes'),
url(r'^main-page/news/$', 'handle_news'),
url(r'^main-page/blogs/$', 'handle_articles'),
)

@ -20,20 +20,16 @@ class MainPageThemes(forms.Form):
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)
def save(self):
data = self.cleaned_data
exposition_themes = data['exposition_themes']
conference_themes = data['conference_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().update(main_page=0)
exposition_themes.update(main_page=1)
conference_themes.update(main_page=1)
#seminar_themes.update(main_page=1)
class MainPageNews(forms.Form):

@ -1 +0,0 @@
/home/www/proj/templates/client/static_client

@ -386,8 +386,8 @@
<th>Программа</th>
<th>Начало</th>
<th>Конец</th>
<th>Спикеры</th>
<th>Организатор</th>
<th>Место</th>
<th>&nbsp;</th>
</tr>
@ -395,12 +395,12 @@
<tbody>
{% for timetable in timetables %}
<tr>
<td>{{ timetable.programe|safe }}</td>
<td>{{ timetable.name|safe }}</td>
<td>{{ timetable.begin|date:"o-m-d H:i" }}</td>
<td>{{ timetable.end|date:"o-m-d H:i" }}</td>
<td>{{ timetable.speaker }}</td>
<td>
{{ timetable.timetable_organiser }}
{{ timetable.place }}
</td>
<td>
<button class="btn btn-danger remove_timetable" value="{{ timetable.id }}">

@ -8,51 +8,15 @@
{% endblock %}
{% block body %}
<div class="row-fluid sortable">
<div class="box span12">
<div class="box-header well" data-original-title>
<h2><i class="icon-tasks"></i> События</h2>
</div>
<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/>
<button type="submit" class="btn btn-primary" >Сохранить</button>
</form>
</div>
</div>
</div>
<div class="row-fluid sortable">
<div class="box span12">
<div class="box-header well" data-original-title>
<h2><i class="icon-tasks"></i> Новости</h2>
</div>
<div class="box-content">
<form method="post" action="news/">{% csrf_token %}
{{ news_form }}
<hr/>
<button type="submit" class="btn btn-primary" >Сохранить</button>
</form>
</div>
</div>
</div>
<div class="row-fluid sortable">
<div class="box span12">
<div class="box-header well" data-original-title>
<h2><i class="icon-tasks"></i> Обзоры</h2>
</div>
<div class="box-content">
<form method="post" action="blogs/">{% csrf_token %}
<form method="post" action="{% url 'settings_main_page_articles' %}">{% csrf_token %}
{{ article_form }}
<hr/>
<button type="submit" class="btn btn-primary" >Сохранить</button>
@ -61,31 +25,33 @@
</div>
</div>
<div class="row-fluid sortable">
<div class="box span6">
<div class="box span12">
<div class="box-header well" data-original-title>
<h2><i class="icon-tasks"></i> Тематики</h2>
</div>
<div class="box-content">
<form method="post" action="themes/">{% csrf_token %}
{{ theme_form }}
<hr/>
<button type="submit" class="btn btn-primary" >Сохранить</button>
</form>
</div>
</div>
<div class="box span6">
<div class="box-header well" data-original-title>
<h2><i class="icon-tasks"></i> Фоторепортажи</h2>
</div>
<div class="box-content">
<form method="post" action="photoreports/">{% csrf_token %}
{{ photoreport_form }}
<form method="post" action="{% url 'settings_main_page_themes' %}">{% csrf_token %}
<div class="control-group">
<label class="control-label">{{ theme_form.exposition_themes.label }}</label>
<div class="controls">
{{ theme_form.exposition_themes }}
</div>
</div>
<div class="control-group">
<label class="control-label">{{ theme_form.conference_themes.label }}</label>
<div class="controls">
{{ theme_form.conference_themes }}
</div>
</div>
<hr/>
<button type="submit" class="btn btn-primary" >Сохранить</button>
</form>
</div>
</div>
</div>
{% endblock %}
{% block bot_scripts %}

@ -1,6 +1,6 @@
{% for obj in objects %}
<tr>
<td>{{ obj.programe|safe }}</td>
<td>{{ obj.name|safe }}</td>
<td>{{ obj.begin|date:"Y-m-d H:i" }}</td>
<td>{{ obj.end|date:"Y-m-d H:i" }}</td>
<td>{{ obj.speaker }}</td>

@ -35,7 +35,7 @@
{% block paginator %}
{% with page_obj=page_obj queries=queries %}
{% include 'includes/search_paginator.html' %}
{% include 'client/includes/search_paginator.html' %}
{% endwith %}
{% endblock %}

@ -92,14 +92,17 @@
</div>
<hr />
<div class="i-additional">
<div class="ia-title">{% trans 'О себе' %}:</div>
{{ member.profile.about|safe|linebreaks }}
</div>
{% if member.profile.about %}
<div class="i-additional">
<div class="ia-title">{% trans 'О себе' %}:</div>
{{ member.profile.about|safe|linebreaks }}
</div>
{% endif %}
</div>
{% if member.get_expositions_number > 0 or member.get_conferences_number > 0 or member.get_seminars_number > 0 %}
</div>
{% if member.get_expositions_number > 0 or member.get_conferences_number > 0 %}
<hr />
<div class="i-statistics">
<header class="clearfix">
<div class="ish-title">{% trans 'Участие в событиях' %}</div>
@ -117,6 +120,6 @@
<ul class="cat-list cl-exhibitions">
</ul>
</div>
{% endif %}
</div>
{% endif %}
</div>

@ -5,7 +5,7 @@
{% for result in query %}
<li class="cl-item {% if result.object.canceled %}canceled{% endif %}">
<div class="cl-item-wrap clearfix">
<a href="{{ result.object.get_permanent_url }}">
<a target="_blank" href="{{ result.object.get_permanent_url }}">
{% if result.object.canceled %}
<div class="cancel"></div>
{% else %}
@ -27,7 +27,7 @@
</div>
{% endif %}
<header>
<div class="cli-title"><a href="{{ result.object.get_permanent_url }}">{{ result.object.name|safe }}</a></div>
<div class="cli-title"><a target="_blank" href="{{ result.object.get_permanent_url }}">{{ result.object.name|safe }}</a></div>
</header>
<div class="cli-descr">
{{ result.object.main_title|safe }}

@ -1,4 +1,5 @@
import datetime
from operator import attrgetter
from django.utils import translation
from django.core.cache import cache
from hvad.models import TranslationManager
@ -36,6 +37,7 @@ class ThemeActiveManager(TranslationManager):
from exposition.models import Exposition
themes_id = [item['theme'] for item in Exposition.objects.values('theme').distinct()]
themes = list(self.language().filter(id__in=themes_id))
themes = sorted(themes, key=attrgetter('name'))
cache.set(key, themes, 300)
return themes
@ -53,7 +55,7 @@ class ThemeActiveManager(TranslationManager):
themes_id = [item['theme'] for item in Exposition.objects.filter(is_published=True, data_end__gte=now).values('theme').distinct()]
#themes = set(list(self.language().filter(id__in=themes_id).extra(select=sql)))
themes = set(list(self.language().filter(id__in=themes_id)))
themes = sorted(themes, key=lambda x: x.name)
themes = sorted(themes, key=attrgetter('name'))
cache.set(key, themes, self.cache_time)
return themes
@ -70,7 +72,7 @@ class ThemeActiveManager(TranslationManager):
themes_id = [item['theme'] for item in Conference.objects.filter(is_published=True, data_end__gte=now).values('theme').distinct()]
#themes = set(list(self.language().filter(id__in=themes_id).extra(select=sql)))
themes = set(list(self.language().filter(id__in=themes_id)))
themes = sorted(themes, key=lambda x: x.name)
themes = sorted(themes, key=attrgetter('name'))
cache.set(key, themes, self.cache_time)
return themes
@ -115,7 +117,7 @@ class TagActiveManager(TranslationManager):
tag_id = [item['tag'] for item in Conference.objects.filter(is_published=True, data_end__gte=now).values('tag').distinct()]
#themes = set(list(self.language().filter(id__in=themes_id).extra(select=sql)))
tags = set(list(self.language().filter(id__in=tag_id)))
tags = sorted(tags, key=lambda x: x.name)
tags = sorted(tags, key=attrgetter('name'))
cache.set(key, tags, self.cache_time)
return tags
@ -133,7 +135,7 @@ class TagActiveManager(TranslationManager):
tags_id = [item['tag'] for item in Exposition.objects.filter(is_published=True, data_end__gte=now).values('tag').distinct()]
#themes = set(list(self.language().filter(id__in=themes_id).extra(select=sql)))
tags = set(list(self.language().filter(id__in=tags_id)))
tags = sorted(tags, key=lambda x: x.name)
tags = sorted(tags, key=attrgetter('name'))
cache.set(key, tags, self.cache_time)
return tags
@ -150,6 +152,6 @@ class TagActiveManager(TranslationManager):
tags_id = [item['tag'] for item in Conference.objects.filter(is_published=True, data_end__gte=now).values('tag').distinct()]
#themes = set(list(self.language().filter(id__in=themes_id).extra(select=sql)))
tags = set(list(self.language().filter(id__in=tags_id)))
tags = sorted(tags, key=lambda x: x.name)
tags = sorted(tags, key=attrgetter('name'))
cache.set(key, tags, self.cache_time)
return tags

Loading…
Cancel
Save