1 """Managers of Zinnia"""
2 from datetime import datetime
3
4 from django.db import models
5 from django.contrib.sites.models import Site
6
7 DRAFT = 0
8 HIDDEN = 1
9 PUBLISHED = 2
10
11
20
21
23 """Manager to retrieve published authors"""
24
26 """Return published authors"""
27 now = datetime.now()
28 return super(AuthorPublishedManager, self).get_query_set().filter(
29 entry__status=PUBLISHED,
30 entry__start_publication__lte=now,
31 entry__end_publication__gt=now,
32 entry__sites=Site.objects.get_current()
33 ).distinct()
34
35
37 """Return only the entries published"""
38 now = datetime.now()
39 return queryset.filter(status=PUBLISHED,
40 start_publication__lte=now,
41 end_publication__gt=now,
42 sites=Site.objects.get_current())
43
44
45 -class EntryPublishedManager(models.Manager):
46 """Manager to retrieve published entries"""
47
48 - def get_query_set(self):
49 """Return published entries"""
50 return entries_published(
51 super(EntryPublishedManager, self).get_query_set())
52
54 """Return entries published on current site"""
55 return super(EntryPublishedManager, self).get_query_set(
56 ).filter(sites=Site.objects.get_current())
57
58 - def search(self, pattern):
59 """Top level search method on entries"""
60 try:
61 return self.advanced_search(pattern)
62 except:
63 return self.basic_search(pattern)
64
65 - def advanced_search(self, pattern):
66 """Advanced search on entries"""
67 from zinnia.search import advanced_search
68 return advanced_search(pattern)
69
70 - def basic_search(self, pattern):
71 """Basic search on entries"""
72 lookup = None
73 for pattern in pattern.split():
74 query_part = models.Q(content__icontains=pattern) | \
75 models.Q(excerpt__icontains=pattern) | \
76 models.Q(title__icontains=pattern)
77 if lookup is None:
78 lookup = query_part
79 else:
80 lookup |= query_part
81
82 return self.get_query_set().filter(lookup)
83