Files
mayan-edms/mayan/apps/django_gpg/views.py
Roberto Rosario 2052caada4 Remove PreserveGetQuerySet mixin. Update SingleObjectList and
MultipleObjectFormActionView views to use a new get_object_list method.

Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
2017-08-16 22:12:24 -04:00

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')
}