* 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>
139 lines
4.1 KiB
Python
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'),
|
|
}
|