Files
mayan-edms/mayan/apps/dependencies/views.py
Roberto Rosario 95a1df8072 Backport common mixin and generics improvements
* Rename get_object_list to get_source_queryset.
* Add uniqueness validation to SingleObjectCreateView.
* Remove MultipleInstanceActionMixin.
* Backport MultipleObjectMixin improvements.
* Remove ObjectListPermissionFilterMixin.
* Add and improve tests.

Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
2019-05-06 02:07:35 -04:00

139 lines
4.1 KiB
Python

from __future__ import unicode_literals
from django.http import Http404
from django.utils.translation import ugettext_lazy as _
from mayan.apps.common.generics import SimpleView, SingleObjectListView
from .classes import DependencyGroup
from .exceptions import NotLatestVersion, UnknownLatestVersion
from .forms import DependenciesLicensesForm
from .permissions import permission_dependencies_view
from .utils import check_version
class CheckVersionView(SimpleView):
template_name = 'appearance/generic_template.html'
def get_extra_context(self):
try:
check_version()
except NotLatestVersion as exception:
message = _(
'The version you are using is outdated. The latest version '
'is %s'
) % exception.upstream_version
except UnknownLatestVersion:
message = _(
'It is not possible to determine the latest version '
'available.'
)
else:
message = _('Your version is up-to-date.')
return {
'title': _('Check for updates'),
'content': message
}
class DependencyGroupEntryListView(SingleObjectListView):
view_permission = permission_dependencies_view
def get_extra_context(self):
return {
'hide_link': True,
'hide_object': True,
'object': self.get_object(),
'subtitle': self.get_object().help_text,
'title': _('Entries for dependency group: %s') % self.get_object(),
}
def get_source_queryset(self):
return self.get_object().get_entries()
def get_object(self):
try:
return DependencyGroup.get(
name=self.kwargs['dependency_group_name']
)
except KeyError:
raise Http404(
_('Group %s not found.') % self.kwargs[
'dependency_group_name'
]
)
class DependencyGroupListView(SingleObjectListView):
view_permission = permission_dependencies_view
def get_extra_context(self):
return {
'hide_link': True,
'hide_object': True,
'title': _('Dependency groups'),
}
def get_source_queryset(self):
return DependencyGroup.get_all()
class DependencyGroupEntryDetailView(SingleObjectListView):
view_permission = permission_dependencies_view
def get_extra_context(self):
group = self.get_dependency_group()
entry = self.get_dependency_group_entry()
return {
'entry': entry,
'group': group,
'hide_link': True,
'hide_object': True,
'navigation_object_list': ('group', 'entry'),
'title': _('Dependency group and entry: %(group)s, %(entry)s') % {
'group': group, 'entry': entry
}
}
def get_dependency_group(self):
try:
return DependencyGroup.get(
name=self.kwargs['dependency_group_name']
)
except KeyError:
raise Http404(
_('Group %s not found.') % self.kwargs[
'dependency_group_name'
]
)
def get_dependency_group_entry(self):
try:
return self.get_dependency_group().get_entry(
entry_name=self.kwargs['dependency_group_entry_name']
)
except KeyError:
raise Http404(
_('Entry %s not found.') % self.kwargs[
'dependency_group_entry_name'
]
)
def get_source_queryset(self):
return self.get_dependency_group_entry().get_dependencies()
class DependencyLicensesView(SimpleView):
template_name = 'appearance/generic_form.html'
def get_extra_context(self):
# Use a function so that DependenciesLicensesForm get initialized
# at every request
return {
'form': DependenciesLicensesForm(),
'read_only': True,
'title': _('Other packages licenses'),
}