MultipleObjectFormActionView views to use a new get_object_list method. Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
162 lines
4.5 KiB
Python
162 lines
4.5 KiB
Python
from __future__ import absolute_import, unicode_literals
|
|
|
|
import logging
|
|
|
|
from django.contrib import messages
|
|
from django.core.files.base import ContentFile
|
|
from django.urls import reverse, reverse_lazy
|
|
from django.utils.translation import ugettext_lazy as _
|
|
|
|
from common.generics import (
|
|
ConfirmView, SingleObjectCreateView, SingleObjectDeleteView,
|
|
SingleObjectDetailView, SingleObjectDownloadView, SingleObjectListView,
|
|
SimpleView
|
|
)
|
|
|
|
from .forms import KeyDetailForm, KeySearchForm
|
|
from .literals import KEY_TYPE_PUBLIC
|
|
from .models import Key
|
|
from .permissions import (
|
|
permission_key_delete, permission_key_download, permission_key_receive,
|
|
permission_key_upload, permission_key_view, permission_keyserver_query
|
|
)
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
class KeyDeleteView(SingleObjectDeleteView):
|
|
model = Key
|
|
object_permission = permission_key_delete
|
|
|
|
def get_post_action_redirect(self):
|
|
if self.get_object().key_type == KEY_TYPE_PUBLIC:
|
|
return reverse_lazy('django_gpg:key_public_list')
|
|
else:
|
|
return reverse_lazy('django_gpg:key_private_list')
|
|
|
|
def get_extra_context(self):
|
|
return {'title': _('Delete key: %s') % self.get_object()}
|
|
|
|
|
|
class KeyDetailView(SingleObjectDetailView):
|
|
form_class = KeyDetailForm
|
|
model = Key
|
|
object_permission = permission_key_view
|
|
|
|
def get_extra_context(self):
|
|
return {
|
|
'title': _('Details for key: %s') % self.get_object(),
|
|
}
|
|
|
|
|
|
class KeyDownloadView(SingleObjectDownloadView):
|
|
model = Key
|
|
object_permission = permission_key_download
|
|
|
|
def get_file(self):
|
|
key = self.get_object()
|
|
|
|
return ContentFile(key.key_data, name=key.key_id)
|
|
|
|
|
|
class KeyReceive(ConfirmView):
|
|
post_action_redirect = reverse_lazy('django_gpg:key_public_list')
|
|
view_permission = permission_key_receive
|
|
|
|
def get_extra_context(self):
|
|
return {
|
|
'message': _('Import key ID: %s?') % self.kwargs['key_id'],
|
|
'title': _('Import key'),
|
|
}
|
|
|
|
def view_action(self):
|
|
try:
|
|
Key.objects.receive_key(key_id=self.kwargs['key_id'])
|
|
except Exception as exception:
|
|
messages.error(
|
|
self.request,
|
|
_('Unable to import key: %(key_id)s; %(error)s') % {
|
|
'key_id': self.kwargs['key_id'],
|
|
'error': exception,
|
|
}
|
|
)
|
|
else:
|
|
messages.success(
|
|
self.request, _('Successfully received key: %(key_id)s') % {
|
|
'key_id': self.kwargs['key_id'],
|
|
}
|
|
)
|
|
|
|
|
|
class KeyQueryView(SimpleView):
|
|
template_name = 'appearance/generic_form.html'
|
|
view_permission = permission_keyserver_query
|
|
|
|
def get_form(self):
|
|
if ('term' in self.request.GET) and self.request.GET['term'].strip():
|
|
term = self.request.GET['term']
|
|
return KeySearchForm(initial={'term': term})
|
|
else:
|
|
return KeySearchForm()
|
|
|
|
def get_extra_context(self):
|
|
return {
|
|
'form': self.get_form(),
|
|
'form_action': reverse('django_gpg:key_query_results'),
|
|
'submit_icon': 'fa fa-search',
|
|
'submit_label': _('Search'),
|
|
'submit_method': 'GET',
|
|
'title': _('Query key server'),
|
|
}
|
|
|
|
|
|
class KeyQueryResultView(SingleObjectListView):
|
|
view_permission = permission_keyserver_query
|
|
|
|
def get_extra_context(self):
|
|
return {
|
|
'hide_object': True,
|
|
'title': _('Key query results'),
|
|
}
|
|
|
|
def get_object_list(self):
|
|
term = self.request.GET.get('term')
|
|
if term:
|
|
return Key.objects.search(query=term)
|
|
else:
|
|
return ()
|
|
|
|
|
|
class KeyUploadView(SingleObjectCreateView):
|
|
fields = ('key_data',)
|
|
model = Key
|
|
post_action_redirect = reverse_lazy('django_gpg:key_public_list')
|
|
view_permission = permission_key_upload
|
|
|
|
def get_extra_context(self):
|
|
return {
|
|
'title': _('Upload new key'),
|
|
}
|
|
|
|
|
|
class PublicKeyListView(SingleObjectListView):
|
|
object_permission = permission_key_view
|
|
queryset = Key.objects.public_keys()
|
|
|
|
def get_extra_context(self):
|
|
return {
|
|
'hide_object': True,
|
|
'title': _('Public keys')
|
|
}
|
|
|
|
|
|
class PrivateKeyListView(SingleObjectListView):
|
|
object_permission = permission_key_view
|
|
queryset = Key.objects.private_keys()
|
|
|
|
def get_extra_context(self):
|
|
return {
|
|
'hide_object': True,
|
|
'title': _('Private keys')
|
|
}
|