64 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 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')
 | |
| 
 | |
| 
 | |
| 
 |