| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- from django.shortcuts import render, get_object_or_404
- from django.http import HttpResponseRedirect
- from django.urls import reverse
- from django.views import generic
- from django.contrib.auth.decorators import login_required, permission_required
- from django.forms import modelformset_factory, inlineformset_factory
- from website.settings import APPLICATION_NAME
- from .models import Network, Host
- from .forms import NetworkForm, HostForm
- def default_keywords(additional_keywords=None):
- default_keywords = 'RotBot, robot, bot, irc, irc bot, irc robot, '
- if additional_keywords:
- additional_keywords = ', '.join(map(str, additional_keywords))
- return (default_keywords + additional_keywords)
- return (default_keywords)
- class IndexView(generic.ListView):
- template_name = 'rotbot/networks.html'
- context_object_name = 'network_list'
- extra_context = {
- 'title': 'RotBot',
- 'icon': 'robot',
- 'description': 'Index of RotBot, the IRC robot.',
- 'keywords': default_keywords() + 'index',
- }
- def get_queryset(self):
- #return Question.objects.order_by('-pub_date')[:5]
- return Network.objects
- def network(request, network_slug):
- network = get_object_or_404(Network, slug=network_slug)
- context = {
- 'parent_title': 'Networks',
- 'parent_url': 'rotbot:networks',
- 'parent_icon': 'robot',
- 'title': network.name,
- 'icon': 'sitemap',
- 'description': 'Details of ' + network.name,
- 'keywords': default_keywords() + 'network.name, display, details',
- 'network': network,
- }
- return render(request, 'rotbot/network.html', context)
- @login_required
- @permission_required('rotbot.change_network', raise_exception=True)
- def edit_network(request, network_slug):
- network = get_object_or_404(Network, slug=network_slug)
- title = network.name
- HostFormSet = inlineformset_factory(Network, Host, form=HostForm)
- if request.method == 'POST':
- form = NetworkForm(request.POST, instance=network)
- formset = HostFormSet(request.POST, instance=network)
- if form.is_valid() and formset.is_valid():
- form.save()
- formset.save()
- return HttpResponseRedirect(reverse('rotbot:network', args=(network.slug,)))
- else:
- form = NetworkForm(instance=network)
- formset = HostFormSet(instance=network)
- context = {
- 'parent_title': 'Networks',
- 'parent_url': 'rotbot:networks',
- 'parent_icon': 'robot',
- 'title': title,
- 'icon': 'sitemap',
- 'description': 'Edit ' + title,
- 'keywords': default_keywords((title, 'edit')),
- 'network_slug': network_slug,
- 'form': form,
- 'hostformset': formset,
- }
- return render(request, 'rotbot/edit_network.html', context)
- @login_required
- @permission_required('rotbot.add_network', raise_exception=True)
- def add_network(request):
- HostFormSet = inlineformset_factory(Network, Host, form=HostForm)
- if request.method == 'POST':
- form = NetworkForm(request.POST)
- if form.is_valid():
- network = form.save()
- formset = HostFormSet(request.POST, instance=network)
- if formset.is_valid():
- formset.save()
- return HttpResponseRedirect(reverse('rotbot:network', args=(form.cleaned_data['slug'],)))
- else: # Not a POST request.
- form = NetworkForm()
- formset = HostFormSet(queryset=Host.objects.none())
- context = {
- 'parent_title': 'Networks',
- 'parent_url': 'rotbot:networks',
- 'parent_icon': 'robot',
- 'title': 'Add network',
- 'icon': 'sitemap',
- 'description': 'Add new irc network to ' + APPLICATION_NAME,
- 'keywords': default_keywords() + 'add, add network',
- 'form': form,
- 'hostformset': formset,
- }
- return render(request, 'rotbot/add_network.html', context)
- @login_required
- @permission_required('rotbot.change_network', raise_exception=True)
- def delete_network(request, network_slug):
- network = get_object_or_404(Network, slug=network_slug)
- network.delete()
- return HttpResponseRedirect(reverse('rotbot:networks'))
|