Projet

Général

Profil

Télécharger (2,7 ko) Statistiques
| Branche: | Tag: | Révision:

root / corbo / views.py @ 1d6c349b

1
from datetime import datetime
2

    
3
from django.conf import settings
4
from django.views.generic import CreateView, UpdateView, DeleteView, \
5
                                 ListView, TemplateView
6
from django.views.generic.list import MultipleObjectMixin
7
from django.contrib.syndication.views import Feed
8
from django.utils.feedgenerator import Atom1Feed
9

    
10

    
11
import models
12

    
13
class HomepageView(ListView):
14
    model = models.Announce
15
    template_name = 'homepage.html'
16

    
17
homepage = HomepageView.as_view()
18

    
19
class AnnounceCreateView(CreateView):
20
    model = models.Announce
21

    
22
add_announce = AnnounceCreateView.as_view()
23

    
24
class AnnounceEditView(UpdateView):
25
    model = models.Announce
26

    
27
edit_announce = AnnounceEditView.as_view()
28

    
29
class AnnounceDeleteView(DeleteView):
30
    model = models.Announce
31

    
32
delete_announce = AnnounceDeleteView.as_view()
33

    
34
edit_announce = AnnounceEditView.as_view()
35

    
36
class CategoryCreateView(CreateView):
37
    model = models.Category
38

    
39
add_category = CategoryCreateView.as_view()
40

    
41
class CategoryEditView(UpdateView):
42
    model = models.Category
43

    
44
edit_category = CategoryEditView.as_view()
45

    
46
class DeleteView(DeleteView):
47
    model = models.Category
48

    
49
delete_category = DeleteView.as_view()
50

    
51

    
52
class ManageView(ListView, MultipleObjectMixin):
53
    paginate_by = settings.ANNOUNCES_PER_PAGE
54
    template_name = 'manage.html'
55
    model = models.Announce
56

    
57
    def get_queryset(self):
58
        queryset = super(ManageView, self).get_queryset()
59
        if self.request.GET.get('category'):
60
            queryset = queryset.filter(category__id=self.request.GET['category'])
61
        return queryset
62

    
63
    def get_context_data(self, **kwargs):
64
        context = super(ManageView, self).get_context_data(**kwargs)
65
        context['categories'] = models.Category.objects.all().order_by('-ctime')
66
        if self.request.GET.get('category'):
67
            try:
68
                context['category_id'] = int(self.request.GET['category'])
69
            except:
70
                pass
71
        return context
72

    
73
manage = ManageView.as_view()
74

    
75
class RssView(Feed):
76
    title = settings.RSS_TITLE
77
    description = settings.RSS_DESCRIPTION
78
    link = settings.RSS_LINK
79
    feed_item_link_template = settings.RSS_LINK_TEMPLATE
80
    feed_type = Atom1Feed
81

    
82
    def __init__(self, **kwargs):
83
        self.__dict__.update(kwargs)
84

    
85
    def items(self):
86
        return models.Announce.objects.exclude(expiration_time__lt=datetime.now()).order_by('-publication_time')
87

    
88
    def item_title(self, item):
89
        return item.title
90

    
91
    def item_description(self, item):
92
        return item.text
93

    
94
    def item_link(self, item):
95
        return self.feed_item_link_template.format(item.pk)
96

    
97
    def item_pubdate(self, item):
98
        return item.publication_time or item.modification_time
99

    
100
rss = RssView()
(8-8/9)