diff --git a/mayan/apps/acls/links.py b/mayan/apps/acls/links.py index 672c659919..76c22cbf83 100644 --- a/mayan/apps/acls/links.py +++ b/mayan/apps/acls/links.py @@ -10,7 +10,9 @@ from .permissions import permission_acl_view, permission_acl_edit def get_kwargs_factory(variable_name): def get_kwargs(context): - content_type = ContentType.objects.get_for_model(context[variable_name]) + content_type = ContentType.objects.get_for_model( + context[variable_name] + ) return { 'app_label': '"{}"'.format(content_type.app_label), 'model': '"{}"'.format(content_type.model), diff --git a/mayan/apps/acls/urls.py b/mayan/apps/acls/urls.py index 135091e26d..3f587169ac 100644 --- a/mayan/apps/acls/urls.py +++ b/mayan/apps/acls/urls.py @@ -2,7 +2,9 @@ from __future__ import unicode_literals from django.conf.urls import patterns, url -from .views import ACLCreateView, ACLDeleteView, ACLListView, ACLPermissionsView +from .views import ( + ACLCreateView, ACLDeleteView, ACLListView, ACLPermissionsView +) urlpatterns = patterns( 'acls.views', diff --git a/mayan/apps/authentication/tests/test_views.py b/mayan/apps/authentication/tests/test_views.py index fea9faba5c..4f2def5de2 100644 --- a/mayan/apps/authentication/tests/test_views.py +++ b/mayan/apps/authentication/tests/test_views.py @@ -11,6 +11,7 @@ from ..settings import setting_login_method TEST_ADMIN_EMAIL = 'admin@admin.com' TEST_ADMIN_PASSWORD = 'test_admin_password' TEST_ADMIN_USERNAME = 'test_admin' +TEST_EMAIL_AUTHENTICATION_BACKEND = 'authentication.auth.email_auth_backend.EmailAuthBackend' class UserLoginTestCase(TestCase): @@ -43,7 +44,7 @@ class UserLoginTestCase(TestCase): self.assertEqual(response.status_code, 200) def test_email_login(self): - with self.settings(AUTHENTICATION_BACKENDS=('authentication.auth.email_auth_backend.EmailAuthBackend',)): + with self.settings(AUTHENTICATION_BACKENDS=(TEST_EMAIL_AUTHENTICATION_BACKEND,)): setting_login_method.value = 'email' logged_in = self.client.login( @@ -78,7 +79,7 @@ class UserLoginTestCase(TestCase): self.assertEqual(response.status_code, 200) def test_email_login_via_views(self): - with self.settings(AUTHENTICATION_BACKENDS=('authentication.auth.email_auth_backend.EmailAuthBackend',)): + with self.settings(AUTHENTICATION_BACKENDS=(TEST_EMAIL_AUTHENTICATION_BACKEND,)): setting_login_method.value = 'email' response = self.client.get(reverse('documents:document_list')) self.assertRedirects( diff --git a/mayan/apps/checkouts/api_views.py b/mayan/apps/checkouts/api_views.py index 423757dfd4..939cf28f1d 100644 --- a/mayan/apps/checkouts/api_views.py +++ b/mayan/apps/checkouts/api_views.py @@ -118,7 +118,9 @@ class APICheckedoutDocumentView(generics.RetrieveDestroyAPIView): filtered_documents = documents return DocumentCheckout.objects.filter( - document__pk__in=filtered_documents.values_list('pk', flat=True) + document__pk__in=filtered_documents.values_list( + 'pk', flat=True + ) ) elif self.request.method == 'DELETE': return DocumentCheckout.objects.all() @@ -155,7 +157,10 @@ class APICheckedoutDocumentView(generics.RetrieveDestroyAPIView): ) except PermissionDenied: AccessControlList.objects.check_access( - permission_document_checkin_override, request.user, document + permission_document_checkin_override, request.user, + document ) - return super(APICheckedoutDocumentView, self).delete(request, *args, **kwargs) + return super( + APICheckedoutDocumentView, self + ).delete(request, *args, **kwargs) diff --git a/mayan/apps/checkouts/handlers.py b/mayan/apps/checkouts/handlers.py index a339365af9..0c86d724e5 100644 --- a/mayan/apps/checkouts/handlers.py +++ b/mayan/apps/checkouts/handlers.py @@ -10,6 +10,7 @@ def check_if_new_versions_allowed(sender, **kwargs): if not DocumentCheckout.objects.are_document_new_versions_allowed(kwargs['instance'].document): raise NewDocumentVersionNotAllowed( _( - 'New versions not allowed for the checkedout document: %s' % kwargs['instance'].document + 'New versions not allowed for the checkedout document: %s' + % kwargs['instance'].document ) ) diff --git a/mayan/apps/checkouts/migrations/0001_initial.py b/mayan/apps/checkouts/migrations/0001_initial.py index d7fcead6e2..672c598657 100644 --- a/mayan/apps/checkouts/migrations/0001_initial.py +++ b/mayan/apps/checkouts/migrations/0001_initial.py @@ -15,13 +15,53 @@ class Migration(migrations.Migration): migrations.CreateModel( name='DocumentCheckout', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('checkout_datetime', models.DateTimeField(auto_now_add=True, verbose_name='Check out date and time')), - ('expiration_datetime', models.DateTimeField(help_text='Amount of time to hold the document checked out in minutes.', verbose_name='Check out expiration date and time')), - ('user_object_id', models.PositiveIntegerField(null=True, blank=True)), - ('block_new_version', models.BooleanField(default=True, help_text='Do not allow new version of this document to be uploaded.', verbose_name='Block new version upload')), - ('document', models.ForeignKey(verbose_name='Document', to='documents.Document', unique=True)), - ('user_content_type', models.ForeignKey(blank=True, to='contenttypes.ContentType', null=True)), + ( + 'id', models.AutoField( + verbose_name='ID', serialize=False, auto_created=True, + primary_key=True + ) + ), + ( + 'checkout_datetime', + models.DateTimeField( + auto_now_add=True, + verbose_name='Check out date and time' + ) + ), + ( + 'expiration_datetime', + models.DateTimeField( + help_text='Amount of time to hold the document ' + 'checked out in minutes.', + verbose_name='Check out expiration date and time' + ) + ), + ( + 'user_object_id', + models.PositiveIntegerField(null=True, blank=True) + ), + ( + 'block_new_version', + models.BooleanField( + default=True, + help_text='Do not allow new version of this document ' + 'to be uploaded.', + verbose_name='Block new version upload' + ) + ), + ( + 'document', + models.ForeignKey( + verbose_name='Document', to='documents.Document', + unique=True + ) + ), + ( + 'user_content_type', + models.ForeignKey( + blank=True, to='contenttypes.ContentType', null=True + ) + ), ], options={ 'verbose_name': 'Document checkout', diff --git a/mayan/apps/checkouts/migrations/0002_documentcheckout_user.py b/mayan/apps/checkouts/migrations/0002_documentcheckout_user.py index abd1db2b9b..1a7a768002 100644 --- a/mayan/apps/checkouts/migrations/0002_documentcheckout_user.py +++ b/mayan/apps/checkouts/migrations/0002_documentcheckout_user.py @@ -16,7 +16,10 @@ class Migration(migrations.Migration): migrations.AddField( model_name='documentcheckout', name='user', - field=models.ForeignKey(verbose_name='User', blank=True, to=settings.AUTH_USER_MODEL, null=True), + field=models.ForeignKey( + verbose_name='User', blank=True, to=settings.AUTH_USER_MODEL, + null=True + ), preserve_default=True, ), ] diff --git a/mayan/apps/checkouts/migrations/0003_auto_20150617_0325.py b/mayan/apps/checkouts/migrations/0003_auto_20150617_0325.py index 10690079c7..a15857e4b9 100644 --- a/mayan/apps/checkouts/migrations/0003_auto_20150617_0325.py +++ b/mayan/apps/checkouts/migrations/0003_auto_20150617_0325.py @@ -23,5 +23,7 @@ class Migration(migrations.Migration): ] operations = [ - migrations.RunPython(move_from_content_type_user_to_foreign_key_field_user), + migrations.RunPython( + move_from_content_type_user_to_foreign_key_field_user + ), ] diff --git a/mayan/apps/checkouts/migrations/0004_auto_20150617_0330.py b/mayan/apps/checkouts/migrations/0004_auto_20150617_0330.py index f2a15bc655..ccf63f23d5 100644 --- a/mayan/apps/checkouts/migrations/0004_auto_20150617_0330.py +++ b/mayan/apps/checkouts/migrations/0004_auto_20150617_0330.py @@ -23,7 +23,9 @@ class Migration(migrations.Migration): migrations.AlterField( model_name='documentcheckout', name='user', - field=models.ForeignKey(verbose_name='User', to=settings.AUTH_USER_MODEL), + field=models.ForeignKey( + verbose_name='User', to=settings.AUTH_USER_MODEL + ), preserve_default=True, ), ] diff --git a/mayan/apps/checkouts/widgets.py b/mayan/apps/checkouts/widgets.py index 131d03fe91..9045f17b9f 100644 --- a/mayan/apps/checkouts/widgets.py +++ b/mayan/apps/checkouts/widgets.py @@ -11,7 +11,8 @@ from common.literals import TIME_DELTA_UNIT_CHOICES class SplitTimeDeltaWidget(forms.widgets.MultiWidget): """ - A Widget that splits a timedelta input into three boxes. + A Widget that splits a timedelta input into three + boxes. """ def __init__(self, attrs=None): diff --git a/mayan/apps/common/classes.py b/mayan/apps/common/classes.py index 65740911a7..c3297e79c6 100644 --- a/mayan/apps/common/classes.py +++ b/mayan/apps/common/classes.py @@ -18,8 +18,8 @@ class ModelAttribute(object): return result except IndexError: - # We were passed a model instance, try again using the model of the - # instance + # We were passed a model instance, try again using the model of + # the instance # If we are already in the model class, exit with an error if model.__class__ == models.base.ModelBase: @@ -30,16 +30,24 @@ class ModelAttribute(object): @classmethod def get_choices_for(cls, model, type_names=None): return [ - (attribute.name, attribute) for attribute in cls.get_for(model, type_names) + ( + attribute.name, attribute + ) for attribute in cls.get_for(model, type_names) ] @classmethod def help_text_for(cls, model, type_names=None): result = [] for count, attribute in enumerate(cls.get_for(model, type_names), 1): - result.append('{}) {}'.format(count, unicode(attribute.get_display(show_name=True)))) + result.append( + '{}) {}'.format( + count, unicode(attribute.get_display(show_name=True)) + ) + ) - return ' '.join([ugettext('Available attributes: '), ', '.join(result)]) + return ' '.join( + [ugettext('Available attributes: '), ', '.join(result)] + ) def get_display(self, show_name=False): if self.description: diff --git a/mayan/apps/common/compressed_files.py b/mayan/apps/common/compressed_files.py index 156da1e445..5fc80e2998 100644 --- a/mayan/apps/common/compressed_files.py +++ b/mayan/apps/common/compressed_files.py @@ -101,7 +101,9 @@ class CompressedFile(object): filename for filename in zfobj.namelist() if not filename.endswith('/') ] return ( - SimpleUploadedFile(name=filename, content=zfobj.read(filename)) for filename in filenames + SimpleUploadedFile( + name=filename, content=zfobj.read(filename) + ) for filename in filenames ) except zipfile.BadZipfile: raise NotACompressedFile diff --git a/mayan/apps/common/forms.py b/mayan/apps/common/forms.py index a18a68736f..5dd18151fb 100644 --- a/mayan/apps/common/forms.py +++ b/mayan/apps/common/forms.py @@ -54,7 +54,9 @@ class DetailForm(forms.ModelForm): self.fields[field_name].help_text = '' for field_name, field in self.fields.items(): - self.fields[field_name].widget.attrs.update({'readonly': 'readonly'}) + self.fields[field_name].widget.attrs.update( + {'readonly': 'readonly'} + ) class ChoiceForm(forms.Form): diff --git a/mayan/apps/common/generics.py b/mayan/apps/common/generics.py index df9b03c2f3..cf693bcfca 100644 --- a/mayan/apps/common/generics.py +++ b/mayan/apps/common/generics.py @@ -4,11 +4,9 @@ from django.conf import settings from django.contrib import messages from django.contrib.auth.models import User from django.contrib.contenttypes.models import ContentType -from django.core.exceptions import ImproperlyConfigured -from django.http import Http404, HttpResponseRedirect +from django.http import HttpResponseRedirect from django.utils.translation import ugettext_lazy as _ from django.views.generic import FormView, TemplateView -from django.views.generic.detail import SingleObjectMixin from django.views.generic.edit import CreateView, DeleteView, UpdateView from django.views.generic.list import ListView @@ -110,7 +108,9 @@ class AssignRemoveView(ExtraContextMixin, ViewPermissionCheckMixin, ObjectPermis label = dict(flat_list)[selection] if self.decode_content_type: model, pk = selection.split(',') - selection_obj = ContentType.objects.get(model=model).get_object_for_this_type(pk=pk) + selection_obj = ContentType.objects.get( + model=model + ).get_object_for_this_type(pk=pk) else: selection_obj = selection @@ -202,7 +202,9 @@ class MultiFormView(FormView): def get_forms(self, form_classes): return dict( [ - (key, self._create_form(key, klass)) for key, klass in form_classes.items() + ( + key, self._create_form(key, klass) + ) for key, klass in form_classes.items() ] ) @@ -270,7 +272,9 @@ class SingleObjectCreateView(ViewPermissionCheckMixin, ExtraContextMixin, Redire try: messages.success( self.request, - _('%s created successfully.') % self.extra_context['object_name'].capitalize() + _( + '%s created successfully.' + ) % self.extra_context['object_name'].capitalize() ) except KeyError: messages.success( @@ -294,7 +298,8 @@ class SingleObjectDeleteView(ViewPermissionCheckMixin, ObjectPermissionCheckMixi except Exception as exception: try: messages.error( - self.request, _('Error deleting %s.') % self.extra_context['object_name'] + self.request, + _('Error deleting %s.') % self.extra_context['object_name'] ) except KeyError: messages.error( @@ -305,7 +310,10 @@ class SingleObjectDeleteView(ViewPermissionCheckMixin, ObjectPermissionCheckMixi else: try: messages.success( - self.request, _('%s deleted successfully.') % self.extra_context['object_name'].capitalize() + self.request, + _( + '%s deleted successfully.' + ) % self.extra_context['object_name'].capitalize() ) except KeyError: messages.success( @@ -325,7 +333,10 @@ class SingleObjectEditView(ViewPermissionCheckMixin, ObjectPermissionCheckMixin, try: messages.error( - self.request, _('Error saving %s details.') % self.extra_context['object_name'] + self.request, + _( + 'Error saving %s details.' + ) % self.extra_context['object_name'] ) except KeyError: messages.error( @@ -339,7 +350,10 @@ class SingleObjectEditView(ViewPermissionCheckMixin, ObjectPermissionCheckMixin, try: messages.success( - self.request, _('%s details saved successfully.') % self.extra_context['object_name'].capitalize() + self.request, + _( + '%s details saved successfully.' + ) % self.extra_context['object_name'].capitalize() ) except KeyError: messages.success( @@ -354,4 +368,3 @@ class SingleObjectListView(PaginationMixin, ViewPermissionCheckMixin, ObjectList def get_paginate_by(self, queryset): return setting_paginate_by.value - diff --git a/mayan/apps/common/middleware/ajax_redirect.py b/mayan/apps/common/middleware/ajax_redirect.py index 5d8d8935a2..805ced8478 100644 --- a/mayan/apps/common/middleware/ajax_redirect.py +++ b/mayan/apps/common/middleware/ajax_redirect.py @@ -8,5 +8,7 @@ class AjaxRedirect(object): def process_response(self, request, response): if request.is_ajax(): if type(response) == HttpResponseRedirect: - response.status_code = getattr(settings, 'AJAX_REDIRECT_CODE', 302) + response.status_code = getattr( + settings, 'AJAX_REDIRECT_CODE', 302 + ) return response diff --git a/mayan/apps/common/migrations/0001_initial.py b/mayan/apps/common/migrations/0001_initial.py index 201e33c31a..2f885d2550 100644 --- a/mayan/apps/common/migrations/0001_initial.py +++ b/mayan/apps/common/migrations/0001_initial.py @@ -17,7 +17,12 @@ class Migration(migrations.Migration): migrations.CreateModel( name='AnonymousUserSingleton', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ( + 'id', models.AutoField( + verbose_name='ID', serialize=False, auto_created=True, + primary_key=True + ) + ), ], options={ 'verbose_name': 'Anonymous user', @@ -28,10 +33,31 @@ class Migration(migrations.Migration): migrations.CreateModel( name='AutoAdminSingleton', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('password', models.CharField(max_length=128, null=True, verbose_name='Password', blank=True)), - ('password_hash', models.CharField(max_length=128, null=True, verbose_name='Password hash', blank=True)), - ('account', models.ForeignKey(related_name='auto_admin_account', verbose_name='Account', blank=True, to=settings.AUTH_USER_MODEL, null=True)), + ( + 'id', models.AutoField( + verbose_name='ID', serialize=False, auto_created=True, + primary_key=True + ) + ), + ( + 'password', models.CharField( + max_length=128, null=True, verbose_name='Password', + blank=True + ) + ), + ( + 'password_hash', models.CharField( + max_length=128, null=True, + verbose_name='Password hash', blank=True + ) + ), + ( + 'account', models.ForeignKey( + related_name='auto_admin_account', + verbose_name='Account', blank=True, + to=settings.AUTH_USER_MODEL, null=True + ) + ), ], options={ 'verbose_name': 'Auto admin properties', @@ -42,10 +68,29 @@ class Migration(migrations.Migration): migrations.CreateModel( name='SharedUploadedFile', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('file', models.FileField(upload_to=common.models.upload_to, storage=storage.backends.filebasedstorage.FileBasedStorage(), verbose_name='File')), - ('filename', models.CharField(max_length=255, verbose_name='Filename')), - ('datatime', models.DateTimeField(auto_now_add=True, verbose_name='Date time')), + ( + 'id', models.AutoField( + verbose_name='ID', serialize=False, auto_created=True, + primary_key=True + ) + ), + ( + 'file', models.FileField( + upload_to=common.models.upload_to, + storage=storage.backends.filebasedstorage.FileBasedStorage(), + verbose_name='File' + ) + ), + ( + 'filename', models.CharField( + max_length=255, verbose_name='Filename' + ) + ), + ( + 'datatime', models.DateTimeField( + auto_now_add=True, verbose_name='Date time' + ) + ), ], options={ 'verbose_name': 'Shared uploaded file', @@ -56,10 +101,582 @@ class Migration(migrations.Migration): migrations.CreateModel( name='UserLocaleProfile', fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('timezone', models.CharField(max_length=48, verbose_name='Timezone', 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/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/Montreal', b'America/Montreal'), (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/Santa_Isabel', b'America/Santa_Isabel'), (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/Beirut', b'Asia/Beirut'), (b'Asia/Bishkek', b'Asia/Bishkek'), (b'Asia/Brunei', b'Asia/Brunei'), (b'Asia/Choibalsan', b'Asia/Choibalsan'), (b'Asia/Chongqing', b'Asia/Chongqing'), (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/Harbin', b'Asia/Harbin'), (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/Kashgar', b'Asia/Kashgar'), (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/Rangoon', b'Asia/Rangoon'), (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/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/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/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/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/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/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/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')])), - ('language', models.CharField(max_length=8, verbose_name='Language', choices=[('ar', 'Arabic'), ('bg', 'Bulgarian'), ('bs', 'Bosnian (Bosnia and Herzegovina)'), ('da', 'Danish'), ('de', 'German (Germany)'), ('en', 'English'), ('es', 'Spanish'), ('fa', 'Persian'), ('fr', 'French'), ('hu', 'Hungarian'), ('hr', 'Croatian'), ('id', 'Indonesian'), ('it', 'Italian'), ('nl', 'Dutch (Nethherlands)'), ('pl', 'Polish'), ('pt', 'Portuguese'), ('pt-br', 'Portuguese (Brazil)'), ('ro', 'Romanian (Romania)'), ('ru', 'Russian'), ('sl', 'Slovenian'), ('tr', 'Turkish'), ('vi', 'Vietnamese (Viet Nam)'), ('zh-cn', 'Chinese (China)')])), - ('user', models.OneToOneField(related_name='locale_profile', verbose_name='User', to=settings.AUTH_USER_MODEL)), + ( + 'id', models.AutoField( + verbose_name='ID', serialize=False, auto_created=True, + primary_key=True + ) + ), + ( + 'timezone', models.CharField( + max_length=48, verbose_name='Timezone', 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/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/Montreal', b'America/Montreal'), + (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/Santa_Isabel', b'America/Santa_Isabel'), + (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/Beirut', b'Asia/Beirut'), + (b'Asia/Bishkek', b'Asia/Bishkek'), + (b'Asia/Brunei', b'Asia/Brunei'), + (b'Asia/Choibalsan', b'Asia/Choibalsan'), + (b'Asia/Chongqing', b'Asia/Chongqing'), + (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/Harbin', b'Asia/Harbin'), + (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/Kashgar', b'Asia/Kashgar'), + (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/Rangoon', b'Asia/Rangoon'), + (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/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/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/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/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/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/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/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') + ] + ) + ), + ( + 'language', models.CharField( + max_length=8, verbose_name='Language', choices=[ + ('ar', 'Arabic'), ('bg', 'Bulgarian'), + ('bs', 'Bosnian (Bosnia and Herzegovina)'), + ('da', 'Danish'), ('de', 'German (Germany)'), + ('en', 'English'), ('es', 'Spanish'), + ('fa', 'Persian'), ('fr', 'French'), + ('hu', 'Hungarian'), ('hr', 'Croatian'), + ('id', 'Indonesian'), ('it', 'Italian'), + ('nl', 'Dutch (Nethherlands)'), ('pl', 'Polish'), + ('pt', 'Portuguese'), + ('pt-br', 'Portuguese (Brazil)'), + ('ro', 'Romanian (Romania)'), ('ru', 'Russian'), + ('sl', 'Slovenian'), ('tr', 'Turkish'), + ('vi', 'Vietnamese (Viet Nam)'), + ('zh-cn', 'Chinese (China)') + ] + ) + ), + ( + 'user', models.OneToOneField( + related_name='locale_profile', verbose_name='User', + to=settings.AUTH_USER_MODEL + ) + ), ], options={ 'verbose_name': 'User locale profile', diff --git a/mayan/apps/common/mixins.py b/mayan/apps/common/mixins.py index 9ad5fb9c4b..efdc59cb4f 100644 --- a/mayan/apps/common/mixins.py +++ b/mayan/apps/common/mixins.py @@ -49,7 +49,8 @@ class ObjectListPermissionFilterMixin(object): self.request.user, (self.object_permission,) ) except PermissionDenied: - # No global permission, filter ther queryset per object + permission + # No global permission, filter ther queryset per object + + # permission return AccessControlList.objects.filter_by_access( self.object_permission, self.request.user, queryset ) @@ -79,7 +80,9 @@ class ObjectPermissionCheckMixin(object): self.get_permission_object() ) - return super(ObjectPermissionCheckMixin, self).dispatch(request, *args, **kwargs) + return super( + ObjectPermissionCheckMixin, self + ).dispatch(request, *args, **kwargs) class RedirectionMixin(object): @@ -111,7 +114,9 @@ class RedirectionMixin(object): ) ) - return super(RedirectionMixin, self).dispatch(request, *args, **kwargs) + return super( + RedirectionMixin, self + ).dispatch(request, *args, **kwargs) def get_context_data(self, **kwargs): context = super(RedirectionMixin, self).get_context_data(**kwargs) @@ -137,4 +142,6 @@ class ViewPermissionCheckMixin(object): self.request.user, (self.view_permission,) ) - return super(ViewPermissionCheckMixin, self).dispatch(request, *args, **kwargs) + return super( + ViewPermissionCheckMixin, self + ).dispatch(request, *args, **kwargs) diff --git a/mayan/apps/common/settings.py b/mayan/apps/common/settings.py index 485119abd4..404493773f 100644 --- a/mayan/apps/common/settings.py +++ b/mayan/apps/common/settings.py @@ -9,7 +9,11 @@ from smart_settings import Namespace namespace = Namespace(name='common', label=_('Common')) setting_temporary_directory = namespace.add_setting( global_name='COMMON_TEMPORARY_DIRECTORY', default=tempfile.gettempdir(), - help_text=_('Temporary directory used site wide to store thumbnails, previews and temporary files. If none is specified, one will be created using tempfile.mkdtemp()'), + help_text=_( + 'Temporary directory used site wide to store thumbnails, previews ' + 'and temporary files. If none is specified, one will be created ' + 'using tempfile.mkdtemp()' + ), is_path=True ) setting_shared_storage = namespace.add_setting( @@ -20,5 +24,7 @@ setting_shared_storage = namespace.add_setting( setting_paginate_by = namespace.add_setting( global_name='COMMON_PAGINATE_BY', default=40, - help_text=_('An integer specifying how many objects should be displayed per page.') + help_text=_( + 'An integer specifying how many objects should be displayed per page.' + ) ) diff --git a/mayan/apps/common/utils.py b/mayan/apps/common/utils.py index cda85099c7..981d8b6227 100644 --- a/mayan/apps/common/utils.py +++ b/mayan/apps/common/utils.py @@ -100,7 +100,9 @@ def return_attrib(obj, attrib, arguments=None): try: if isinstance(attrib, types.FunctionType): return attrib(obj) - elif isinstance(obj, types.DictType) or isinstance(obj, types.DictionaryType): + elif isinstance( + obj, types.DictType + ) or isinstance(obj, types.DictionaryType): return obj[attrib] else: result = reduce(getattr, attrib.split('.'), obj) @@ -140,12 +142,13 @@ def urlquote(link=None, get=None): assert link or get if isinstance(link, dict): - # urlqoute({'key': 'value', 'key2': 'value2'}) --> key=value&key2=value2 + # urlqoute({'key': 'value', 'key2': 'value2'}) --> + # key=value&key2=value2 assert not get, get get = link link = '' assert isinstance(get, dict), 'wrong type "%s", dict required' % type(get) - # assert not (link.startswith('http://') or link.startswith('https://')), \ + # assert not (link.startswith('http://') or link.startswith('https://')), # 'This method should only quote the url path. # It should not start with http(s):// (%s)' % ( # link) diff --git a/mayan/apps/common/views.py b/mayan/apps/common/views.py index 5d9bc30a77..523ce0d43f 100644 --- a/mayan/apps/common/views.py +++ b/mayan/apps/common/views.py @@ -12,9 +12,6 @@ from django.utils.http import urlencode from django.utils.translation import ugettext_lazy as _ from django.views.generic import TemplateView -from documents.search import document_search - -from .classes import MissingItem from .forms import ( LicenseForm, LocaleProfileForm, LocaleProfileForm_view, UserForm, UserForm_view diff --git a/mayan/apps/common/widgets.py b/mayan/apps/common/widgets.py index 477c7dd85e..32033da86f 100644 --- a/mayan/apps/common/widgets.py +++ b/mayan/apps/common/widgets.py @@ -1,6 +1,5 @@ from __future__ import unicode_literals -from itertools import chain import os from django import forms @@ -107,50 +106,6 @@ class PlainWidget(forms.widgets.Widget): return mark_safe('%s' % value) -class ScrollableCheckboxSelectMultiple(forms.widgets.CheckboxSelectMultiple): - """ - Class for a form widget composed of a selection of checkboxes wrapped - in a div tag with automatic overflow to add scrollbars when the list - exceds the height of the div - """ - def render(self, name, value, attrs=None, choices=()): - if value is None: - value = [] - has_id = attrs and 'id' in attrs - final_attrs = self.build_attrs(attrs, name=name) - # TODO: Move this styling to a CSS class - output = [ - '