From fd4c2e7f001cfbdffa9ea442a8fd13a1f402676a Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Wed, 5 Dec 2018 14:45:20 -0400 Subject: [PATCH 1/8] Converter: Remove base64 image support The get_page method had support to return the image in base64 format. This feature is no longer used by any other app. Signed-off-by: Roberto Rosario --- mayan/apps/converter/classes.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/mayan/apps/converter/classes.py b/mayan/apps/converter/classes.py index 58cf5d3102..2974145136 100644 --- a/mayan/apps/converter/classes.py +++ b/mayan/apps/converter/classes.py @@ -1,6 +1,5 @@ from __future__ import unicode_literals -import base64 from io import BytesIO import logging import os @@ -178,7 +177,7 @@ class ConverterBase(object): fs_cleanup(input_filepath) fs_cleanup(converted_output) - def get_page(self, output_format=None, as_base64=False): + def get_page(self, output_format=None): output_format = output_format or setting_graphics_backend_arguments.value.get( 'pillow_format', DEFAULT_PILLOW_FORMAT ) @@ -196,10 +195,7 @@ class ConverterBase(object): self.image.convert(new_mode).save(image_buffer, format=output_format) - if as_base64: - return 'data:{};base64,{}'.format(Image.MIME[output_format], base64.b64encode(image_buffer.getvalue())) - else: - image_buffer.seek(0) + image_buffer.seek(0) return image_buffer From 8740707d1da9a577e689ca0effd4efbf06f7f063 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Thu, 6 Dec 2018 00:48:05 -0400 Subject: [PATCH 2/8] Documentation: Minor edit in the releases text Signed-off-by: Roberto Rosario --- docs/releases/3.1.6.rst | 4 ++-- docs/releases/3.1.7.rst | 6 +++--- docs/releases/3.1.9.rst | 3 ++- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/docs/releases/3.1.6.rst b/docs/releases/3.1.6.rst index a09bd8c04f..3fe154bd5b 100644 --- a/docs/releases/3.1.6.rst +++ b/docs/releases/3.1.6.rst @@ -9,10 +9,10 @@ Changes * Improve index mirroring value clean up code to remove the spaces at the starts and at the end of directories. Closes again GitLab issue #520 - Thanks to TheOneValen @ for the report. + Thanks to @TheOneValen for the report. * Improve index mirroring cache class to use the hash of the keys instead of the literal keys. Avoid warning about invalid key - characters. Closes GitLab issue #518. Thanks to TheOneValen @ for the + characters. Closes GitLab issue #518. Thanks to @TheOneValen for the report. * Only render the Template API view for authenticated users. Thanks rgarcia for the report. diff --git a/docs/releases/3.1.7.rst b/docs/releases/3.1.7.rst index b3c5c3b5dd..9a696cd1ed 100644 --- a/docs/releases/3.1.7.rst +++ b/docs/releases/3.1.7.rst @@ -12,10 +12,10 @@ Changes * Remove duplicate YAML loading of environment variables. * Don't load development apps if they are already loaded. * Make sure all key used as input for the cache key hash are - bytes and not unicode. GitLab issue #520. Thanks to TheOneValen - @TheOneValen for the report. + bytes and not unicode. GitLab issue #520. Thanks to @TheOneValen for + the report. * Ignore document stub from the index mirror. GitLab issue - #520. Thanks to TheOneValen @TheOneValen for the report. + #520. Thanks to @TheOneValen for the report. * Fix for the Docker image INSTALL_FLAG path. Thanks to Mark Maglana @relaxdiego for the report and to Hamish Farroq @farroq_HAM for the patch. GitLab issue #525. diff --git a/docs/releases/3.1.9.rst b/docs/releases/3.1.9.rst index 793099d7c8..1234fee0a0 100644 --- a/docs/releases/3.1.9.rst +++ b/docs/releases/3.1.9.rst @@ -8,7 +8,8 @@ Changes ------- * Convert the furl instance to text to allow serializing it into - JSON to be passed as arguments to the background task. + JSON and be passed as arguments to the background task. Fixes + metadata assignment issues when uploading new documents. Removals -------- From 55a30379bd344d77942a5151e9d1ecc26e240462 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Thu, 6 Dec 2018 01:09:37 -0400 Subject: [PATCH 3/8] Various apps: Sort imports Run imports as per Mayan EDMS best practices. Signed-off-by: Roberto Rosario --- mayan/apps/acls/api_views.py | 1 - mayan/apps/acls/classes.py | 2 +- mayan/apps/acls/links.py | 2 +- mayan/apps/acls/managers.py | 5 +- mayan/apps/acls/migrations/0001_initial.py | 2 +- .../migrations/0002_auto_20150703_0513.py | 2 +- mayan/apps/acls/serializers.py | 4 +- mayan/apps/acls/tests/test_links.py | 2 +- mayan/apps/acls/tests/test_models.py | 4 +- mayan/apps/acls/views.py | 2 +- mayan/apps/authentication/tests/test_views.py | 4 +- mayan/apps/authentication/urls.py | 1 - mayan/apps/authentication/views.py | 8 +- mayan/apps/cabinets/admin.py | 4 +- mayan/apps/cabinets/apps.py | 15 +- mayan/apps/cabinets/links.py | 2 +- .../apps/cabinets/migrations/0001_initial.py | 4 +- mayan/apps/cabinets/tests/test_views.py | 3 +- .../apps/cabinets/tests/test_wizard_steps.py | 2 +- mayan/apps/cabinets/urls.py | 9 +- mayan/apps/cabinets/views.py | 7 +- mayan/apps/checkouts/apps.py | 6 +- mayan/apps/checkouts/links.py | 4 +- mayan/apps/checkouts/managers.py | 2 +- .../apps/checkouts/migrations/0001_initial.py | 2 +- .../migrations/0002_documentcheckout_user.py | 2 +- .../migrations/0004_auto_20150617_0330.py | 2 +- .../migrations/0006_newversionblock.py | 2 +- mayan/apps/checkouts/tests/test_api.py | 2 +- mayan/apps/checkouts/tests/test_views.py | 4 +- mayan/apps/checkouts/urls.py | 2 +- mayan/apps/checkouts/views.py | 2 +- mayan/apps/common/apps.py | 13 +- mayan/apps/common/compressed_files.py | 1 - mayan/apps/common/generics.py | 7 +- mayan/apps/common/links.py | 7 +- mayan/apps/common/migrations/0001_initial.py | 2 +- .../migrations/0002_auto_20150608_1902.py | 2 +- .../migrations/0003_auto_20150614_0723.py | 1 - .../0004_delete_anonymoususersingleton.py | 1 - .../migrations/0005_auto_20150706_1832.py | 1 - .../migrations/0007_auto_20170118_1758.py | 501 +++++++++++++++++- .../common/migrations/0008_errorlogentry.py | 43 +- .../migrations/0009_auto_20180402_0339.py | 445 +++++++++++++++- .../migrations/0010_auto_20180403_0702.py | 12 +- .../migrations/0011_auto_20180429_0758.py | 12 +- .../migrations/0012_auto_20181203_0812.py | 91 +++- mayan/apps/common/mixins.py | 3 +- mayan/apps/common/storages.py | 4 +- mayan/apps/common/tasks.py | 2 +- mayan/apps/common/tests/base.py | 5 +- mayan/apps/common/tests/mixins.py | 5 +- mayan/apps/common/tests/test_api.py | 2 +- .../common/tests/test_compressed_files.py | 2 +- mayan/apps/common/utils.py | 8 +- mayan/apps/common/views.py | 11 +- mayan/apps/common/widgets.py | 3 +- mayan/apps/sources/admin.py | 3 +- mayan/apps/sources/apps.py | 14 +- mayan/apps/sources/forms.py | 4 +- mayan/apps/sources/links.py | 5 +- mayan/apps/sources/migrations/0001_initial.py | 2 +- .../apps/sources/migrations/0003_sourcelog.py | 2 +- .../migrations/0006_auto_20150708_0330.py | 2 +- ...emailbasemodel_metadata_attachment_name.py | 2 +- .../migrations/0008_auto_20150815_0351.py | 2 +- .../migrations/0009_auto_20150930_2341.py | 2 +- .../migrations/0010_auto_20151001_0055.py | 2 +- .../sources/migrations/0011_sanescanner.py | 2 +- mayan/apps/sources/models.py | 16 +- mayan/apps/sources/storages.py | 2 +- mayan/apps/sources/tasks.py | 3 +- mayan/apps/sources/tests/test_links.py | 2 +- mayan/apps/sources/tests/test_models.py | 8 +- mayan/apps/sources/tests/test_views.py | 6 +- mayan/apps/sources/urls.py | 2 +- mayan/apps/sources/utils.py | 2 +- mayan/apps/sources/views.py | 16 +- mayan/apps/sources/widgets.py | 4 +- 79 files changed, 1218 insertions(+), 184 deletions(-) diff --git a/mayan/apps/acls/api_views.py b/mayan/apps/acls/api_views.py index 13c07b7299..9f3932314c 100644 --- a/mayan/apps/acls/api_views.py +++ b/mayan/apps/acls/api_views.py @@ -2,7 +2,6 @@ from __future__ import absolute_import, unicode_literals from django.contrib.contenttypes.models import ContentType from django.shortcuts import get_object_or_404 - from rest_framework import generics from .models import AccessControlList diff --git a/mayan/apps/acls/classes.py b/mayan/apps/acls/classes.py index 7d3b2e35d3..499571a8d6 100644 --- a/mayan/apps/acls/classes.py +++ b/mayan/apps/acls/classes.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals, absolute_import +from __future__ import absolute_import, unicode_literals import logging diff --git a/mayan/apps/acls/links.py b/mayan/apps/acls/links.py index 8a12258448..2cd93a42b0 100644 --- a/mayan/apps/acls/links.py +++ b/mayan/apps/acls/links.py @@ -6,7 +6,7 @@ from django.utils.translation import ugettext_lazy as _ from mayan.apps.navigation import Link from .icons import icon_acl_list, icon_acl_new -from .permissions import permission_acl_view, permission_acl_edit +from .permissions import permission_acl_edit, permission_acl_view def get_kwargs_factory(variable_name): diff --git a/mayan/apps/acls/managers.py b/mayan/apps/acls/managers.py index 7abb02017a..21f7058fac 100644 --- a/mayan/apps/acls/managers.py +++ b/mayan/apps/acls/managers.py @@ -6,14 +6,15 @@ from django.contrib.contenttypes.models import ContentType from django.core.exceptions import PermissionDenied from django.db import models from django.db.models import Q -from django.utils.translation import ugettext, ugettext_lazy as _ +from django.utils.translation import ugettext +from django.utils.translation import ugettext_lazy as _ from mayan.apps.common.utils import return_attrib, return_related from mayan.apps.permissions import Permission from mayan.apps.permissions.models import StoredPermission -from .exceptions import PermissionNotValidForClass from .classes import ModelPermission +from .exceptions import PermissionNotValidForClass logger = logging.getLogger(__name__) diff --git a/mayan/apps/acls/migrations/0001_initial.py b/mayan/apps/acls/migrations/0001_initial.py index 48932b6683..1a50c46e0b 100644 --- a/mayan/apps/acls/migrations/0001_initial.py +++ b/mayan/apps/acls/migrations/0001_initial.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- from __future__ import unicode_literals -from django.db import models, migrations +from django.db import migrations, models class Migration(migrations.Migration): diff --git a/mayan/apps/acls/migrations/0002_auto_20150703_0513.py b/mayan/apps/acls/migrations/0002_auto_20150703_0513.py index 6ff7c6def5..429819719d 100644 --- a/mayan/apps/acls/migrations/0002_auto_20150703_0513.py +++ b/mayan/apps/acls/migrations/0002_auto_20150703_0513.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- from __future__ import unicode_literals -from django.db import models, migrations +from django.db import migrations, models class Migration(migrations.Migration): diff --git a/mayan/apps/acls/serializers.py b/mayan/apps/acls/serializers.py index 1ad961242f..87e41036d5 100644 --- a/mayan/apps/acls/serializers.py +++ b/mayan/apps/acls/serializers.py @@ -12,7 +12,9 @@ from rest_framework.reverse import reverse from mayan.apps.common.serializers import ContentTypeSerializer from mayan.apps.permissions import Permission from mayan.apps.permissions.models import Role, StoredPermission -from mayan.apps.permissions.serializers import PermissionSerializer, RoleSerializer +from mayan.apps.permissions.serializers import ( + PermissionSerializer, RoleSerializer +) from .models import AccessControlList diff --git a/mayan/apps/acls/tests/test_links.py b/mayan/apps/acls/tests/test_links.py index ec8a9e2ea7..821194ce03 100644 --- a/mayan/apps/acls/tests/test_links.py +++ b/mayan/apps/acls/tests/test_links.py @@ -6,7 +6,7 @@ from django.urls import reverse from mayan.apps.documents.tests import GenericDocumentViewTestCase from ..links import ( - link_acl_delete, link_acl_list, link_acl_create, link_acl_permissions + link_acl_create, link_acl_delete, link_acl_list, link_acl_permissions ) from ..models import AccessControlList from ..permissions import permission_acl_edit, permission_acl_view diff --git a/mayan/apps/acls/tests/test_models.py b/mayan/apps/acls/tests/test_models.py index 1f5e0beaf2..1a723ab0cf 100644 --- a/mayan/apps/acls/tests/test_models.py +++ b/mayan/apps/acls/tests/test_models.py @@ -7,8 +7,8 @@ from mayan.apps.common.tests import BaseTestCase from mayan.apps.documents.models import Document, DocumentType from mayan.apps.documents.permissions import permission_document_view from mayan.apps.documents.tests import ( - TEST_SMALL_DOCUMENT_PATH, TEST_DOCUMENT_TYPE_LABEL, - TEST_DOCUMENT_TYPE_2_LABEL + TEST_DOCUMENT_TYPE_2_LABEL, TEST_DOCUMENT_TYPE_LABEL, + TEST_SMALL_DOCUMENT_PATH ) from ..models import AccessControlList diff --git a/mayan/apps/acls/views.py b/mayan/apps/acls/views.py index 79d1b496fb..8531829781 100644 --- a/mayan/apps/acls/views.py +++ b/mayan/apps/acls/views.py @@ -15,7 +15,7 @@ from mayan.apps.common.views import ( AssignRemoveView, SingleObjectCreateView, SingleObjectDeleteView, SingleObjectListView ) -from mayan.apps.permissions import PermissionNamespace, Permission +from mayan.apps.permissions import Permission, PermissionNamespace from mayan.apps.permissions.models import StoredPermission from .classes import ModelPermission diff --git a/mayan/apps/authentication/tests/test_views.py b/mayan/apps/authentication/tests/test_views.py index 2e152e1338..81e11fbf4b 100644 --- a/mayan/apps/authentication/tests/test_views.py +++ b/mayan/apps/authentication/tests/test_views.py @@ -8,8 +8,8 @@ from django.urls import reverse from mayan.apps.common.tests import GenericViewTestCase from mayan.apps.smart_settings.classes import Namespace from mayan.apps.user_management.tests.literals import ( - TEST_ADMIN_EMAIL, TEST_ADMIN_PASSWORD, TEST_USER_PASSWORD_EDITED, - TEST_ADMIN_USERNAME + TEST_ADMIN_EMAIL, TEST_ADMIN_PASSWORD, TEST_ADMIN_USERNAME, + TEST_USER_PASSWORD_EDITED ) from ..settings import setting_maximum_session_length diff --git a/mayan/apps/authentication/urls.py b/mayan/apps/authentication/urls.py index 93443bea2d..50bf6e7c36 100644 --- a/mayan/apps/authentication/urls.py +++ b/mayan/apps/authentication/urls.py @@ -10,7 +10,6 @@ from .views import ( password_reset_done_view, password_reset_view ) - urlpatterns = [ url(r'^login/$', login_view, name='login_view'), url( diff --git a/mayan/apps/authentication/views.py b/mayan/apps/authentication/views.py index 8907285954..9ff0146275 100644 --- a/mayan/apps/authentication/views.py +++ b/mayan/apps/authentication/views.py @@ -4,8 +4,8 @@ from django.conf import settings from django.contrib import messages from django.contrib.auth import REDIRECT_FIELD_NAME from django.contrib.auth.views import ( - login, password_change, password_reset, password_reset_confirm, - password_reset_complete, password_reset_done + login, password_change, password_reset, password_reset_complete, + password_reset_confirm, password_reset_done ) from django.http import HttpResponseRedirect from django.shortcuts import redirect, resolve_url @@ -16,7 +16,9 @@ from django.utils.translation import ugettext_lazy as _ from stronghold.decorators import public import mayan -from mayan.apps.common.settings import setting_project_title, setting_project_url +from mayan.apps.common.settings import ( + setting_project_title, setting_project_url +) from .forms import EmailAuthenticationForm, UsernameAuthenticationForm from .settings import setting_login_method, setting_maximum_session_length diff --git a/mayan/apps/cabinets/admin.py b/mayan/apps/cabinets/admin.py index be3da6c442..994b6a8319 100644 --- a/mayan/apps/cabinets/admin.py +++ b/mayan/apps/cabinets/admin.py @@ -2,10 +2,10 @@ from __future__ import unicode_literals from django.contrib import admin -from .models import Cabinet - from mptt.admin import MPTTModelAdmin +from .models import Cabinet + @admin.register(Cabinet) class CabinetAdmin(MPTTModelAdmin): diff --git a/mayan/apps/cabinets/apps.py b/mayan/apps/cabinets/apps.py index 83cb69834a..b296e92cbd 100644 --- a/mayan/apps/cabinets/apps.py +++ b/mayan/apps/cabinets/apps.py @@ -4,7 +4,9 @@ from django.apps import apps from django.utils.translation import ugettext_lazy as _ from mayan.apps.acls import ModelPermission -from mayan.apps.acls.permissions import permission_acl_edit, permission_acl_view +from mayan.apps.acls.permissions import ( + permission_acl_edit, permission_acl_view +) from mayan.apps.common import ( MayanAppConfig, menu_facet, menu_main, menu_multi_item, menu_object, menu_sidebar @@ -13,12 +15,11 @@ from mayan.apps.documents.search import document_page_search, document_search from mayan.apps.navigation import SourceColumn from .links import ( - link_cabinet_list, link_document_cabinet_list, - link_document_cabinet_remove, link_cabinet_add_document, - link_cabinet_add_multiple_documents, link_cabinet_child_add, - link_cabinet_create, link_cabinet_delete, link_cabinet_edit, - link_cabinet_view, link_custom_acl_list, - link_multiple_document_cabinet_remove + link_cabinet_add_document, link_cabinet_add_multiple_documents, + link_cabinet_child_add, link_cabinet_create, link_cabinet_delete, + link_cabinet_edit, link_cabinet_list, link_cabinet_view, + link_custom_acl_list, link_document_cabinet_list, + link_document_cabinet_remove, link_multiple_document_cabinet_remove ) from .menus import menu_cabinets from .permissions import ( diff --git a/mayan/apps/cabinets/links.py b/mayan/apps/cabinets/links.py index f1f6c12d1d..7a19505cec 100644 --- a/mayan/apps/cabinets/links.py +++ b/mayan/apps/cabinets/links.py @@ -15,7 +15,7 @@ from .icons import ( from .permissions import ( permission_cabinet_add_document, permission_cabinet_create, permission_cabinet_delete, permission_cabinet_edit, - permission_cabinet_view, permission_cabinet_remove_document + permission_cabinet_remove_document, permission_cabinet_view ) # Document links diff --git a/mayan/apps/cabinets/migrations/0001_initial.py b/mayan/apps/cabinets/migrations/0001_initial.py index 6b6a3bf6e0..f227cb8aee 100644 --- a/mayan/apps/cabinets/migrations/0001_initial.py +++ b/mayan/apps/cabinets/migrations/0001_initial.py @@ -1,9 +1,9 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.5 on 2017-01-24 07:37 from __future__ import unicode_literals -from django.db import migrations, models import django.db.models.deletion +from django.db import migrations, models + import mptt.fields diff --git a/mayan/apps/cabinets/tests/test_views.py b/mayan/apps/cabinets/tests/test_views.py index abe574ca07..d24ab40e99 100644 --- a/mayan/apps/cabinets/tests/test_views.py +++ b/mayan/apps/cabinets/tests/test_views.py @@ -8,7 +8,8 @@ from ..permissions import ( permission_cabinet_delete, permission_cabinet_edit, permission_cabinet_remove_document, permission_cabinet_view ) -from .literals import TEST_CABINET_LABEL, TEST_CABINET_EDITED_LABEL + +from .literals import TEST_CABINET_EDITED_LABEL, TEST_CABINET_LABEL class CabinetViewTestCase(GenericDocumentViewTestCase): diff --git a/mayan/apps/cabinets/tests/test_wizard_steps.py b/mayan/apps/cabinets/tests/test_wizard_steps.py index a36f5ae9d9..bd79dd5c8d 100644 --- a/mayan/apps/cabinets/tests/test_wizard_steps.py +++ b/mayan/apps/cabinets/tests/test_wizard_steps.py @@ -3,7 +3,7 @@ from __future__ import unicode_literals from mayan.apps.documents.models import Document from mayan.apps.documents.permissions import permission_document_create from mayan.apps.documents.tests import ( - GenericDocumentViewTestCase, TEST_SMALL_DOCUMENT_PATH, + TEST_SMALL_DOCUMENT_PATH, GenericDocumentViewTestCase ) from mayan.apps.sources.models import WebFormSource from mayan.apps.sources.tests.literals import ( diff --git a/mayan/apps/cabinets/urls.py b/mayan/apps/cabinets/urls.py index 14142d67b1..06739ad800 100644 --- a/mayan/apps/cabinets/urls.py +++ b/mayan/apps/cabinets/urls.py @@ -3,13 +3,14 @@ from __future__ import unicode_literals from django.conf.urls import url from .api_views import ( - APIDocumentCabinetListView, APICabinetDocumentListView, - APICabinetDocumentView, APICabinetListView, APICabinetView + APICabinetDocumentListView, APICabinetDocumentView, APICabinetListView, + APICabinetView, APIDocumentCabinetListView ) from .views import ( + CabinetChildAddView, CabinetCreateView, CabinetDeleteView, + CabinetDetailView, CabinetEditView, CabinetListView, DocumentAddToCabinetView, DocumentCabinetListView, - DocumentRemoveFromCabinetView, CabinetChildAddView, CabinetCreateView, - CabinetDeleteView, CabinetDetailView, CabinetEditView, CabinetListView, + DocumentRemoveFromCabinetView ) urlpatterns = [ diff --git a/mayan/apps/cabinets/views.py b/mayan/apps/cabinets/views.py index 8ca341b002..39659945f7 100644 --- a/mayan/apps/cabinets/views.py +++ b/mayan/apps/cabinets/views.py @@ -6,15 +6,16 @@ from django.contrib import messages from django.shortcuts import get_object_or_404 from django.template import RequestContext from django.urls import reverse_lazy -from django.utils.translation import ugettext_lazy as _, ungettext +from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import ungettext from mayan.apps.acls.models import AccessControlList from mayan.apps.common.views import ( MultipleObjectFormActionView, SingleObjectCreateView, SingleObjectDeleteView, SingleObjectEditView, SingleObjectListView ) -from mayan.apps.documents.permissions import permission_document_view from mayan.apps.documents.models import Document +from mayan.apps.documents.permissions import permission_document_view from mayan.apps.documents.views import DocumentListView from .forms import CabinetListForm @@ -26,7 +27,7 @@ from .models import Cabinet from .permissions import ( permission_cabinet_add_document, permission_cabinet_create, permission_cabinet_delete, permission_cabinet_edit, - permission_cabinet_view, permission_cabinet_remove_document + permission_cabinet_remove_document, permission_cabinet_view ) from .widgets import jstree_data diff --git a/mayan/apps/checkouts/apps.py b/mayan/apps/checkouts/apps.py index 7fc6105f3a..fdda1de151 100644 --- a/mayan/apps/checkouts/apps.py +++ b/mayan/apps/checkouts/apps.py @@ -9,7 +9,9 @@ from django.db.models.signals import pre_save from django.utils.translation import ugettext_lazy as _ from mayan.apps.acls import ModelPermission -from mayan.apps.common import MayanAppConfig, menu_facet, menu_main, menu_sidebar +from mayan.apps.common import ( + MayanAppConfig, menu_facet, menu_main, menu_sidebar +) from mayan.apps.common.dashboards import dashboard_main from mayan.apps.events import ModelEventType from mayan.celery import app @@ -30,8 +32,8 @@ from .permissions import ( permission_document_checkout, permission_document_checkout_detail_view ) from .queues import * # NOQA -from .tasks import task_check_expired_check_outs # NOQA # This import is required so that celerybeat can find the task +from .tasks import task_check_expired_check_outs # NOQA class CheckoutsApp(MayanAppConfig): diff --git a/mayan/apps/checkouts/links.py b/mayan/apps/checkouts/links.py index cb77c54477..61bfc99f1d 100644 --- a/mayan/apps/checkouts/links.py +++ b/mayan/apps/checkouts/links.py @@ -6,8 +6,8 @@ from mayan.apps.navigation import Link from .icons import icon_checkout_info from .permissions import ( - permission_document_checkout, permission_document_checkin, - permission_document_checkin_override + permission_document_checkin, permission_document_checkin_override, + permission_document_checkout ) diff --git a/mayan/apps/checkouts/managers.py b/mayan/apps/checkouts/managers.py index 3bcccde2a2..f397f4ea42 100644 --- a/mayan/apps/checkouts/managers.py +++ b/mayan/apps/checkouts/managers.py @@ -13,7 +13,7 @@ from .events import ( event_document_forceful_check_in ) from .exceptions import DocumentNotCheckedOut -from .literals import STATE_CHECKED_OUT, STATE_CHECKED_IN +from .literals import STATE_CHECKED_IN, STATE_CHECKED_OUT logger = logging.getLogger(__name__) diff --git a/mayan/apps/checkouts/migrations/0001_initial.py b/mayan/apps/checkouts/migrations/0001_initial.py index 672c598657..e8964b4f43 100644 --- a/mayan/apps/checkouts/migrations/0001_initial.py +++ b/mayan/apps/checkouts/migrations/0001_initial.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- from __future__ import unicode_literals -from django.db import models, migrations +from django.db import migrations, models class Migration(migrations.Migration): diff --git a/mayan/apps/checkouts/migrations/0002_documentcheckout_user.py b/mayan/apps/checkouts/migrations/0002_documentcheckout_user.py index 1a7a768002..57cf7aa1ca 100644 --- a/mayan/apps/checkouts/migrations/0002_documentcheckout_user.py +++ b/mayan/apps/checkouts/migrations/0002_documentcheckout_user.py @@ -1,8 +1,8 @@ # -*- coding: utf-8 -*- from __future__ import unicode_literals -from django.db import models, migrations from django.conf import settings +from django.db import migrations, models class Migration(migrations.Migration): diff --git a/mayan/apps/checkouts/migrations/0004_auto_20150617_0330.py b/mayan/apps/checkouts/migrations/0004_auto_20150617_0330.py index ccf63f23d5..43ba53c133 100644 --- a/mayan/apps/checkouts/migrations/0004_auto_20150617_0330.py +++ b/mayan/apps/checkouts/migrations/0004_auto_20150617_0330.py @@ -1,8 +1,8 @@ # -*- coding: utf-8 -*- from __future__ import unicode_literals -from django.db import models, migrations from django.conf import settings +from django.db import migrations, models class Migration(migrations.Migration): diff --git a/mayan/apps/checkouts/migrations/0006_newversionblock.py b/mayan/apps/checkouts/migrations/0006_newversionblock.py index 49f9e01ad1..69a088f950 100644 --- a/mayan/apps/checkouts/migrations/0006_newversionblock.py +++ b/mayan/apps/checkouts/migrations/0006_newversionblock.py @@ -2,8 +2,8 @@ # Generated by Django 1.9.11 on 2016-12-22 05:34 from __future__ import unicode_literals -from django.db import migrations, models import django.db.models.deletion +from django.db import migrations, models class Migration(migrations.Migration): diff --git a/mayan/apps/checkouts/tests/test_api.py b/mayan/apps/checkouts/tests/test_api.py index 3c8df4d991..c129e55a99 100644 --- a/mayan/apps/checkouts/tests/test_api.py +++ b/mayan/apps/checkouts/tests/test_api.py @@ -8,8 +8,8 @@ from django.utils.timezone import now from rest_framework import status -from mayan.apps.documents.tests import DocumentTestMixin from mayan.apps.documents.permissions import permission_document_view +from mayan.apps.documents.tests import DocumentTestMixin from mayan.apps.rest_api.tests import BaseAPITestCase from ..models import DocumentCheckout diff --git a/mayan/apps/checkouts/tests/test_views.py b/mayan/apps/checkouts/tests/test_views.py index 4a987a304a..d5d269c690 100644 --- a/mayan/apps/checkouts/tests/test_views.py +++ b/mayan/apps/checkouts/tests/test_views.py @@ -9,8 +9,8 @@ from mayan.apps.common.literals import TIME_DELTA_UNIT_DAYS from mayan.apps.documents.tests import GenericDocumentViewTestCase from mayan.apps.sources.links import link_upload_version from mayan.apps.user_management.tests import ( - TEST_USER_PASSWORD, TEST_USER_USERNAME, TEST_ADMIN_PASSWORD, - TEST_ADMIN_USERNAME, + TEST_ADMIN_PASSWORD, TEST_ADMIN_USERNAME, TEST_USER_PASSWORD, + TEST_USER_USERNAME ) from ..models import DocumentCheckout diff --git a/mayan/apps/checkouts/urls.py b/mayan/apps/checkouts/urls.py index a2c44cc1f9..0e2dba3d32 100644 --- a/mayan/apps/checkouts/urls.py +++ b/mayan/apps/checkouts/urls.py @@ -4,7 +4,7 @@ from django.conf.urls import url from .api_views import APICheckedoutDocumentListView, APICheckedoutDocumentView from .views import ( - CheckoutDocumentView, CheckoutDetailView, CheckoutListView, + CheckoutDetailView, CheckoutDocumentView, CheckoutListView, DocumentCheckinView ) diff --git a/mayan/apps/checkouts/views.py b/mayan/apps/checkouts/views.py index 1cc8abcc04..91a0febaee 100644 --- a/mayan/apps/checkouts/views.py +++ b/mayan/apps/checkouts/views.py @@ -15,7 +15,7 @@ from mayan.apps.documents.models import Document from mayan.apps.documents.views import DocumentListView from .exceptions import DocumentAlreadyCheckedOut, DocumentNotCheckedOut -from .forms import DocumentCheckoutForm, DocumentCheckoutDefailForm +from .forms import DocumentCheckoutDefailForm, DocumentCheckoutForm from .icons import icon_checkout_info from .models import DocumentCheckout from .permissions import ( diff --git a/mayan/apps/common/apps.py b/mayan/apps/common/apps.py index acf40b7136..827d16642d 100644 --- a/mayan/apps/common/apps.py +++ b/mayan/apps/common/apps.py @@ -1,9 +1,9 @@ from __future__ import absolute_import, unicode_literals -from datetime import timedelta import logging import os import warnings +from datetime import timedelta from kombu import Exchange, Queue @@ -19,21 +19,18 @@ from mayan.celery import app from .classes import Template from .handlers import ( - handler_pre_initial_setup, handler_pre_upgrade, - user_locale_profile_session_config, user_locale_profile_create + handler_pre_initial_setup, handler_pre_upgrade, user_locale_profile_create, + user_locale_profile_session_config ) +from .licenses import * # NOQA from .links import ( link_about, link_check_version, link_current_user_details, link_current_user_edit, link_current_user_locale_profile_edit, link_license, link_object_error_list_clear, link_packages_licenses, link_setup, link_tools, separator_user_label, text_user_label ) - from .literals import DELETE_STALE_UPLOADS_INTERVAL, MESSAGE_SQLITE_WARNING -from .menus import ( - menu_about, menu_main, menu_secondary, menu_user -) -from .licenses import * # NOQA +from .menus import menu_about, menu_main, menu_secondary, menu_user from .queues import * # NOQA - Force queues registration from .settings import ( setting_auto_logging, setting_production_error_log_path, diff --git a/mayan/apps/common/compressed_files.py b/mayan/apps/common/compressed_files.py index eccf7f2fec..e9b40f9ba1 100644 --- a/mayan/apps/common/compressed_files.py +++ b/mayan/apps/common/compressed_files.py @@ -3,7 +3,6 @@ from __future__ import unicode_literals from io import BytesIO import tarfile import zipfile - try: import zlib # NOQA COMPRESSION = zipfile.ZIP_DEFLATED diff --git a/mayan/apps/common/generics.py b/mayan/apps/common/generics.py index a73374a724..0a4b97a5d3 100644 --- a/mayan/apps/common/generics.py +++ b/mayan/apps/common/generics.py @@ -7,9 +7,9 @@ from django.core.exceptions import ImproperlyConfigured from django.http import HttpResponseRedirect from django.utils.encoding import force_text from django.utils.translation import ugettext_lazy as _ -from django.views.generic import ( - FormView as DjangoFormView, DetailView, TemplateView -) +from django.views.generic import DetailView +from django.views.generic import FormView as DjangoFormView +from django.views.generic import TemplateView from django.views.generic.detail import SingleObjectMixin from django.views.generic.edit import ( CreateView, DeleteView, FormMixin, ModelFormMixin, UpdateView @@ -29,7 +29,6 @@ from .mixins import ( ObjectListPermissionFilterMixin, ObjectNameMixin, ObjectPermissionCheckMixin, RedirectionMixin, ViewPermissionCheckMixin ) - from .settings import setting_paginate_by __all__ = ( diff --git a/mayan/apps/common/links.py b/mayan/apps/common/links.py index f73d5a93a1..f49d4affb0 100644 --- a/mayan/apps/common/links.py +++ b/mayan/apps/common/links.py @@ -9,10 +9,9 @@ from mayan.apps.navigation.classes import Separator, Text from .icons import ( icon_about, icon_check_version, icon_current_user_details, icon_current_user_edit, icon_current_user_locale_profile_details, - icon_current_user_locale_profile_edit, icon_documentation, - icon_forum, icon_license, icon_object_error_list_with_icon, - icon_packages_licenses, icon_setup, icon_source_code, icon_support, - icon_tools + icon_current_user_locale_profile_edit, icon_documentation, icon_forum, + icon_license, icon_object_error_list_with_icon, icon_packages_licenses, + icon_setup, icon_source_code, icon_support, icon_tools ) from .permissions_runtime import permission_error_log_view from .utils import get_user_label_text diff --git a/mayan/apps/common/migrations/0001_initial.py b/mayan/apps/common/migrations/0001_initial.py index 932065f6cf..3c94d6b35c 100644 --- a/mayan/apps/common/migrations/0001_initial.py +++ b/mayan/apps/common/migrations/0001_initial.py @@ -1,9 +1,9 @@ # -*- coding: utf-8 -*- from __future__ import unicode_literals -from django.db import models, migrations from django.conf import settings from django.core.files.storage import FileSystemStorage +from django.db import migrations, models import mayan.apps.common.models diff --git a/mayan/apps/common/migrations/0002_auto_20150608_1902.py b/mayan/apps/common/migrations/0002_auto_20150608_1902.py index 019125d415..10c4b2178f 100644 --- a/mayan/apps/common/migrations/0002_auto_20150608_1902.py +++ b/mayan/apps/common/migrations/0002_auto_20150608_1902.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- from __future__ import unicode_literals -from django.db import models, migrations +from django.db import migrations, models class Migration(migrations.Migration): diff --git a/mayan/apps/common/migrations/0003_auto_20150614_0723.py b/mayan/apps/common/migrations/0003_auto_20150614_0723.py index 6c0271eb7f..c35e49022f 100644 --- a/mayan/apps/common/migrations/0003_auto_20150614_0723.py +++ b/mayan/apps/common/migrations/0003_auto_20150614_0723.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- from __future__ import unicode_literals from django.db import migrations diff --git a/mayan/apps/common/migrations/0004_delete_anonymoususersingleton.py b/mayan/apps/common/migrations/0004_delete_anonymoususersingleton.py index 30339b9a87..2b254a43ee 100644 --- a/mayan/apps/common/migrations/0004_delete_anonymoususersingleton.py +++ b/mayan/apps/common/migrations/0004_delete_anonymoususersingleton.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- from __future__ import unicode_literals from django.db import migrations diff --git a/mayan/apps/common/migrations/0005_auto_20150706_1832.py b/mayan/apps/common/migrations/0005_auto_20150706_1832.py index aefc315a9f..18d815c308 100644 --- a/mayan/apps/common/migrations/0005_auto_20150706_1832.py +++ b/mayan/apps/common/migrations/0005_auto_20150706_1832.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- from __future__ import unicode_literals from django.db import migrations diff --git a/mayan/apps/common/migrations/0007_auto_20170118_1758.py b/mayan/apps/common/migrations/0007_auto_20170118_1758.py index 6d15aa0594..f48c2b0c6e 100644 --- a/mayan/apps/common/migrations/0007_auto_20170118_1758.py +++ b/mayan/apps/common/migrations/0007_auto_20170118_1758.py @@ -15,6 +15,505 @@ class Migration(migrations.Migration): migrations.AlterField( model_name='userlocaleprofile', name='timezone', - field=models.CharField(choices=[(b'Africa/Abidjan', b'Africa/Abidjan'), (b'Africa/Accra', b'Africa/Accra'), (b'Africa/Addis_Ababa', b'Africa/Addis_Ababa'), (b'Africa/Algiers', b'Africa/Algiers'), (b'Africa/Asmara', b'Africa/Asmara'), (b'Africa/Bamako', b'Africa/Bamako'), (b'Africa/Bangui', b'Africa/Bangui'), (b'Africa/Banjul', b'Africa/Banjul'), (b'Africa/Bissau', b'Africa/Bissau'), (b'Africa/Blantyre', b'Africa/Blantyre'), (b'Africa/Brazzaville', b'Africa/Brazzaville'), (b'Africa/Bujumbura', b'Africa/Bujumbura'), (b'Africa/Cairo', b'Africa/Cairo'), (b'Africa/Casablanca', b'Africa/Casablanca'), (b'Africa/Ceuta', b'Africa/Ceuta'), (b'Africa/Conakry', b'Africa/Conakry'), (b'Africa/Dakar', b'Africa/Dakar'), (b'Africa/Dar_es_Salaam', b'Africa/Dar_es_Salaam'), (b'Africa/Djibouti', b'Africa/Djibouti'), (b'Africa/Douala', b'Africa/Douala'), (b'Africa/El_Aaiun', b'Africa/El_Aaiun'), (b'Africa/Freetown', b'Africa/Freetown'), (b'Africa/Gaborone', b'Africa/Gaborone'), (b'Africa/Harare', b'Africa/Harare'), (b'Africa/Johannesburg', b'Africa/Johannesburg'), (b'Africa/Juba', b'Africa/Juba'), (b'Africa/Kampala', b'Africa/Kampala'), (b'Africa/Khartoum', b'Africa/Khartoum'), (b'Africa/Kigali', b'Africa/Kigali'), (b'Africa/Kinshasa', b'Africa/Kinshasa'), (b'Africa/Lagos', b'Africa/Lagos'), (b'Africa/Libreville', b'Africa/Libreville'), (b'Africa/Lome', b'Africa/Lome'), (b'Africa/Luanda', b'Africa/Luanda'), (b'Africa/Lubumbashi', b'Africa/Lubumbashi'), (b'Africa/Lusaka', b'Africa/Lusaka'), (b'Africa/Malabo', b'Africa/Malabo'), (b'Africa/Maputo', b'Africa/Maputo'), (b'Africa/Maseru', b'Africa/Maseru'), (b'Africa/Mbabane', b'Africa/Mbabane'), (b'Africa/Mogadishu', b'Africa/Mogadishu'), (b'Africa/Monrovia', b'Africa/Monrovia'), (b'Africa/Nairobi', b'Africa/Nairobi'), (b'Africa/Ndjamena', b'Africa/Ndjamena'), (b'Africa/Niamey', b'Africa/Niamey'), (b'Africa/Nouakchott', b'Africa/Nouakchott'), (b'Africa/Ouagadougou', b'Africa/Ouagadougou'), (b'Africa/Porto-Novo', b'Africa/Porto-Novo'), (b'Africa/Sao_Tome', b'Africa/Sao_Tome'), (b'Africa/Tripoli', b'Africa/Tripoli'), (b'Africa/Tunis', b'Africa/Tunis'), (b'Africa/Windhoek', b'Africa/Windhoek'), (b'America/Adak', b'America/Adak'), (b'America/Anchorage', b'America/Anchorage'), (b'America/Anguilla', b'America/Anguilla'), (b'America/Antigua', b'America/Antigua'), (b'America/Araguaina', b'America/Araguaina'), (b'America/Argentina/Buenos_Aires', b'America/Argentina/Buenos_Aires'), (b'America/Argentina/Catamarca', b'America/Argentina/Catamarca'), (b'America/Argentina/Cordoba', b'America/Argentina/Cordoba'), (b'America/Argentina/Jujuy', b'America/Argentina/Jujuy'), (b'America/Argentina/La_Rioja', b'America/Argentina/La_Rioja'), (b'America/Argentina/Mendoza', b'America/Argentina/Mendoza'), (b'America/Argentina/Rio_Gallegos', b'America/Argentina/Rio_Gallegos'), (b'America/Argentina/Salta', b'America/Argentina/Salta'), (b'America/Argentina/San_Juan', b'America/Argentina/San_Juan'), (b'America/Argentina/San_Luis', b'America/Argentina/San_Luis'), (b'America/Argentina/Tucuman', b'America/Argentina/Tucuman'), (b'America/Argentina/Ushuaia', b'America/Argentina/Ushuaia'), (b'America/Aruba', b'America/Aruba'), (b'America/Asuncion', b'America/Asuncion'), (b'America/Atikokan', b'America/Atikokan'), (b'America/Bahia', b'America/Bahia'), (b'America/Bahia_Banderas', b'America/Bahia_Banderas'), (b'America/Barbados', b'America/Barbados'), (b'America/Belem', b'America/Belem'), (b'America/Belize', b'America/Belize'), (b'America/Blanc-Sablon', b'America/Blanc-Sablon'), (b'America/Boa_Vista', b'America/Boa_Vista'), (b'America/Bogota', b'America/Bogota'), (b'America/Boise', b'America/Boise'), (b'America/Cambridge_Bay', b'America/Cambridge_Bay'), (b'America/Campo_Grande', b'America/Campo_Grande'), (b'America/Cancun', b'America/Cancun'), (b'America/Caracas', b'America/Caracas'), (b'America/Cayenne', b'America/Cayenne'), (b'America/Cayman', b'America/Cayman'), (b'America/Chicago', b'America/Chicago'), (b'America/Chihuahua', b'America/Chihuahua'), (b'America/Costa_Rica', b'America/Costa_Rica'), (b'America/Creston', b'America/Creston'), (b'America/Cuiaba', b'America/Cuiaba'), (b'America/Curacao', b'America/Curacao'), (b'America/Danmarkshavn', b'America/Danmarkshavn'), (b'America/Dawson', b'America/Dawson'), (b'America/Dawson_Creek', b'America/Dawson_Creek'), (b'America/Denver', b'America/Denver'), (b'America/Detroit', b'America/Detroit'), (b'America/Dominica', b'America/Dominica'), (b'America/Edmonton', b'America/Edmonton'), (b'America/Eirunepe', b'America/Eirunepe'), (b'America/El_Salvador', b'America/El_Salvador'), (b'America/Fort_Nelson', b'America/Fort_Nelson'), (b'America/Fortaleza', b'America/Fortaleza'), (b'America/Glace_Bay', b'America/Glace_Bay'), (b'America/Godthab', b'America/Godthab'), (b'America/Goose_Bay', b'America/Goose_Bay'), (b'America/Grand_Turk', b'America/Grand_Turk'), (b'America/Grenada', b'America/Grenada'), (b'America/Guadeloupe', b'America/Guadeloupe'), (b'America/Guatemala', b'America/Guatemala'), (b'America/Guayaquil', b'America/Guayaquil'), (b'America/Guyana', b'America/Guyana'), (b'America/Halifax', b'America/Halifax'), (b'America/Havana', b'America/Havana'), (b'America/Hermosillo', b'America/Hermosillo'), (b'America/Indiana/Indianapolis', b'America/Indiana/Indianapolis'), (b'America/Indiana/Knox', b'America/Indiana/Knox'), (b'America/Indiana/Marengo', b'America/Indiana/Marengo'), (b'America/Indiana/Petersburg', b'America/Indiana/Petersburg'), (b'America/Indiana/Tell_City', b'America/Indiana/Tell_City'), (b'America/Indiana/Vevay', b'America/Indiana/Vevay'), (b'America/Indiana/Vincennes', b'America/Indiana/Vincennes'), (b'America/Indiana/Winamac', b'America/Indiana/Winamac'), (b'America/Inuvik', b'America/Inuvik'), (b'America/Iqaluit', b'America/Iqaluit'), (b'America/Jamaica', b'America/Jamaica'), (b'America/Juneau', b'America/Juneau'), (b'America/Kentucky/Louisville', b'America/Kentucky/Louisville'), (b'America/Kentucky/Monticello', b'America/Kentucky/Monticello'), (b'America/Kralendijk', b'America/Kralendijk'), (b'America/La_Paz', b'America/La_Paz'), (b'America/Lima', b'America/Lima'), (b'America/Los_Angeles', b'America/Los_Angeles'), (b'America/Lower_Princes', b'America/Lower_Princes'), (b'America/Maceio', b'America/Maceio'), (b'America/Managua', b'America/Managua'), (b'America/Manaus', b'America/Manaus'), (b'America/Marigot', b'America/Marigot'), (b'America/Martinique', b'America/Martinique'), (b'America/Matamoros', b'America/Matamoros'), (b'America/Mazatlan', b'America/Mazatlan'), (b'America/Menominee', b'America/Menominee'), (b'America/Merida', b'America/Merida'), (b'America/Metlakatla', b'America/Metlakatla'), (b'America/Mexico_City', b'America/Mexico_City'), (b'America/Miquelon', b'America/Miquelon'), (b'America/Moncton', b'America/Moncton'), (b'America/Monterrey', b'America/Monterrey'), (b'America/Montevideo', b'America/Montevideo'), (b'America/Montserrat', b'America/Montserrat'), (b'America/Nassau', b'America/Nassau'), (b'America/New_York', b'America/New_York'), (b'America/Nipigon', b'America/Nipigon'), (b'America/Nome', b'America/Nome'), (b'America/Noronha', b'America/Noronha'), (b'America/North_Dakota/Beulah', b'America/North_Dakota/Beulah'), (b'America/North_Dakota/Center', b'America/North_Dakota/Center'), (b'America/North_Dakota/New_Salem', b'America/North_Dakota/New_Salem'), (b'America/Ojinaga', b'America/Ojinaga'), (b'America/Panama', b'America/Panama'), (b'America/Pangnirtung', b'America/Pangnirtung'), (b'America/Paramaribo', b'America/Paramaribo'), (b'America/Phoenix', b'America/Phoenix'), (b'America/Port-au-Prince', b'America/Port-au-Prince'), (b'America/Port_of_Spain', b'America/Port_of_Spain'), (b'America/Porto_Velho', b'America/Porto_Velho'), (b'America/Puerto_Rico', b'America/Puerto_Rico'), (b'America/Rainy_River', b'America/Rainy_River'), (b'America/Rankin_Inlet', b'America/Rankin_Inlet'), (b'America/Recife', b'America/Recife'), (b'America/Regina', b'America/Regina'), (b'America/Resolute', b'America/Resolute'), (b'America/Rio_Branco', b'America/Rio_Branco'), (b'America/Santarem', b'America/Santarem'), (b'America/Santiago', b'America/Santiago'), (b'America/Santo_Domingo', b'America/Santo_Domingo'), (b'America/Sao_Paulo', b'America/Sao_Paulo'), (b'America/Scoresbysund', b'America/Scoresbysund'), (b'America/Sitka', b'America/Sitka'), (b'America/St_Barthelemy', b'America/St_Barthelemy'), (b'America/St_Johns', b'America/St_Johns'), (b'America/St_Kitts', b'America/St_Kitts'), (b'America/St_Lucia', b'America/St_Lucia'), (b'America/St_Thomas', b'America/St_Thomas'), (b'America/St_Vincent', b'America/St_Vincent'), (b'America/Swift_Current', b'America/Swift_Current'), (b'America/Tegucigalpa', b'America/Tegucigalpa'), (b'America/Thule', b'America/Thule'), (b'America/Thunder_Bay', b'America/Thunder_Bay'), (b'America/Tijuana', b'America/Tijuana'), (b'America/Toronto', b'America/Toronto'), (b'America/Tortola', b'America/Tortola'), (b'America/Vancouver', b'America/Vancouver'), (b'America/Whitehorse', b'America/Whitehorse'), (b'America/Winnipeg', b'America/Winnipeg'), (b'America/Yakutat', b'America/Yakutat'), (b'America/Yellowknife', b'America/Yellowknife'), (b'Antarctica/Casey', b'Antarctica/Casey'), (b'Antarctica/Davis', b'Antarctica/Davis'), (b'Antarctica/DumontDUrville', b'Antarctica/DumontDUrville'), (b'Antarctica/Macquarie', b'Antarctica/Macquarie'), (b'Antarctica/Mawson', b'Antarctica/Mawson'), (b'Antarctica/McMurdo', b'Antarctica/McMurdo'), (b'Antarctica/Palmer', b'Antarctica/Palmer'), (b'Antarctica/Rothera', b'Antarctica/Rothera'), (b'Antarctica/Syowa', b'Antarctica/Syowa'), (b'Antarctica/Troll', b'Antarctica/Troll'), (b'Antarctica/Vostok', b'Antarctica/Vostok'), (b'Arctic/Longyearbyen', b'Arctic/Longyearbyen'), (b'Asia/Aden', b'Asia/Aden'), (b'Asia/Almaty', b'Asia/Almaty'), (b'Asia/Amman', b'Asia/Amman'), (b'Asia/Anadyr', b'Asia/Anadyr'), (b'Asia/Aqtau', b'Asia/Aqtau'), (b'Asia/Aqtobe', b'Asia/Aqtobe'), (b'Asia/Ashgabat', b'Asia/Ashgabat'), (b'Asia/Baghdad', b'Asia/Baghdad'), (b'Asia/Bahrain', b'Asia/Bahrain'), (b'Asia/Baku', b'Asia/Baku'), (b'Asia/Bangkok', b'Asia/Bangkok'), (b'Asia/Barnaul', b'Asia/Barnaul'), (b'Asia/Beirut', b'Asia/Beirut'), (b'Asia/Bishkek', b'Asia/Bishkek'), (b'Asia/Brunei', b'Asia/Brunei'), (b'Asia/Chita', b'Asia/Chita'), (b'Asia/Choibalsan', b'Asia/Choibalsan'), (b'Asia/Colombo', b'Asia/Colombo'), (b'Asia/Damascus', b'Asia/Damascus'), (b'Asia/Dhaka', b'Asia/Dhaka'), (b'Asia/Dili', b'Asia/Dili'), (b'Asia/Dubai', b'Asia/Dubai'), (b'Asia/Dushanbe', b'Asia/Dushanbe'), (b'Asia/Gaza', b'Asia/Gaza'), (b'Asia/Hebron', b'Asia/Hebron'), (b'Asia/Ho_Chi_Minh', b'Asia/Ho_Chi_Minh'), (b'Asia/Hong_Kong', b'Asia/Hong_Kong'), (b'Asia/Hovd', b'Asia/Hovd'), (b'Asia/Irkutsk', b'Asia/Irkutsk'), (b'Asia/Jakarta', b'Asia/Jakarta'), (b'Asia/Jayapura', b'Asia/Jayapura'), (b'Asia/Jerusalem', b'Asia/Jerusalem'), (b'Asia/Kabul', b'Asia/Kabul'), (b'Asia/Kamchatka', b'Asia/Kamchatka'), (b'Asia/Karachi', b'Asia/Karachi'), (b'Asia/Kathmandu', b'Asia/Kathmandu'), (b'Asia/Khandyga', b'Asia/Khandyga'), (b'Asia/Kolkata', b'Asia/Kolkata'), (b'Asia/Krasnoyarsk', b'Asia/Krasnoyarsk'), (b'Asia/Kuala_Lumpur', b'Asia/Kuala_Lumpur'), (b'Asia/Kuching', b'Asia/Kuching'), (b'Asia/Kuwait', b'Asia/Kuwait'), (b'Asia/Macau', b'Asia/Macau'), (b'Asia/Magadan', b'Asia/Magadan'), (b'Asia/Makassar', b'Asia/Makassar'), (b'Asia/Manila', b'Asia/Manila'), (b'Asia/Muscat', b'Asia/Muscat'), (b'Asia/Nicosia', b'Asia/Nicosia'), (b'Asia/Novokuznetsk', b'Asia/Novokuznetsk'), (b'Asia/Novosibirsk', b'Asia/Novosibirsk'), (b'Asia/Omsk', b'Asia/Omsk'), (b'Asia/Oral', b'Asia/Oral'), (b'Asia/Phnom_Penh', b'Asia/Phnom_Penh'), (b'Asia/Pontianak', b'Asia/Pontianak'), (b'Asia/Pyongyang', b'Asia/Pyongyang'), (b'Asia/Qatar', b'Asia/Qatar'), (b'Asia/Qyzylorda', b'Asia/Qyzylorda'), (b'Asia/Riyadh', b'Asia/Riyadh'), (b'Asia/Sakhalin', b'Asia/Sakhalin'), (b'Asia/Samarkand', b'Asia/Samarkand'), (b'Asia/Seoul', b'Asia/Seoul'), (b'Asia/Shanghai', b'Asia/Shanghai'), (b'Asia/Singapore', b'Asia/Singapore'), (b'Asia/Srednekolymsk', b'Asia/Srednekolymsk'), (b'Asia/Taipei', b'Asia/Taipei'), (b'Asia/Tashkent', b'Asia/Tashkent'), (b'Asia/Tbilisi', b'Asia/Tbilisi'), (b'Asia/Tehran', b'Asia/Tehran'), (b'Asia/Thimphu', b'Asia/Thimphu'), (b'Asia/Tokyo', b'Asia/Tokyo'), (b'Asia/Tomsk', b'Asia/Tomsk'), (b'Asia/Ulaanbaatar', b'Asia/Ulaanbaatar'), (b'Asia/Urumqi', b'Asia/Urumqi'), (b'Asia/Ust-Nera', b'Asia/Ust-Nera'), (b'Asia/Vientiane', b'Asia/Vientiane'), (b'Asia/Vladivostok', b'Asia/Vladivostok'), (b'Asia/Yakutsk', b'Asia/Yakutsk'), (b'Asia/Yangon', b'Asia/Yangon'), (b'Asia/Yekaterinburg', b'Asia/Yekaterinburg'), (b'Asia/Yerevan', b'Asia/Yerevan'), (b'Atlantic/Azores', b'Atlantic/Azores'), (b'Atlantic/Bermuda', b'Atlantic/Bermuda'), (b'Atlantic/Canary', b'Atlantic/Canary'), (b'Atlantic/Cape_Verde', b'Atlantic/Cape_Verde'), (b'Atlantic/Faroe', b'Atlantic/Faroe'), (b'Atlantic/Madeira', b'Atlantic/Madeira'), (b'Atlantic/Reykjavik', b'Atlantic/Reykjavik'), (b'Atlantic/South_Georgia', b'Atlantic/South_Georgia'), (b'Atlantic/St_Helena', b'Atlantic/St_Helena'), (b'Atlantic/Stanley', b'Atlantic/Stanley'), (b'Australia/Adelaide', b'Australia/Adelaide'), (b'Australia/Brisbane', b'Australia/Brisbane'), (b'Australia/Broken_Hill', b'Australia/Broken_Hill'), (b'Australia/Currie', b'Australia/Currie'), (b'Australia/Darwin', b'Australia/Darwin'), (b'Australia/Eucla', b'Australia/Eucla'), (b'Australia/Hobart', b'Australia/Hobart'), (b'Australia/Lindeman', b'Australia/Lindeman'), (b'Australia/Lord_Howe', b'Australia/Lord_Howe'), (b'Australia/Melbourne', b'Australia/Melbourne'), (b'Australia/Perth', b'Australia/Perth'), (b'Australia/Sydney', b'Australia/Sydney'), (b'Canada/Atlantic', b'Canada/Atlantic'), (b'Canada/Central', b'Canada/Central'), (b'Canada/Eastern', b'Canada/Eastern'), (b'Canada/Mountain', b'Canada/Mountain'), (b'Canada/Newfoundland', b'Canada/Newfoundland'), (b'Canada/Pacific', b'Canada/Pacific'), (b'Europe/Amsterdam', b'Europe/Amsterdam'), (b'Europe/Andorra', b'Europe/Andorra'), (b'Europe/Astrakhan', b'Europe/Astrakhan'), (b'Europe/Athens', b'Europe/Athens'), (b'Europe/Belgrade', b'Europe/Belgrade'), (b'Europe/Berlin', b'Europe/Berlin'), (b'Europe/Bratislava', b'Europe/Bratislava'), (b'Europe/Brussels', b'Europe/Brussels'), (b'Europe/Bucharest', b'Europe/Bucharest'), (b'Europe/Budapest', b'Europe/Budapest'), (b'Europe/Busingen', b'Europe/Busingen'), (b'Europe/Chisinau', b'Europe/Chisinau'), (b'Europe/Copenhagen', b'Europe/Copenhagen'), (b'Europe/Dublin', b'Europe/Dublin'), (b'Europe/Gibraltar', b'Europe/Gibraltar'), (b'Europe/Guernsey', b'Europe/Guernsey'), (b'Europe/Helsinki', b'Europe/Helsinki'), (b'Europe/Isle_of_Man', b'Europe/Isle_of_Man'), (b'Europe/Istanbul', b'Europe/Istanbul'), (b'Europe/Jersey', b'Europe/Jersey'), (b'Europe/Kaliningrad', b'Europe/Kaliningrad'), (b'Europe/Kiev', b'Europe/Kiev'), (b'Europe/Kirov', b'Europe/Kirov'), (b'Europe/Lisbon', b'Europe/Lisbon'), (b'Europe/Ljubljana', b'Europe/Ljubljana'), (b'Europe/London', b'Europe/London'), (b'Europe/Luxembourg', b'Europe/Luxembourg'), (b'Europe/Madrid', b'Europe/Madrid'), (b'Europe/Malta', b'Europe/Malta'), (b'Europe/Mariehamn', b'Europe/Mariehamn'), (b'Europe/Minsk', b'Europe/Minsk'), (b'Europe/Monaco', b'Europe/Monaco'), (b'Europe/Moscow', b'Europe/Moscow'), (b'Europe/Oslo', b'Europe/Oslo'), (b'Europe/Paris', b'Europe/Paris'), (b'Europe/Podgorica', b'Europe/Podgorica'), (b'Europe/Prague', b'Europe/Prague'), (b'Europe/Riga', b'Europe/Riga'), (b'Europe/Rome', b'Europe/Rome'), (b'Europe/Samara', b'Europe/Samara'), (b'Europe/San_Marino', b'Europe/San_Marino'), (b'Europe/Sarajevo', b'Europe/Sarajevo'), (b'Europe/Simferopol', b'Europe/Simferopol'), (b'Europe/Skopje', b'Europe/Skopje'), (b'Europe/Sofia', b'Europe/Sofia'), (b'Europe/Stockholm', b'Europe/Stockholm'), (b'Europe/Tallinn', b'Europe/Tallinn'), (b'Europe/Tirane', b'Europe/Tirane'), (b'Europe/Ulyanovsk', b'Europe/Ulyanovsk'), (b'Europe/Uzhgorod', b'Europe/Uzhgorod'), (b'Europe/Vaduz', b'Europe/Vaduz'), (b'Europe/Vatican', b'Europe/Vatican'), (b'Europe/Vienna', b'Europe/Vienna'), (b'Europe/Vilnius', b'Europe/Vilnius'), (b'Europe/Volgograd', b'Europe/Volgograd'), (b'Europe/Warsaw', b'Europe/Warsaw'), (b'Europe/Zagreb', b'Europe/Zagreb'), (b'Europe/Zaporozhye', b'Europe/Zaporozhye'), (b'Europe/Zurich', b'Europe/Zurich'), (b'GMT', b'GMT'), (b'Indian/Antananarivo', b'Indian/Antananarivo'), (b'Indian/Chagos', b'Indian/Chagos'), (b'Indian/Christmas', b'Indian/Christmas'), (b'Indian/Cocos', b'Indian/Cocos'), (b'Indian/Comoro', b'Indian/Comoro'), (b'Indian/Kerguelen', b'Indian/Kerguelen'), (b'Indian/Mahe', b'Indian/Mahe'), (b'Indian/Maldives', b'Indian/Maldives'), (b'Indian/Mauritius', b'Indian/Mauritius'), (b'Indian/Mayotte', b'Indian/Mayotte'), (b'Indian/Reunion', b'Indian/Reunion'), (b'Pacific/Apia', b'Pacific/Apia'), (b'Pacific/Auckland', b'Pacific/Auckland'), (b'Pacific/Bougainville', b'Pacific/Bougainville'), (b'Pacific/Chatham', b'Pacific/Chatham'), (b'Pacific/Chuuk', b'Pacific/Chuuk'), (b'Pacific/Easter', b'Pacific/Easter'), (b'Pacific/Efate', b'Pacific/Efate'), (b'Pacific/Enderbury', b'Pacific/Enderbury'), (b'Pacific/Fakaofo', b'Pacific/Fakaofo'), (b'Pacific/Fiji', b'Pacific/Fiji'), (b'Pacific/Funafuti', b'Pacific/Funafuti'), (b'Pacific/Galapagos', b'Pacific/Galapagos'), (b'Pacific/Gambier', b'Pacific/Gambier'), (b'Pacific/Guadalcanal', b'Pacific/Guadalcanal'), (b'Pacific/Guam', b'Pacific/Guam'), (b'Pacific/Honolulu', b'Pacific/Honolulu'), (b'Pacific/Johnston', b'Pacific/Johnston'), (b'Pacific/Kiritimati', b'Pacific/Kiritimati'), (b'Pacific/Kosrae', b'Pacific/Kosrae'), (b'Pacific/Kwajalein', b'Pacific/Kwajalein'), (b'Pacific/Majuro', b'Pacific/Majuro'), (b'Pacific/Marquesas', b'Pacific/Marquesas'), (b'Pacific/Midway', b'Pacific/Midway'), (b'Pacific/Nauru', b'Pacific/Nauru'), (b'Pacific/Niue', b'Pacific/Niue'), (b'Pacific/Norfolk', b'Pacific/Norfolk'), (b'Pacific/Noumea', b'Pacific/Noumea'), (b'Pacific/Pago_Pago', b'Pacific/Pago_Pago'), (b'Pacific/Palau', b'Pacific/Palau'), (b'Pacific/Pitcairn', b'Pacific/Pitcairn'), (b'Pacific/Pohnpei', b'Pacific/Pohnpei'), (b'Pacific/Port_Moresby', b'Pacific/Port_Moresby'), (b'Pacific/Rarotonga', b'Pacific/Rarotonga'), (b'Pacific/Saipan', b'Pacific/Saipan'), (b'Pacific/Tahiti', b'Pacific/Tahiti'), (b'Pacific/Tarawa', b'Pacific/Tarawa'), (b'Pacific/Tongatapu', b'Pacific/Tongatapu'), (b'Pacific/Wake', b'Pacific/Wake'), (b'Pacific/Wallis', b'Pacific/Wallis'), (b'US/Alaska', b'US/Alaska'), (b'US/Arizona', b'US/Arizona'), (b'US/Central', b'US/Central'), (b'US/Eastern', b'US/Eastern'), (b'US/Hawaii', b'US/Hawaii'), (b'US/Mountain', b'US/Mountain'), (b'US/Pacific', b'US/Pacific'), (b'UTC', b'UTC')], max_length=48, verbose_name='Timezone'), + field=models.CharField( + choices=[ + (b'Africa/Abidjan', b'Africa/Abidjan'), + (b'Africa/Accra', b'Africa/Accra'), + (b'Africa/Addis_Ababa', b'Africa/Addis_Ababa'), + (b'Africa/Algiers', b'Africa/Algiers'), + (b'Africa/Asmara', b'Africa/Asmara'), + (b'Africa/Bamako', b'Africa/Bamako'), + (b'Africa/Bangui', b'Africa/Bangui'), + (b'Africa/Banjul', b'Africa/Banjul'), + (b'Africa/Bissau', b'Africa/Bissau'), + (b'Africa/Blantyre', b'Africa/Blantyre'), + (b'Africa/Brazzaville', b'Africa/Brazzaville'), + (b'Africa/Bujumbura', b'Africa/Bujumbura'), + (b'Africa/Cairo', b'Africa/Cairo'), + (b'Africa/Casablanca', b'Africa/Casablanca'), + (b'Africa/Ceuta', b'Africa/Ceuta'), + (b'Africa/Conakry', b'Africa/Conakry'), + (b'Africa/Dakar', b'Africa/Dakar'), + (b'Africa/Dar_es_Salaam', b'Africa/Dar_es_Salaam'), + (b'Africa/Djibouti', b'Africa/Djibouti'), + (b'Africa/Douala', b'Africa/Douala'), + (b'Africa/El_Aaiun', b'Africa/El_Aaiun'), + (b'Africa/Freetown', b'Africa/Freetown'), + (b'Africa/Gaborone', b'Africa/Gaborone'), + (b'Africa/Harare', b'Africa/Harare'), + (b'Africa/Johannesburg', b'Africa/Johannesburg'), + (b'Africa/Juba', b'Africa/Juba'), + (b'Africa/Kampala', b'Africa/Kampala'), + (b'Africa/Khartoum', b'Africa/Khartoum'), + (b'Africa/Kigali', b'Africa/Kigali'), + (b'Africa/Kinshasa', b'Africa/Kinshasa'), + (b'Africa/Lagos', b'Africa/Lagos'), + (b'Africa/Libreville', b'Africa/Libreville'), + (b'Africa/Lome', b'Africa/Lome'), + (b'Africa/Luanda', b'Africa/Luanda'), + (b'Africa/Lubumbashi', b'Africa/Lubumbashi'), + (b'Africa/Lusaka', b'Africa/Lusaka'), + (b'Africa/Malabo', b'Africa/Malabo'), + (b'Africa/Maputo', b'Africa/Maputo'), + (b'Africa/Maseru', b'Africa/Maseru'), + (b'Africa/Mbabane', b'Africa/Mbabane'), + (b'Africa/Mogadishu', b'Africa/Mogadishu'), + (b'Africa/Monrovia', b'Africa/Monrovia'), + (b'Africa/Nairobi', b'Africa/Nairobi'), + (b'Africa/Ndjamena', b'Africa/Ndjamena'), + (b'Africa/Niamey', b'Africa/Niamey'), + (b'Africa/Nouakchott', b'Africa/Nouakchott'), + (b'Africa/Ouagadougou', b'Africa/Ouagadougou'), + (b'Africa/Porto-Novo', b'Africa/Porto-Novo'), + (b'Africa/Sao_Tome', b'Africa/Sao_Tome'), + (b'Africa/Tripoli', b'Africa/Tripoli'), + (b'Africa/Tunis', b'Africa/Tunis'), + (b'Africa/Windhoek', b'Africa/Windhoek'), + (b'America/Adak', b'America/Adak'), + (b'America/Anchorage', b'America/Anchorage'), + (b'America/Anguilla', b'America/Anguilla'), + (b'America/Antigua', b'America/Antigua'), + (b'America/Araguaina', b'America/Araguaina'), + ( + b'America/Argentina/Buenos_Aires', + b'America/Argentina/Buenos_Aires' + ), + ( + b'America/Argentina/Catamarca', + b'America/Argentina/Catamarca' + ), + ( + b'America/Argentina/Cordoba', + b'America/Argentina/Cordoba' + ), + (b'America/Argentina/Jujuy', b'America/Argentina/Jujuy'), + ( + b'America/Argentina/La_Rioja', + b'America/Argentina/La_Rioja' + ), + ( + b'America/Argentina/Mendoza', + b'America/Argentina/Mendoza' + ), + ( + b'America/Argentina/Rio_Gallegos', + b'America/Argentina/Rio_Gallegos' + ), + (b'America/Argentina/Salta', b'America/Argentina/Salta'), + ( + b'America/Argentina/San_Juan', + b'America/Argentina/San_Juan' + ), + ( + b'America/Argentina/San_Luis', + b'America/Argentina/San_Luis' + ), + ( + b'America/Argentina/Tucuman', + b'America/Argentina/Tucuman' + ), + ( + b'America/Argentina/Ushuaia', + b'America/Argentina/Ushuaia' + ), + (b'America/Aruba', b'America/Aruba'), + (b'America/Asuncion', b'America/Asuncion'), + (b'America/Atikokan', b'America/Atikokan'), + (b'America/Bahia', b'America/Bahia'), + (b'America/Bahia_Banderas', b'America/Bahia_Banderas'), + (b'America/Barbados', b'America/Barbados'), + (b'America/Belem', b'America/Belem'), + (b'America/Belize', b'America/Belize'), + (b'America/Blanc-Sablon', b'America/Blanc-Sablon'), + (b'America/Boa_Vista', b'America/Boa_Vista'), + (b'America/Bogota', b'America/Bogota'), + (b'America/Boise', b'America/Boise'), + (b'America/Cambridge_Bay', b'America/Cambridge_Bay'), + (b'America/Campo_Grande', b'America/Campo_Grande'), + (b'America/Cancun', b'America/Cancun'), + (b'America/Caracas', b'America/Caracas'), + (b'America/Cayenne', b'America/Cayenne'), + (b'America/Cayman', b'America/Cayman'), + (b'America/Chicago', b'America/Chicago'), + (b'America/Chihuahua', b'America/Chihuahua'), + (b'America/Costa_Rica', b'America/Costa_Rica'), + (b'America/Creston', b'America/Creston'), + (b'America/Cuiaba', b'America/Cuiaba'), + (b'America/Curacao', b'America/Curacao'), + (b'America/Danmarkshavn', b'America/Danmarkshavn'), + (b'America/Dawson', b'America/Dawson'), + (b'America/Dawson_Creek', b'America/Dawson_Creek'), + (b'America/Denver', b'America/Denver'), + (b'America/Detroit', b'America/Detroit'), + (b'America/Dominica', b'America/Dominica'), + (b'America/Edmonton', b'America/Edmonton'), + (b'America/Eirunepe', b'America/Eirunepe'), + (b'America/El_Salvador', b'America/El_Salvador'), + (b'America/Fort_Nelson', b'America/Fort_Nelson'), + (b'America/Fortaleza', b'America/Fortaleza'), + (b'America/Glace_Bay', b'America/Glace_Bay'), + (b'America/Godthab', b'America/Godthab'), + (b'America/Goose_Bay', b'America/Goose_Bay'), + (b'America/Grand_Turk', b'America/Grand_Turk'), + (b'America/Grenada', b'America/Grenada'), + (b'America/Guadeloupe', b'America/Guadeloupe'), + (b'America/Guatemala', b'America/Guatemala'), + (b'America/Guayaquil', b'America/Guayaquil'), + (b'America/Guyana', b'America/Guyana'), + (b'America/Halifax', b'America/Halifax'), + (b'America/Havana', b'America/Havana'), + (b'America/Hermosillo', b'America/Hermosillo'), + ( + b'America/Indiana/Indianapolis', + b'America/Indiana/Indianapolis' + ), + (b'America/Indiana/Knox', b'America/Indiana/Knox'), + (b'America/Indiana/Marengo', b'America/Indiana/Marengo'), + ( + b'America/Indiana/Petersburg', + b'America/Indiana/Petersburg' + ), + ( + b'America/Indiana/Tell_City', + b'America/Indiana/Tell_City' + ), + (b'America/Indiana/Vevay', b'America/Indiana/Vevay'), + ( + b'America/Indiana/Vincennes', + b'America/Indiana/Vincennes' + ), + (b'America/Indiana/Winamac', b'America/Indiana/Winamac'), + (b'America/Inuvik', b'America/Inuvik'), + (b'America/Iqaluit', b'America/Iqaluit'), + (b'America/Jamaica', b'America/Jamaica'), + (b'America/Juneau', b'America/Juneau'), + ( + b'America/Kentucky/Louisville', + b'America/Kentucky/Louisville' + ), + ( + b'America/Kentucky/Monticello', + b'America/Kentucky/Monticello' + ), + (b'America/Kralendijk', b'America/Kralendijk'), + (b'America/La_Paz', b'America/La_Paz'), + (b'America/Lima', b'America/Lima'), + (b'America/Los_Angeles', b'America/Los_Angeles'), + (b'America/Lower_Princes', b'America/Lower_Princes'), + (b'America/Maceio', b'America/Maceio'), + (b'America/Managua', b'America/Managua'), + (b'America/Manaus', b'America/Manaus'), + (b'America/Marigot', b'America/Marigot'), + (b'America/Martinique', b'America/Martinique'), + (b'America/Matamoros', b'America/Matamoros'), + (b'America/Mazatlan', b'America/Mazatlan'), + (b'America/Menominee', b'America/Menominee'), + (b'America/Merida', b'America/Merida'), + (b'America/Metlakatla', b'America/Metlakatla'), + (b'America/Mexico_City', b'America/Mexico_City'), + (b'America/Miquelon', b'America/Miquelon'), + (b'America/Moncton', b'America/Moncton'), + (b'America/Monterrey', b'America/Monterrey'), + (b'America/Montevideo', b'America/Montevideo'), + (b'America/Montserrat', b'America/Montserrat'), + (b'America/Nassau', b'America/Nassau'), + (b'America/New_York', b'America/New_York'), + (b'America/Nipigon', b'America/Nipigon'), + (b'America/Nome', b'America/Nome'), + (b'America/Noronha', b'America/Noronha'), + ( + b'America/North_Dakota/Beulah', + b'America/North_Dakota/Beulah' + ), + ( + b'America/North_Dakota/Center', + b'America/North_Dakota/Center' + ), + ( + b'America/North_Dakota/New_Salem', + b'America/North_Dakota/New_Salem' + ), + (b'America/Ojinaga', b'America/Ojinaga'), + (b'America/Panama', b'America/Panama'), + (b'America/Pangnirtung', b'America/Pangnirtung'), + (b'America/Paramaribo', b'America/Paramaribo'), + (b'America/Phoenix', b'America/Phoenix'), + (b'America/Port-au-Prince', b'America/Port-au-Prince'), + (b'America/Port_of_Spain', b'America/Port_of_Spain'), + (b'America/Porto_Velho', b'America/Porto_Velho'), + (b'America/Puerto_Rico', b'America/Puerto_Rico'), + (b'America/Rainy_River', b'America/Rainy_River'), + (b'America/Rankin_Inlet', b'America/Rankin_Inlet'), + (b'America/Recife', b'America/Recife'), + (b'America/Regina', b'America/Regina'), + (b'America/Resolute', b'America/Resolute'), + (b'America/Rio_Branco', b'America/Rio_Branco'), + (b'America/Santarem', b'America/Santarem'), + (b'America/Santiago', b'America/Santiago'), + (b'America/Santo_Domingo', b'America/Santo_Domingo'), + (b'America/Sao_Paulo', b'America/Sao_Paulo'), + (b'America/Scoresbysund', b'America/Scoresbysund'), + (b'America/Sitka', b'America/Sitka'), + (b'America/St_Barthelemy', b'America/St_Barthelemy'), + (b'America/St_Johns', b'America/St_Johns'), + (b'America/St_Kitts', b'America/St_Kitts'), + (b'America/St_Lucia', b'America/St_Lucia'), + (b'America/St_Thomas', b'America/St_Thomas'), + (b'America/St_Vincent', b'America/St_Vincent'), + (b'America/Swift_Current', b'America/Swift_Current'), + (b'America/Tegucigalpa', b'America/Tegucigalpa'), + (b'America/Thule', b'America/Thule'), + (b'America/Thunder_Bay', b'America/Thunder_Bay'), + (b'America/Tijuana', b'America/Tijuana'), + (b'America/Toronto', b'America/Toronto'), + (b'America/Tortola', b'America/Tortola'), + (b'America/Vancouver', b'America/Vancouver'), + (b'America/Whitehorse', b'America/Whitehorse'), + (b'America/Winnipeg', b'America/Winnipeg'), + (b'America/Yakutat', b'America/Yakutat'), + (b'America/Yellowknife', b'America/Yellowknife'), + (b'Antarctica/Casey', b'Antarctica/Casey'), + (b'Antarctica/Davis', b'Antarctica/Davis'), + ( + b'Antarctica/DumontDUrville', + b'Antarctica/DumontDUrville' + ), + (b'Antarctica/Macquarie', b'Antarctica/Macquarie'), + (b'Antarctica/Mawson', b'Antarctica/Mawson'), + (b'Antarctica/McMurdo', b'Antarctica/McMurdo'), + (b'Antarctica/Palmer', b'Antarctica/Palmer'), + (b'Antarctica/Rothera', b'Antarctica/Rothera'), + (b'Antarctica/Syowa', b'Antarctica/Syowa'), + (b'Antarctica/Troll', b'Antarctica/Troll'), + (b'Antarctica/Vostok', b'Antarctica/Vostok'), + (b'Arctic/Longyearbyen', b'Arctic/Longyearbyen'), + (b'Asia/Aden', b'Asia/Aden'), + (b'Asia/Almaty', b'Asia/Almaty'), + (b'Asia/Amman', b'Asia/Amman'), + (b'Asia/Anadyr', b'Asia/Anadyr'), + (b'Asia/Aqtau', b'Asia/Aqtau'), + (b'Asia/Aqtobe', b'Asia/Aqtobe'), + (b'Asia/Ashgabat', b'Asia/Ashgabat'), + (b'Asia/Baghdad', b'Asia/Baghdad'), + (b'Asia/Bahrain', b'Asia/Bahrain'), + (b'Asia/Baku', b'Asia/Baku'), + (b'Asia/Bangkok', b'Asia/Bangkok'), + (b'Asia/Barnaul', b'Asia/Barnaul'), + (b'Asia/Beirut', b'Asia/Beirut'), + (b'Asia/Bishkek', b'Asia/Bishkek'), + (b'Asia/Brunei', b'Asia/Brunei'), + (b'Asia/Chita', b'Asia/Chita'), + (b'Asia/Choibalsan', b'Asia/Choibalsan'), + (b'Asia/Colombo', b'Asia/Colombo'), + (b'Asia/Damascus', b'Asia/Damascus'), + (b'Asia/Dhaka', b'Asia/Dhaka'), + (b'Asia/Dili', b'Asia/Dili'), + (b'Asia/Dubai', b'Asia/Dubai'), + (b'Asia/Dushanbe', b'Asia/Dushanbe'), + (b'Asia/Gaza', b'Asia/Gaza'), + (b'Asia/Hebron', b'Asia/Hebron'), + (b'Asia/Ho_Chi_Minh', b'Asia/Ho_Chi_Minh'), + (b'Asia/Hong_Kong', b'Asia/Hong_Kong'), + (b'Asia/Hovd', b'Asia/Hovd'), + (b'Asia/Irkutsk', b'Asia/Irkutsk'), + (b'Asia/Jakarta', b'Asia/Jakarta'), + (b'Asia/Jayapura', b'Asia/Jayapura'), + (b'Asia/Jerusalem', b'Asia/Jerusalem'), + (b'Asia/Kabul', b'Asia/Kabul'), + (b'Asia/Kamchatka', b'Asia/Kamchatka'), + (b'Asia/Karachi', b'Asia/Karachi'), + (b'Asia/Kathmandu', b'Asia/Kathmandu'), + (b'Asia/Khandyga', b'Asia/Khandyga'), + (b'Asia/Kolkata', b'Asia/Kolkata'), + (b'Asia/Krasnoyarsk', b'Asia/Krasnoyarsk'), + (b'Asia/Kuala_Lumpur', b'Asia/Kuala_Lumpur'), + (b'Asia/Kuching', b'Asia/Kuching'), + (b'Asia/Kuwait', b'Asia/Kuwait'), + (b'Asia/Macau', b'Asia/Macau'), + (b'Asia/Magadan', b'Asia/Magadan'), + (b'Asia/Makassar', b'Asia/Makassar'), + (b'Asia/Manila', b'Asia/Manila'), + (b'Asia/Muscat', b'Asia/Muscat'), + (b'Asia/Nicosia', b'Asia/Nicosia'), + (b'Asia/Novokuznetsk', b'Asia/Novokuznetsk'), + (b'Asia/Novosibirsk', b'Asia/Novosibirsk'), + (b'Asia/Omsk', b'Asia/Omsk'), + (b'Asia/Oral', b'Asia/Oral'), + (b'Asia/Phnom_Penh', b'Asia/Phnom_Penh'), + (b'Asia/Pontianak', b'Asia/Pontianak'), + (b'Asia/Pyongyang', b'Asia/Pyongyang'), + (b'Asia/Qatar', b'Asia/Qatar'), + (b'Asia/Qyzylorda', b'Asia/Qyzylorda'), + (b'Asia/Riyadh', b'Asia/Riyadh'), + (b'Asia/Sakhalin', b'Asia/Sakhalin'), + (b'Asia/Samarkand', b'Asia/Samarkand'), + (b'Asia/Seoul', b'Asia/Seoul'), + (b'Asia/Shanghai', b'Asia/Shanghai'), + (b'Asia/Singapore', b'Asia/Singapore'), + (b'Asia/Srednekolymsk', b'Asia/Srednekolymsk'), + (b'Asia/Taipei', b'Asia/Taipei'), + (b'Asia/Tashkent', b'Asia/Tashkent'), + (b'Asia/Tbilisi', b'Asia/Tbilisi'), + (b'Asia/Tehran', b'Asia/Tehran'), + (b'Asia/Thimphu', b'Asia/Thimphu'), + (b'Asia/Tokyo', b'Asia/Tokyo'), + (b'Asia/Tomsk', b'Asia/Tomsk'), + (b'Asia/Ulaanbaatar', b'Asia/Ulaanbaatar'), + (b'Asia/Urumqi', b'Asia/Urumqi'), + (b'Asia/Ust-Nera', b'Asia/Ust-Nera'), + (b'Asia/Vientiane', b'Asia/Vientiane'), + (b'Asia/Vladivostok', b'Asia/Vladivostok'), + (b'Asia/Yakutsk', b'Asia/Yakutsk'), + (b'Asia/Yangon', b'Asia/Yangon'), + (b'Asia/Yekaterinburg', b'Asia/Yekaterinburg'), + (b'Asia/Yerevan', b'Asia/Yerevan'), + (b'Atlantic/Azores', b'Atlantic/Azores'), + (b'Atlantic/Bermuda', b'Atlantic/Bermuda'), + (b'Atlantic/Canary', b'Atlantic/Canary'), + (b'Atlantic/Cape_Verde', b'Atlantic/Cape_Verde'), + (b'Atlantic/Faroe', b'Atlantic/Faroe'), + (b'Atlantic/Madeira', b'Atlantic/Madeira'), + (b'Atlantic/Reykjavik', b'Atlantic/Reykjavik'), + (b'Atlantic/South_Georgia', b'Atlantic/South_Georgia'), + (b'Atlantic/St_Helena', b'Atlantic/St_Helena'), + (b'Atlantic/Stanley', b'Atlantic/Stanley'), + (b'Australia/Adelaide', b'Australia/Adelaide'), + (b'Australia/Brisbane', b'Australia/Brisbane'), + (b'Australia/Broken_Hill', b'Australia/Broken_Hill'), + (b'Australia/Currie', b'Australia/Currie'), + (b'Australia/Darwin', b'Australia/Darwin'), + (b'Australia/Eucla', b'Australia/Eucla'), + (b'Australia/Hobart', b'Australia/Hobart'), + (b'Australia/Lindeman', b'Australia/Lindeman'), + (b'Australia/Lord_Howe', b'Australia/Lord_Howe'), + (b'Australia/Melbourne', b'Australia/Melbourne'), + (b'Australia/Perth', b'Australia/Perth'), + (b'Australia/Sydney', b'Australia/Sydney'), + (b'Canada/Atlantic', b'Canada/Atlantic'), + (b'Canada/Central', b'Canada/Central'), + (b'Canada/Eastern', b'Canada/Eastern'), + (b'Canada/Mountain', b'Canada/Mountain'), + (b'Canada/Newfoundland', b'Canada/Newfoundland'), + (b'Canada/Pacific', b'Canada/Pacific'), + (b'Europe/Amsterdam', b'Europe/Amsterdam'), + (b'Europe/Andorra', b'Europe/Andorra'), + (b'Europe/Astrakhan', b'Europe/Astrakhan'), + (b'Europe/Athens', b'Europe/Athens'), + (b'Europe/Belgrade', b'Europe/Belgrade'), + (b'Europe/Berlin', b'Europe/Berlin'), + (b'Europe/Bratislava', b'Europe/Bratislava'), + (b'Europe/Brussels', b'Europe/Brussels'), + (b'Europe/Bucharest', b'Europe/Bucharest'), + (b'Europe/Budapest', b'Europe/Budapest'), + (b'Europe/Busingen', b'Europe/Busingen'), + (b'Europe/Chisinau', b'Europe/Chisinau'), + (b'Europe/Copenhagen', b'Europe/Copenhagen'), + (b'Europe/Dublin', b'Europe/Dublin'), + (b'Europe/Gibraltar', b'Europe/Gibraltar'), + (b'Europe/Guernsey', b'Europe/Guernsey'), + (b'Europe/Helsinki', b'Europe/Helsinki'), + (b'Europe/Isle_of_Man', b'Europe/Isle_of_Man'), + (b'Europe/Istanbul', b'Europe/Istanbul'), + (b'Europe/Jersey', b'Europe/Jersey'), + (b'Europe/Kaliningrad', b'Europe/Kaliningrad'), + (b'Europe/Kiev', b'Europe/Kiev'), + (b'Europe/Kirov', b'Europe/Kirov'), + (b'Europe/Lisbon', b'Europe/Lisbon'), + (b'Europe/Ljubljana', b'Europe/Ljubljana'), + (b'Europe/London', b'Europe/London'), + (b'Europe/Luxembourg', b'Europe/Luxembourg'), + (b'Europe/Madrid', b'Europe/Madrid'), + (b'Europe/Malta', b'Europe/Malta'), + (b'Europe/Mariehamn', b'Europe/Mariehamn'), + (b'Europe/Minsk', b'Europe/Minsk'), + (b'Europe/Monaco', b'Europe/Monaco'), + (b'Europe/Moscow', b'Europe/Moscow'), + (b'Europe/Oslo', b'Europe/Oslo'), + (b'Europe/Paris', b'Europe/Paris'), + (b'Europe/Podgorica', b'Europe/Podgorica'), + (b'Europe/Prague', b'Europe/Prague'), + (b'Europe/Riga', b'Europe/Riga'), + (b'Europe/Rome', b'Europe/Rome'), + (b'Europe/Samara', b'Europe/Samara'), + (b'Europe/San_Marino', b'Europe/San_Marino'), + (b'Europe/Sarajevo', b'Europe/Sarajevo'), + (b'Europe/Simferopol', b'Europe/Simferopol'), + (b'Europe/Skopje', b'Europe/Skopje'), + (b'Europe/Sofia', b'Europe/Sofia'), + (b'Europe/Stockholm', b'Europe/Stockholm'), + (b'Europe/Tallinn', b'Europe/Tallinn'), + (b'Europe/Tirane', b'Europe/Tirane'), + (b'Europe/Ulyanovsk', b'Europe/Ulyanovsk'), + (b'Europe/Uzhgorod', b'Europe/Uzhgorod'), + (b'Europe/Vaduz', b'Europe/Vaduz'), + (b'Europe/Vatican', b'Europe/Vatican'), + (b'Europe/Vienna', b'Europe/Vienna'), + (b'Europe/Vilnius', b'Europe/Vilnius'), + (b'Europe/Volgograd', b'Europe/Volgograd'), + (b'Europe/Warsaw', b'Europe/Warsaw'), + (b'Europe/Zagreb', b'Europe/Zagreb'), + (b'Europe/Zaporozhye', b'Europe/Zaporozhye'), + (b'Europe/Zurich', b'Europe/Zurich'), + (b'GMT', b'GMT'), + (b'Indian/Antananarivo', b'Indian/Antananarivo'), + (b'Indian/Chagos', b'Indian/Chagos'), + (b'Indian/Christmas', b'Indian/Christmas'), + (b'Indian/Cocos', b'Indian/Cocos'), + (b'Indian/Comoro', b'Indian/Comoro'), + (b'Indian/Kerguelen', b'Indian/Kerguelen'), + (b'Indian/Mahe', b'Indian/Mahe'), + (b'Indian/Maldives', b'Indian/Maldives'), + (b'Indian/Mauritius', b'Indian/Mauritius'), + (b'Indian/Mayotte', b'Indian/Mayotte'), + (b'Indian/Reunion', b'Indian/Reunion'), + (b'Pacific/Apia', b'Pacific/Apia'), + (b'Pacific/Auckland', b'Pacific/Auckland'), + (b'Pacific/Bougainville', b'Pacific/Bougainville'), + (b'Pacific/Chatham', b'Pacific/Chatham'), + (b'Pacific/Chuuk', b'Pacific/Chuuk'), + (b'Pacific/Easter', b'Pacific/Easter'), + (b'Pacific/Efate', b'Pacific/Efate'), + (b'Pacific/Enderbury', b'Pacific/Enderbury'), + (b'Pacific/Fakaofo', b'Pacific/Fakaofo'), + (b'Pacific/Fiji', b'Pacific/Fiji'), + (b'Pacific/Funafuti', b'Pacific/Funafuti'), + (b'Pacific/Galapagos', b'Pacific/Galapagos'), + (b'Pacific/Gambier', b'Pacific/Gambier'), + (b'Pacific/Guadalcanal', b'Pacific/Guadalcanal'), + (b'Pacific/Guam', b'Pacific/Guam'), + (b'Pacific/Honolulu', b'Pacific/Honolulu'), + (b'Pacific/Johnston', b'Pacific/Johnston'), + (b'Pacific/Kiritimati', b'Pacific/Kiritimati'), + (b'Pacific/Kosrae', b'Pacific/Kosrae'), + (b'Pacific/Kwajalein', b'Pacific/Kwajalein'), + (b'Pacific/Majuro', b'Pacific/Majuro'), + (b'Pacific/Marquesas', b'Pacific/Marquesas'), + (b'Pacific/Midway', b'Pacific/Midway'), + (b'Pacific/Nauru', b'Pacific/Nauru'), + (b'Pacific/Niue', b'Pacific/Niue'), + (b'Pacific/Norfolk', b'Pacific/Norfolk'), + (b'Pacific/Noumea', b'Pacific/Noumea'), + (b'Pacific/Pago_Pago', b'Pacific/Pago_Pago'), + (b'Pacific/Palau', b'Pacific/Palau'), + (b'Pacific/Pitcairn', b'Pacific/Pitcairn'), + (b'Pacific/Pohnpei', b'Pacific/Pohnpei'), + (b'Pacific/Port_Moresby', b'Pacific/Port_Moresby'), + (b'Pacific/Rarotonga', b'Pacific/Rarotonga'), + (b'Pacific/Saipan', b'Pacific/Saipan'), + (b'Pacific/Tahiti', b'Pacific/Tahiti'), + (b'Pacific/Tarawa', b'Pacific/Tarawa'), + (b'Pacific/Tongatapu', b'Pacific/Tongatapu'), + (b'Pacific/Wake', b'Pacific/Wake'), + (b'Pacific/Wallis', b'Pacific/Wallis'), + (b'US/Alaska', b'US/Alaska'), + (b'US/Arizona', b'US/Arizona'), + (b'US/Central', b'US/Central'), + (b'US/Eastern', b'US/Eastern'), + (b'US/Hawaii', b'US/Hawaii'), + (b'US/Mountain', b'US/Mountain'), + (b'US/Pacific', b'US/Pacific'), + (b'UTC', b'UTC') + ], max_length=48, verbose_name='Timezone' + ), ), ] diff --git a/mayan/apps/common/migrations/0008_errorlogentry.py b/mayan/apps/common/migrations/0008_errorlogentry.py index f08b282123..2401ff4eb4 100644 --- a/mayan/apps/common/migrations/0008_errorlogentry.py +++ b/mayan/apps/common/migrations/0008_errorlogentry.py @@ -2,8 +2,8 @@ # Generated by Django 1.10.7 on 2017-08-25 06:52 from __future__ import unicode_literals -from django.db import migrations, models import django.db.models.deletion +from django.db import migrations, models class Migration(migrations.Migration): @@ -17,12 +17,41 @@ class Migration(migrations.Migration): migrations.CreateModel( name='ErrorLogEntry', fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('namespace', models.CharField(max_length=128, verbose_name='Namespace')), - ('object_id', models.PositiveIntegerField(blank=True, null=True)), - ('datetime', models.DateTimeField(auto_now_add=True, db_index=True, verbose_name='Date time')), - ('result', models.TextField(blank=True, null=True, verbose_name='Result')), - ('content_type', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='error_log_content_type', to='contenttypes.ContentType')), + ( + 'id', models.AutoField( + auto_created=True, primary_key=True, serialize=False, + verbose_name='ID' + ) + ), + ( + 'namespace', models.CharField( + max_length=128, verbose_name='Namespace' + ) + ), + ( + 'object_id', models.PositiveIntegerField( + blank=True, null=True + ) + ), + ( + 'datetime', models.DateTimeField( + auto_now_add=True, db_index=True, + verbose_name='Date time' + ) + ), + ( + 'result', models.TextField( + blank=True, null=True, verbose_name='Result' + ) + ), + ( + 'content_type', models.ForeignKey( + blank=True, null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name='error_log_content_type', + to='contenttypes.ContentType' + ) + ), ], options={ 'ordering': ('datetime',), diff --git a/mayan/apps/common/migrations/0009_auto_20180402_0339.py b/mayan/apps/common/migrations/0009_auto_20180402_0339.py index 49c3ee0158..b62b773bf3 100644 --- a/mayan/apps/common/migrations/0009_auto_20180402_0339.py +++ b/mayan/apps/common/migrations/0009_auto_20180402_0339.py @@ -1,5 +1,4 @@ # -*- coding: utf-8 -*- -# Generated by Django 1.11.11 on 2018-04-02 03:39 from __future__ import unicode_literals from django.db import migrations, models @@ -15,6 +14,448 @@ class Migration(migrations.Migration): migrations.AlterField( model_name='userlocaleprofile', name='timezone', - field=models.CharField(choices=[(b'Africa/Abidjan', b'Africa/Abidjan'), (b'Africa/Accra', b'Africa/Accra'), (b'Africa/Addis_Ababa', b'Africa/Addis_Ababa'), (b'Africa/Algiers', b'Africa/Algiers'), (b'Africa/Asmara', b'Africa/Asmara'), (b'Africa/Bamako', b'Africa/Bamako'), (b'Africa/Bangui', b'Africa/Bangui'), (b'Africa/Banjul', b'Africa/Banjul'), (b'Africa/Bissau', b'Africa/Bissau'), (b'Africa/Blantyre', b'Africa/Blantyre'), (b'Africa/Brazzaville', b'Africa/Brazzaville'), (b'Africa/Bujumbura', b'Africa/Bujumbura'), (b'Africa/Cairo', b'Africa/Cairo'), (b'Africa/Casablanca', b'Africa/Casablanca'), (b'Africa/Ceuta', b'Africa/Ceuta'), (b'Africa/Conakry', b'Africa/Conakry'), (b'Africa/Dakar', b'Africa/Dakar'), (b'Africa/Dar_es_Salaam', b'Africa/Dar_es_Salaam'), (b'Africa/Djibouti', b'Africa/Djibouti'), (b'Africa/Douala', b'Africa/Douala'), (b'Africa/El_Aaiun', b'Africa/El_Aaiun'), (b'Africa/Freetown', b'Africa/Freetown'), (b'Africa/Gaborone', b'Africa/Gaborone'), (b'Africa/Harare', b'Africa/Harare'), (b'Africa/Johannesburg', b'Africa/Johannesburg'), (b'Africa/Juba', b'Africa/Juba'), (b'Africa/Kampala', b'Africa/Kampala'), (b'Africa/Khartoum', b'Africa/Khartoum'), (b'Africa/Kigali', b'Africa/Kigali'), (b'Africa/Kinshasa', b'Africa/Kinshasa'), (b'Africa/Lagos', b'Africa/Lagos'), (b'Africa/Libreville', b'Africa/Libreville'), (b'Africa/Lome', b'Africa/Lome'), (b'Africa/Luanda', b'Africa/Luanda'), (b'Africa/Lubumbashi', b'Africa/Lubumbashi'), (b'Africa/Lusaka', b'Africa/Lusaka'), (b'Africa/Malabo', b'Africa/Malabo'), (b'Africa/Maputo', b'Africa/Maputo'), (b'Africa/Maseru', b'Africa/Maseru'), (b'Africa/Mbabane', b'Africa/Mbabane'), (b'Africa/Mogadishu', b'Africa/Mogadishu'), (b'Africa/Monrovia', b'Africa/Monrovia'), (b'Africa/Nairobi', b'Africa/Nairobi'), (b'Africa/Ndjamena', b'Africa/Ndjamena'), (b'Africa/Niamey', b'Africa/Niamey'), (b'Africa/Nouakchott', b'Africa/Nouakchott'), (b'Africa/Ouagadougou', b'Africa/Ouagadougou'), (b'Africa/Porto-Novo', b'Africa/Porto-Novo'), (b'Africa/Sao_Tome', b'Africa/Sao_Tome'), (b'Africa/Tripoli', b'Africa/Tripoli'), (b'Africa/Tunis', b'Africa/Tunis'), (b'Africa/Windhoek', b'Africa/Windhoek'), (b'America/Adak', b'America/Adak'), (b'America/Anchorage', b'America/Anchorage'), (b'America/Anguilla', b'America/Anguilla'), (b'America/Antigua', b'America/Antigua'), (b'America/Araguaina', b'America/Araguaina'), (b'America/Argentina/Buenos_Aires', b'America/Argentina/Buenos_Aires'), (b'America/Argentina/Catamarca', b'America/Argentina/Catamarca'), (b'America/Argentina/Cordoba', b'America/Argentina/Cordoba'), (b'America/Argentina/Jujuy', b'America/Argentina/Jujuy'), (b'America/Argentina/La_Rioja', b'America/Argentina/La_Rioja'), (b'America/Argentina/Mendoza', b'America/Argentina/Mendoza'), (b'America/Argentina/Rio_Gallegos', b'America/Argentina/Rio_Gallegos'), (b'America/Argentina/Salta', b'America/Argentina/Salta'), (b'America/Argentina/San_Juan', b'America/Argentina/San_Juan'), (b'America/Argentina/San_Luis', b'America/Argentina/San_Luis'), (b'America/Argentina/Tucuman', b'America/Argentina/Tucuman'), (b'America/Argentina/Ushuaia', b'America/Argentina/Ushuaia'), (b'America/Aruba', b'America/Aruba'), (b'America/Asuncion', b'America/Asuncion'), (b'America/Atikokan', b'America/Atikokan'), (b'America/Bahia', b'America/Bahia'), (b'America/Bahia_Banderas', b'America/Bahia_Banderas'), (b'America/Barbados', b'America/Barbados'), (b'America/Belem', b'America/Belem'), (b'America/Belize', b'America/Belize'), (b'America/Blanc-Sablon', b'America/Blanc-Sablon'), (b'America/Boa_Vista', b'America/Boa_Vista'), (b'America/Bogota', b'America/Bogota'), (b'America/Boise', b'America/Boise'), (b'America/Cambridge_Bay', b'America/Cambridge_Bay'), (b'America/Campo_Grande', b'America/Campo_Grande'), (b'America/Cancun', b'America/Cancun'), (b'America/Caracas', b'America/Caracas'), (b'America/Cayenne', b'America/Cayenne'), (b'America/Cayman', b'America/Cayman'), (b'America/Chicago', b'America/Chicago'), (b'America/Chihuahua', b'America/Chihuahua'), (b'America/Costa_Rica', b'America/Costa_Rica'), (b'America/Creston', b'America/Creston'), (b'America/Cuiaba', b'America/Cuiaba'), (b'America/Curacao', b'America/Curacao'), (b'America/Danmarkshavn', b'America/Danmarkshavn'), (b'America/Dawson', b'America/Dawson'), (b'America/Dawson_Creek', b'America/Dawson_Creek'), (b'America/Denver', b'America/Denver'), (b'America/Detroit', b'America/Detroit'), (b'America/Dominica', b'America/Dominica'), (b'America/Edmonton', b'America/Edmonton'), (b'America/Eirunepe', b'America/Eirunepe'), (b'America/El_Salvador', b'America/El_Salvador'), (b'America/Fort_Nelson', b'America/Fort_Nelson'), (b'America/Fortaleza', b'America/Fortaleza'), (b'America/Glace_Bay', b'America/Glace_Bay'), (b'America/Godthab', b'America/Godthab'), (b'America/Goose_Bay', b'America/Goose_Bay'), (b'America/Grand_Turk', b'America/Grand_Turk'), (b'America/Grenada', b'America/Grenada'), (b'America/Guadeloupe', b'America/Guadeloupe'), (b'America/Guatemala', b'America/Guatemala'), (b'America/Guayaquil', b'America/Guayaquil'), (b'America/Guyana', b'America/Guyana'), (b'America/Halifax', b'America/Halifax'), (b'America/Havana', b'America/Havana'), (b'America/Hermosillo', b'America/Hermosillo'), (b'America/Indiana/Indianapolis', b'America/Indiana/Indianapolis'), (b'America/Indiana/Knox', b'America/Indiana/Knox'), (b'America/Indiana/Marengo', b'America/Indiana/Marengo'), (b'America/Indiana/Petersburg', b'America/Indiana/Petersburg'), (b'America/Indiana/Tell_City', b'America/Indiana/Tell_City'), (b'America/Indiana/Vevay', b'America/Indiana/Vevay'), (b'America/Indiana/Vincennes', b'America/Indiana/Vincennes'), (b'America/Indiana/Winamac', b'America/Indiana/Winamac'), (b'America/Inuvik', b'America/Inuvik'), (b'America/Iqaluit', b'America/Iqaluit'), (b'America/Jamaica', b'America/Jamaica'), (b'America/Juneau', b'America/Juneau'), (b'America/Kentucky/Louisville', b'America/Kentucky/Louisville'), (b'America/Kentucky/Monticello', b'America/Kentucky/Monticello'), (b'America/Kralendijk', b'America/Kralendijk'), (b'America/La_Paz', b'America/La_Paz'), (b'America/Lima', b'America/Lima'), (b'America/Los_Angeles', b'America/Los_Angeles'), (b'America/Lower_Princes', b'America/Lower_Princes'), (b'America/Maceio', b'America/Maceio'), (b'America/Managua', b'America/Managua'), (b'America/Manaus', b'America/Manaus'), (b'America/Marigot', b'America/Marigot'), (b'America/Martinique', b'America/Martinique'), (b'America/Matamoros', b'America/Matamoros'), (b'America/Mazatlan', b'America/Mazatlan'), (b'America/Menominee', b'America/Menominee'), (b'America/Merida', b'America/Merida'), (b'America/Metlakatla', b'America/Metlakatla'), (b'America/Mexico_City', b'America/Mexico_City'), (b'America/Miquelon', b'America/Miquelon'), (b'America/Moncton', b'America/Moncton'), (b'America/Monterrey', b'America/Monterrey'), (b'America/Montevideo', b'America/Montevideo'), (b'America/Montserrat', b'America/Montserrat'), (b'America/Nassau', b'America/Nassau'), (b'America/New_York', b'America/New_York'), (b'America/Nipigon', b'America/Nipigon'), (b'America/Nome', b'America/Nome'), (b'America/Noronha', b'America/Noronha'), (b'America/North_Dakota/Beulah', b'America/North_Dakota/Beulah'), (b'America/North_Dakota/Center', b'America/North_Dakota/Center'), (b'America/North_Dakota/New_Salem', b'America/North_Dakota/New_Salem'), (b'America/Ojinaga', b'America/Ojinaga'), (b'America/Panama', b'America/Panama'), (b'America/Pangnirtung', b'America/Pangnirtung'), (b'America/Paramaribo', b'America/Paramaribo'), (b'America/Phoenix', b'America/Phoenix'), (b'America/Port-au-Prince', b'America/Port-au-Prince'), (b'America/Port_of_Spain', b'America/Port_of_Spain'), (b'America/Porto_Velho', b'America/Porto_Velho'), (b'America/Puerto_Rico', b'America/Puerto_Rico'), (b'America/Punta_Arenas', b'America/Punta_Arenas'), (b'America/Rainy_River', b'America/Rainy_River'), (b'America/Rankin_Inlet', b'America/Rankin_Inlet'), (b'America/Recife', b'America/Recife'), (b'America/Regina', b'America/Regina'), (b'America/Resolute', b'America/Resolute'), (b'America/Rio_Branco', b'America/Rio_Branco'), (b'America/Santarem', b'America/Santarem'), (b'America/Santiago', b'America/Santiago'), (b'America/Santo_Domingo', b'America/Santo_Domingo'), (b'America/Sao_Paulo', b'America/Sao_Paulo'), (b'America/Scoresbysund', b'America/Scoresbysund'), (b'America/Sitka', b'America/Sitka'), (b'America/St_Barthelemy', b'America/St_Barthelemy'), (b'America/St_Johns', b'America/St_Johns'), (b'America/St_Kitts', b'America/St_Kitts'), (b'America/St_Lucia', b'America/St_Lucia'), (b'America/St_Thomas', b'America/St_Thomas'), (b'America/St_Vincent', b'America/St_Vincent'), (b'America/Swift_Current', b'America/Swift_Current'), (b'America/Tegucigalpa', b'America/Tegucigalpa'), (b'America/Thule', b'America/Thule'), (b'America/Thunder_Bay', b'America/Thunder_Bay'), (b'America/Tijuana', b'America/Tijuana'), (b'America/Toronto', b'America/Toronto'), (b'America/Tortola', b'America/Tortola'), (b'America/Vancouver', b'America/Vancouver'), (b'America/Whitehorse', b'America/Whitehorse'), (b'America/Winnipeg', b'America/Winnipeg'), (b'America/Yakutat', b'America/Yakutat'), (b'America/Yellowknife', b'America/Yellowknife'), (b'Antarctica/Casey', b'Antarctica/Casey'), (b'Antarctica/Davis', b'Antarctica/Davis'), (b'Antarctica/DumontDUrville', b'Antarctica/DumontDUrville'), (b'Antarctica/Macquarie', b'Antarctica/Macquarie'), (b'Antarctica/Mawson', b'Antarctica/Mawson'), (b'Antarctica/McMurdo', b'Antarctica/McMurdo'), (b'Antarctica/Palmer', b'Antarctica/Palmer'), (b'Antarctica/Rothera', b'Antarctica/Rothera'), (b'Antarctica/Syowa', b'Antarctica/Syowa'), (b'Antarctica/Troll', b'Antarctica/Troll'), (b'Antarctica/Vostok', b'Antarctica/Vostok'), (b'Arctic/Longyearbyen', b'Arctic/Longyearbyen'), (b'Asia/Aden', b'Asia/Aden'), (b'Asia/Almaty', b'Asia/Almaty'), (b'Asia/Amman', b'Asia/Amman'), (b'Asia/Anadyr', b'Asia/Anadyr'), (b'Asia/Aqtau', b'Asia/Aqtau'), (b'Asia/Aqtobe', b'Asia/Aqtobe'), (b'Asia/Ashgabat', b'Asia/Ashgabat'), (b'Asia/Atyrau', b'Asia/Atyrau'), (b'Asia/Baghdad', b'Asia/Baghdad'), (b'Asia/Bahrain', b'Asia/Bahrain'), (b'Asia/Baku', b'Asia/Baku'), (b'Asia/Bangkok', b'Asia/Bangkok'), (b'Asia/Barnaul', b'Asia/Barnaul'), (b'Asia/Beirut', b'Asia/Beirut'), (b'Asia/Bishkek', b'Asia/Bishkek'), (b'Asia/Brunei', b'Asia/Brunei'), (b'Asia/Chita', b'Asia/Chita'), (b'Asia/Choibalsan', b'Asia/Choibalsan'), (b'Asia/Colombo', b'Asia/Colombo'), (b'Asia/Damascus', b'Asia/Damascus'), (b'Asia/Dhaka', b'Asia/Dhaka'), (b'Asia/Dili', b'Asia/Dili'), (b'Asia/Dubai', b'Asia/Dubai'), (b'Asia/Dushanbe', b'Asia/Dushanbe'), (b'Asia/Famagusta', b'Asia/Famagusta'), (b'Asia/Gaza', b'Asia/Gaza'), (b'Asia/Hebron', b'Asia/Hebron'), (b'Asia/Ho_Chi_Minh', b'Asia/Ho_Chi_Minh'), (b'Asia/Hong_Kong', b'Asia/Hong_Kong'), (b'Asia/Hovd', b'Asia/Hovd'), (b'Asia/Irkutsk', b'Asia/Irkutsk'), (b'Asia/Jakarta', b'Asia/Jakarta'), (b'Asia/Jayapura', b'Asia/Jayapura'), (b'Asia/Jerusalem', b'Asia/Jerusalem'), (b'Asia/Kabul', b'Asia/Kabul'), (b'Asia/Kamchatka', b'Asia/Kamchatka'), (b'Asia/Karachi', b'Asia/Karachi'), (b'Asia/Kathmandu', b'Asia/Kathmandu'), (b'Asia/Khandyga', b'Asia/Khandyga'), (b'Asia/Kolkata', b'Asia/Kolkata'), (b'Asia/Krasnoyarsk', b'Asia/Krasnoyarsk'), (b'Asia/Kuala_Lumpur', b'Asia/Kuala_Lumpur'), (b'Asia/Kuching', b'Asia/Kuching'), (b'Asia/Kuwait', b'Asia/Kuwait'), (b'Asia/Macau', b'Asia/Macau'), (b'Asia/Magadan', b'Asia/Magadan'), (b'Asia/Makassar', b'Asia/Makassar'), (b'Asia/Manila', b'Asia/Manila'), (b'Asia/Muscat', b'Asia/Muscat'), (b'Asia/Nicosia', b'Asia/Nicosia'), (b'Asia/Novokuznetsk', b'Asia/Novokuznetsk'), (b'Asia/Novosibirsk', b'Asia/Novosibirsk'), (b'Asia/Omsk', b'Asia/Omsk'), (b'Asia/Oral', b'Asia/Oral'), (b'Asia/Phnom_Penh', b'Asia/Phnom_Penh'), (b'Asia/Pontianak', b'Asia/Pontianak'), (b'Asia/Pyongyang', b'Asia/Pyongyang'), (b'Asia/Qatar', b'Asia/Qatar'), (b'Asia/Qyzylorda', b'Asia/Qyzylorda'), (b'Asia/Riyadh', b'Asia/Riyadh'), (b'Asia/Sakhalin', b'Asia/Sakhalin'), (b'Asia/Samarkand', b'Asia/Samarkand'), (b'Asia/Seoul', b'Asia/Seoul'), (b'Asia/Shanghai', b'Asia/Shanghai'), (b'Asia/Singapore', b'Asia/Singapore'), (b'Asia/Srednekolymsk', b'Asia/Srednekolymsk'), (b'Asia/Taipei', b'Asia/Taipei'), (b'Asia/Tashkent', b'Asia/Tashkent'), (b'Asia/Tbilisi', b'Asia/Tbilisi'), (b'Asia/Tehran', b'Asia/Tehran'), (b'Asia/Thimphu', b'Asia/Thimphu'), (b'Asia/Tokyo', b'Asia/Tokyo'), (b'Asia/Tomsk', b'Asia/Tomsk'), (b'Asia/Ulaanbaatar', b'Asia/Ulaanbaatar'), (b'Asia/Urumqi', b'Asia/Urumqi'), (b'Asia/Ust-Nera', b'Asia/Ust-Nera'), (b'Asia/Vientiane', b'Asia/Vientiane'), (b'Asia/Vladivostok', b'Asia/Vladivostok'), (b'Asia/Yakutsk', b'Asia/Yakutsk'), (b'Asia/Yangon', b'Asia/Yangon'), (b'Asia/Yekaterinburg', b'Asia/Yekaterinburg'), (b'Asia/Yerevan', b'Asia/Yerevan'), (b'Atlantic/Azores', b'Atlantic/Azores'), (b'Atlantic/Bermuda', b'Atlantic/Bermuda'), (b'Atlantic/Canary', b'Atlantic/Canary'), (b'Atlantic/Cape_Verde', b'Atlantic/Cape_Verde'), (b'Atlantic/Faroe', b'Atlantic/Faroe'), (b'Atlantic/Madeira', b'Atlantic/Madeira'), (b'Atlantic/Reykjavik', b'Atlantic/Reykjavik'), (b'Atlantic/South_Georgia', b'Atlantic/South_Georgia'), (b'Atlantic/St_Helena', b'Atlantic/St_Helena'), (b'Atlantic/Stanley', b'Atlantic/Stanley'), (b'Australia/Adelaide', b'Australia/Adelaide'), (b'Australia/Brisbane', b'Australia/Brisbane'), (b'Australia/Broken_Hill', b'Australia/Broken_Hill'), (b'Australia/Currie', b'Australia/Currie'), (b'Australia/Darwin', b'Australia/Darwin'), (b'Australia/Eucla', b'Australia/Eucla'), (b'Australia/Hobart', b'Australia/Hobart'), (b'Australia/Lindeman', b'Australia/Lindeman'), (b'Australia/Lord_Howe', b'Australia/Lord_Howe'), (b'Australia/Melbourne', b'Australia/Melbourne'), (b'Australia/Perth', b'Australia/Perth'), (b'Australia/Sydney', b'Australia/Sydney'), (b'Canada/Atlantic', b'Canada/Atlantic'), (b'Canada/Central', b'Canada/Central'), (b'Canada/Eastern', b'Canada/Eastern'), (b'Canada/Mountain', b'Canada/Mountain'), (b'Canada/Newfoundland', b'Canada/Newfoundland'), (b'Canada/Pacific', b'Canada/Pacific'), (b'Europe/Amsterdam', b'Europe/Amsterdam'), (b'Europe/Andorra', b'Europe/Andorra'), (b'Europe/Astrakhan', b'Europe/Astrakhan'), (b'Europe/Athens', b'Europe/Athens'), (b'Europe/Belgrade', b'Europe/Belgrade'), (b'Europe/Berlin', b'Europe/Berlin'), (b'Europe/Bratislava', b'Europe/Bratislava'), (b'Europe/Brussels', b'Europe/Brussels'), (b'Europe/Bucharest', b'Europe/Bucharest'), (b'Europe/Budapest', b'Europe/Budapest'), (b'Europe/Busingen', b'Europe/Busingen'), (b'Europe/Chisinau', b'Europe/Chisinau'), (b'Europe/Copenhagen', b'Europe/Copenhagen'), (b'Europe/Dublin', b'Europe/Dublin'), (b'Europe/Gibraltar', b'Europe/Gibraltar'), (b'Europe/Guernsey', b'Europe/Guernsey'), (b'Europe/Helsinki', b'Europe/Helsinki'), (b'Europe/Isle_of_Man', b'Europe/Isle_of_Man'), (b'Europe/Istanbul', b'Europe/Istanbul'), (b'Europe/Jersey', b'Europe/Jersey'), (b'Europe/Kaliningrad', b'Europe/Kaliningrad'), (b'Europe/Kiev', b'Europe/Kiev'), (b'Europe/Kirov', b'Europe/Kirov'), (b'Europe/Lisbon', b'Europe/Lisbon'), (b'Europe/Ljubljana', b'Europe/Ljubljana'), (b'Europe/London', b'Europe/London'), (b'Europe/Luxembourg', b'Europe/Luxembourg'), (b'Europe/Madrid', b'Europe/Madrid'), (b'Europe/Malta', b'Europe/Malta'), (b'Europe/Mariehamn', b'Europe/Mariehamn'), (b'Europe/Minsk', b'Europe/Minsk'), (b'Europe/Monaco', b'Europe/Monaco'), (b'Europe/Moscow', b'Europe/Moscow'), (b'Europe/Oslo', b'Europe/Oslo'), (b'Europe/Paris', b'Europe/Paris'), (b'Europe/Podgorica', b'Europe/Podgorica'), (b'Europe/Prague', b'Europe/Prague'), (b'Europe/Riga', b'Europe/Riga'), (b'Europe/Rome', b'Europe/Rome'), (b'Europe/Samara', b'Europe/Samara'), (b'Europe/San_Marino', b'Europe/San_Marino'), (b'Europe/Sarajevo', b'Europe/Sarajevo'), (b'Europe/Saratov', b'Europe/Saratov'), (b'Europe/Simferopol', b'Europe/Simferopol'), (b'Europe/Skopje', b'Europe/Skopje'), (b'Europe/Sofia', b'Europe/Sofia'), (b'Europe/Stockholm', b'Europe/Stockholm'), (b'Europe/Tallinn', b'Europe/Tallinn'), (b'Europe/Tirane', b'Europe/Tirane'), (b'Europe/Ulyanovsk', b'Europe/Ulyanovsk'), (b'Europe/Uzhgorod', b'Europe/Uzhgorod'), (b'Europe/Vaduz', b'Europe/Vaduz'), (b'Europe/Vatican', b'Europe/Vatican'), (b'Europe/Vienna', b'Europe/Vienna'), (b'Europe/Vilnius', b'Europe/Vilnius'), (b'Europe/Volgograd', b'Europe/Volgograd'), (b'Europe/Warsaw', b'Europe/Warsaw'), (b'Europe/Zagreb', b'Europe/Zagreb'), (b'Europe/Zaporozhye', b'Europe/Zaporozhye'), (b'Europe/Zurich', b'Europe/Zurich'), (b'GMT', b'GMT'), (b'Indian/Antananarivo', b'Indian/Antananarivo'), (b'Indian/Chagos', b'Indian/Chagos'), (b'Indian/Christmas', b'Indian/Christmas'), (b'Indian/Cocos', b'Indian/Cocos'), (b'Indian/Comoro', b'Indian/Comoro'), (b'Indian/Kerguelen', b'Indian/Kerguelen'), (b'Indian/Mahe', b'Indian/Mahe'), (b'Indian/Maldives', b'Indian/Maldives'), (b'Indian/Mauritius', b'Indian/Mauritius'), (b'Indian/Mayotte', b'Indian/Mayotte'), (b'Indian/Reunion', b'Indian/Reunion'), (b'Pacific/Apia', b'Pacific/Apia'), (b'Pacific/Auckland', b'Pacific/Auckland'), (b'Pacific/Bougainville', b'Pacific/Bougainville'), (b'Pacific/Chatham', b'Pacific/Chatham'), (b'Pacific/Chuuk', b'Pacific/Chuuk'), (b'Pacific/Easter', b'Pacific/Easter'), (b'Pacific/Efate', b'Pacific/Efate'), (b'Pacific/Enderbury', b'Pacific/Enderbury'), (b'Pacific/Fakaofo', b'Pacific/Fakaofo'), (b'Pacific/Fiji', b'Pacific/Fiji'), (b'Pacific/Funafuti', b'Pacific/Funafuti'), (b'Pacific/Galapagos', b'Pacific/Galapagos'), (b'Pacific/Gambier', b'Pacific/Gambier'), (b'Pacific/Guadalcanal', b'Pacific/Guadalcanal'), (b'Pacific/Guam', b'Pacific/Guam'), (b'Pacific/Honolulu', b'Pacific/Honolulu'), (b'Pacific/Kiritimati', b'Pacific/Kiritimati'), (b'Pacific/Kosrae', b'Pacific/Kosrae'), (b'Pacific/Kwajalein', b'Pacific/Kwajalein'), (b'Pacific/Majuro', b'Pacific/Majuro'), (b'Pacific/Marquesas', b'Pacific/Marquesas'), (b'Pacific/Midway', b'Pacific/Midway'), (b'Pacific/Nauru', b'Pacific/Nauru'), (b'Pacific/Niue', b'Pacific/Niue'), (b'Pacific/Norfolk', b'Pacific/Norfolk'), (b'Pacific/Noumea', b'Pacific/Noumea'), (b'Pacific/Pago_Pago', b'Pacific/Pago_Pago'), (b'Pacific/Palau', b'Pacific/Palau'), (b'Pacific/Pitcairn', b'Pacific/Pitcairn'), (b'Pacific/Pohnpei', b'Pacific/Pohnpei'), (b'Pacific/Port_Moresby', b'Pacific/Port_Moresby'), (b'Pacific/Rarotonga', b'Pacific/Rarotonga'), (b'Pacific/Saipan', b'Pacific/Saipan'), (b'Pacific/Tahiti', b'Pacific/Tahiti'), (b'Pacific/Tarawa', b'Pacific/Tarawa'), (b'Pacific/Tongatapu', b'Pacific/Tongatapu'), (b'Pacific/Wake', b'Pacific/Wake'), (b'Pacific/Wallis', b'Pacific/Wallis'), (b'US/Alaska', b'US/Alaska'), (b'US/Arizona', b'US/Arizona'), (b'US/Central', b'US/Central'), (b'US/Eastern', b'US/Eastern'), (b'US/Hawaii', b'US/Hawaii'), (b'US/Mountain', b'US/Mountain'), (b'US/Pacific', b'US/Pacific'), (b'UTC', b'UTC')], max_length=48, verbose_name='Timezone'), + field=models.CharField( + choices=[ + (b'Africa/Abidjan', b'Africa/Abidjan'), + (b'Africa/Accra', b'Africa/Accra'), + (b'Africa/Addis_Ababa', b'Africa/Addis_Ababa'), + (b'Africa/Algiers', b'Africa/Algiers'), + (b'Africa/Asmara', b'Africa/Asmara'), + (b'Africa/Bamako', b'Africa/Bamako'), + (b'Africa/Bangui', b'Africa/Bangui'), + (b'Africa/Banjul', b'Africa/Banjul'), + (b'Africa/Bissau', b'Africa/Bissau'), + (b'Africa/Blantyre', b'Africa/Blantyre'), + (b'Africa/Brazzaville', b'Africa/Brazzaville'), + (b'Africa/Bujumbura', b'Africa/Bujumbura'), + (b'Africa/Cairo', b'Africa/Cairo'), + (b'Africa/Casablanca', b'Africa/Casablanca'), + (b'Africa/Ceuta', b'Africa/Ceuta'), + (b'Africa/Conakry', b'Africa/Conakry'), + (b'Africa/Dakar', b'Africa/Dakar'), + (b'Africa/Dar_es_Salaam', b'Africa/Dar_es_Salaam'), + (b'Africa/Djibouti', b'Africa/Djibouti'), + (b'Africa/Douala', b'Africa/Douala'), + (b'Africa/El_Aaiun', b'Africa/El_Aaiun'), + (b'Africa/Freetown', b'Africa/Freetown'), + (b'Africa/Gaborone', b'Africa/Gaborone'), + (b'Africa/Harare', b'Africa/Harare'), + (b'Africa/Johannesburg', b'Africa/Johannesburg'), + (b'Africa/Juba', b'Africa/Juba'), + (b'Africa/Kampala', b'Africa/Kampala'), + (b'Africa/Khartoum', b'Africa/Khartoum'), + (b'Africa/Kigali', b'Africa/Kigali'), + (b'Africa/Kinshasa', b'Africa/Kinshasa'), + (b'Africa/Lagos', b'Africa/Lagos'), + (b'Africa/Libreville', b'Africa/Libreville'), + (b'Africa/Lome', b'Africa/Lome'), + (b'Africa/Luanda', b'Africa/Luanda'), + (b'Africa/Lubumbashi', b'Africa/Lubumbashi'), + (b'Africa/Lusaka', b'Africa/Lusaka'), + (b'Africa/Malabo', b'Africa/Malabo'), + (b'Africa/Maputo', b'Africa/Maputo'), + (b'Africa/Maseru', b'Africa/Maseru'), + (b'Africa/Mbabane', b'Africa/Mbabane'), + (b'Africa/Mogadishu', b'Africa/Mogadishu'), + (b'Africa/Monrovia', b'Africa/Monrovia'), + (b'Africa/Nairobi', b'Africa/Nairobi'), + (b'Africa/Ndjamena', b'Africa/Ndjamena'), + (b'Africa/Niamey', b'Africa/Niamey'), + (b'Africa/Nouakchott', b'Africa/Nouakchott'), + (b'Africa/Ouagadougou', b'Africa/Ouagadougou'), + (b'Africa/Porto-Novo', b'Africa/Porto-Novo'), + (b'Africa/Sao_Tome', b'Africa/Sao_Tome'), + (b'Africa/Tripoli', b'Africa/Tripoli'), + (b'Africa/Tunis', b'Africa/Tunis'), + (b'Africa/Windhoek', b'Africa/Windhoek'), + (b'America/Adak', b'America/Adak'), + (b'America/Anchorage', b'America/Anchorage'), + (b'America/Anguilla', b'America/Anguilla'), + (b'America/Antigua', b'America/Antigua'), + (b'America/Araguaina', b'America/Araguaina'), + (b'America/Argentina/Buenos_Aires', b'America/Argentina/Buenos_Aires'), + (b'America/Argentina/Catamarca', b'America/Argentina/Catamarca'), + (b'America/Argentina/Cordoba', b'America/Argentina/Cordoba'), + (b'America/Argentina/Jujuy', b'America/Argentina/Jujuy'), + (b'America/Argentina/La_Rioja', b'America/Argentina/La_Rioja'), + (b'America/Argentina/Mendoza', b'America/Argentina/Mendoza'), + (b'America/Argentina/Rio_Gallegos', b'America/Argentina/Rio_Gallegos'), + (b'America/Argentina/Salta', b'America/Argentina/Salta'), + (b'America/Argentina/San_Juan', b'America/Argentina/San_Juan'), + (b'America/Argentina/San_Luis', b'America/Argentina/San_Luis'), + (b'America/Argentina/Tucuman', b'America/Argentina/Tucuman'), + (b'America/Argentina/Ushuaia', b'America/Argentina/Ushuaia'), + (b'America/Aruba', b'America/Aruba'), + (b'America/Asuncion', b'America/Asuncion'), + (b'America/Atikokan', b'America/Atikokan'), + (b'America/Bahia', b'America/Bahia'), + (b'America/Bahia_Banderas', b'America/Bahia_Banderas'), + (b'America/Barbados', b'America/Barbados'), + (b'America/Belem', b'America/Belem'), + (b'America/Belize', b'America/Belize'), + (b'America/Blanc-Sablon', b'America/Blanc-Sablon'), + (b'America/Boa_Vista', b'America/Boa_Vista'), + (b'America/Bogota', b'America/Bogota'), + (b'America/Boise', b'America/Boise'), + (b'America/Cambridge_Bay', b'America/Cambridge_Bay'), + (b'America/Campo_Grande', b'America/Campo_Grande'), + (b'America/Cancun', b'America/Cancun'), + (b'America/Caracas', b'America/Caracas'), + (b'America/Cayenne', b'America/Cayenne'), + (b'America/Cayman', b'America/Cayman'), + (b'America/Chicago', b'America/Chicago'), + (b'America/Chihuahua', b'America/Chihuahua'), + (b'America/Costa_Rica', b'America/Costa_Rica'), + (b'America/Creston', b'America/Creston'), + (b'America/Cuiaba', b'America/Cuiaba'), + (b'America/Curacao', b'America/Curacao'), + (b'America/Danmarkshavn', b'America/Danmarkshavn'), + (b'America/Dawson', b'America/Dawson'), + (b'America/Dawson_Creek', b'America/Dawson_Creek'), + (b'America/Denver', b'America/Denver'), + (b'America/Detroit', b'America/Detroit'), + (b'America/Dominica', b'America/Dominica'), + (b'America/Edmonton', b'America/Edmonton'), + (b'America/Eirunepe', b'America/Eirunepe'), + (b'America/El_Salvador', b'America/El_Salvador'), + (b'America/Fort_Nelson', b'America/Fort_Nelson'), + (b'America/Fortaleza', b'America/Fortaleza'), + (b'America/Glace_Bay', b'America/Glace_Bay'), + (b'America/Godthab', b'America/Godthab'), + (b'America/Goose_Bay', b'America/Goose_Bay'), + (b'America/Grand_Turk', b'America/Grand_Turk'), + (b'America/Grenada', b'America/Grenada'), + (b'America/Guadeloupe', b'America/Guadeloupe'), + (b'America/Guatemala', b'America/Guatemala'), + (b'America/Guayaquil', b'America/Guayaquil'), + (b'America/Guyana', b'America/Guyana'), + (b'America/Halifax', b'America/Halifax'), + (b'America/Havana', b'America/Havana'), + (b'America/Hermosillo', b'America/Hermosillo'), + (b'America/Indiana/Indianapolis', b'America/Indiana/Indianapolis'), + (b'America/Indiana/Knox', b'America/Indiana/Knox'), + (b'America/Indiana/Marengo', b'America/Indiana/Marengo'), + (b'America/Indiana/Petersburg', b'America/Indiana/Petersburg'), + (b'America/Indiana/Tell_City', b'America/Indiana/Tell_City'), + (b'America/Indiana/Vevay', b'America/Indiana/Vevay'), + (b'America/Indiana/Vincennes', b'America/Indiana/Vincennes'), + (b'America/Indiana/Winamac', b'America/Indiana/Winamac'), + (b'America/Inuvik', b'America/Inuvik'), + (b'America/Iqaluit', b'America/Iqaluit'), + (b'America/Jamaica', b'America/Jamaica'), + (b'America/Juneau', b'America/Juneau'), + (b'America/Kentucky/Louisville', b'America/Kentucky/Louisville'), + (b'America/Kentucky/Monticello', b'America/Kentucky/Monticello'), + (b'America/Kralendijk', b'America/Kralendijk'), + (b'America/La_Paz', b'America/La_Paz'), + (b'America/Lima', b'America/Lima'), + (b'America/Los_Angeles', b'America/Los_Angeles'), + (b'America/Lower_Princes', b'America/Lower_Princes'), + (b'America/Maceio', b'America/Maceio'), + (b'America/Managua', b'America/Managua'), + (b'America/Manaus', b'America/Manaus'), + (b'America/Marigot', b'America/Marigot'), + (b'America/Martinique', b'America/Martinique'), + (b'America/Matamoros', b'America/Matamoros'), + (b'America/Mazatlan', b'America/Mazatlan'), + (b'America/Menominee', b'America/Menominee'), + (b'America/Merida', b'America/Merida'), + (b'America/Metlakatla', b'America/Metlakatla'), + (b'America/Mexico_City', b'America/Mexico_City'), + (b'America/Miquelon', b'America/Miquelon'), + (b'America/Moncton', b'America/Moncton'), + (b'America/Monterrey', b'America/Monterrey'), + (b'America/Montevideo', b'America/Montevideo'), + (b'America/Montserrat', b'America/Montserrat'), + (b'America/Nassau', b'America/Nassau'), + (b'America/New_York', b'America/New_York'), + (b'America/Nipigon', b'America/Nipigon'), + (b'America/Nome', b'America/Nome'), + (b'America/Noronha', b'America/Noronha'), + (b'America/North_Dakota/Beulah', b'America/North_Dakota/Beulah'), + (b'America/North_Dakota/Center', b'America/North_Dakota/Center'), + (b'America/North_Dakota/New_Salem', b'America/North_Dakota/New_Salem'), + (b'America/Ojinaga', b'America/Ojinaga'), + (b'America/Panama', b'America/Panama'), + (b'America/Pangnirtung', b'America/Pangnirtung'), + (b'America/Paramaribo', b'America/Paramaribo'), + (b'America/Phoenix', b'America/Phoenix'), + (b'America/Port-au-Prince', b'America/Port-au-Prince'), + (b'America/Port_of_Spain', b'America/Port_of_Spain'), + (b'America/Porto_Velho', b'America/Porto_Velho'), + (b'America/Puerto_Rico', b'America/Puerto_Rico'), + (b'America/Punta_Arenas', b'America/Punta_Arenas'), + (b'America/Rainy_River', b'America/Rainy_River'), + (b'America/Rankin_Inlet', b'America/Rankin_Inlet'), + (b'America/Recife', b'America/Recife'), + (b'America/Regina', b'America/Regina'), + (b'America/Resolute', b'America/Resolute'), + (b'America/Rio_Branco', b'America/Rio_Branco'), + (b'America/Santarem', b'America/Santarem'), + (b'America/Santiago', b'America/Santiago'), + (b'America/Santo_Domingo', b'America/Santo_Domingo'), + (b'America/Sao_Paulo', b'America/Sao_Paulo'), + (b'America/Scoresbysund', b'America/Scoresbysund'), + (b'America/Sitka', b'America/Sitka'), + (b'America/St_Barthelemy', b'America/St_Barthelemy'), + (b'America/St_Johns', b'America/St_Johns'), + (b'America/St_Kitts', b'America/St_Kitts'), + (b'America/St_Lucia', b'America/St_Lucia'), + (b'America/St_Thomas', b'America/St_Thomas'), + (b'America/St_Vincent', b'America/St_Vincent'), + (b'America/Swift_Current', b'America/Swift_Current'), + (b'America/Tegucigalpa', b'America/Tegucigalpa'), + (b'America/Thule', b'America/Thule'), + (b'America/Thunder_Bay', b'America/Thunder_Bay'), + (b'America/Tijuana', b'America/Tijuana'), + (b'America/Toronto', b'America/Toronto'), + (b'America/Tortola', b'America/Tortola'), + (b'America/Vancouver', b'America/Vancouver'), + (b'America/Whitehorse', b'America/Whitehorse'), + (b'America/Winnipeg', b'America/Winnipeg'), + (b'America/Yakutat', b'America/Yakutat'), + (b'America/Yellowknife', b'America/Yellowknife'), + (b'Antarctica/Casey', b'Antarctica/Casey'), + (b'Antarctica/Davis', b'Antarctica/Davis'), + (b'Antarctica/DumontDUrville', b'Antarctica/DumontDUrville'), + (b'Antarctica/Macquarie', b'Antarctica/Macquarie'), + (b'Antarctica/Mawson', b'Antarctica/Mawson'), + (b'Antarctica/McMurdo', b'Antarctica/McMurdo'), + (b'Antarctica/Palmer', b'Antarctica/Palmer'), + (b'Antarctica/Rothera', b'Antarctica/Rothera'), + (b'Antarctica/Syowa', b'Antarctica/Syowa'), + (b'Antarctica/Troll', b'Antarctica/Troll'), + (b'Antarctica/Vostok', b'Antarctica/Vostok'), + (b'Arctic/Longyearbyen', b'Arctic/Longyearbyen'), + (b'Asia/Aden', b'Asia/Aden'), + (b'Asia/Almaty', b'Asia/Almaty'), + (b'Asia/Amman', b'Asia/Amman'), + (b'Asia/Anadyr', b'Asia/Anadyr'), + (b'Asia/Aqtau', b'Asia/Aqtau'), + (b'Asia/Aqtobe', b'Asia/Aqtobe'), + (b'Asia/Ashgabat', b'Asia/Ashgabat'), + (b'Asia/Atyrau', b'Asia/Atyrau'), + (b'Asia/Baghdad', b'Asia/Baghdad'), + (b'Asia/Bahrain', b'Asia/Bahrain'), + (b'Asia/Baku', b'Asia/Baku'), + (b'Asia/Bangkok', b'Asia/Bangkok'), + (b'Asia/Barnaul', b'Asia/Barnaul'), + (b'Asia/Beirut', b'Asia/Beirut'), + (b'Asia/Bishkek', b'Asia/Bishkek'), + (b'Asia/Brunei', b'Asia/Brunei'), + (b'Asia/Chita', b'Asia/Chita'), + (b'Asia/Choibalsan', b'Asia/Choibalsan'), + (b'Asia/Colombo', b'Asia/Colombo'), + (b'Asia/Damascus', b'Asia/Damascus'), + (b'Asia/Dhaka', b'Asia/Dhaka'), + (b'Asia/Dili', b'Asia/Dili'), + (b'Asia/Dubai', b'Asia/Dubai'), + (b'Asia/Dushanbe', b'Asia/Dushanbe'), + (b'Asia/Famagusta', b'Asia/Famagusta'), + (b'Asia/Gaza', b'Asia/Gaza'), + (b'Asia/Hebron', b'Asia/Hebron'), + (b'Asia/Ho_Chi_Minh', b'Asia/Ho_Chi_Minh'), + (b'Asia/Hong_Kong', b'Asia/Hong_Kong'), + (b'Asia/Hovd', b'Asia/Hovd'), + (b'Asia/Irkutsk', b'Asia/Irkutsk'), + (b'Asia/Jakarta', b'Asia/Jakarta'), + (b'Asia/Jayapura', b'Asia/Jayapura'), + (b'Asia/Jerusalem', b'Asia/Jerusalem'), + (b'Asia/Kabul', b'Asia/Kabul'), + (b'Asia/Kamchatka', b'Asia/Kamchatka'), + (b'Asia/Karachi', b'Asia/Karachi'), + (b'Asia/Kathmandu', b'Asia/Kathmandu'), + (b'Asia/Khandyga', b'Asia/Khandyga'), + (b'Asia/Kolkata', b'Asia/Kolkata'), + (b'Asia/Krasnoyarsk', b'Asia/Krasnoyarsk'), + (b'Asia/Kuala_Lumpur', b'Asia/Kuala_Lumpur'), + (b'Asia/Kuching', b'Asia/Kuching'), + (b'Asia/Kuwait', b'Asia/Kuwait'), + (b'Asia/Macau', b'Asia/Macau'), + (b'Asia/Magadan', b'Asia/Magadan'), + (b'Asia/Makassar', b'Asia/Makassar'), + (b'Asia/Manila', b'Asia/Manila'), + (b'Asia/Muscat', b'Asia/Muscat'), + (b'Asia/Nicosia', b'Asia/Nicosia'), + (b'Asia/Novokuznetsk', b'Asia/Novokuznetsk'), + (b'Asia/Novosibirsk', b'Asia/Novosibirsk'), + (b'Asia/Omsk', b'Asia/Omsk'), + (b'Asia/Oral', b'Asia/Oral'), + (b'Asia/Phnom_Penh', b'Asia/Phnom_Penh'), + (b'Asia/Pontianak', b'Asia/Pontianak'), + (b'Asia/Pyongyang', b'Asia/Pyongyang'), + (b'Asia/Qatar', b'Asia/Qatar'), + (b'Asia/Qyzylorda', b'Asia/Qyzylorda'), + (b'Asia/Riyadh', b'Asia/Riyadh'), + (b'Asia/Sakhalin', b'Asia/Sakhalin'), + (b'Asia/Samarkand', b'Asia/Samarkand'), + (b'Asia/Seoul', b'Asia/Seoul'), + (b'Asia/Shanghai', b'Asia/Shanghai'), + (b'Asia/Singapore', b'Asia/Singapore'), + (b'Asia/Srednekolymsk', b'Asia/Srednekolymsk'), + (b'Asia/Taipei', b'Asia/Taipei'), + (b'Asia/Tashkent', b'Asia/Tashkent'), + (b'Asia/Tbilisi', b'Asia/Tbilisi'), + (b'Asia/Tehran', b'Asia/Tehran'), + (b'Asia/Thimphu', b'Asia/Thimphu'), + (b'Asia/Tokyo', b'Asia/Tokyo'), + (b'Asia/Tomsk', b'Asia/Tomsk'), + (b'Asia/Ulaanbaatar', b'Asia/Ulaanbaatar'), + (b'Asia/Urumqi', b'Asia/Urumqi'), + (b'Asia/Ust-Nera', b'Asia/Ust-Nera'), + (b'Asia/Vientiane', b'Asia/Vientiane'), + (b'Asia/Vladivostok', b'Asia/Vladivostok'), + (b'Asia/Yakutsk', b'Asia/Yakutsk'), + (b'Asia/Yangon', b'Asia/Yangon'), + (b'Asia/Yekaterinburg', b'Asia/Yekaterinburg'), + (b'Asia/Yerevan', b'Asia/Yerevan'), + (b'Atlantic/Azores', b'Atlantic/Azores'), + (b'Atlantic/Bermuda', b'Atlantic/Bermuda'), + (b'Atlantic/Canary', b'Atlantic/Canary'), + (b'Atlantic/Cape_Verde', b'Atlantic/Cape_Verde'), + (b'Atlantic/Faroe', b'Atlantic/Faroe'), + (b'Atlantic/Madeira', b'Atlantic/Madeira'), + (b'Atlantic/Reykjavik', b'Atlantic/Reykjavik'), + (b'Atlantic/South_Georgia', b'Atlantic/South_Georgia'), + (b'Atlantic/St_Helena', b'Atlantic/St_Helena'), + (b'Atlantic/Stanley', b'Atlantic/Stanley'), + (b'Australia/Adelaide', b'Australia/Adelaide'), + (b'Australia/Brisbane', b'Australia/Brisbane'), + (b'Australia/Broken_Hill', b'Australia/Broken_Hill'), + (b'Australia/Currie', b'Australia/Currie'), + (b'Australia/Darwin', b'Australia/Darwin'), + (b'Australia/Eucla', b'Australia/Eucla'), + (b'Australia/Hobart', b'Australia/Hobart'), + (b'Australia/Lindeman', b'Australia/Lindeman'), + (b'Australia/Lord_Howe', b'Australia/Lord_Howe'), + (b'Australia/Melbourne', b'Australia/Melbourne'), + (b'Australia/Perth', b'Australia/Perth'), + (b'Australia/Sydney', b'Australia/Sydney'), + (b'Canada/Atlantic', b'Canada/Atlantic'), + (b'Canada/Central', b'Canada/Central'), + (b'Canada/Eastern', b'Canada/Eastern'), + (b'Canada/Mountain', b'Canada/Mountain'), + (b'Canada/Newfoundland', b'Canada/Newfoundland'), + (b'Canada/Pacific', b'Canada/Pacific'), + (b'Europe/Amsterdam', b'Europe/Amsterdam'), + (b'Europe/Andorra', b'Europe/Andorra'), + (b'Europe/Astrakhan', b'Europe/Astrakhan'), + (b'Europe/Athens', b'Europe/Athens'), + (b'Europe/Belgrade', b'Europe/Belgrade'), + (b'Europe/Berlin', b'Europe/Berlin'), + (b'Europe/Bratislava', b'Europe/Bratislava'), + (b'Europe/Brussels', b'Europe/Brussels'), + (b'Europe/Bucharest', b'Europe/Bucharest'), + (b'Europe/Budapest', b'Europe/Budapest'), + (b'Europe/Busingen', b'Europe/Busingen'), + (b'Europe/Chisinau', b'Europe/Chisinau'), + (b'Europe/Copenhagen', b'Europe/Copenhagen'), + (b'Europe/Dublin', b'Europe/Dublin'), + (b'Europe/Gibraltar', b'Europe/Gibraltar'), + (b'Europe/Guernsey', b'Europe/Guernsey'), + (b'Europe/Helsinki', b'Europe/Helsinki'), + (b'Europe/Isle_of_Man', b'Europe/Isle_of_Man'), + (b'Europe/Istanbul', b'Europe/Istanbul'), + (b'Europe/Jersey', b'Europe/Jersey'), + (b'Europe/Kaliningrad', b'Europe/Kaliningrad'), + (b'Europe/Kiev', b'Europe/Kiev'), + (b'Europe/Kirov', b'Europe/Kirov'), + (b'Europe/Lisbon', b'Europe/Lisbon'), + (b'Europe/Ljubljana', b'Europe/Ljubljana'), + (b'Europe/London', b'Europe/London'), + (b'Europe/Luxembourg', b'Europe/Luxembourg'), + (b'Europe/Madrid', b'Europe/Madrid'), + (b'Europe/Malta', b'Europe/Malta'), + (b'Europe/Mariehamn', b'Europe/Mariehamn'), + (b'Europe/Minsk', b'Europe/Minsk'), + (b'Europe/Monaco', b'Europe/Monaco'), + (b'Europe/Moscow', b'Europe/Moscow'), + (b'Europe/Oslo', b'Europe/Oslo'), + (b'Europe/Paris', b'Europe/Paris'), + (b'Europe/Podgorica', b'Europe/Podgorica'), + (b'Europe/Prague', b'Europe/Prague'), + (b'Europe/Riga', b'Europe/Riga'), + (b'Europe/Rome', b'Europe/Rome'), + (b'Europe/Samara', b'Europe/Samara'), + (b'Europe/San_Marino', b'Europe/San_Marino'), + (b'Europe/Sarajevo', b'Europe/Sarajevo'), + (b'Europe/Saratov', b'Europe/Saratov'), + (b'Europe/Simferopol', b'Europe/Simferopol'), + (b'Europe/Skopje', b'Europe/Skopje'), + (b'Europe/Sofia', b'Europe/Sofia'), + (b'Europe/Stockholm', b'Europe/Stockholm'), + (b'Europe/Tallinn', b'Europe/Tallinn'), + (b'Europe/Tirane', b'Europe/Tirane'), + (b'Europe/Ulyanovsk', b'Europe/Ulyanovsk'), + (b'Europe/Uzhgorod', b'Europe/Uzhgorod'), + (b'Europe/Vaduz', b'Europe/Vaduz'), + (b'Europe/Vatican', b'Europe/Vatican'), + (b'Europe/Vienna', b'Europe/Vienna'), + (b'Europe/Vilnius', b'Europe/Vilnius'), + (b'Europe/Volgograd', b'Europe/Volgograd'), + (b'Europe/Warsaw', b'Europe/Warsaw'), + (b'Europe/Zagreb', b'Europe/Zagreb'), + (b'Europe/Zaporozhye', b'Europe/Zaporozhye'), + (b'Europe/Zurich', b'Europe/Zurich'), + (b'GMT', b'GMT'), + (b'Indian/Antananarivo', b'Indian/Antananarivo'), + (b'Indian/Chagos', b'Indian/Chagos'), + (b'Indian/Christmas', b'Indian/Christmas'), + (b'Indian/Cocos', b'Indian/Cocos'), + (b'Indian/Comoro', b'Indian/Comoro'), + (b'Indian/Kerguelen', b'Indian/Kerguelen'), + (b'Indian/Mahe', b'Indian/Mahe'), + (b'Indian/Maldives', b'Indian/Maldives'), + (b'Indian/Mauritius', b'Indian/Mauritius'), + (b'Indian/Mayotte', b'Indian/Mayotte'), + (b'Indian/Reunion', b'Indian/Reunion'), + (b'Pacific/Apia', b'Pacific/Apia'), + (b'Pacific/Auckland', b'Pacific/Auckland'), + (b'Pacific/Bougainville', b'Pacific/Bougainville'), + (b'Pacific/Chatham', b'Pacific/Chatham'), + (b'Pacific/Chuuk', b'Pacific/Chuuk'), + (b'Pacific/Easter', b'Pacific/Easter'), + (b'Pacific/Efate', b'Pacific/Efate'), + (b'Pacific/Enderbury', b'Pacific/Enderbury'), + (b'Pacific/Fakaofo', b'Pacific/Fakaofo'), + (b'Pacific/Fiji', b'Pacific/Fiji'), + (b'Pacific/Funafuti', b'Pacific/Funafuti'), + (b'Pacific/Galapagos', b'Pacific/Galapagos'), + (b'Pacific/Gambier', b'Pacific/Gambier'), + (b'Pacific/Guadalcanal', b'Pacific/Guadalcanal'), + (b'Pacific/Guam', b'Pacific/Guam'), + (b'Pacific/Honolulu', b'Pacific/Honolulu'), + (b'Pacific/Kiritimati', b'Pacific/Kiritimati'), + (b'Pacific/Kosrae', b'Pacific/Kosrae'), + (b'Pacific/Kwajalein', b'Pacific/Kwajalein'), + (b'Pacific/Majuro', b'Pacific/Majuro'), + (b'Pacific/Marquesas', b'Pacific/Marquesas'), + (b'Pacific/Midway', b'Pacific/Midway'), + (b'Pacific/Nauru', b'Pacific/Nauru'), + (b'Pacific/Niue', b'Pacific/Niue'), + (b'Pacific/Norfolk', b'Pacific/Norfolk'), + (b'Pacific/Noumea', b'Pacific/Noumea'), + (b'Pacific/Pago_Pago', b'Pacific/Pago_Pago'), + (b'Pacific/Palau', b'Pacific/Palau'), + (b'Pacific/Pitcairn', b'Pacific/Pitcairn'), + (b'Pacific/Pohnpei', b'Pacific/Pohnpei'), + (b'Pacific/Port_Moresby', b'Pacific/Port_Moresby'), + (b'Pacific/Rarotonga', b'Pacific/Rarotonga'), + (b'Pacific/Saipan', b'Pacific/Saipan'), + (b'Pacific/Tahiti', b'Pacific/Tahiti'), + (b'Pacific/Tarawa', b'Pacific/Tarawa'), + (b'Pacific/Tongatapu', b'Pacific/Tongatapu'), + (b'Pacific/Wake', b'Pacific/Wake'), + (b'Pacific/Wallis', b'Pacific/Wallis'), + (b'US/Alaska', b'US/Alaska'), + (b'US/Arizona', b'US/Arizona'), + (b'US/Central', b'US/Central'), + (b'US/Eastern', b'US/Eastern'), + (b'US/Hawaii', b'US/Hawaii'), + (b'US/Mountain', b'US/Mountain'), + (b'US/Pacific', b'US/Pacific'), + (b'UTC', b'UTC') + ], max_length=48, verbose_name='Timezone' + ), ), ] diff --git a/mayan/apps/common/migrations/0010_auto_20180403_0702.py b/mayan/apps/common/migrations/0010_auto_20180403_0702.py index 3cf2931c30..12d09ce85f 100644 --- a/mayan/apps/common/migrations/0010_auto_20180403_0702.py +++ b/mayan/apps/common/migrations/0010_auto_20180403_0702.py @@ -1,11 +1,10 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.11 on 2018-04-03 07:02 from __future__ import unicode_literals -import mayan.apps.common.models import django.core.files.storage from django.db import migrations, models +import mayan.apps.common.models + class Migration(migrations.Migration): @@ -17,6 +16,11 @@ class Migration(migrations.Migration): migrations.AlterField( model_name='shareduploadedfile', name='file', - field=models.FileField(storage=django.core.files.storage.FileSystemStorage(location=b'mayan/media/shared_files'), upload_to=mayan.apps.common.models.upload_to, verbose_name='File'), + field=models.FileField( + storage=django.core.files.storage.FileSystemStorage( + location=b'mayan/media/shared_files' + ), upload_to=mayan.apps.common.models.upload_to, + verbose_name='File' + ), ), ] diff --git a/mayan/apps/common/migrations/0011_auto_20180429_0758.py b/mayan/apps/common/migrations/0011_auto_20180429_0758.py index be68c11841..160957f1a4 100644 --- a/mayan/apps/common/migrations/0011_auto_20180429_0758.py +++ b/mayan/apps/common/migrations/0011_auto_20180429_0758.py @@ -1,11 +1,10 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.11 on 2018-04-29 07:58 from __future__ import unicode_literals -import mayan.apps.common.models import django.core.files.storage from django.db import migrations, models +import mayan.apps.common.models + class Migration(migrations.Migration): @@ -17,6 +16,11 @@ class Migration(migrations.Migration): migrations.AlterField( model_name='shareduploadedfile', name='file', - field=models.FileField(storage=django.core.files.storage.FileSystemStorage(location=b'/home/rosarior/development/mayan-edms/mayan/media/shared_files'), upload_to=mayan.apps.common.models.upload_to, verbose_name='File'), + field=models.FileField( + storage=django.core.files.storage.FileSystemStorage( + location=b'/home/rosarior/development/mayan-edms/mayan/media/shared_files' + ), upload_to=mayan.apps.common.models.upload_to, + verbose_name='File' + ), ), ] diff --git a/mayan/apps/common/migrations/0012_auto_20181203_0812.py b/mayan/apps/common/migrations/0012_auto_20181203_0812.py index a2b239e852..13cfca2bac 100644 --- a/mayan/apps/common/migrations/0012_auto_20181203_0812.py +++ b/mayan/apps/common/migrations/0012_auto_20181203_0812.py @@ -1,9 +1,7 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.16 on 2018-12-03 08:12 from __future__ import unicode_literals -from django.db import migrations, models import django.db.models.deletion +from django.db import migrations, models class Migration(migrations.Migration): @@ -16,11 +14,33 @@ class Migration(migrations.Migration): migrations.CreateModel( name='Cache', fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=128, unique=True, verbose_name='Name')), - ('label', models.CharField(max_length=128, verbose_name='Label')), - ('maximum_size', models.PositiveIntegerField(verbose_name='Maximum size')), - ('storage_instance_path', models.CharField(max_length=255, unique=True, verbose_name='Storage instance path')), + ( + 'id', models.AutoField( + auto_created=True, primary_key=True, serialize=False, + verbose_name='ID' + ) + ), + ( + 'name', models.CharField( + max_length=128, unique=True, verbose_name='Name' + ) + ), + ( + 'label', models.CharField( + max_length=128, verbose_name='Label' + ) + ), + ( + 'maximum_size', models.PositiveIntegerField( + verbose_name='Maximum size' + ) + ), + ( + 'storage_instance_path', models.CharField( + max_length=255, unique=True, + verbose_name='Storage instance path' + ) + ), ], options={ 'verbose_name': 'Cache', @@ -30,9 +50,24 @@ class Migration(migrations.Migration): migrations.CreateModel( name='CachePartition', fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=128, verbose_name='Name')), - ('cache', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='partitions', to='common.Cache', verbose_name='Cache')), + ( + 'id', models.AutoField( + auto_created=True, primary_key=True, serialize=False, + verbose_name='ID' + ) + ), + ( + 'name', models.CharField( + max_length=128, verbose_name='Name' + ) + ), + ( + 'cache', models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + related_name='partitions', to='common.Cache', + verbose_name='Cache' + ) + ), ], options={ 'verbose_name': 'Cache partition', @@ -42,11 +77,35 @@ class Migration(migrations.Migration): migrations.CreateModel( name='CachePartitionFile', fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('datetime', models.DateTimeField(auto_now_add=True, db_index=True, verbose_name='Date time')), - ('filename', models.CharField(max_length=255, verbose_name='Filename')), - ('file_size', models.PositiveIntegerField(default=0, verbose_name='File size')), - ('partition', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='files', to='common.CachePartition', verbose_name='Cache partition')), + ( + 'id', models.AutoField( + auto_created=True, primary_key=True, serialize=False, + verbose_name='ID' + ) + ), + ( + 'datetime', models.DateTimeField( + auto_now_add=True, db_index=True, + verbose_name='Date time' + ) + ), + ( + 'filename', models.CharField( + max_length=255, verbose_name='Filename' + ) + ), + ( + 'file_size', models.PositiveIntegerField( + default=0, verbose_name='File size' + ) + ), + ( + 'partition', models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + related_name='files', to='common.CachePartition', + verbose_name='Cache partition' + ) + ), ], options={ 'get_latest_by': 'datetime', diff --git a/mayan/apps/common/mixins.py b/mayan/apps/common/mixins.py index b3a128d9d2..6d589dada0 100644 --- a/mayan/apps/common/mixins.py +++ b/mayan/apps/common/mixins.py @@ -6,7 +6,8 @@ from django.core.exceptions import PermissionDenied from django.db.models.query import QuerySet from django.http import HttpResponseRedirect from django.shortcuts import resolve_url -from django.utils.translation import ungettext, ugettext_lazy as _ +from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import ungettext from mayan.apps.acls.models import AccessControlList from mayan.apps.permissions import Permission diff --git a/mayan/apps/common/storages.py b/mayan/apps/common/storages.py index f1acfdb7ca..b6304a6b98 100644 --- a/mayan/apps/common/storages.py +++ b/mayan/apps/common/storages.py @@ -2,9 +2,7 @@ from __future__ import unicode_literals from django.utils.module_loading import import_string -from .settings import ( - setting_shared_storage, setting_shared_storage_arguments -) +from .settings import setting_shared_storage, setting_shared_storage_arguments storage_sharedupload = import_string( dotted_path=setting_shared_storage.value diff --git a/mayan/apps/common/tasks.py b/mayan/apps/common/tasks.py index 4a0027a36d..343cd70216 100644 --- a/mayan/apps/common/tasks.py +++ b/mayan/apps/common/tasks.py @@ -1,7 +1,7 @@ from __future__ import unicode_literals -from datetime import timedelta import logging +from datetime import timedelta from django.apps import apps from django.utils.timezone import now diff --git a/mayan/apps/common/tests/base.py b/mayan/apps/common/tests/base.py index 5a4bb8a255..c7da71e826 100644 --- a/mayan/apps/common/tests/base.py +++ b/mayan/apps/common/tests/base.py @@ -7,14 +7,13 @@ from django.template import Context, Template from django.test import TestCase from django.test.utils import ContextList from django.urls import clear_url_caches, reverse - from django_downloadview import assert_download_response from mayan.apps.permissions.classes import Permission from mayan.apps.smart_settings.classes import Namespace from mayan.apps.user_management.tests import ( - TEST_ADMIN_PASSWORD, TEST_ADMIN_USERNAME, TEST_USER_USERNAME, - TEST_USER_PASSWORD + TEST_ADMIN_PASSWORD, TEST_ADMIN_USERNAME, TEST_USER_PASSWORD, + TEST_USER_USERNAME ) from .literals import TEST_VIEW_NAME, TEST_VIEW_URL diff --git a/mayan/apps/common/tests/mixins.py b/mayan/apps/common/tests/mixins.py index 4020fbbecf..3ffe90f16b 100644 --- a/mayan/apps/common/tests/mixins.py +++ b/mayan/apps/common/tests/mixins.py @@ -12,8 +12,9 @@ from mayan.apps.acls.models import AccessControlList from mayan.apps.permissions.models import Role from mayan.apps.permissions.tests.literals import TEST_ROLE_LABEL from mayan.apps.user_management.tests import ( - TEST_ADMIN_PASSWORD, TEST_ADMIN_USERNAME, TEST_ADMIN_EMAIL, - TEST_GROUP_NAME, TEST_USER_EMAIL, TEST_USER_USERNAME, TEST_USER_PASSWORD + TEST_ADMIN_EMAIL, TEST_ADMIN_PASSWORD, TEST_ADMIN_USERNAME, + TEST_GROUP_NAME, TEST_USER_EMAIL, TEST_USER_PASSWORD, + TEST_USER_USERNAME ) from ..settings import setting_temporary_directory diff --git a/mayan/apps/common/tests/test_api.py b/mayan/apps/common/tests/test_api.py index a3d6a48650..f31fc311dd 100644 --- a/mayan/apps/common/tests/test_api.py +++ b/mayan/apps/common/tests/test_api.py @@ -1,7 +1,7 @@ from __future__ import unicode_literals -from django.urls import reverse from django.test import override_settings +from django.urls import reverse from mayan.apps.rest_api.tests import BaseAPITestCase diff --git a/mayan/apps/common/tests/test_compressed_files.py b/mayan/apps/common/tests/test_compressed_files.py index 30e1634d87..47fe7798eb 100644 --- a/mayan/apps/common/tests/test_compressed_files.py +++ b/mayan/apps/common/tests/test_compressed_files.py @@ -5,7 +5,7 @@ from mayan.apps.common.tests import BaseTestCase from ..compressed_files import Archive, TarArchive, ZipArchive from .literals import ( - TEST_COMPRESSED_FILE_CONTENTS, TEST_FILE_CONTENTS_1, TEST_FILE3_PATH, + TEST_COMPRESSED_FILE_CONTENTS, TEST_FILE3_PATH, TEST_FILE_CONTENTS_1, TEST_FILENAME1, TEST_FILENAME3, TEST_TAR_BZ2_FILE_PATH, TEST_TAR_FILE_PATH, TEST_TAR_GZ_FILE_PATH, TEST_ZIP_FILE_PATH ) diff --git a/mayan/apps/common/utils.py b/mayan/apps/common/utils.py index a9791343e0..bd500d4af8 100644 --- a/mayan/apps/common/utils.py +++ b/mayan/apps/common/utils.py @@ -10,10 +10,10 @@ from django.conf import settings from django.urls import resolve as django_resolve from django.urls.base import get_script_prefix from django.utils.datastructures import MultiValueDict -from django.utils.http import ( - urlencode as django_urlencode, urlquote as django_urlquote -) -from django.utils.six.moves import reduce as reduce_function, xmlrpc_client +from django.utils.http import urlencode as django_urlencode +from django.utils.http import urlquote as django_urlquote +from django.utils.six.moves import reduce as reduce_function +from django.utils.six.moves import xmlrpc_client from django.utils.translation import ugettext_lazy as _ import mayan diff --git a/mayan/apps/common/views.py b/mayan/apps/common/views.py index 316f817a38..3b72ac917e 100644 --- a/mayan/apps/common/views.py +++ b/mayan/apps/common/views.py @@ -23,14 +23,13 @@ from .forms import ( ) from .generics import ( # NOQA AssignRemoveView, ConfirmView, FormView, MultiFormView, - MultipleObjectConfirmActionView, MultipleObjectFormActionView, - SingleObjectCreateView, SingleObjectDeleteView, - SingleObjectDetailView, SingleObjectDynamicFormCreateView, - SingleObjectDynamicFormEditView, SingleObjectDownloadView, - SingleObjectEditView, SingleObjectListView, SimpleView + MultipleObjectConfirmActionView, MultipleObjectFormActionView, SimpleView, + SingleObjectCreateView, SingleObjectDeleteView, SingleObjectDetailView, + SingleObjectDownloadView, SingleObjectDynamicFormCreateView, + SingleObjectDynamicFormEditView, SingleObjectEditView, SingleObjectListView ) from .icons import icon_setup -from .menus import menu_tools, menu_setup +from .menus import menu_setup, menu_tools from .permissions_runtime import permission_error_log_view from .utils import check_version diff --git a/mayan/apps/common/widgets.py b/mayan/apps/common/widgets.py index 3438def495..d65b62e137 100644 --- a/mayan/apps/common/widgets.py +++ b/mayan/apps/common/widgets.py @@ -5,7 +5,8 @@ from django.utils.encoding import force_text from django.utils.html import format_html from django.utils.safestring import mark_safe -from .icons import icon_fail as default_icon_fail, icon_ok as default_icon_ok +from .icons import icon_fail as default_icon_fail +from .icons import icon_ok as default_icon_ok class DisableableSelectWidget(forms.SelectMultiple): diff --git a/mayan/apps/sources/admin.py b/mayan/apps/sources/admin.py index 6360325b4e..39fc7fd08f 100644 --- a/mayan/apps/sources/admin.py +++ b/mayan/apps/sources/admin.py @@ -3,7 +3,8 @@ from __future__ import unicode_literals from django.contrib import admin from .models import ( - IMAPEmail, POP3Email, StagingFolderSource, WatchFolderSource, WebFormSource + IMAPEmail, POP3Email, StagingFolderSource, WatchFolderSource, + WebFormSource ) diff --git a/mayan/apps/sources/apps.py b/mayan/apps/sources/apps.py index e77e650088..2e621e3b88 100644 --- a/mayan/apps/sources/apps.py +++ b/mayan/apps/sources/apps.py @@ -6,7 +6,7 @@ from kombu import Exchange, Queue from mayan.apps.common import ( MayanAppConfig, MissingItem, menu_list_facet, menu_object, menu_secondary, - menu_sidebar, menu_setup + menu_setup, menu_sidebar ) from mayan.apps.common.signals import post_initial_setup, post_upgrade from mayan.apps.converter.links import link_transformation_list @@ -21,13 +21,13 @@ from .handlers import ( initialize_periodic_tasks ) from .links import ( - link_document_create_multiple, link_setup_sources, - link_setup_source_check_now, link_setup_source_create_imap_email, - link_setup_source_create_pop3_email, link_setup_source_create_sane_scanner, + link_document_create_multiple, link_setup_source_check_now, + link_setup_source_create_imap_email, link_setup_source_create_pop3_email, + link_setup_source_create_sane_scanner, + link_setup_source_create_staging_folder, link_setup_source_create_watch_folder, link_setup_source_create_webform, - link_setup_source_create_staging_folder, link_setup_source_delete, - link_setup_source_edit, link_setup_source_logs, link_staging_file_delete, - link_upload_version + link_setup_source_delete, link_setup_source_edit, link_setup_source_logs, + link_setup_sources, link_staging_file_delete, link_upload_version ) from .queues import * # NOQA from .widgets import StagingFileThumbnailWidget diff --git a/mayan/apps/sources/forms.py b/mayan/apps/sources/forms.py index a6431f71e5..c87dbda756 100644 --- a/mayan/apps/sources/forms.py +++ b/mayan/apps/sources/forms.py @@ -10,8 +10,8 @@ from django.utils.translation import ugettext_lazy as _ from mayan.apps.documents.forms import DocumentForm from .models import ( - IMAPEmail, POP3Email, SaneScanner, StagingFolderSource, WebFormSource, - WatchFolderSource + IMAPEmail, POP3Email, SaneScanner, StagingFolderSource, WatchFolderSource, + WebFormSource ) logger = logging.getLogger(__name__) diff --git a/mayan/apps/sources/links.py b/mayan/apps/sources/links.py index 548622417b..91170d22b4 100644 --- a/mayan/apps/sources/links.py +++ b/mayan/apps/sources/links.py @@ -13,8 +13,9 @@ from .icons import ( icon_source_create ) from .literals import ( - SOURCE_CHOICE_WEB_FORM, SOURCE_CHOICE_EMAIL_IMAP, SOURCE_CHOICE_EMAIL_POP3, - SOURCE_CHOICE_SANE_SCANNER, SOURCE_CHOICE_STAGING, SOURCE_CHOICE_WATCH + SOURCE_CHOICE_EMAIL_IMAP, SOURCE_CHOICE_EMAIL_POP3, + SOURCE_CHOICE_SANE_SCANNER, SOURCE_CHOICE_STAGING, SOURCE_CHOICE_WATCH, + SOURCE_CHOICE_WEB_FORM ) from .permissions import ( permission_sources_setup_create, permission_sources_setup_delete, diff --git a/mayan/apps/sources/migrations/0001_initial.py b/mayan/apps/sources/migrations/0001_initial.py index b49e1c6fae..7ade258846 100644 --- a/mayan/apps/sources/migrations/0001_initial.py +++ b/mayan/apps/sources/migrations/0001_initial.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- from __future__ import unicode_literals -from django.db import models, migrations +from django.db import migrations, models class Migration(migrations.Migration): diff --git a/mayan/apps/sources/migrations/0003_sourcelog.py b/mayan/apps/sources/migrations/0003_sourcelog.py index deee3eee6e..ed2dbd38a9 100644 --- a/mayan/apps/sources/migrations/0003_sourcelog.py +++ b/mayan/apps/sources/migrations/0003_sourcelog.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- from __future__ import unicode_literals -from django.db import models, migrations +from django.db import migrations, models class Migration(migrations.Migration): diff --git a/mayan/apps/sources/migrations/0006_auto_20150708_0330.py b/mayan/apps/sources/migrations/0006_auto_20150708_0330.py index 704f476497..92c4673115 100644 --- a/mayan/apps/sources/migrations/0006_auto_20150708_0330.py +++ b/mayan/apps/sources/migrations/0006_auto_20150708_0330.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- from __future__ import unicode_literals -from django.db import models, migrations +from django.db import migrations, models class Migration(migrations.Migration): diff --git a/mayan/apps/sources/migrations/0007_emailbasemodel_metadata_attachment_name.py b/mayan/apps/sources/migrations/0007_emailbasemodel_metadata_attachment_name.py index 304a1d7dde..f9f69920bc 100644 --- a/mayan/apps/sources/migrations/0007_emailbasemodel_metadata_attachment_name.py +++ b/mayan/apps/sources/migrations/0007_emailbasemodel_metadata_attachment_name.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- from __future__ import unicode_literals -from django.db import models, migrations +from django.db import migrations, models class Migration(migrations.Migration): diff --git a/mayan/apps/sources/migrations/0008_auto_20150815_0351.py b/mayan/apps/sources/migrations/0008_auto_20150815_0351.py index e3871e4a5b..913d4208d9 100644 --- a/mayan/apps/sources/migrations/0008_auto_20150815_0351.py +++ b/mayan/apps/sources/migrations/0008_auto_20150815_0351.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- from __future__ import unicode_literals -from django.db import models, migrations +from django.db import migrations, models class Migration(migrations.Migration): diff --git a/mayan/apps/sources/migrations/0009_auto_20150930_2341.py b/mayan/apps/sources/migrations/0009_auto_20150930_2341.py index 7dbfcd46da..0eadadbf3a 100644 --- a/mayan/apps/sources/migrations/0009_auto_20150930_2341.py +++ b/mayan/apps/sources/migrations/0009_auto_20150930_2341.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- from __future__ import unicode_literals -from django.db import models, migrations +from django.db import migrations, models class Migration(migrations.Migration): diff --git a/mayan/apps/sources/migrations/0010_auto_20151001_0055.py b/mayan/apps/sources/migrations/0010_auto_20151001_0055.py index 33262efccb..086556f1c9 100644 --- a/mayan/apps/sources/migrations/0010_auto_20151001_0055.py +++ b/mayan/apps/sources/migrations/0010_auto_20151001_0055.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- from __future__ import unicode_literals -from django.db import models, migrations +from django.db import migrations, models class Migration(migrations.Migration): diff --git a/mayan/apps/sources/migrations/0011_sanescanner.py b/mayan/apps/sources/migrations/0011_sanescanner.py index b6fc57e5db..9b4989b181 100644 --- a/mayan/apps/sources/migrations/0011_sanescanner.py +++ b/mayan/apps/sources/migrations/0011_sanescanner.py @@ -2,8 +2,8 @@ # Generated by Django 1.10.5 on 2017-02-05 04:19 from __future__ import unicode_literals -from django.db import migrations, models import django.db.models.deletion +from django.db import migrations, models class Migration(migrations.Migration): diff --git a/mayan/apps/sources/models.py b/mayan/apps/sources/models.py index 6461e377d2..ec737029a9 100644 --- a/mayan/apps/sources/models.py +++ b/mayan/apps/sources/models.py @@ -19,7 +19,7 @@ from django.utils.encoding import ( from django.utils.timezone import now from django.utils.translation import ugettext_lazy as _ -from djcelery.models import PeriodicTask, IntervalSchedule +from djcelery.models import IntervalSchedule, PeriodicTask from model_utils.managers import InheritanceManager from mayan.apps.common.compressed_files import Archive @@ -34,14 +34,14 @@ from mayan.apps.metadata.models import MetadataType from .classes import PseudoFile, SourceUploadedFile, StagingFile from .exceptions import SourceException from .literals import ( - DEFAULT_INTERVAL, DEFAULT_POP3_TIMEOUT, DEFAULT_IMAP_MAILBOX, - DEFAULT_METADATA_ATTACHMENT_NAME, SCANNER_ADF_MODE_CHOICES, - SCANNER_MODE_COLOR, SCANNER_MODE_CHOICES, SCANNER_SOURCE_CHOICES, - SOURCE_CHOICES, SOURCE_CHOICE_STAGING, SOURCE_CHOICE_WATCH, - SOURCE_CHOICE_WEB_FORM, SOURCE_INTERACTIVE_UNCOMPRESS_CHOICES, - SOURCE_UNCOMPRESS_CHOICES, SOURCE_UNCOMPRESS_CHOICE_N, - SOURCE_UNCOMPRESS_CHOICE_Y, SOURCE_CHOICE_EMAIL_IMAP, + DEFAULT_IMAP_MAILBOX, DEFAULT_INTERVAL, DEFAULT_METADATA_ATTACHMENT_NAME, + DEFAULT_POP3_TIMEOUT, SCANNER_ADF_MODE_CHOICES, SCANNER_MODE_CHOICES, + SCANNER_MODE_COLOR, SCANNER_SOURCE_CHOICES, SOURCE_CHOICE_EMAIL_IMAP, SOURCE_CHOICE_EMAIL_POP3, SOURCE_CHOICE_SANE_SCANNER, + SOURCE_CHOICE_STAGING, SOURCE_CHOICE_WATCH, SOURCE_CHOICE_WEB_FORM, + SOURCE_CHOICES, SOURCE_INTERACTIVE_UNCOMPRESS_CHOICES, + SOURCE_UNCOMPRESS_CHOICE_N, SOURCE_UNCOMPRESS_CHOICE_Y, + SOURCE_UNCOMPRESS_CHOICES ) from .settings import setting_scanimage_path from .wizards import WizardStep diff --git a/mayan/apps/sources/storages.py b/mayan/apps/sources/storages.py index 2849d8e915..474a980ad0 100644 --- a/mayan/apps/sources/storages.py +++ b/mayan/apps/sources/storages.py @@ -4,7 +4,7 @@ from django.utils.module_loading import import_string from .settings import ( setting_staging_file_image_cache_storage, - setting_staging_file_image_cache_storage_arguments, + setting_staging_file_image_cache_storage_arguments ) storage_staging_file_image_cache = import_string( diff --git a/mayan/apps/sources/tasks.py b/mayan/apps/sources/tasks.py index 74422b9ca5..b8a869f927 100644 --- a/mayan/apps/sources/tasks.py +++ b/mayan/apps/sources/tasks.py @@ -7,12 +7,11 @@ from django.db import OperationalError from django.utils.encoding import force_text from django.utils.translation import ugettext_lazy as _ -from mayan.celery import app - from mayan.apps.common.compressed_files import Archive from mayan.apps.common.exceptions import NoMIMETypeMatch from mayan.apps.lock_manager import LockError from mayan.apps.lock_manager.runtime import locking_backend +from mayan.celery import app from .literals import ( DEFAULT_SOURCE_LOCK_EXPIRE, DEFAULT_SOURCE_TASK_RETRY_DELAY diff --git a/mayan/apps/sources/tests/test_links.py b/mayan/apps/sources/tests/test_links.py index f8708bf326..8c20aa9322 100644 --- a/mayan/apps/sources/tests/test_links.py +++ b/mayan/apps/sources/tests/test_links.py @@ -1,7 +1,7 @@ from __future__ import unicode_literals -from mayan.apps.documents.tests import GenericDocumentViewTestCase from mayan.apps.documents.permissions import permission_document_create +from mayan.apps.documents.tests import GenericDocumentViewTestCase from ..links import link_document_create_multiple diff --git a/mayan/apps/sources/tests/test_models.py b/mayan/apps/sources/tests/test_models.py index b77dde4cd7..affec447a6 100644 --- a/mayan/apps/sources/tests/test_models.py +++ b/mayan/apps/sources/tests/test_models.py @@ -8,13 +8,13 @@ from pathlib2 import Path from django.test import override_settings from django.utils.encoding import force_text -from mayan.apps.common.utils import mkdtemp from mayan.apps.common.tests import BaseTestCase +from mayan.apps.common.utils import mkdtemp from mayan.apps.documents.models import Document, DocumentType from mayan.apps.documents.tests import ( - DocumentTestMixin, TEST_COMPRESSED_DOCUMENT_PATH, TEST_DOCUMENT_TYPE_LABEL, - TEST_NON_ASCII_DOCUMENT_FILENAME, TEST_NON_ASCII_DOCUMENT_PATH, - TEST_NON_ASCII_COMPRESSED_DOCUMENT_PATH + TEST_COMPRESSED_DOCUMENT_PATH, TEST_DOCUMENT_TYPE_LABEL, + TEST_NON_ASCII_COMPRESSED_DOCUMENT_PATH, TEST_NON_ASCII_DOCUMENT_FILENAME, + TEST_NON_ASCII_DOCUMENT_PATH, DocumentTestMixin ) from mayan.apps.metadata.models import MetadataType diff --git a/mayan/apps/sources/tests/test_views.py b/mayan/apps/sources/tests/test_views.py index 8822fe5e54..bf141226a1 100644 --- a/mayan/apps/sources/tests/test_views.py +++ b/mayan/apps/sources/tests/test_views.py @@ -11,9 +11,9 @@ from mayan.apps.common.utils import fs_cleanup, mkdtemp from mayan.apps.documents.models import Document, DocumentType from mayan.apps.documents.permissions import permission_document_create from mayan.apps.documents.tests import ( - GenericDocumentViewTestCase, TEST_DOCUMENT_DESCRIPTION, - TEST_DOCUMENT_TYPE_LABEL, TEST_SMALL_DOCUMENT_CHECKSUM, - TEST_SMALL_DOCUMENT_PATH, + TEST_DOCUMENT_DESCRIPTION, TEST_DOCUMENT_TYPE_LABEL, + TEST_SMALL_DOCUMENT_CHECKSUM, TEST_SMALL_DOCUMENT_PATH, + GenericDocumentViewTestCase ) from ..links import link_upload_version diff --git a/mayan/apps/sources/urls.py b/mayan/apps/sources/urls.py index 01f41a7b68..a34d9d77eb 100644 --- a/mayan/apps/sources/urls.py +++ b/mayan/apps/sources/urls.py @@ -3,7 +3,7 @@ from __future__ import unicode_literals from django.conf.urls import url from .api_views import ( - APIStagingSourceFileView, APIStagingSourceFileImageView, + APIStagingSourceFileImageView, APIStagingSourceFileView, APIStagingSourceListView, APIStagingSourceView ) from .views import ( diff --git a/mayan/apps/sources/utils.py b/mayan/apps/sources/utils.py index 83548762ec..4bf36c41d2 100644 --- a/mayan/apps/sources/utils.py +++ b/mayan/apps/sources/utils.py @@ -1,5 +1,5 @@ from .forms import ( - POP3EmailSetupForm, IMAPEmailSetupForm, SaneScannerSetupForm, + IMAPEmailSetupForm, POP3EmailSetupForm, SaneScannerSetupForm, SaneScannerUploadForm, StagingFolderSetupForm, StagingUploadForm, WatchFolderSetupForm, WebFormSetupForm, WebFormUploadForm ) diff --git a/mayan/apps/sources/views.py b/mayan/apps/sources/views.py index 178e31d557..71bfa1f88f 100644 --- a/mayan/apps/sources/views.py +++ b/mayan/apps/sources/views.py @@ -18,11 +18,11 @@ from mayan.apps.common import menu_facet from mayan.apps.common.models import SharedUploadedFile from mayan.apps.common.utils import encapsulate from mayan.apps.common.views import ( - ConfirmView, MultiFormView, SingleObjectCreateView, - SingleObjectDeleteView, SingleObjectEditView, SingleObjectListView + ConfirmView, MultiFormView, SingleObjectCreateView, SingleObjectDeleteView, + SingleObjectEditView, SingleObjectListView ) from mayan.apps.common.widgets import TwoStateWidget -from mayan.apps.documents.models import DocumentType, Document +from mayan.apps.documents.models import Document, DocumentType from mayan.apps.documents.permissions import ( permission_document_create, permission_document_new_version ) @@ -34,16 +34,14 @@ from .forms import ( NewDocumentForm, NewVersionForm, WebFormUploadForm, WebFormUploadFormHTML5 ) from .icons import icon_log, icon_setup_sources, icon_upload_view_link -from .literals import SOURCE_UNCOMPRESS_CHOICE_ASK, SOURCE_UNCOMPRESS_CHOICE_Y from .links import ( link_setup_source_create_imap_email, link_setup_source_create_pop3_email, + link_setup_source_create_sane_scanner, link_setup_source_create_staging_folder, - link_setup_source_create_watch_folder, link_setup_source_create_webform, - link_setup_source_create_sane_scanner -) -from .models import ( - InteractiveSource, Source, SaneScanner, StagingFolderSource + link_setup_source_create_watch_folder, link_setup_source_create_webform ) +from .literals import SOURCE_UNCOMPRESS_CHOICE_ASK, SOURCE_UNCOMPRESS_CHOICE_Y +from .models import InteractiveSource, SaneScanner, Source, StagingFolderSource from .permissions import ( permission_sources_setup_create, permission_sources_setup_delete, permission_sources_setup_edit, permission_sources_setup_view, diff --git a/mayan/apps/sources/widgets.py b/mayan/apps/sources/widgets.py index 18179969f5..03cf67f289 100644 --- a/mayan/apps/sources/widgets.py +++ b/mayan/apps/sources/widgets.py @@ -3,8 +3,8 @@ from __future__ import unicode_literals from django.template.loader import render_to_string from mayan.apps.documents.settings import ( - setting_preview_width, setting_preview_height, setting_thumbnail_width, - setting_thumbnail_height + setting_preview_height, setting_preview_width, setting_thumbnail_height, + setting_thumbnail_width ) From 8d8ec59e0345d04d769b88308d38c4280f2f0ad5 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Thu, 6 Dec 2018 02:34:15 -0400 Subject: [PATCH 4/8] Django GPG: Setting options changes Remove the SIGNATURES_GPG_HOME settings. The GPG keys are no longer stored in disk but in the database itself making this setting obsolete. This changed happened several versions ago and this removal doesn't affect any code path. Add two new settings to the app: SIGNATURES_GPG_BACKEND and SIGNATURES_GPG_BACKEND_ARGUMENTS. These settings allow changing the GPG backend that the app will use. Remove the settings SIGNATURES_GPG_PATH. The path to the GPG binary is now passed via the SIGNATURES_GPG_BACKEND_ARGUMENTS. Signed-off-by: Roberto Rosario --- HISTORY.rst | 35 +++++++++++++++++++++++++++++++ mayan/apps/django_gpg/classes.py | 5 +++-- mayan/apps/django_gpg/literals.py | 3 +++ mayan/apps/django_gpg/runtime.py | 13 ++++++------ mayan/apps/django_gpg/settings.py | 25 +++++++++++++--------- 5 files changed, 62 insertions(+), 19 deletions(-) diff --git a/HISTORY.rst b/HISTORY.rst index 9d70804d28..f329200ee1 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -111,6 +111,41 @@ The maximum size of the document cache is controlled by the new DOCUMENTS_CACHE_MAXIMUM_SIZE setting. This setting defaults to 500 megabytes. +- Add support for post edit callbacks to settings. This + callback willl execute when a settings's value is changed. +- Switch to full app paths. Instead of inserting the path + of the apps into the Python app, the apps are now + referenced by their full import path. This avoid app name + clashes with external or native Python libraries. + Example: Mayan statistics app vs. Python new statistics library. + Every app reference is now prepended with 'mayan.apps'. + Existing config.yml files need to be updated manually. +- Added a colorized console log formatter. New log formatter + that colors the output depending on the log level of the + message. The default palette handles: INFO, SUCCESS, ERROR, + DEBUG and CRITICAL. +- Decreased the thumbnail fade-in duration. Reduce the + document thumbnail fadein animation length to speed up + display of resolved thumbnails. Seems to reduce browser + load in FireFox. +- Document stubs are now filtered from the search results. +- Replaced deprecated string_concat in preparation for an + eventual Django 2.x upgrade. +- Removed the converter's base64 image support as it was + no longer being used by any stock app. +- Removed the SIGNATURES_GPG_HOME settings. The GPG keys + are no longer stored in disk but in the database itself + making this setting obsolete. This changed happened + several versions ago and this removal doesn't affect + any code path. +- Added two new settings to the django_gpg app: + SIGNATURES_GPG_BACKEND and SIGNATURES_GPG_BACKEND_ARGUMENTS. + These settings allow changing the GPG backend that the + app will use. +- Removed the settings SIGNATURES_GPG_PATH. The path to the + GPG binary is now passed via the + SIGNATURES_GPG_BACKEND_ARGUMENTS. + 3.1.9 (2018-11-01) ================== diff --git a/mayan/apps/django_gpg/classes.py b/mayan/apps/django_gpg/classes.py index 494fe86438..61c3ebc254 100644 --- a/mayan/apps/django_gpg/classes.py +++ b/mayan/apps/django_gpg/classes.py @@ -10,7 +10,8 @@ from mayan.apps.common.utils import mkdtemp class GPGBackend(object): - def __init__(self, **kwargs): + def __init__(self, gpg_path, **kwargs): + self.gpg_path = gpg_path self.kwargs = kwargs @@ -76,7 +77,7 @@ class PythonGNUPGBackend(GPGBackend): os.chmod(temporary_directory, 0x1C0) gpg = gnupg.GPG( - gnupghome=temporary_directory, gpgbinary=self.kwargs['binary_path'] + gnupghome=temporary_directory, gpgbinary=self.gpg_path ) result = function(gpg=gpg, **kwargs) diff --git a/mayan/apps/django_gpg/literals.py b/mayan/apps/django_gpg/literals.py index 6af8911ce9..ab92dc32b2 100644 --- a/mayan/apps/django_gpg/literals.py +++ b/mayan/apps/django_gpg/literals.py @@ -2,6 +2,9 @@ from __future__ import unicode_literals from django.utils.translation import ugettext_lazy as _ +DEFAULT_GPG_PATH = '/usr/bin/gpg1' +DEFAULT_SETTING_GPG_BACKEND = 'mayan.apps.django_gpg.classes.PythonGNUPGBackend' + KEY_TYPES = { 'pub': _('Public'), 'sec': _('Secret'), diff --git a/mayan/apps/django_gpg/runtime.py b/mayan/apps/django_gpg/runtime.py index 250373f711..2f6a38985e 100644 --- a/mayan/apps/django_gpg/runtime.py +++ b/mayan/apps/django_gpg/runtime.py @@ -1,10 +1,9 @@ from django.utils.module_loading import import_string -from .settings import setting_gpg_path - -# TODO: This will become an setting option in 2.2 -SETTING_GPG_BACKEND = 'mayan.apps.django_gpg.classes.PythonGNUPGBackend' - -gpg_backend = import_string(SETTING_GPG_BACKEND)( - binary_path=setting_gpg_path.value +from .settings import ( + setting_gpg_backend, setting_gpg_backend_arguments ) + +gpg_backend = import_string( + dotted_path=setting_gpg_backend.value +)(**setting_gpg_backend_arguments.value) diff --git a/mayan/apps/django_gpg/settings.py b/mayan/apps/django_gpg/settings.py index 0f7aff18aa..2aa72d7b6b 100644 --- a/mayan/apps/django_gpg/settings.py +++ b/mayan/apps/django_gpg/settings.py @@ -7,18 +7,23 @@ from django.utils.translation import ugettext_lazy as _ from mayan.apps.smart_settings import Namespace +from .literals import DEFAULT_GPG_PATH, DEFAULT_SETTING_GPG_BACKEND + namespace = Namespace(name='django_gpg', label=_('Signatures')) -setting_gpg_home = namespace.add_setting( - global_name='SIGNATURES_GPG_HOME', - default=os.path.join(settings.MEDIA_ROOT, 'gpg_home'), - help_text=_( - 'Home directory used to store keys as well as configuration files.' - ), - is_path=True + +setting_gpg_backend = namespace.add_setting( + default=DEFAULT_SETTING_GPG_BACKEND, + global_name='SIGNATURES_GPG_BACKEND', help_text=_( + 'Path to the GPG class to use when managing keys.' + ) ) -setting_gpg_path = namespace.add_setting( - global_name='SIGNATURES_GPG_PATH', default='/usr/bin/gpg1', - help_text=_('Path to the GPG binary.'), is_path=True +setting_gpg_backend_arguments = namespace.add_setting( + global_name='SIGNATURES_GPG_BACKEND_ARGUMENTS', + default={ + 'gpg_path': DEFAULT_GPG_PATH + }, help_text=_( + 'Arguments to pass to the SIGNATURES_GPG_BACKEND. ' + ) ) setting_keyserver = namespace.add_setting( global_name='SIGNATURES_KEYSERVER', default='pool.sks-keyservers.net', From d1a4cb875b058b5284281020dcab6842d18815c0 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Thu, 6 Dec 2018 02:37:25 -0400 Subject: [PATCH 5/8] Document signatures: Rename settings Rename the setting "SIGNATURES_STORAGE_BACKEND" to "DOCUMENT_SIGNATURES_STORAGE_BACKEND" and the setting "SIGNATURES_STORAGE_BACKEND_ARGUMENTS" to "DOCUMENT_SIGNATURES_STORAGE_BACKEND_ARGUMENTS". This is to differentiate these from the settings of the django_gpg app. Signed-off-by: Roberto Rosario --- HISTORY.rst | 7 ++++++- mayan/apps/document_signatures/settings.py | 4 ++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/HISTORY.rst b/HISTORY.rst index f329200ee1..5443785348 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -145,7 +145,12 @@ - Removed the settings SIGNATURES_GPG_PATH. The path to the GPG binary is now passed via the SIGNATURES_GPG_BACKEND_ARGUMENTS. - +- Renamed the setting ``SIGNATURES_STORAGE_BACKEND`` to + ``DOCUMENT_SIGNATURES_STORAGE_BACKEND`` and the setting + ``SIGNATURES_STORAGE_BACKEND_ARGUMENTS`` to + ``DOCUMENT_SIGNATURES_STORAGE_BACKEND_ARGUMENTS``. This + change differentiates them from the setting from the + django_gpg app. 3.1.9 (2018-11-01) ================== diff --git a/mayan/apps/document_signatures/settings.py b/mayan/apps/document_signatures/settings.py index bc6d6c6a36..4632d0b1c4 100644 --- a/mayan/apps/document_signatures/settings.py +++ b/mayan/apps/document_signatures/settings.py @@ -10,13 +10,13 @@ from mayan.apps.smart_settings import Namespace namespace = Namespace(name='signatures', label=_('Document signatures')) setting_storage_backend = namespace.add_setting( default='django.core.files.storage.FileSystemStorage', - global_name='SIGNATURES_STORAGE_BACKEND', help_text=_( + global_name='DOCUMENT_SIGNATURES_STORAGE_BACKEND', help_text=_( 'Path to the Storage subclass to use when storing detached ' 'signatures.' ) ) setting_storage_backend_arguments = namespace.add_setting( - global_name='SIGNATURES_STORAGE_BACKEND_ARGUMENTS', + global_name='DOCUMENT_SIGNATURES_STORAGE_BACKEND_ARGUMENTS', default={ 'location': os.path.join(settings.MEDIA_ROOT, 'document_signatures') }, help_text=_( From d6435b7735e438392429fb7727cc2c0507b2ccc7 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Thu, 6 Dec 2018 02:58:40 -0400 Subject: [PATCH 6/8] Django GPG: 3rd party app compatibility update Update the django_gpg app to work with the latest version of the python-gnupg package (0.4.3). The python-gnupg now returns a more clear error message to differentiate between a bad passphrase and a missing passphrase. This improments allows the django_gpg to simplify its error message parsing and remove the literals: "ERROR_MSG_NEED_PASSPHRASE" and "ERROR_MSG_GOOD_PASSPHRASE". Signed-off-by: Roberto Rosario --- HISTORY.rst | 3 +++ mayan/apps/django_gpg/literals.py | 11 +++++------ mayan/apps/django_gpg/models.py | 15 +++++++-------- mayan/apps/django_gpg/settings.py | 3 --- 4 files changed, 15 insertions(+), 17 deletions(-) diff --git a/HISTORY.rst b/HISTORY.rst index 5443785348..e7a2169b23 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -151,6 +151,9 @@ ``DOCUMENT_SIGNATURES_STORAGE_BACKEND_ARGUMENTS``. This change differentiates them from the setting from the django_gpg app. +- Updated the django_gpg app to work with the latest + version of the python-gnupg package (0.4.3). + 3.1.9 (2018-11-01) ================== diff --git a/mayan/apps/django_gpg/literals.py b/mayan/apps/django_gpg/literals.py index ab92dc32b2..108a94bb6b 100644 --- a/mayan/apps/django_gpg/literals.py +++ b/mayan/apps/django_gpg/literals.py @@ -5,6 +5,9 @@ from django.utils.translation import ugettext_lazy as _ DEFAULT_GPG_PATH = '/usr/bin/gpg1' DEFAULT_SETTING_GPG_BACKEND = 'mayan.apps.django_gpg.classes.PythonGNUPGBackend' +ERROR_MSG_BAD_PASSPHRASE = 'BAD_PASSPHRASE' +ERROR_MSG_MISSING_PASSPHRASE = 'MISSING_PASSPHRASE' + KEY_TYPES = { 'pub': _('Public'), 'sec': _('Secret'), @@ -34,13 +37,14 @@ KEY_SECONDARY_CLASSES = ( KEYSERVER_DEFAULT_PORT = 11371 +OUTPUT_MESSAGE_CONTAINS_PRIVATE_KEY = 'Contains private key' + SIGNATURE_STATE_BAD = 'signature bad' SIGNATURE_STATE_NONE = None SIGNATURE_STATE_ERROR = 'signature error' SIGNATURE_STATE_NO_PUBLIC_KEY = 'no public key' SIGNATURE_STATE_GOOD = 'signature good' SIGNATURE_STATE_VALID = 'signature valid' - SIGNATURE_STATES = { SIGNATURE_STATE_BAD: { 'text': _('Bad signature.'), @@ -64,8 +68,3 @@ SIGNATURE_STATES = { 'text': _('Document is signed with a valid signature.'), }, } - -ERROR_MSG_NEED_PASSPHRASE = 'NEED_PASSPHRASE' -ERROR_MSG_BAD_PASSPHRASE = 'BAD_PASSPHRASE' -ERROR_MSG_GOOD_PASSPHRASE = 'GOOD_PASSPHRASE' -OUTPUT_MESSAGE_CONTAINS_PRIVATE_KEY = 'Contains private key' diff --git a/mayan/apps/django_gpg/models.py b/mayan/apps/django_gpg/models.py index 1731532efb..129d197168 100644 --- a/mayan/apps/django_gpg/models.py +++ b/mayan/apps/django_gpg/models.py @@ -11,9 +11,8 @@ from django.utils.translation import ugettext_lazy as _ from .exceptions import NeedPassphrase, PassphraseError from .literals import ( - ERROR_MSG_NEED_PASSPHRASE, ERROR_MSG_BAD_PASSPHRASE, - ERROR_MSG_GOOD_PASSPHRASE, KEY_TYPE_CHOICES, KEY_TYPE_SECRET, - OUTPUT_MESSAGE_CONTAINS_PRIVATE_KEY + ERROR_MSG_BAD_PASSPHRASE, ERROR_MSG_MISSING_PASSPHRASE, + KEY_TYPE_CHOICES, KEY_TYPE_SECRET, OUTPUT_MESSAGE_CONTAINS_PRIVATE_KEY ) from .managers import KeyManager from .runtime import gpg_backend @@ -124,10 +123,10 @@ class Key(models.Model): logger.debug('file_sign_results.stderr: %s', file_sign_results.stderr) - if ERROR_MSG_NEED_PASSPHRASE in file_sign_results.stderr: - if ERROR_MSG_BAD_PASSPHRASE in file_sign_results.stderr: - raise PassphraseError - elif ERROR_MSG_GOOD_PASSPHRASE not in file_sign_results.stderr: - raise NeedPassphrase + if ERROR_MSG_MISSING_PASSPHRASE in file_sign_results.stderr: + raise NeedPassphrase + + if ERROR_MSG_BAD_PASSPHRASE in file_sign_results.stderr: + raise PassphraseError return file_sign_results diff --git a/mayan/apps/django_gpg/settings.py b/mayan/apps/django_gpg/settings.py index 2aa72d7b6b..87171619db 100644 --- a/mayan/apps/django_gpg/settings.py +++ b/mayan/apps/django_gpg/settings.py @@ -1,8 +1,5 @@ from __future__ import unicode_literals -import os - -from django.conf import settings from django.utils.translation import ugettext_lazy as _ from mayan.apps.smart_settings import Namespace From ef126d56b2cae18dc5b06957bfed826df948eca2 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Thu, 6 Dec 2018 03:04:53 -0400 Subject: [PATCH 7/8] Documents: Allow version upload task stubs access Update which Document model manager the new version upload task uses to fetch the document. Changing to the passthrough manager allows the task to access document stubs which is the expected behavior as new document with no versions are considered stubs. Signed-off-by: Roberto Rosario --- mayan/apps/documents/tasks.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mayan/apps/documents/tasks.py b/mayan/apps/documents/tasks.py index 0c12091291..19694d1abd 100644 --- a/mayan/apps/documents/tasks.py +++ b/mayan/apps/documents/tasks.py @@ -179,7 +179,7 @@ def task_upload_new_version(self, document_id, shared_uploaded_file_id, user_id, ) try: - document = Document.objects.get(pk=document_id) + document = Document.passthrough.get(pk=document_id) shared_file = SharedUploadedFile.objects.get( pk=shared_uploaded_file_id ) From dc255da3628334531ddbf362237714731d344a09 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Thu, 6 Dec 2018 05:08:35 -0400 Subject: [PATCH 8/8] Multiple apps: Default binary path by platform Use Python's platform library to detect the operating system and use different default paths for the binary dependencies. Signed-off-by: Roberto Rosario --- HISTORY.rst | 3 ++- mayan/apps/converter/literals.py | 21 ++++++++++++++------- mayan/apps/django_gpg/literals.py | 8 +++++++- mayan/apps/document_parsing/literals.py | 8 ++++++++ mayan/apps/document_parsing/settings.py | 4 +++- mayan/apps/sources/literals.py | 7 +++++++ mayan/apps/sources/settings.py | 4 +++- 7 files changed, 44 insertions(+), 11 deletions(-) create mode 100644 mayan/apps/document_parsing/literals.py diff --git a/HISTORY.rst b/HISTORY.rst index e7a2169b23..23977f1943 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -153,7 +153,8 @@ django_gpg app. - Updated the django_gpg app to work with the latest version of the python-gnupg package (0.4.3). - +- Set sensible default path for binaries by detecting + the operating system. 3.1.9 (2018-11-01) ================== diff --git a/mayan/apps/converter/literals.py b/mayan/apps/converter/literals.py index f631e9bb58..3f36cf6500 100644 --- a/mayan/apps/converter/literals.py +++ b/mayan/apps/converter/literals.py @@ -1,14 +1,21 @@ from __future__ import unicode_literals +import platform + CHUNK_SIZE = 1024 -DEFAULT_ZOOM_LEVEL = 100 -DEFAULT_ROTATION = 0 -DEFAULT_PAGE_NUMBER = 1 -DEFAULT_PILLOW_FORMAT = 'JPEG' -DEFAULT_LIBREOFFICE_PATH = '/usr/bin/libreoffice' +if platform.system() == 'OpenBSD': + DEFAULT_LIBREOFFICE_PATH = '/usr/local/bin/libreoffice' + DEFAULT_PDFINFO_PATH = '/usr/local/bin/pdfinfo' + DEFAULT_PDFTOPPM_PATH = '/usr/local/bin/pdftoppm' +else: + DEFAULT_LIBREOFFICE_PATH = '/usr/bin/libreoffice' + DEFAULT_PDFINFO_PATH = '/usr/bin/pdfinfo' + DEFAULT_PDFTOPPM_PATH = '/usr/bin/pdftoppm' +DEFAULT_PAGE_NUMBER = 1 DEFAULT_PDFTOPPM_DPI = 300 DEFAULT_PDFTOPPM_FORMAT = 'jpeg' # Possible values jpeg, png, tiff -DEFAULT_PDFTOPPM_PATH = '/usr/bin/pdftoppm' -DEFAULT_PDFINFO_PATH = '/usr/bin/pdfinfo' +DEFAULT_PILLOW_FORMAT = 'JPEG' +DEFAULT_ROTATION = 0 +DEFAULT_ZOOM_LEVEL = 100 diff --git a/mayan/apps/django_gpg/literals.py b/mayan/apps/django_gpg/literals.py index 108a94bb6b..9567ea6987 100644 --- a/mayan/apps/django_gpg/literals.py +++ b/mayan/apps/django_gpg/literals.py @@ -1,8 +1,14 @@ from __future__ import unicode_literals +import platform + from django.utils.translation import ugettext_lazy as _ -DEFAULT_GPG_PATH = '/usr/bin/gpg1' +if platform.system() == 'OpenBSD': + DEFAULT_GPG_PATH = '/usr/local/bin/gpg' +else: + DEFAULT_GPG_PATH = '/usr/bin/gpg1' + DEFAULT_SETTING_GPG_BACKEND = 'mayan.apps.django_gpg.classes.PythonGNUPGBackend' ERROR_MSG_BAD_PASSPHRASE = 'BAD_PASSPHRASE' diff --git a/mayan/apps/document_parsing/literals.py b/mayan/apps/document_parsing/literals.py new file mode 100644 index 0000000000..4de1072ce4 --- /dev/null +++ b/mayan/apps/document_parsing/literals.py @@ -0,0 +1,8 @@ +from __future__ import unicode_literals + +import platform + +if platform.system() == 'OpenBSD': + DEFAULT_PDFTOTEXT_PATH = '/usr/local/bin/pdftotext' +else: + DEFAULT_PDFTOTEXT_PATH = '/usr/bin/pdftotext' diff --git a/mayan/apps/document_parsing/settings.py b/mayan/apps/document_parsing/settings.py index 1e9dd9f368..fd920cafcc 100644 --- a/mayan/apps/document_parsing/settings.py +++ b/mayan/apps/document_parsing/settings.py @@ -4,6 +4,8 @@ from django.utils.translation import ugettext_lazy as _ from mayan.apps.smart_settings import Namespace +from .literals import DEFAULT_PDFTOTEXT_PATH + namespace = Namespace(name='document_parsing', label=_('Document parsing')) setting_auto_parsing = namespace.add_setting( @@ -14,7 +16,7 @@ setting_auto_parsing = namespace.add_setting( ) setting_pdftotext_path = namespace.add_setting( global_name='DOCUMENT_PARSING_PDFTOTEXT_PATH', - default='/usr/bin/pdftotext', + default=DEFAULT_PDFTOTEXT_PATH, help_text=_( 'File path to poppler\'s pdftotext program used to extract text ' 'from PDF files.' diff --git a/mayan/apps/sources/literals.py b/mayan/apps/sources/literals.py index ee01737193..40097ba537 100644 --- a/mayan/apps/sources/literals.py +++ b/mayan/apps/sources/literals.py @@ -1,7 +1,14 @@ from __future__ import unicode_literals +import platform + from django.utils.translation import ugettext_lazy as _ +if platform.system() == 'OpenBSD': + DEFAULT_SCANIMAGE_PATH = '/usr/local/bin/scanimage' +else: + DEFAULT_SCANIMAGE_PATH = '/usr/bin/scanimage' + DEFAULT_IMAP_MAILBOX = 'INBOX' DEFAULT_INTERVAL = 600 DEFAULT_METADATA_ATTACHMENT_NAME = 'metadata.yaml' diff --git a/mayan/apps/sources/settings.py b/mayan/apps/sources/settings.py index f35e989e67..4bf8778ac7 100644 --- a/mayan/apps/sources/settings.py +++ b/mayan/apps/sources/settings.py @@ -7,10 +7,12 @@ from django.utils.translation import ugettext_lazy as _ from mayan.apps.smart_settings import Namespace +from .literals import DEFAULT_SCANIMAGE_PATH + namespace = Namespace(name='sources', label=_('Sources')) setting_scanimage_path = namespace.add_setting( - global_name='SOURCES_SCANIMAGE_PATH', default='/usr/bin/scanimage', + global_name='SOURCES_SCANIMAGE_PATH', default=DEFAULT_SCANIMAGE_PATH, help_text=_( 'File path to the scanimage program used to control image scanners.' ),