Projet

Général

Profil

Télécharger (3,04 ko) Statistiques
| Branche: | Tag: | Révision:

root / corbo / views.py @ cc12ccfe

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
import models
11
from .forms import AnnounceForm, CategoryForm
12

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

    
17
homepage = HomepageView.as_view()
18

    
19
class AnnounceCreateView(CreateView):
20
    form_class = AnnounceForm
21
    template_name = 'corbo/announce_form.html'
22
    success_url = '..'
23

    
24
add_announce = AnnounceCreateView.as_view()
25

    
26
class AnnounceEditView(UpdateView):
27
    model = models.Announce
28
    success_url = '../..'
29

    
30
edit_announce = AnnounceEditView.as_view()
31

    
32
class AnnounceDeleteView(DeleteView):
33
    success_url = '../..'
34
    model = models.Announce
35

    
36
delete_announce = AnnounceDeleteView.as_view()
37

    
38
class CategoryCreateView(CreateView):
39
    form_class = CategoryForm
40
    template_name = 'corbo/category_form.html'
41
    success_url = '..'
42

    
43
    def form_valid(self, form):
44
        form.save()
45
        return super(CategoryCreateView, self).form_valid(form)
46

    
47
add_category = CategoryCreateView.as_view()
48

    
49
class CategoryEditView(UpdateView):
50
    model = models.Category
51
    success_url = '..'
52

    
53
edit_category = CategoryEditView.as_view()
54

    
55
class DeleteView(DeleteView):
56
    model = models.Category
57

    
58
delete_category = DeleteView.as_view()
59

    
60

    
61
class ManageView(ListView, MultipleObjectMixin):
62
    paginate_by = settings.ANNOUNCES_PER_PAGE
63
    template_name = 'corbo/manage.html'
64
    model = models.Announce
65

    
66
    def get_queryset(self):
67
        queryset = super(ManageView, self).get_queryset()
68
        if self.request.GET.get('category'):
69
            queryset = queryset.filter(category__id=self.request.GET['category'])
70
        return queryset
71

    
72
    def get_context_data(self, **kwargs):
73
        context = super(ManageView, self).get_context_data(**kwargs)
74
        context['categories'] = models.Category.objects.all().order_by('-ctime')
75
        if self.request.GET.get('category'):
76
            try:
77
                context['category_id'] = int(self.request.GET['category'])
78
            except:
79
                pass
80
        return context
81

    
82
manage = ManageView.as_view()
83

    
84
class RssView(Feed):
85
    title = settings.RSS_TITLE
86
    description = settings.RSS_DESCRIPTION
87
    link = settings.RSS_LINK
88
    feed_item_link_template = settings.RSS_LINK_TEMPLATE
89
    feed_type = Atom1Feed
90

    
91
    def __init__(self, **kwargs):
92
        self.__dict__.update(kwargs)
93

    
94
    def items(self):
95
        return models.Announce.objects.exclude(expiration_time__lt=datetime.now()).order_by('-publication_time')
96

    
97
    def item_title(self, item):
98
        return item.title
99

    
100
    def item_description(self, item):
101
        return item.text
102

    
103
    def item_link(self, item):
104
        return self.feed_item_link_template.format(item.pk)
105

    
106
    def item_pubdate(self, item):
107
        return item.publication_time or item.modification_time
108

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