1323: Этап №3 - Новости в событии

done
remotes/origin/search
Alexander Burdeiny 10 years ago
parent 59d3102e17
commit 52c2638dc4
  1. 2
      article/admin_urls.py
  2. 19
      article/urls.py
  3. 28
      article/views.py
  4. 30
      conference/models.py
  5. 43
      conference/views.py
  6. 35
      exposition/models.py
  7. 46
      exposition/views.py
  8. 27
      templates/admin/article/blog_form.html
  9. 31
      templates/client/article/event_news_list.html
  10. 27
      templates/client/includes/article/articles_in_event.html
  11. 2
      templates/client/includes/conference/conference_object.html
  12. 3
      templates/client/includes/exposition/expo_paid.html
  13. 2
      templates/client/includes/exposition/exposition_object.html

@ -10,4 +10,4 @@ urlpatterns = patterns('article.admin',
url(r'^news/$', NewsView.as_view()),
url(r'^blog/(?P<slug>.*)/$', BlogView.as_view()),
url(r'^news/(?P<slug>.*)/$', NewsView.as_view()),
)
)

@ -1,6 +1,17 @@
# -*- coding: utf-8 -*-
from conference.models import Conference
from django.conf.urls import patterns, url
from views import BlogList, NewsList, BlogDetail, NewsDetail, NewsTagCatalog, BlogsFilterCatalog
from exposition.models import Exposition
from .views import (
BlogDetail,
BlogList,
BlogsFilterCatalog,
EventNewsList,
NewsDetail,
NewsList,
NewsTagCatalog
)
urlpatterns = patterns('',
url(r'^blogs/tag/(?P<slug>.*)/page/(?P<page>\d+)/$', BlogsFilterCatalog.as_view(),
@ -33,6 +44,12 @@ urlpatterns = patterns('',
{'meta_id': 78}),
url(r'^news/$', NewsList.as_view(),
{'meta_id':78}),
url(r'^news/expo/(?P<slug>[^/]*)/(?:page/(?P<page>\d+)/)?$', EventNewsList.as_view(),
{'event_model': Exposition}, name='news_expo'),
url(r'^news/conference/(?P<slug>[^/]*)/(?:page/(?P<page>\d+)/)?$', EventNewsList.as_view(),
{'event_model': Conference}, name='news_conference'),
url(r'^blogs/(?P<slug>.*)/$', BlogDetail.as_view(),
{'meta_id': 19}),
url(r'^news/(?P<slug>.*)/$', NewsDetail.as_view(),

@ -60,6 +60,34 @@ class NewsList(MetadataMixin, ListView):
return context
class EventNewsList(MetadataMixin, ListView):
model = Article
template_name = 'client/article/event_news_list.html'
paginate_by = settings.CLIENT_PAGINATION
def get_queryset(self):
"""
filters queryset by event if exists or 404
"""
slug = self.kwargs.get('slug')
event_model = self.kwargs.get('event_model')
self.event = get_object_or_404(event_model.enable, url=slug)
params = {event_model.__name__.lower(): self.event}
qs = self.model.objects.news()\
.filter(publish_date__isnull=False, **params).order_by('-publish_date')
return qs
def get_context_data(self, **kwargs):
"""
add filter form to context
"""
context = super(EventNewsList, self).get_context_data(object_list=self.object_list)
context['event'] = self.event
return context
class NewsDetail(MetadataMixin, DetailView):
model = Article
slug_field = 'slug'

@ -1,26 +1,27 @@
# -*- coding: utf-8 -*-
import copy
import datetime
from django.utils.translation import ugettext as _
from django.db import models
from bitfield import BitField
from django.conf import settings
from django.contrib.contenttypes import generic
from django.core.urlresolvers import reverse_lazy
from django.db import models
from django.db.models import Q
from django.db.models.signals import post_save, pre_save
from django.contrib.contenttypes import generic
from django.utils import translation
from django.utils.translation import ugettext as _
from exposition.manager import ClientManager
from hvad.models import TranslatableModel, TranslatedFields, TranslationManager
from functions.custom_fields import EnumField
from functions.db import db_table_exists
from functions.model_mixin import EventMixin, ExpoMixin
from functions.models_methods import ExpoManager, hvad_to_dict
from functions.signal_handlers import post_save_handler, pre_save_handler
from functions.translate import fill_with_signal
from hvad.models import TranslatableModel, TranslatedFields, TranslationManager
from photologue.models import Gallery
from functions.signal_handlers import post_save_handler, pre_save_handler
import copy
from bitfield import BitField
from service.models import Service
from functions.db import db_table_exists
#custom functions
from functions.custom_fields import EnumField
from functions.models_methods import ExpoManager
from functions.model_mixin import EventMixin, ExpoMixin
from functions.models_methods import hvad_to_dict
# check if table exist and create flags if true
#flags = [item.url for item in Service.objects.all()] if db_table_exists('service_service') else []
@ -149,6 +150,9 @@ class Conference(TranslatableModel, EventMixin, ExpoMixin):
else:
return []
def get_news_url(self):
return reverse_lazy('news_conference', kwargs={'slug': self.url})
def get_catalog_url(self):
return '/conference/'

@ -1,27 +1,34 @@
# -*- coding: utf-8 -*-
import json
import datetime
import json
from accounts.models import User
from article.models import Article
from city.models import City
from country.models import Country
from django.conf import settings
from django.http import HttpResponse, Http404, HttpResponseRedirect, HttpResponsePermanentRedirect
from django.contrib import messages
from django.shortcuts import get_object_or_404
from django.contrib.contenttypes.models import ContentType
from django.views.generic import DetailView
from functions.custom_views import ListView
from django.views.generic.edit import FormMixin
from django.utils.translation import ugettext as _
from django.http import (
Http404,
HttpResponse,
HttpResponsePermanentRedirect,
HttpResponseRedirect
)
from django.shortcuts import get_object_or_404
from django.utils import translation
from service.models import Service
from service.views import order_forms
from note.models import Note
from django.utils.translation import ugettext as _
from django.views.generic import DetailView
from django.views.generic.edit import FormMixin
from functions.cache_mixin import CacheMixin, JitterCacheMixin
from functions.custom_views import ListView
from meta.views import MetadataMixin
from models import Conference
from accounts.models import User
from country.models import Country
from city.models import City
from theme.models import Theme, Tag
from note.models import Note
from service.models import Service
from service.order_forms import AdvertiseForm
from meta.views import MetadataMixin
from functions.cache_mixin import JitterCacheMixin, CacheMixin
from service.views import order_forms
from theme.models import Tag, Theme
MONTHES = settings.MONTHES
@ -397,6 +404,8 @@ class ConferenceDetail(JitterCacheMixin, MetadataMixin, DetailView):
context['city'] = str(obj.city_id)
context['country'] = str(obj.country_id)
context['themes'] = [str(item.id) for item in obj.theme.all()]
context['news'] = Article.objects.news()\
.filter(publish_date__isnull=False, conference=obj).order_by('-publish_date')[:3]
return context
@ -530,4 +539,4 @@ def add_note(request, slug):
args['not_authorized'] = True
args['success'] = True
return HttpResponse(json.dumps(args), content_type='application/json')
return HttpResponse(json.dumps(args), content_type='application/json')

@ -1,26 +1,26 @@
# -*- coding: utf-8 -*-
import copy, datetime
import copy
import datetime
from bitfield import BitField
from django.conf import settings
from django.contrib.contenttypes import generic
from django.core.urlresolvers import reverse_lazy
from django.db import models
from django.db.models import Q
from django.db.models.signals import post_save, pre_save
from django.utils.translation import ugettext as _
from django.utils import translation
from django.conf import settings
from hvad.models import TranslatableModel, TranslatedFields, TranslationManager
from django.contrib.contenttypes import generic
from bitfield import BitField
from service.models import Service
from functions.db import db_table_exists
from organiser.models import Organiser
from manager import ClientManager
from django.utils.translation import ugettext as _
from functions.custom_fields import EnumField
from functions.signal_handlers import post_save_handler, pre_save_handler
from functions.models_methods import ExpoManager
from functions.db import db_table_exists
from functions.model_mixin import EventMixin, ExpoMixin
from functions.models_methods import ExpoManager, hvad_to_dict
from functions.signal_handlers import post_save_handler, pre_save_handler
from hvad.models import TranslatableModel, TranslatedFields, TranslationManager
from import_xls.model_utils import ExpoImportManager
from functions.models_methods import hvad_to_dict
from manager import ClientManager
from organiser.models import Organiser
from service.models import Service
AUDIENCE1 = ((None,_(u'Не выбрано')),
('experts', _(u'Специалисты')),
@ -184,9 +184,13 @@ class Exposition(TranslatableModel, EventMixin, ExpoMixin):
def get_parent(self):
return {}
def get_absolute_url(self):
return self.get_permanent_url()
def get_news_url(self):
return reverse_lazy('news_expo', kwargs={'slug': self.url})
def get_index_text(self):
translation.activate('ru')
translations = self.translations.all()
@ -196,7 +200,6 @@ class Exposition(TranslatableModel, EventMixin, ExpoMixin):
tags = ' '.join([' '.join(tag.get_all_names()) for tag in self.tag.all()])
return names + ' ' + titles + ' ' + themes + ' ' + tags
def get_note_by_user(self, user_id):
note = self.note.filter(user__id=user_id)
try:

@ -1,30 +1,35 @@
# -*- coding: utf-8 -*-
import json
import datetime
from django.http import HttpResponseRedirect, HttpResponse, HttpResponsePermanentRedirect
from django.contrib.contenttypes.models import ContentType
import json
from accounts.models import User
from city.models import City
from country.models import Country
from django.conf import settings
from django.views.generic import DetailView
from functions.custom_views import ListView
from django.utils.translation import ugettext as _
from django.contrib.contenttypes.models import ContentType
from django.core.mail import EmailMessage
from django.http import (
Http404,
HttpResponse,
HttpResponsePermanentRedirect,
HttpResponseRedirect
)
from django.shortcuts import get_object_or_404
from django.http import Http404
from django.utils.translation import ugettext as _
from django.views.generic import DetailView
from django.views.generic.edit import FormMixin
from django.core.mail import EmailMessage
#models
from accounts.models import User
from functions.cache_mixin import JitterCacheMixin
from functions.custom_views import ExpoSearchView, ListView
from functions.search_forms import ExpositionSearchForm
from meta.views import MetadataMixin
from models import Exposition
from service.views import order_forms
from service.models import Service
from country.models import Country
from city.models import City
from theme.models import Theme, Tag
from note.models import Note
from service.models import Service
from service.order_forms import AdvertiseForm
from functions.search_forms import ExpositionSearchForm
from functions.custom_views import ExpoSearchView
from meta.views import MetadataMixin
from functions.cache_mixin import JitterCacheMixin
from service.views import order_forms
from theme.models import Tag, Theme
from article.models import Article
class ExpositionBy(JitterCacheMixin, MetadataMixin, ListView):
@ -160,7 +165,8 @@ class ExpoDetail(JitterCacheMixin, MetadataMixin, DetailView):
context['city'] = str(obj.city_id)
context['country'] = str(obj.country_id)
context['themes'] = [str(item.id) for item in obj.theme.all()]
context['news'] = Article.objects.news()\
.filter(publish_date__isnull=False, exposition=obj).order_by('-publish_date')[:3]
return context

@ -155,26 +155,17 @@
</div>
</div>
{% if form.exposition %}
<div class="control-group {% if form.exposition.errors %}error{% endif %}">
<label class="control-label">{{ form.exposition.label }}:</label>
<div class="controls">
{{ form.exposition }}
<span class="help-inline">{{ form.exposition.errors }}</span>
{% if form.draft %}
<div class="box span8">
<div class="control-group {% if form.draft.errors %}error{% endif %}">
<label class="control-label">{{ form.draft.label }}:</label>
<div class="controls">
{{ form.draft }}
<span class="help-inline">{{ form.draft.errors }}</span>
</div>
</div>
</div>
{% endif %}
<dev class="box span8">
{% if form.draft %}
<div class="control-group {% if form.draft.errors %}error{% endif %}">
<label class="control-label">{{ form.draft.label }}:</label>
<div class="controls">
{{ form.draft }}
<span class="help-inline">{{ form.draft.errors }}</span>
</div>
</div>
{% endif %}
</dev>
{% endif %}
<div class="controls">
<input class="btn btn-large btn-primary" type="submit" value="{% if article %}Изменить{% else %}Добавить{% endif %}">

@ -0,0 +1,31 @@
{% extends 'base_catalog.html' %}
{% load static %}
{% load i18n %}
{% load template_filters %}
{% block bread_scrumbs %}
<div class="bread-crumbs">
<a href="/">{% trans 'Главная страница' %}</a>
<a href="/news/">{% trans 'Новости' %}</a>
<strong>{% trans 'Новости к событию' %}</strong>
</div>
{% endblock %}
{% block page_title %}
<div class="page-title">
<h1>
{% trans "Новости к событию" %} {{ event.name|safe }}
</h1>
</div>
{% endblock %}
{% block content_list %}
{% include 'client/includes/article/news_list.html' with object_list=object_list %}
{% endblock %}
{% block paginator %}
{% include 'client/includes/catalog_paginator.html' with page_obj=page_obj %}
{% endblock %}

@ -0,0 +1,27 @@
{% load static %}
{% load i18n %}
{% if news_list %}
<div class="rq-to-hide">
<div class="s-comments">
<div class="sect-title blog_link">{% trans 'Последние новости к этому событию' %}<a class="button more" href="{{ event.get_news_url }}">{% trans 'Все новости' %}</a></div>
<div class="cat-list sc-comments">
{% for news in news_list %}
<div class="cl-item">
<div class="acticle_list">
<a href="{{ news.get_permanent_url }}" title="">
<span class="cli-pict">
{% include 'includes/show_logo.html' with obj=news %}
</span>
</a>
<h3><a href="{{ news.get_permanent_url }}" title="">{{ news.main_title }}</a></h3>
<p>{{ news.preview|safe }}</p>
<strong><span>{{ news.publish_date|date:"d E Y" }}</span><a href="{{ event.get_permanent_url }}" title=""><b>{{ event.name|safe }}</b></a></strong>
</div>
<div class="clearfix"></div>
</div>
{% endfor %}
</div>
</div>
</div>
{% endif %}

@ -210,7 +210,9 @@
{% include 'client/includes/banners/detail_inner.html' %}
</div>
{% include "client/includes/article/articles_in_event.html" with event=event news_list=news %}
<hr />
<div class="i-members clearfix">
<div class="im-participants">
{% with companies=event.company.all|slice:":6" %}

@ -225,6 +225,9 @@
</dl>
</div>
{% include "client/includes/article/articles_in_event.html" with event=exposition news_list=news %}
<hr />
<div class="i-members clearfix">
<div class="im-participants">
{% with companies=exposition.company.all|slice:":6" %}

@ -222,6 +222,8 @@
<hr />
{% include 'client/includes/banners/detail_inner.html' %}
</div>
{% include "client/includes/article/articles_in_event.html" with event=exposition news_list=news %}
<hr />
<div class="i-members clearfix">

Loading…
Cancel
Save