From b15d4191726d2d380c9f989dfa7c5cd641b0e2d0 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Wed, 4 May 2016 15:57:09 -0400 Subject: [PATCH 1/5] Fix statistics detail view error. GitLab issue #270. @bat79a --- mayan/apps/statistics/apps.py | 1 + mayan/apps/statistics/tests/__init__.py | 0 mayan/apps/statistics/tests/test_views.py | 38 +++++++++++++++++++++++ mayan/apps/statistics/views.py | 4 +-- 4 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 mayan/apps/statistics/tests/__init__.py create mode 100644 mayan/apps/statistics/tests/test_views.py diff --git a/mayan/apps/statistics/apps.py b/mayan/apps/statistics/apps.py index b2944fe097..6cd62a7e95 100644 --- a/mayan/apps/statistics/apps.py +++ b/mayan/apps/statistics/apps.py @@ -20,6 +20,7 @@ from .tasks import task_execute_statistic # NOQA - Force registration of task class StatisticsApp(MayanAppConfig): name = 'statistics' + test = True verbose_name = _('Statistics') def ready(self): diff --git a/mayan/apps/statistics/tests/__init__.py b/mayan/apps/statistics/tests/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/mayan/apps/statistics/tests/test_views.py b/mayan/apps/statistics/tests/test_views.py new file mode 100644 index 0000000000..f8b200909d --- /dev/null +++ b/mayan/apps/statistics/tests/test_views.py @@ -0,0 +1,38 @@ +from __future__ import unicode_literals + +from django.contrib.auth import get_user_model + +from common.tests.test_views import GenericViewTestCase + +from user_management.tests.literals import ( + TEST_USER_PASSWORD, TEST_USER_USERNAME +) + +from ..classes import Statistic +from ..permissions import permission_statistics_view + + +class StatisticsViewTestCase(GenericViewTestCase): + def test_statistic_detail_view_no_permissions(self): + self.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) + + statistic = Statistic.get_all()[0] + + response = self.get( + 'statistics:statistic_detail', args=(statistic.slug,) + ) + + self.assertEqual(response.status_code, 403) + + def test_statistic_detail_view_with_permissions(self): + self.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) + + self.role.permissions.add(permission_statistics_view.stored_permission) + + statistic = Statistic.get_all()[0] + + response = self.get( + 'statistics:statistic_detail', args=(statistic.slug,) + ) + + self.assertEqual(response.status_code, 200) diff --git a/mayan/apps/statistics/views.py b/mayan/apps/statistics/views.py index 5d9f8a2eb9..15a8f541cc 100644 --- a/mayan/apps/statistics/views.py +++ b/mayan/apps/statistics/views.py @@ -5,7 +5,7 @@ from django.http import Http404 from django.utils.translation import ugettext_lazy as _ from common.generics import ( - ConfirmView, SingleObjectDetailView, SingleObjectListView + ConfirmView, SimpleView, SingleObjectDetailView, SingleObjectListView ) from .classes import Statistic, StatisticNamespace @@ -42,7 +42,7 @@ class NamespaceDetailView(SingleObjectListView): return self.get_namespace().statistics -class StatisticDetailView(SingleObjectDetailView): +class StatisticDetailView(SimpleView): view_permission = permission_statistics_view def get_extra_context(self): From 06ecbfeba29562dd1170c1be405eedfe1d144a9b Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Wed, 4 May 2016 15:58:17 -0400 Subject: [PATCH 2/5] Flake8 cleanups. --- mayan/apps/statistics/apps.py | 4 +++- mayan/apps/statistics/classes.py | 4 +++- mayan/apps/statistics/tests/test_views.py | 2 -- mayan/apps/statistics/views.py | 8 ++++---- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/mayan/apps/statistics/apps.py b/mayan/apps/statistics/apps.py index 6cd62a7e95..0f182b9b80 100644 --- a/mayan/apps/statistics/apps.py +++ b/mayan/apps/statistics/apps.py @@ -61,7 +61,9 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI } ) - menu_object.bind_links(links=(link_execute, link_view), sources=(Statistic,)) + menu_object.bind_links( + links=(link_execute, link_view), sources=(Statistic,) + ) menu_object.bind_links( links=(link_namespace_details,), sources=(StatisticNamespace,) ) diff --git a/mayan/apps/statistics/classes.py b/mayan/apps/statistics/classes.py index 7943e0f6c0..5bfc55a43d 100644 --- a/mayan/apps/statistics/classes.py +++ b/mayan/apps/statistics/classes.py @@ -116,7 +116,9 @@ class Statistic(object): StatisticResult.objects.filter(slug=self.slug).delete() - statistic_result, created = StatisticResult.objects.get_or_create(slug=self.slug) + statistic_result, created = StatisticResult.objects.get_or_create( + slug=self.slug + ) statistic_result.store_data(data=results) def get_results(self): diff --git a/mayan/apps/statistics/tests/test_views.py b/mayan/apps/statistics/tests/test_views.py index f8b200909d..133a85d5af 100644 --- a/mayan/apps/statistics/tests/test_views.py +++ b/mayan/apps/statistics/tests/test_views.py @@ -1,7 +1,5 @@ from __future__ import unicode_literals -from django.contrib.auth import get_user_model - from common.tests.test_views import GenericViewTestCase from user_management.tests.literals import ( diff --git a/mayan/apps/statistics/views.py b/mayan/apps/statistics/views.py index 15a8f541cc..6746d0ef75 100644 --- a/mayan/apps/statistics/views.py +++ b/mayan/apps/statistics/views.py @@ -4,9 +4,7 @@ from django.core.urlresolvers import reverse from django.http import Http404 from django.utils.translation import ugettext_lazy as _ -from common.generics import ( - ConfirmView, SimpleView, SingleObjectDetailView, SingleObjectListView -) +from common.generics import ConfirmView, SimpleView, SingleObjectListView from .classes import Statistic, StatisticNamespace from .permissions import permission_statistics_view @@ -75,7 +73,9 @@ class StatisticQueueView(ConfirmView): # Translators: This text is asking users if they want to queue # (to send to the queue) a statistic for it to be update ahead # of schedule - 'title': _('Queue statistic "%s" to be updated?') % self.get_object(), + 'title': _( + 'Queue statistic "%s" to be updated?' + ) % self.get_object(), } def get_object(self): From e3d49e1352e41a7d0f8e673bfeeb139254fb0803 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Thu, 5 May 2016 23:17:08 -0400 Subject: [PATCH 3/5] Use now django-autoadmin 1.1.1 --- requirements/base.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/base.txt b/requirements/base.txt index 0e12651d4b..862c9451e6 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -5,7 +5,7 @@ celery==3.1.19 cssmin==0.2.0 django-activity-stream==0.6.0 -django-autoadmin==1.1.0 +django-autoadmin==1.1.1 django-celery==3.1.17 django-colorful==1.1.0 django-compressor==2.0 From bd648d0cb19d47bc03c3475540087f1f38874da5 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Thu, 5 May 2016 23:17:32 -0400 Subject: [PATCH 4/5] Postgresql needs typecasting for turning char fields into native UUID fields. Conditionally run the necesary SQL for this to happen. GitLab issue #266 Thanks to Baptiste GAULLET @bat79a for finding the solution. --- .../migrations/0032_auto_20160315_0537.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/mayan/apps/documents/migrations/0032_auto_20160315_0537.py b/mayan/apps/documents/migrations/0032_auto_20160315_0537.py index 0e413efaca..903850a24c 100644 --- a/mayan/apps/documents/migrations/0032_auto_20160315_0537.py +++ b/mayan/apps/documents/migrations/0032_auto_20160315_0537.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- from __future__ import unicode_literals -from django.db import migrations, models import uuid +from django.db import connection, migrations, models + class Migration(migrations.Migration): - dependencies = [ ('documents', '0031_convert_uuid'), ] @@ -18,3 +18,13 @@ class Migration(migrations.Migration): field=models.UUIDField(default=uuid.uuid4, editable=False), ), ] + + def __init__(self, *args, **kwargs): + super(Migration, self).__init__(*args, **kwargs) + + if connection.vendor == 'postgresql': + self.operations.insert( + 0, migrations.RunSQL( + 'ALTER TABLE documents_document ALTER COLUMN uuid SET DATA TYPE UUID USING uuid::uuid;' + ) + ) From 94b968963ee7d9bd009fad571839667cae479bed Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Thu, 5 May 2016 23:44:18 -0400 Subject: [PATCH 5/5] Bump version to 2.1rc2 --- mayan/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mayan/__init__.py b/mayan/__init__.py index 6816309bd2..c8419b3fcf 100644 --- a/mayan/__init__.py +++ b/mayan/__init__.py @@ -1,7 +1,7 @@ from __future__ import unicode_literals __title__ = 'Mayan EDMS' -__version__ = '2.1rc1' +__version__ = '2.1rc2' __build__ = 0x020100 __author__ = 'Roberto Rosario' __author_email__ = 'roberto.rosario@mayan-edms.com'