From fb2ba25f239c0352029ce2598e11a2c01d4355e0 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Tue, 3 Apr 2018 01:40:34 -0400 Subject: [PATCH] Remove the data filters feature. Signed-off-by: Roberto Rosario --- HISTORY.rst | 1 + docs/releases/3.0.rst | 1 + mayan/apps/common/apps.py | 8 ++----- mayan/apps/common/classes.py | 44 ------------------------------------ mayan/apps/common/forms.py | 10 +------- mayan/apps/common/links.py | 4 ---- mayan/apps/common/urls.py | 15 +++--------- mayan/apps/common/views.py | 42 +--------------------------------- mayan/apps/metadata/apps.py | 36 +---------------------------- 9 files changed, 10 insertions(+), 151 deletions(-) diff --git a/HISTORY.rst b/HISTORY.rst index 378cb8013e..315942b3e3 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -114,6 +114,7 @@ revoke permissions for the selected role. - Only show the new document link if the user has access to create documents of at least one document type. GitLab Issue #302. Thanks to kg @kgraves. +- Remove the data filters feature. 2.7.3 (2017-09-11) ================== diff --git a/docs/releases/3.0.rst b/docs/releases/3.0.rst index 64012f7d4d..fc8fef0154 100644 --- a/docs/releases/3.0.rst +++ b/docs/releases/3.0.rst @@ -371,6 +371,7 @@ Other changes worth mentioning - Add support for groups ACLs. - Sort permission namespaces and permissions in the role permission views. - Invert the columns in the ACL detail view. +- Remove the data filters feature. Removals -------- diff --git a/mayan/apps/common/apps.py b/mayan/apps/common/apps.py index c12d51c3b0..af0576732b 100644 --- a/mayan/apps/common/apps.py +++ b/mayan/apps/common/apps.py @@ -23,9 +23,8 @@ from .handlers import ( from .links import ( link_about, link_check_version, link_code, link_current_user_details, link_current_user_edit, link_current_user_locale_profile_edit, - link_documentation, link_filters, link_forum, link_license, - link_object_error_list_clear, link_packages_licenses, link_setup, - link_support, link_tools + link_documentation, link_forum, link_license, link_object_error_list_clear, + link_packages_licenses, link_setup, link_support, link_tools ) from .literals import DELETE_STALE_UPLOADS_INTERVAL @@ -142,9 +141,6 @@ class CommonApp(MayanAppConfig): 'common:object_error_list', ) ) - menu_tools.bind_links( - links=(link_filters,) - ) post_save.connect( user_locale_profile_create, diff --git a/mayan/apps/common/classes.py b/mayan/apps/common/classes.py index bc1b82d712..d95866423c 100644 --- a/mayan/apps/common/classes.py +++ b/mayan/apps/common/classes.py @@ -120,50 +120,6 @@ class ErrorLogNamespace(object): return ErrorLogEntry.objects.filter(namespace=self.name) -@python_2_unicode_compatible -class Filter(object): - _registry = {} - - @classmethod - def get(cls, slug): - return cls._registry[slug] - - @classmethod - def all(cls): - return cls._registry - - def __init__(self, label, slug, filter_kwargs, model, object_permission=None, hide_links=False): - self.label = label - self.slug = slug - self.filter_kwargs = filter_kwargs - self.model = model - self.object_permission = object_permission - self.hide_links = hide_links - - self.__class__._registry[self.slug] = self - - def __str__(self): - return force_text(self.label) - - def get_queryset(self, user): - AccessControlList = apps.get_model( - app_label='acls', model_name='AccessControlList' - ) - - queryset = self.model.objects.all() - for kwargs in self.filter_kwargs: - queryset = queryset.filter(**kwargs) - - queryset = queryset.distinct() - - if self.object_permission: - return AccessControlList.objects.filter_by_access( - self.object_permission, user, queryset=queryset - ) - else: - return queryset - - class MissingItem(object): _registry = [] diff --git a/mayan/apps/common/forms.py b/mayan/apps/common/forms.py index beb31aa41c..984b0c7d49 100644 --- a/mayan/apps/common/forms.py +++ b/mayan/apps/common/forms.py @@ -9,7 +9,7 @@ from django.db import models from django.utils.module_loading import import_string from django.utils.translation import ugettext_lazy as _ -from .classes import Filter, Package +from .classes import Package from .models import UserLocaleProfile from .utils import return_attrib from .widgets import ( @@ -139,14 +139,6 @@ class FileDisplayForm(forms.Form): fd.close() -class FilterForm(forms.Form): - filter_slug = forms.ChoiceField(label=_('Filter')) - - def __init__(self, *args, **kwargs): - super(FilterForm, self).__init__(*args, **kwargs) - self.fields['filter_slug'].choices = Filter.all().items() - - class LicenseForm(FileDisplayForm): DIRECTORY = () FILENAME = 'LICENSE' diff --git a/mayan/apps/common/links.py b/mayan/apps/common/links.py index 7818706b78..9ccce29e5d 100644 --- a/mayan/apps/common/links.py +++ b/mayan/apps/common/links.py @@ -71,10 +71,6 @@ link_object_error_list_with_icon = Link( permissions=(permission_error_log_view,), text=_('Errors'), view='common:error_list', ) -link_filters = Link( - icon='fa fa-filter', text=_('Data filters'), - view='common:filter_selection' -) link_forum = Link( icon='fa fa-life-ring', tags='new_window', text=_('Forum'), url='https://groups.google.com/forum/#!forum/mayan-edms' diff --git a/mayan/apps/common/urls.py b/mayan/apps/common/urls.py index 117312a7cd..ca7e6e656c 100644 --- a/mayan/apps/common/urls.py +++ b/mayan/apps/common/urls.py @@ -7,10 +7,9 @@ from .api_views import APIContentTypeList from .views import ( AboutView, CheckVersionView, CurrentUserDetailsView, CurrentUserEditView, CurrentUserLocaleProfileDetailsView, CurrentUserLocaleProfileEditView, - FaviconRedirectView, FilterResultListView, FilterSelectView, HomeView, - LicenseView, ObjectErrorLogEntryListClearView, ObjectErrorLogEntryListView, - PackagesLicensesView, RootView, SetupListView, ToolsListView, - multi_object_action_view + FaviconRedirectView, HomeView, LicenseView, ObjectErrorLogEntryListClearView, + ObjectErrorLogEntryListView, PackagesLicensesView, RootView, SetupListView, + ToolsListView, multi_object_action_view ) urlpatterns = [ @@ -48,14 +47,6 @@ urlpatterns = [ r'^user/locale/edit/$', CurrentUserLocaleProfileEditView.as_view(), name='current_user_locale_profile_edit' ), - url( - r'^filter/select/$', FilterSelectView.as_view(), - name='filter_selection' - ), - url( - r'^filter/(?P[\w-]+)/results/$', FilterResultListView.as_view(), - name='filter_results' - ), url( r'^object/(?P[-\w]+)/(?P[-\w]+)/(?P\d+)/errors/$', ObjectErrorLogEntryListView.as_view(), name='object_error_list' diff --git a/mayan/apps/common/views.py b/mayan/apps/common/views.py index f81f9b4862..98626d7cca 100644 --- a/mayan/apps/common/views.py +++ b/mayan/apps/common/views.py @@ -16,10 +16,9 @@ from django.views.generic import RedirectView, TemplateView from acls.models import AccessControlList -from .classes import Filter from .exceptions import NotLatestVersion from .forms import ( - FilterForm, LicenseForm, LocaleProfileForm, LocaleProfileForm_view, + LicenseForm, LocaleProfileForm, LocaleProfileForm_view, PackagesLicensesForm, UserForm, UserForm_view ) from .generics import ( # NOQA @@ -146,45 +145,6 @@ class FaviconRedirectView(RedirectView): return static('appearance/images/favicon.ico') -class FilterSelectView(SimpleView): - form_class = FilterForm - template_name = 'appearance/generic_form.html' - - def get_form(self): - return FilterForm() - - def get_extra_context(self): - return { - 'form': self.get_form(), - 'title': _('Filter selection') - } - - def post(self, request, *args, **kwargs): - return HttpResponseRedirect( - reverse( - 'common:filter_results', - args=(request.POST.get('filter_slug'),) - ) - ) - - -class FilterResultListView(SingleObjectListView): - def get_extra_context(self): - return { - 'hide_links': self.get_filter().hide_links, - 'title': _('Results for filter: %s') % self.get_filter() - } - - def get_filter(self): - try: - return Filter.get(self.kwargs['slug']) - except KeyError: - raise Http404(ugettext('Filter not found')) - - def get_object_list(self): - return self.get_filter().get_queryset(user=self.request.user) - - class HomeView(TemplateView): template_name = 'appearance/home.html' diff --git a/mayan/apps/metadata/apps.py b/mayan/apps/metadata/apps.py index 48f898e65e..c6d1d856a0 100644 --- a/mayan/apps/metadata/apps.py +++ b/mayan/apps/metadata/apps.py @@ -13,7 +13,7 @@ from common import ( MayanAppConfig, menu_facet, menu_multi_item, menu_object, menu_secondary, menu_setup, menu_sidebar ) -from common.classes import ModelAttribute, Filter +from common.classes import ModelAttribute from common.widgets import two_state_template from documents.search import document_page_search, document_search from documents.signals import post_document_type_change @@ -79,40 +79,6 @@ class MetadataApp(MayanAppConfig): 'metadata_value_of', DocumentMetadataHelper.constructor ) - Filter( - label=_('Documents missing required metadata'), - slug='documents-no-required-metadata', - filter_kwargs=[ - { - 'document_type__metadata__required': True, - }, - { - 'metadata__value__isnull': True - }, - { - 'is_stub': False - } - ], model=Document, object_permission=permission_document_view, - hide_links=True - ) - - Filter( - label=_('Documents missing optional metadata'), - slug='documents-no-optional-metadata', - filter_kwargs=[ - { - 'document_type__metadata__required': False, - }, - { - 'metadata__value__isnull': True - }, - { - 'is_stub': False - } - ], model=Document, object_permission=permission_document_view, - hide_links=True - ) - ModelAttribute( Document, 'metadata', type_name='related', description=_(