add aggregator app
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
from django.contrib import messages
|
||||
from django.contrib.auth.mixins import LoginRequiredMixin
|
||||
from django.shortcuts import redirect
|
||||
from django.views import View
|
||||
from django.views.generic import ListView, UpdateView, CreateView
|
||||
from django.views.generic.detail import SingleObjectMixin
|
||||
|
||||
from aggregator.forms import AggregationSourceForm, AggregationSourceEditForm
|
||||
from aggregator.models import AggregationSource
|
||||
from cabinet.utils import CabinetViewMixin
|
||||
|
||||
|
||||
class AggregationSourceListView(CabinetViewMixin, ListView):
|
||||
template_name = 'cabinet/aggregator/source_list.html'
|
||||
title = 'Aggregation source list'
|
||||
sidebar_section = 'aggregator'
|
||||
|
||||
def get_queryset(self):
|
||||
return AggregationSource.objects.filter(owner=self.request.user)
|
||||
|
||||
|
||||
class AggregationSourceCreateView(CabinetViewMixin, CreateView):
|
||||
template_name = 'cabinet/aggregator/source_form.html'
|
||||
title = 'Create aggregation source'
|
||||
sidebar_section = 'aggregator'
|
||||
form_class = AggregationSourceForm
|
||||
|
||||
def form_valid(self, form):
|
||||
form.instance.owner = self.request.user
|
||||
form.instance.chat_id = form.cleaned_data['chat_id']
|
||||
form.save()
|
||||
return redirect('cabinet:aggregator:edit', pk=form.instance.pk)
|
||||
|
||||
|
||||
class AggregationSourceUpdateView(CabinetViewMixin, UpdateView):
|
||||
template_name = 'cabinet/aggregator/source_form.html'
|
||||
title = 'Configure aggregation source'
|
||||
sidebar_section = 'aggregator'
|
||||
form_class = AggregationSourceEditForm
|
||||
context_object_name = 'source'
|
||||
|
||||
def get_queryset(self):
|
||||
return AggregationSource.objects.filter(owner=self.request.user)
|
||||
|
||||
def form_valid(self, form):
|
||||
if 'chat_id' in form.cleaned_data:
|
||||
form.instance.chat_id = form.cleaned_data['chat_id']
|
||||
form.save()
|
||||
return redirect('cabinet:aggregator:edit', pk=form.instance.pk)
|
||||
|
||||
|
||||
class AggregationSourceDeleteView(LoginRequiredMixin, SingleObjectMixin, View):
|
||||
def get_queryset(self):
|
||||
return AggregationSource.objects.filter(owner=self.request.user)
|
||||
|
||||
def post(self, request, *args, **kwargs):
|
||||
source = self.get_object()
|
||||
messages.success(self.request, 'Source "{}" was successfully deleted'.format(source.title))
|
||||
source.delete()
|
||||
return redirect('cabinet:aggregator:index')
|
||||
Reference in New Issue
Block a user