@ -6,20 +6,21 @@ from datetime import timedelta
from email . MIMEImage import MIMEImage
import copy
from django . core . mail import EmailMessage
from django . core . validators import MaxValueValidator , MinValueValidator
from django . template import Context
from django . db import models
from django . contrib . sites . models import Site
from django . conf import settings
from django . db . models import Q
from django . utils . encoding import smart_str
from django . core . urlresolvers import revers e
from django . utils . encoding import force_unicod e
from django . utils . translation import ugettext_lazy as _
from django . conf import settings
from django . core . mail import EmailMessage
from django . core . validators import MaxValueValidator , MinValueValidator
from django . core . urlresolvers import reverse
from django . contrib . sites . models import Site
from django . contrib . contenttypes import generic
from django . contrib . contenttypes . models import ContentType
from django . contrib . auth . models import Group
from django . utils . encoding import force_unicode
from django . template . loader import render_to_string , get_template
from django . template import Context
from emencia . django . newsletter . managers import ContactManager
@ -155,38 +156,55 @@ class Contact(models.Model):
def get_announce_context ( self ) :
from exposition . models import Exposition
from conference . models import Conference
from article . models import Article
from django . utils . translation import activate
activate ( ' ru ' )
events = Exposition . enable . upcoming ( )
expo = Exposition . enable . upcoming ( )
conf = Conference . enable . upcoming ( )
themes = list ( self . contactsettings . theme . all ( ) )
try :
country = self . contactsettings . country . all ( ) [ 0 ]
except IndexError :
country = None
if themes :
theme_ids = [ item . id for item in themes ]
events = events . filter ( theme__in = theme_ids )
else :
return None
if country :
events = events . filter ( country = country )
events = list ( events [ : 5 ] )
# making query
params = Q ( )
countries = self . contactsettings . country . all ( ) . values_list ( ' pk ' , flat = True )
if countries :
params | = Q ( country__in = countries )
cities = self . contactsettings . city . all ( ) . values_list ( ' pk ' , flat = True )
if cities :
params | = Q ( country__in = cities )
if events :
context = { ' themes ' : themes , ' place ' : country , ' events ' : events }
if themes :
theme_ids = set ( [ item . id for item in themes ] )
params & = Q ( theme__in = theme_ids )
expo = list ( expo . filter ( params ) [ : 5 ] )
conf = list ( conf . filter ( params ) [ : 5 ] )
if expo or conf :
context = {
' themes ' : themes ,
' expo ' : expo ,
' conf ' : conf ,
}
if expo :
context [ ' expo_places ' ] = ' , ' . join ( set ( [ x . country . inflect for x in expo ] ) )
if conf :
context [ ' conf_places ' ] = ' , ' . join ( set ( [ x . country . inflect for x in conf ] ) )
else :
# no events for announce
return None
news = list ( Article . objects . news ( )
. filter ( publish_date__gt = datetime . now ( ) - timedelta ( days = 30 ) , theme__in = theme_ids )
. filter ( publish_date__gt = datetime . now ( ) - timedelta ( days = 7 ) , theme__in = theme_ids )
. distinct ( ) [ : 3 ] )
if news :
context [ ' news ' ] = news
blogs = list ( Article . objects . blogs ( ) [ : 1 ] )
blogs = list ( Article . objects . blogs ( )
. filter ( publish_date__gt = datetime . now ( ) - timedelta ( days = 7 ) )
. distinct ( ) [ : 3 ] )
if blogs :
context [ ' blogs ' ] = blogs
return context