Package zinnia :: Module managers
[hide private]

Source Code for Module zinnia.managers

 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   
12 -def tags_published():
13 """Return the published tags""" 14 from tagging.models import Tag 15 from zinnia.models import Entry 16 tags_entry_published = Tag.objects.usage_for_queryset( 17 Entry.published.all()) 18 # Need to do that until the issue #44 of django-tagging is fixed 19 return Tag.objects.filter(name__in=[t.name for t in tags_entry_published])
20 21
22 -class AuthorPublishedManager(models.Manager):
23 """Manager to retrieve published authors""" 24
25 - def get_query_set(self):
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
36 -def entries_published(queryset):
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
53 - def on_site(self):
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