diff --git a/TODO.md b/TODO.md index 6d794be6..c3cbaaf5 100644 --- a/TODO.md +++ b/TODO.md @@ -170,10 +170,10 @@ django-admin.py compilemessages -l ca https://docs.djangoproject.com/en/1.7/topics/i18n/translation/#joining-strings-string-concat -from django.utils.translation import ugettext +from django.utils.translation import gettext from django.utils import translation translation.activate('ca') -ugettext("Description") +gettext("Description") * saas validate_creation generic approach, for all backends. standard output diff --git a/docs/create-services.md b/docs/create-services.md index d0224237..b3abef44 100644 --- a/docs/create-services.md +++ b/docs/create-services.md @@ -59,7 +59,7 @@ ```python import os import textwrap - from django.utils.translation import ugettext_lazy as _ + from django.utils.translation import gettext_lazy as _ from orchestra.contrib.orchestration import ServiceController, replace from orchestra.contrib.resources import ServiceMonitor diff --git a/orchestra/admin/__init__.py b/orchestra/admin/__init__.py index 508aee46..393f4753 100644 --- a/orchestra/admin/__init__.py +++ b/orchestra/admin/__init__.py @@ -6,7 +6,7 @@ from django.contrib import admin from django.urls import reverse from django.shortcuts import render, redirect from django.utils.safestring import mark_safe -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from .dashboard import * from .options import * diff --git a/orchestra/admin/actions.py b/orchestra/admin/actions.py index e97d7e40..9bec0488 100644 --- a/orchestra/admin/actions.py +++ b/orchestra/admin/actions.py @@ -3,7 +3,7 @@ from functools import partial from django.contrib import admin from django.core.mail import send_mass_mail from django.shortcuts import render -from django.utils.translation import ungettext, ugettext_lazy as _ +from django.utils.translation import ngettext, gettext_lazy as _ from .. import settings @@ -81,7 +81,7 @@ class SendEmail(object): if extra_to: emails.append((subject, message, email_from, extra_to)) send_mass_mail(emails, fail_silently=False) - msg = ungettext( + msg = ngettext( _("Message has been sent to one %s.") % self.opts.verbose_name_plural, _("Message has been sent to %i %s.") % (num, self.opts.verbose_name_plural), num @@ -124,7 +124,7 @@ def base_disable(modeladmin, request, queryset, disable=True): 'verbose_name_plural': opts.verbose_name_plural, 'num': num } - msg = ungettext( + msg = ngettext( _("Selected %(verbose_name)s and related services has been %(action_name)s.") % context, _("%(num)s selected %(verbose_name_plural)s and related services have been %(action_name)s.") % context, num) diff --git a/orchestra/admin/dashboard.py b/orchestra/admin/dashboard.py index 9237470d..7e73628d 100644 --- a/orchestra/admin/dashboard.py +++ b/orchestra/admin/dashboard.py @@ -1,5 +1,5 @@ from django.urls import reverse -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from fluent_dashboard import dashboard, appsettings from fluent_dashboard.modules import CmsAppIconList diff --git a/orchestra/admin/decorators.py b/orchestra/admin/decorators.py index 55afdc20..87f03757 100644 --- a/orchestra/admin/decorators.py +++ b/orchestra/admin/decorators.py @@ -4,11 +4,10 @@ from django.contrib import messages from django.contrib.admin import helpers from django.core.exceptions import ValidationError from django.template.response import TemplateResponse -from django.utils.decorators import available_attrs -from django.utils.encoding import force_text +from django.utils.encoding import force_str from django.utils.html import format_html from django.utils.text import capfirst -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ def admin_field(method): @@ -50,7 +49,7 @@ def action_with_confirmation(action_name=None, extra_context=None, validator=Non """ def decorator(func, extra_context=extra_context, template=template, action_name=action_name, validatior=validator): - @wraps(func, assigned=available_attrs(func)) + @wraps(func) def inner(modeladmin, request, queryset, action_name=action_name, extra_context=extra_context, validator=validator): if validator is not None: try: @@ -69,10 +68,10 @@ def action_with_confirmation(action_name=None, extra_context=None, validator=Non action_value = func.__name__ if len(queryset) == 1: - objects_name = force_text(opts.verbose_name) + objects_name = force_str(opts.verbose_name) obj = queryset.get() else: - objects_name = force_text(opts.verbose_name_plural) + objects_name = force_str(opts.verbose_name_plural) obj = None if not action_name: action_name = func.__name__ diff --git a/orchestra/admin/forms.py b/orchestra/admin/forms.py index 2490873f..f74df5e2 100644 --- a/orchestra/admin/forms.py +++ b/orchestra/admin/forms.py @@ -5,8 +5,8 @@ from django import forms from django.contrib.admin import helpers from django.core import validators from django.forms.models import modelformset_factory, BaseModelFormSet -from django.template import Template -from django.utils.translation import ugettext_lazy as _ +from django.template import Template, Context +from django.utils.translation import gettext_lazy as _ from orchestra.forms.widgets import SpanWidget @@ -31,7 +31,7 @@ class AdminFormMixin(object): context = { 'adminform': adminform } - return template.render(context) + return template.render(Context(context)) class AdminFormSet(BaseModelFormSet): @@ -74,7 +74,7 @@ class AdminFormSet(BaseModelFormSet): context = { 'formset': self } - return template.render(context) + return template.render(Context(context)) class AdminPasswordChangeForm(forms.Form): diff --git a/orchestra/admin/menu.py b/orchestra/admin/menu.py index 1c16f761..f849829e 100644 --- a/orchestra/admin/menu.py +++ b/orchestra/admin/menu.py @@ -3,7 +3,7 @@ from copy import deepcopy from admin_tools.menu import items, Menu from django.urls import reverse from django.utils.text import capfirst -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.core import services, accounts, administration @@ -73,7 +73,7 @@ class OrchestraMenu(Menu): self.children = [ # items.MenuItem( # mark_safe('{site_name} v{version}'.format( -# site_name=force_text(settings.SITE_VERBOSE_NAME), +# site_name=force_str(settings.SITE_VERBOSE_NAME), # version_style="text-transform:none; float:none; font-size:smaller; background:none;", # version=get_version())), # reverse('admin:index') diff --git a/orchestra/admin/options.py b/orchestra/admin/options.py index f8b20367..3849bc20 100644 --- a/orchestra/admin/options.py +++ b/orchestra/admin/options.py @@ -1,7 +1,7 @@ from urllib import parse from django import forms -from django.conf.urls import url +from django.urls import re_path as url from django.contrib import admin, messages from django.contrib.admin.options import IS_POPUP_VAR from django.contrib.admin.utils import unquote @@ -12,9 +12,9 @@ from django.forms.models import BaseInlineFormSet from django.shortcuts import get_object_or_404 from django.template.response import TemplateResponse from django.utils.decorators import method_decorator -from django.utils.encoding import force_text +from django.utils.encoding import force_str from django.utils.html import escape -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.views.decorators.debug import sensitive_post_parameters from orchestra.models.utils import has_db_field @@ -230,7 +230,7 @@ class ExtendedModelAdmin(ChangeViewActionsMixin, if obj is None: opts = self.model._meta raise Http404(_('%(name)s object with primary key %(key)r does not exist.') % { - 'name': force_text(opts.verbose_name), 'key': escape(object_id)}) + 'name': force_str(opts.verbose_name), 'key': escape(object_id)}) return obj diff --git a/orchestra/api/options.py b/orchestra/api/options.py index 4d429a03..9e2a913e 100644 --- a/orchestra/api/options.py +++ b/orchestra/api/options.py @@ -1,8 +1,8 @@ from django.contrib.admin.options import get_content_type_for_model from django.conf import settings as django_settings -from django.utils.encoding import force_text +from django.utils.encoding import force_str from django.utils.module_loading import autodiscover_modules -from django.utils.translation import ugettext as _ +from django.utils.translation import gettext as _ from rest_framework.routers import DefaultRouter from orchestra import settings @@ -52,7 +52,7 @@ class LogApiMixin(object): user_id=request.user.pk, content_type_id=get_content_type_for_model(instance).pk, object_id=instance.pk, - object_repr=force_text(instance), + object_repr=force_str(instance), action_flag=action, change_message=message, ) diff --git a/orchestra/api/serializers.py b/orchestra/api/serializers.py index 01005771..4b6f4667 100644 --- a/orchestra/api/serializers.py +++ b/orchestra/api/serializers.py @@ -3,7 +3,7 @@ import copy from django.core.exceptions import ValidationError from django.db import models from django.forms import widgets -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from rest_framework.utils import model_meta diff --git a/orchestra/bin/celerybeat b/orchestra/bin/celerybeat old mode 100755 new mode 100644 diff --git a/orchestra/bin/celeryd b/orchestra/bin/celeryd old mode 100755 new mode 100644 diff --git a/orchestra/bin/celeryevcam b/orchestra/bin/celeryevcam old mode 100755 new mode 100644 diff --git a/orchestra/bin/django_bash_completion.sh b/orchestra/bin/django_bash_completion.sh old mode 100755 new mode 100644 diff --git a/orchestra/bin/orchestra-admin b/orchestra/bin/orchestra-admin old mode 100755 new mode 100644 diff --git a/orchestra/bin/orchestra-beat b/orchestra/bin/orchestra-beat old mode 100755 new mode 100644 diff --git a/orchestra/bin/sieve-test b/orchestra/bin/sieve-test old mode 100755 new mode 100644 diff --git a/orchestra/conf/project_template/manage.py b/orchestra/conf/project_template/manage.py old mode 100755 new mode 100644 diff --git a/orchestra/contrib/accounts/actions.py b/orchestra/contrib/accounts/actions.py index b4bcff22..0bf45a00 100644 --- a/orchestra/contrib/accounts/actions.py +++ b/orchestra/contrib/accounts/actions.py @@ -9,10 +9,10 @@ from django.db import router from django.shortcuts import redirect, render from django.template.response import TemplateResponse from django.utils import timezone -from django.utils.encoding import force_text +from django.utils.encoding import force_str from django.utils.html import format_html from django.utils.text import capfirst -from django.utils.translation import ungettext, ugettext_lazy as _ +from django.utils.translation import ngettext, gettext_lazy as _ from orchestra.core import services @@ -84,7 +84,7 @@ def delete_related_services(modeladmin, request, queryset): def format(obj, account=False): has_admin = obj.__class__ in admin_site._registry opts = obj._meta - no_edit_link = '%s: %s' % (capfirst(opts.verbose_name), force_text(obj)) + no_edit_link = '%s: %s' % (capfirst(opts.verbose_name), force_str(obj)) if has_admin: try: @@ -154,7 +154,7 @@ def delete_related_services(modeladmin, request, queryset): if accounts: relateds = len(to_delete) for obj in to_delete: - obj_display = force_text(obj) + obj_display = force_str(obj) modeladmin.log_deletion(request, obj, obj_display) obj.delete() context = { @@ -167,9 +167,9 @@ def delete_related_services(modeladmin, request, queryset): return None if len(queryset) == 1: - objects_name = force_text(opts.verbose_name) + objects_name = force_str(opts.verbose_name) else: - objects_name = force_text(opts.verbose_name_plural) + objects_name = force_str(opts.verbose_name_plural) model_count = {} for model, objs in collector.model_objs.items(): @@ -214,7 +214,7 @@ def disable_selected(modeladmin, request, queryset, disable=True): account.disable() if disable else account.enable() modeladmin.log_change(request, account, verbose_action_name.capitalize()) n += 1 - modeladmin.message_user(request, ungettext( + modeladmin.message_user(request, ngettext( _("One account has been successfully %s.") % verbose_action_name, _("%i accounts have been successfully %s.") % (n, verbose_action_name), n) @@ -227,7 +227,7 @@ def disable_selected(modeladmin, request, queryset, disable=True): def format(obj): has_admin = obj.__class__ in admin_site._registry opts = obj._meta - no_edit_link = '%s: %s' % (capfirst(opts.verbose_name), force_text(obj)) + no_edit_link = '%s: %s' % (capfirst(opts.verbose_name), force_str(obj)) if has_admin: try: admin_url = reverse( @@ -258,9 +258,9 @@ def disable_selected(modeladmin, request, queryset, disable=True): display.append([format(account), current]) if len(queryset) == 1: - objects_name = force_text(opts.verbose_name) + objects_name = force_str(opts.verbose_name) else: - objects_name = force_text(opts.verbose_name_plural) + objects_name = force_str(opts.verbose_name_plural) context = dict( admin_site.each_context(request), diff --git a/orchestra/contrib/accounts/admin.py b/orchestra/contrib/accounts/admin.py index e44c656b..b2d6442a 100644 --- a/orchestra/contrib/accounts/admin.py +++ b/orchestra/contrib/accounts/admin.py @@ -4,7 +4,7 @@ from urllib.parse import parse_qsl from django import forms from django.apps import apps -from django.conf.urls import url +from django.urls import re_path as url from django.contrib import admin, messages from django.contrib.admin.utils import unquote from django.contrib.auth import admin as auth @@ -12,7 +12,7 @@ from django.urls import reverse from django.http import HttpResponseRedirect from django.templatetags.static import static from django.utils.safestring import mark_safe -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.admin import ExtendedModelAdmin, ChangePasswordAdminMixin from orchestra.admin.actions import SendEmail diff --git a/orchestra/contrib/accounts/api.py b/orchestra/contrib/accounts/api.py index bef27d27..e602f908 100644 --- a/orchestra/contrib/accounts/api.py +++ b/orchestra/contrib/accounts/api.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import viewsets, exceptions from orchestra.api import router, SetPasswordApiMixin, LogApiMixin diff --git a/orchestra/contrib/accounts/apps.py b/orchestra/contrib/accounts/apps.py index 81e73667..4501614c 100644 --- a/orchestra/contrib/accounts/apps.py +++ b/orchestra/contrib/accounts/apps.py @@ -1,6 +1,6 @@ from django.apps import AppConfig from django.db.models.signals import post_migrate -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.core import services, accounts diff --git a/orchestra/contrib/accounts/filters.py b/orchestra/contrib/accounts/filters.py index d45ff8ff..ff4be0ae 100644 --- a/orchestra/contrib/accounts/filters.py +++ b/orchestra/contrib/accounts/filters.py @@ -1,6 +1,6 @@ from django.contrib.admin import SimpleListFilter from django.db.models import Q -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ class IsActiveListFilter(SimpleListFilter): diff --git a/orchestra/contrib/accounts/forms.py b/orchestra/contrib/accounts/forms.py index a420c266..43689967 100644 --- a/orchestra/contrib/accounts/forms.py +++ b/orchestra/contrib/accounts/forms.py @@ -4,7 +4,7 @@ from collections import OrderedDict from django import forms from django.core.exceptions import ValidationError from django.apps import apps -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.forms import UserCreationForm diff --git a/orchestra/contrib/accounts/migrations/0001_initial.py b/orchestra/contrib/accounts/migrations/0001_initial.py deleted file mode 100644 index a855bc5f..00000000 --- a/orchestra/contrib/accounts/migrations/0001_initial.py +++ /dev/null @@ -1,45 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations -import django.core.validators -import django.db.models.deletion -import django.utils.timezone -import django.contrib.auth.models - - -class Migration(migrations.Migration): - - dependencies = [ - # Permissions and contenttypes - ('auth', '0006_require_contenttypes_0002'), - ('systemusers', '0001_initial'), - ] - - operations = [ - migrations.CreateModel( - name='Account', - fields=[ - ('id', models.AutoField(verbose_name='ID', primary_key=True, serialize=False, auto_created=True)), - ('password', models.CharField(verbose_name='password', max_length=128)), - ('last_login', models.DateTimeField(blank=True, verbose_name='last login', null=True)), - ('username', models.CharField(help_text='Required. 64 characters or fewer. Letters, digits and ./-/_ only.', unique=True, validators=[django.core.validators.RegexValidator('^[\\w.-]+$', 'Enter a valid username.', 'invalid')], max_length=32, verbose_name='username')), - ('short_name', models.CharField(blank=True, verbose_name='short name', max_length=64)), - ('full_name', models.CharField(verbose_name='full name', max_length=256)), - ('email', models.EmailField(help_text='Used for password recovery', max_length=254, verbose_name='email address')), - ('type', models.CharField(verbose_name='type', choices=[('INDIVIDUAL', 'Individual'), ('ASSOCIATION', 'Association'), ('CUSTOMER', 'Customer'), ('COMPANY', 'Company'), ('PUBLICBODY', 'Public body'), ('STAFF', 'Staff'), ('FRIEND', 'Friend')], max_length=32, default='INDIVIDUAL')), - ('language', models.CharField(verbose_name='language', choices=[('EN', 'English')], max_length=2, default='EN')), - ('comments', models.TextField(blank=True, verbose_name='comments', max_length=256)), - ('is_superuser', models.BooleanField(help_text='Designates that this user has all permissions without explicitly assigning them.', default=False, verbose_name='superuser status')), - ('is_active', models.BooleanField(help_text='Designates whether this account should be treated as active. Unselect this instead of deleting accounts.', default=True, verbose_name='active')), - ('date_joined', models.DateTimeField(verbose_name='date joined', default=django.utils.timezone.now)), - ('main_systemuser', models.ForeignKey(to='systemusers.SystemUser', editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='accounts_main')), - ], - options={ - 'abstract': False, - }, - managers=[ - ('objects', django.contrib.auth.models.UserManager()), - ], - ), - ] diff --git a/orchestra/contrib/accounts/migrations/0001_squashed_0004_auto_20210422_1108.py b/orchestra/contrib/accounts/migrations/0001_squashed_0004_auto_20210422_1108.py deleted file mode 100644 index 69810092..00000000 --- a/orchestra/contrib/accounts/migrations/0001_squashed_0004_auto_20210422_1108.py +++ /dev/null @@ -1,86 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2021-04-22 11:08 -from __future__ import unicode_literals - -import django.contrib.auth.models -import django.core.validators -from django.db import migrations, models -import django.db.models.deletion -import django.utils.timezone -import orchestra.contrib.accounts.models - - -class Migration(migrations.Migration): - - replaces = [('accounts', '0001_initial'), ('accounts', '0002_auto_20170528_2005'), ('accounts', '0003_auto_20210330_1049'), ('accounts', '0004_auto_20210422_1108')] - - initial = True - - dependencies = [ - ('systemusers', '0001_initial'), - ('auth', '0006_require_contenttypes_0002'), - ] - - operations = [ - migrations.CreateModel( - name='Account', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('password', models.CharField(max_length=128, verbose_name='password')), - ('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')), - ('username', models.CharField(help_text='Required. 64 characters or fewer. Letters, digits and ./-/_ only.', max_length=32, unique=True, validators=[django.core.validators.RegexValidator('^[\\w.-]+$', 'Enter a valid username.', 'invalid')], verbose_name='username')), - ('short_name', models.CharField(blank=True, max_length=64, verbose_name='short name')), - ('full_name', models.CharField(max_length=256, verbose_name='full name')), - ('email', models.EmailField(help_text='Used for password recovery', max_length=254, verbose_name='email address')), - ('type', models.CharField(choices=[('INDIVIDUAL', 'Individual'), ('ASSOCIATION', 'Association'), ('CUSTOMER', 'Customer'), ('COMPANY', 'Company'), ('PUBLICBODY', 'Public body'), ('STAFF', 'Staff'), ('FRIEND', 'Friend')], default='INDIVIDUAL', max_length=32, verbose_name='type')), - ('language', models.CharField(choices=[('EN', 'English')], default='EN', max_length=2, verbose_name='language')), - ('comments', models.TextField(blank=True, max_length=256, verbose_name='comments')), - ('is_superuser', models.BooleanField(default=False, help_text='Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status')), - ('is_active', models.BooleanField(default=True, help_text='Designates whether this account should be treated as active. Unselect this instead of deleting accounts.', verbose_name='active')), - ('date_joined', models.DateTimeField(default=django.utils.timezone.now, verbose_name='date joined')), - ('main_systemuser', models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='accounts_main', to='systemusers.SystemUser')), - ], - options={ - 'abstract': False, - }, - managers=[ - ('objects', django.contrib.auth.models.UserManager()), - ], - ), - migrations.AlterModelManagers( - name='account', - managers=[ - ('objects', orchestra.contrib.accounts.models.AccountManager()), - ], - ), - migrations.AlterField( - model_name='account', - name='language', - field=models.CharField(choices=[('CA', 'Catalan'), ('ES', 'Spanish'), ('EN', 'English')], default='CA', max_length=2, verbose_name='language'), - ), - migrations.AlterField( - model_name='account', - name='type', - field=models.CharField(choices=[('INDIVIDUAL', 'Individual'), ('ASSOCIATION', 'Association'), ('CUSTOMER', 'Customer'), ('STAFF', 'Staff'), ('FRIEND', 'Friend')], default='INDIVIDUAL', max_length=32, verbose_name='type'), - ), - migrations.AlterField( - model_name='account', - name='username', - field=models.CharField(help_text='Required. 32 characters or fewer. Letters, digits and ./-/_ only.', max_length=32, unique=True, validators=[django.core.validators.RegexValidator('^[\\w.-]+$', 'Enter a valid username.', 'invalid')], verbose_name='username'), - ), - migrations.AlterField( - model_name='account', - name='language', - field=models.CharField(choices=[('EN', 'English')], default='EN', max_length=2, verbose_name='language'), - ), - migrations.AlterField( - model_name='account', - name='type', - field=models.CharField(choices=[('INDIVIDUAL', 'Individual'), ('ASSOCIATION', 'Association'), ('CUSTOMER', 'Customer'), ('COMPANY', 'Company'), ('PUBLICBODY', 'Public body'), ('STAFF', 'Staff'), ('FRIEND', 'Friend')], default='INDIVIDUAL', max_length=32, verbose_name='type'), - ), - migrations.AlterField( - model_name='account', - name='main_systemuser', - field=models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='accounts_main', to='systemusers.SystemUser'), - ), - ] diff --git a/orchestra/contrib/accounts/migrations/0002_auto_20170528_2005.py b/orchestra/contrib/accounts/migrations/0002_auto_20170528_2005.py deleted file mode 100644 index 68142a2b..00000000 --- a/orchestra/contrib/accounts/migrations/0002_auto_20170528_2005.py +++ /dev/null @@ -1,38 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-05-28 18:05 -from __future__ import unicode_literals - -import django.core.validators -from django.db import migrations, models -import orchestra.contrib.accounts.models - - -class Migration(migrations.Migration): - - dependencies = [ - ('accounts', '0001_initial'), - ] - - operations = [ - migrations.AlterModelManagers( - name='account', - managers=[ - ('objects', orchestra.contrib.accounts.models.AccountManager()), - ], - ), - migrations.AlterField( - model_name='account', - name='language', - field=models.CharField(choices=[('CA', 'Catalan'), ('ES', 'Spanish'), ('EN', 'English')], default='CA', max_length=2, verbose_name='language'), - ), - migrations.AlterField( - model_name='account', - name='type', - field=models.CharField(choices=[('INDIVIDUAL', 'Individual'), ('ASSOCIATION', 'Association'), ('CUSTOMER', 'Customer'), ('STAFF', 'Staff'), ('FRIEND', 'Friend')], default='INDIVIDUAL', max_length=32, verbose_name='type'), - ), - migrations.AlterField( - model_name='account', - name='username', - field=models.CharField(help_text='Required. 32 characters or fewer. Letters, digits and ./-/_ only.', max_length=32, unique=True, validators=[django.core.validators.RegexValidator('^[\\w.-]+$', 'Enter a valid username.', 'invalid')], verbose_name='username'), - ), - ] diff --git a/orchestra/contrib/accounts/migrations/0003_auto_20210330_1049.py b/orchestra/contrib/accounts/migrations/0003_auto_20210330_1049.py deleted file mode 100644 index ae8dc55a..00000000 --- a/orchestra/contrib/accounts/migrations/0003_auto_20210330_1049.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2021-03-30 10:49 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('accounts', '0002_auto_20170528_2005'), - ] - - operations = [ - migrations.AlterField( - model_name='account', - name='language', - field=models.CharField(choices=[('EN', 'English')], default='EN', max_length=2, verbose_name='language'), - ), - migrations.AlterField( - model_name='account', - name='type', - field=models.CharField(choices=[('INDIVIDUAL', 'Individual'), ('ASSOCIATION', 'Association'), ('CUSTOMER', 'Customer'), ('COMPANY', 'Company'), ('PUBLICBODY', 'Public body'), ('STAFF', 'Staff'), ('FRIEND', 'Friend')], default='INDIVIDUAL', max_length=32, verbose_name='type'), - ), - ] diff --git a/orchestra/contrib/accounts/migrations/__init__.py b/orchestra/contrib/accounts/migrations/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/orchestra/contrib/accounts/models.py b/orchestra/contrib/accounts/models.py index 94cd29c6..b8c6a39a 100644 --- a/orchestra/contrib/accounts/models.py +++ b/orchestra/contrib/accounts/models.py @@ -5,7 +5,7 @@ from django.db import models from django.db.models import signals from django.apps import apps from django.utils import timezone, translation -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ #from orchestra.contrib.orchestration.middlewares import OperationsMiddleware #from orchestra.contrib.orchestration import Operation @@ -165,7 +165,6 @@ class Account(auth.AbstractBaseUser): elif obj and getattr(obj, 'account', None) == self: return True - def has_perms(self, perm_list, obj=None): """ Returns True if the user has each of the specified permissions. If diff --git a/orchestra/contrib/accounts/settings.py b/orchestra/contrib/accounts/settings.py index 9ec510e7..b8a25944 100644 --- a/orchestra/contrib/accounts/settings.py +++ b/orchestra/contrib/accounts/settings.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.contrib.settings import Setting from orchestra.settings import ORCHESTRA_BASE_DOMAIN diff --git a/orchestra/contrib/accounts/templates/admin/accounts/account/change_form.html b/orchestra/contrib/accounts/templates/admin/accounts/account/change_form.html index d4404031..b1a41386 100644 --- a/orchestra/contrib/accounts/templates/admin/accounts/account/change_form.html +++ b/orchestra/contrib/accounts/templates/admin/accounts/account/change_form.html @@ -1,5 +1,5 @@ {% extends "orchestra/admin/change_form.html" %} -{% load i18n admin_urls admin_static admin_modify %} +{% load i18n admin_urls static admin_modify %} {% block breadcrumbs %} diff --git a/orchestra/contrib/bills/actions.py b/orchestra/contrib/bills/actions.py index 37723b42..64c9ed57 100644 --- a/orchestra/contrib/bills/actions.py +++ b/orchestra/contrib/bills/actions.py @@ -12,7 +12,7 @@ from django.http import HttpResponse, HttpResponseRedirect from django.shortcuts import render, redirect from django.utils import translation, timezone from django.utils.safestring import mark_safe -from django.utils.translation import ungettext, ugettext_lazy as _ +from django.utils.translation import ngettext, gettext_lazy as _ from orchestra.admin.decorators import action_with_confirmation from orchestra.admin.forms import AdminFormSet @@ -69,7 +69,7 @@ def close_bills(modeladmin, request, queryset, action='close_bills'): 'url': url, 'num': num, } - message = ungettext( + message = ngettext( _('One related transaction has been created') % context, _('%(num)i related transactions have been created') % context, num) @@ -111,7 +111,7 @@ def send_bills_action(modeladmin, request, queryset): bill.send() modeladmin.log_change(request, bill, 'Sent') num += 1 - messages.success(request, ungettext( + messages.success(request, ngettext( _("One bill has been sent."), _("%i bills have been sent.") % num, num)) @@ -135,7 +135,7 @@ def download_bills(modeladmin, request, queryset): pdf = bill.as_pdf() archive.writestr('%s.pdf' % bill.number, pdf) archive.close() - response = HttpResponse(bytesio.getvalue(), content_type='application/pdf') + response = HttpResponse(bytesio.getvalue(), content_type='application/zip') response['Content-Disposition'] = 'attachment; filename="orchestra-bills.zip"' return response bill = queryset[0] @@ -299,7 +299,7 @@ def amend_bills(modeladmin, request, queryset): 'url': amend_url, 'num': num, } - messages.success(request, mark_safe(ungettext( + messages.success(request, mark_safe(ngettext( _('One amendment bill have been generated.') % context, _('%(num)i amendment bills have been generated.') % context, num diff --git a/orchestra/contrib/bills/admin.py b/orchestra/contrib/bills/admin.py index 8d23ca04..ac453dbe 100644 --- a/orchestra/contrib/bills/admin.py +++ b/orchestra/contrib/bills/admin.py @@ -1,5 +1,5 @@ from django import forms -from django.conf.urls import url +from django.urls import re_path as url from django.contrib import admin, messages from django.contrib.admin.utils import unquote from django.urls import reverse @@ -9,7 +9,7 @@ from django.db.models.functions import Coalesce from django.templatetags.static import static from django.utils.html import format_html from django.utils.safestring import mark_safe -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.shortcuts import redirect from orchestra.admin import ExtendedModelAdmin @@ -126,7 +126,7 @@ class ClosedBillLineInline(BillLineInline): return line.compute_total() display_total.short_description = _("Total") - def has_add_permission(self, request): + def has_add_permission(self, request, obj): return False diff --git a/orchestra/contrib/bills/filters.py b/orchestra/contrib/bills/filters.py index a4beb32f..adcf5753 100644 --- a/orchestra/contrib/bills/filters.py +++ b/orchestra/contrib/bills/filters.py @@ -2,7 +2,7 @@ from django.contrib.admin import SimpleListFilter from django.urls import reverse from django.db.models import Q from django.utils.safestring import mark_safe -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from . models import Bill diff --git a/orchestra/contrib/bills/forms.py b/orchestra/contrib/bills/forms.py index 7105e63f..b4759928 100644 --- a/orchestra/contrib/bills/forms.py +++ b/orchestra/contrib/bills/forms.py @@ -1,5 +1,5 @@ from django import forms -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.admin.utils import admin_link from orchestra.forms import SpanWidget diff --git a/orchestra/contrib/bills/helpers.py b/orchestra/contrib/bills/helpers.py index 23c72fcc..d255e931 100644 --- a/orchestra/contrib/bills/helpers.py +++ b/orchestra/contrib/bills/helpers.py @@ -1,10 +1,10 @@ from django.contrib import messages from django.urls import reverse -from django.utils.encoding import force_text +from django.utils.encoding import force_str from django.utils.html import format_html from django.utils.safestring import mark_safe from django.utils.text import capfirst -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.admin.utils import change_url @@ -16,14 +16,14 @@ def validate_contact(request, bill, error=True): valid = True send = messages.error if error else messages.warning if not hasattr(bill.account, 'billcontact'): - account = force_text(bill.account) + account = force_str(bill.account) url = reverse('admin:accounts_account_change', args=(bill.account_id,)) message = msg.format(relation=_("Related"), account=account, url=url) send(request, mark_safe(message)) valid = False main = type(bill).account.field.related_model.objects.get_main() if not hasattr(main, 'billcontact'): - account = force_text(main) + account = force_str(main) url = reverse('admin:accounts_account_change', args=(main.id,)) message = msg.format(relation=_("Main"), account=account, url=url) send(request, mark_safe(message)) diff --git a/orchestra/contrib/bills/migrations/0001_initial.py b/orchestra/contrib/bills/migrations/0001_initial.py deleted file mode 100644 index ba1d9dcb..00000000 --- a/orchestra/contrib/bills/migrations/0001_initial.py +++ /dev/null @@ -1,127 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations -from django.conf import settings -import django.core.validators -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('orders', '__first__'), - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.CreateModel( - name='Bill', - fields=[ - ('id', models.AutoField(auto_created=True, verbose_name='ID', serialize=False, primary_key=True)), - ('number', models.CharField(unique=True, verbose_name='number', blank=True, max_length=16)), - ('type', models.CharField(verbose_name='type', choices=[('INVOICE', 'Invoice'), ('AMENDMENTINVOICE', 'Amendment invoice'), ('FEE', 'Fee'), ('AMENDMENTFEE', 'Amendment Fee'), ('PROFORMA', 'Pro forma')], max_length=16)), - ('created_on', models.DateField(auto_now_add=True, verbose_name='created on')), - ('closed_on', models.DateField(verbose_name='closed on', null=True, blank=True)), - ('is_open', models.BooleanField(default=True, verbose_name='open')), - ('is_sent', models.BooleanField(default=False, verbose_name='sent')), - ('due_on', models.DateField(verbose_name='due on', null=True, blank=True)), - ('updated_on', models.DateField(verbose_name='updated on', auto_now=True)), - ('total', models.DecimalField(default=0, decimal_places=2, max_digits=12)), - ('comments', models.TextField(verbose_name='comments', blank=True)), - ('html', models.TextField(verbose_name='HTML', blank=True)), - ('account', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='bill', to=settings.AUTH_USER_MODEL, verbose_name='account')), - ], - options={ - 'get_latest_by': 'id', - }, - ), - migrations.CreateModel( - name='BillContact', - fields=[ - ('id', models.AutoField(auto_created=True, verbose_name='ID', serialize=False, primary_key=True)), - ('name', models.CharField(verbose_name='name', blank=True, max_length=256, help_text='Account full name will be used when left blank.')), - ('address', models.TextField(verbose_name='address')), - ('city', models.CharField(default='Barcelona', verbose_name='city', max_length=128)), - ('zipcode', models.CharField(verbose_name='zip code', validators=[django.core.validators.RegexValidator('^[0-9A-Z]{3,10}$', 'Enter a valid zipcode.')], max_length=10)), - ('country', models.CharField(default='ES', verbose_name='country', choices=[('PR', 'Puerto Rico'), ('BV', 'Bouvet Island'), ('BT', 'Bhutan'), ('MY', 'Malaysia'), ('AQ', 'Antarctica'), ('MT', 'Malta'), ('BE', 'Belgium'), ('SM', 'San Marino'), ('AZ', 'Azerbaijan'), ('CA', 'Canada'), ('HR', 'Croatia'), ('GH', 'Ghana'), ('MZ', 'Mozambique'), ('PA', 'Panama'), ('GR', 'Greece'), ('AE', 'United Arab Emirates'), ('CK', 'Cook Islands'), ('SK', 'Slovakia'), ('PN', 'Pitcairn'), ('ZA', 'South Africa'), ('AU', 'Australia'), ('BF', 'Burkina Faso'), ('FI', 'Finland'), ('MC', 'Monaco'), ('RE', 'Réunion'), ('TV', 'Tuvalu'), ('HN', 'Honduras'), ('IL', 'Israel'), ('SV', 'El Salvador'), ('VN', 'Viet Nam'), ('MV', 'Maldives'), ('BA', 'Bosnia and Herzegovina'), ('UA', 'Ukraine'), ('BW', 'Botswana'), ('UZ', 'Uzbekistan'), ('ID', 'Indonesia'), ('LY', 'Libya'), ('MM', 'Myanmar'), ('TZ', 'Tanzania, United Republic of'), ('GL', 'Greenland'), ('LV', 'Latvia'), ('DZ', 'Algeria'), ('AO', 'Angola'), ('GE', 'Georgia'), ('SO', 'Somalia'), ('CX', 'Christmas Island'), ('NP', 'Nepal'), ('AI', 'Anguilla'), ('GP', 'Guadeloupe'), ('UY', 'Uruguay'), ('LC', 'Saint Lucia'), ('EH', 'Western Sahara'), ('IO', 'British Indian Ocean Territory'), ('TH', 'Thailand'), ('AR', 'Argentina'), ('PY', 'Paraguay'), ('AW', 'Aruba'), ('IE', 'Ireland'), ('CF', 'Central African Republic'), ('TW', 'Taiwan (Province of China)'), ('KZ', 'Kazakhstan'), ('TJ', 'Tajikistan'), ('RW', 'Rwanda'), ('SR', 'Suriname'), ('AT', 'Austria'), ('GN', 'Guinea'), ('SS', 'South Sudan'), ('IT', 'Italy'), ('BO', 'Bolivia (Plurinational State of)'), ('GD', 'Grenada'), ('KE', 'Kenya'), ('GS', 'South Georgia and the South Sandwich Islands'), ('TG', 'Togo'), ('CY', 'Cyprus'), ('TT', 'Trinidad and Tobago'), ('CM', 'Cameroon'), ('QA', 'Qatar'), ('GM', 'Gambia'), ('WS', 'Samoa'), ('DJ', 'Djibouti'), ('PL', 'Poland'), ('CV', 'Cabo Verde'), ('PE', 'Peru'), ('TN', 'Tunisia'), ('HT', 'Haiti'), ('AF', 'Afghanistan'), ('YT', 'Mayotte'), ('NR', 'Nauru'), ('LS', 'Lesotho'), ('LR', 'Liberia'), ('IR', 'Iran (Islamic Republic of)'), ('EE', 'Estonia'), ('ER', 'Eritrea'), ('RU', 'Russian Federation'), ('LB', 'Lebanon'), ('CU', 'Cuba'), ('CZ', 'Czech Republic'), ('AX', 'Åland Islands'), ('CD', 'Congo (the Democratic Republic of the)'), ('HK', 'Hong Kong'), ('PS', 'Palestine, State of'), ('FK', 'Falkland Islands [Malvinas]'), ('MR', 'Mauritania'), ('MG', 'Madagascar'), ('MH', 'Marshall Islands'), ('LK', 'Sri Lanka'), ('NA', 'Namibia'), ('SI', 'Slovenia'), ('BY', 'Belarus'), ('MX', 'Mexico'), ('ZW', 'Zimbabwe'), ('CI', "Côte d'Ivoire"), ('GU', 'Guam'), ('PW', 'Palau'), ('SC', 'Seychelles'), ('GT', 'Guatemala'), ('CL', 'Chile'), ('SH', 'Saint Helena, Ascension and Tristan da Cunha'), ('BH', 'Bahrain'), ('SB', 'Solomon Islands'), ('KM', 'Comoros'), ('MF', 'Saint Martin (French part)'), ('FO', 'Faroe Islands'), ('BD', 'Bangladesh'), ('AM', 'Armenia'), ('BJ', 'Benin'), ('SA', 'Saudi Arabia'), ('NU', 'Niue'), ('VI', 'Virgin Islands (U.S.)'), ('CN', 'China'), ('EC', 'Ecuador'), ('CC', 'Cocos (Keeling) Islands'), ('BS', 'Bahamas'), ('JM', 'Jamaica'), ('RO', 'Romania'), ('KI', 'Kiribati'), ('GY', 'Guyana'), ('TL', 'Timor-Leste'), ('AS', 'American Samoa'), ('VE', 'Venezuela (Bolivarian Republic of)'), ('BN', 'Brunei Darussalam'), ('ET', 'Ethiopia'), ('FJ', 'Fiji'), ('BG', 'Bulgaria'), ('VG', 'Virgin Islands (British)'), ('AD', 'Andorra'), ('KN', 'Saint Kitts and Nevis'), ('MA', 'Morocco'), ('MU', 'Mauritius'), ('DK', 'Denmark'), ('TO', 'Tonga'), ('CO', 'Colombia'), ('GA', 'Gabon'), ('MK', 'Macedonia (the former Yugoslav Republic of)'), ('MD', 'Moldova (the Republic of)'), ('VA', 'Holy See'), ('KY', 'Cayman Islands'), ('LU', 'Luxembourg'), ('AL', 'Albania'), ('LI', 'Liechtenstein'), ('KP', "Korea (the Democratic People's Republic of)"), ('BZ', 'Belize'), ('ME', 'Montenegro'), ('NC', 'New Caledonia'), ('VC', 'Saint Vincent and the Grenadines'), ('UM', 'United States Minor Outlying Islands'), ('IQ', 'Iraq'), ('GB', 'United Kingdom of Great Britain and Northern Ireland'), ('KW', 'Kuwait'), ('MS', 'Montserrat'), ('SD', 'Sudan'), ('JP', 'Japan'), ('DE', 'Germany'), ('SN', 'Senegal'), ('PK', 'Pakistan'), ('MO', 'Macao'), ('RS', 'Serbia'), ('KR', 'Korea (the Republic of)'), ('BL', 'Saint Barthélemy'), ('MP', 'Northern Mariana Islands'), ('AG', 'Antigua and Barbuda'), ('FM', 'Micronesia (Federated States of)'), ('HM', 'Heard Island and McDonald Islands'), ('BR', 'Brazil'), ('PF', 'French Polynesia'), ('MQ', 'Martinique'), ('VU', 'Vanuatu'), ('LT', 'Lithuania'), ('ES', 'Spain'), ('ML', 'Mali'), ('NE', 'Niger'), ('EG', 'Egypt'), ('WF', 'Wallis and Futuna'), ('ZM', 'Zambia'), ('US', 'United States of America'), ('DO', 'Dominican Republic'), ('NO', 'Norway'), ('UG', 'Uganda'), ('GQ', 'Equatorial Guinea'), ('GW', 'Guinea-Bissau'), ('JE', 'Jersey'), ('HU', 'Hungary'), ('BQ', 'Bonaire, Sint Eustatius and Saba'), ('JO', 'Jordan'), ('ST', 'Sao Tome and Principe'), ('SJ', 'Svalbard and Jan Mayen'), ('MN', 'Mongolia'), ('BB', 'Barbados'), ('CH', 'Switzerland'), ('KG', 'Kyrgyzstan'), ('PG', 'Papua New Guinea'), ('NG', 'Nigeria'), ('GF', 'French Guiana'), ('CR', 'Costa Rica'), ('LA', "Lao People's Democratic Republic"), ('CG', 'Congo'), ('NI', 'Nicaragua'), ('TK', 'Tokelau'), ('SE', 'Sweden'), ('NF', 'Norfolk Island'), ('PT', 'Portugal'), ('FR', 'France'), ('SZ', 'Swaziland'), ('YE', 'Yemen'), ('NL', 'Netherlands'), ('GI', 'Gibraltar'), ('TR', 'Turkey'), ('OM', 'Oman'), ('TF', 'French Southern Territories'), ('PM', 'Saint Pierre and Miquelon'), ('TC', 'Turks and Caicos Islands'), ('SL', 'Sierra Leone'), ('SX', 'Sint Maarten (Dutch part)'), ('DM', 'Dominica'), ('KH', 'Cambodia'), ('SG', 'Singapore'), ('BM', 'Bermuda'), ('CW', 'Curaçao'), ('GG', 'Guernsey'), ('TD', 'Chad'), ('IN', 'India'), ('BI', 'Burundi'), ('TM', 'Turkmenistan'), ('IS', 'Iceland'), ('MW', 'Malawi'), ('SY', 'Syrian Arab Republic'), ('NZ', 'New Zealand'), ('IM', 'Isle of Man'), ('PH', 'Philippines')], max_length=20)), - ('vat', models.CharField(verbose_name='VAT number', max_length=64)), - ('account', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='billcontact', to=settings.AUTH_USER_MODEL, verbose_name='account')), - ], - ), - migrations.CreateModel( - name='BillLine', - fields=[ - ('id', models.AutoField(auto_created=True, verbose_name='ID', serialize=False, primary_key=True)), - ('description', models.CharField(verbose_name='description', max_length=256)), - ('rate', models.DecimalField(decimal_places=2, verbose_name='rate', null=True, blank=True, max_digits=12)), - ('quantity', models.DecimalField(verbose_name='quantity', decimal_places=2, max_digits=12)), - ('verbose_quantity', models.CharField(verbose_name='Verbose quantity', max_length=16)), - ('subtotal', models.DecimalField(verbose_name='subtotal', decimal_places=2, max_digits=12)), - ('tax', models.DecimalField(verbose_name='tax', decimal_places=2, max_digits=4)), - ('start_on', models.DateField(verbose_name='start')), - ('end_on', models.DateField(verbose_name='end', null=True)), - ('order_billed_on', models.DateField(verbose_name='order billed', null=True, blank=True)), - ('order_billed_until', models.DateField(verbose_name='order billed until', null=True, blank=True)), - ('created_on', models.DateField(auto_now_add=True, verbose_name='created')), - ('amended_line', models.ForeignKey(blank=True, on_delete=django.db.models.deletion.CASCADE, to='bills.BillLine', verbose_name='amended line', null=True, related_name='amendment_lines')), - ('bill', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='lines', to='bills.Bill', verbose_name='bill')), - ('order', models.ForeignKey(blank=True, to='orders.Order', null=True, on_delete=django.db.models.deletion.SET_NULL, help_text='Informative link back to the order')), - ], - ), - migrations.CreateModel( - name='BillSubline', - fields=[ - ('id', models.AutoField(auto_created=True, verbose_name='ID', serialize=False, primary_key=True)), - ('description', models.CharField(verbose_name='description', max_length=256)), - ('total', models.DecimalField(decimal_places=2, max_digits=12)), - ('type', models.CharField(default='OTHER', verbose_name='type', choices=[('VOLUME', 'Volume'), ('COMPENSATION', 'Compensation'), ('OTHER', 'Other')], max_length=16)), - ('line', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='sublines', to='bills.BillLine', verbose_name='bill line')), - ], - ), - migrations.CreateModel( - name='AmendmentFee', - fields=[ - ], - options={ - 'proxy': True, - }, - bases=('bills.bill',), - ), - migrations.CreateModel( - name='AmendmentInvoice', - fields=[ - ], - options={ - 'proxy': True, - }, - bases=('bills.bill',), - ), - migrations.CreateModel( - name='Fee', - fields=[ - ], - options={ - 'proxy': True, - }, - bases=('bills.bill',), - ), - migrations.CreateModel( - name='Invoice', - fields=[ - ], - options={ - 'proxy': True, - }, - bases=('bills.bill',), - ), - migrations.CreateModel( - name='ProForma', - fields=[ - ], - options={ - 'proxy': True, - }, - bases=('bills.bill',), - ), - ] diff --git a/orchestra/contrib/bills/migrations/0001_squashed_0017_auto_20210422_1108.py b/orchestra/contrib/bills/migrations/0001_squashed_0017_auto_20210422_1108.py deleted file mode 100644 index 7070870d..00000000 --- a/orchestra/contrib/bills/migrations/0001_squashed_0017_auto_20210422_1108.py +++ /dev/null @@ -1,189 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2021-04-22 11:08 -from __future__ import unicode_literals - -from django.conf import settings -import django.core.validators -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - replaces = [('bills', '0001_initial'), ('bills', '0002_auto_20150429_1417'), ('bills', '0003_auto_20150612_0944'), ('bills', '0004_auto_20150618_1311'), ('bills', '0005_auto_20150623_1031'), ('bills', '0006_auto_20150709_1016'), ('bills', '0007_auto_20170528_2011'), ('bills', '0008_auto_20170625_1813'), ('bills', '0009_auto_20170625_1840'), ('bills', '0010_auto_20170625_1840'), ('bills', '0011_auto_20170625_1840'), ('bills', '0012_auto_20170625_1841'), ('bills', '0013_auto_20190805_1134'), ('bills', '0014_auto_20200204_1217'), ('bills', '0015_auto_20200204_1218'), ('bills', '0016_auto_20210330_1049'), ('bills', '0017_auto_20210422_1108')] - - initial = True - - dependencies = [ - ('orders', '__first__'), - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.CreateModel( - name='Bill', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('number', models.CharField(blank=True, max_length=16, unique=True, verbose_name='number')), - ('type', models.CharField(choices=[('INVOICE', 'Invoice'), ('AMENDMENTINVOICE', 'Amendment invoice'), ('FEE', 'Fee'), ('AMENDMENTFEE', 'Amendment Fee'), ('PROFORMA', 'Pro forma')], max_length=16, verbose_name='type')), - ('created_on', models.DateField(auto_now_add=True, verbose_name='created on')), - ('closed_on', models.DateField(blank=True, null=True, verbose_name='closed on')), - ('is_open', models.BooleanField(default=True, verbose_name='open')), - ('is_sent', models.BooleanField(default=False, verbose_name='sent')), - ('due_on', models.DateField(blank=True, null=True, verbose_name='due on')), - ('updated_on', models.DateField(auto_now=True, verbose_name='updated on')), - ('total', models.DecimalField(decimal_places=2, default=0, max_digits=12)), - ('comments', models.TextField(blank=True, verbose_name='comments')), - ('html', models.TextField(blank=True, verbose_name='HTML')), - ('account', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='bill', to=settings.AUTH_USER_MODEL, verbose_name='account')), - ], - options={ - 'get_latest_by': 'id', - }, - ), - migrations.CreateModel( - name='BillContact', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(blank=True, help_text='Account full name will be used when left blank.', max_length=256, verbose_name='name')), - ('address', models.TextField(verbose_name='address')), - ('city', models.CharField(default='Barcelona', max_length=128, verbose_name='city')), - ('zipcode', models.CharField(max_length=10, validators=[django.core.validators.RegexValidator('^[0-9A-Z]{3,10}$', 'Enter a valid zipcode.')], verbose_name='zip code')), - ('country', models.CharField(choices=[('AF', 'Afghanistan'), ('AX', 'Åland Islands'), ('AL', 'Albania'), ('DZ', 'Algeria'), ('AS', 'American Samoa'), ('AD', 'Andorra'), ('AO', 'Angola'), ('AI', 'Anguilla'), ('AQ', 'Antarctica'), ('AG', 'Antigua and Barbuda'), ('AR', 'Argentina'), ('AM', 'Armenia'), ('AW', 'Aruba'), ('AU', 'Australia'), ('AT', 'Austria'), ('AZ', 'Azerbaijan'), ('BS', 'Bahamas'), ('BH', 'Bahrain'), ('BD', 'Bangladesh'), ('BB', 'Barbados'), ('BY', 'Belarus'), ('BE', 'Belgium'), ('BZ', 'Belize'), ('BJ', 'Benin'), ('BM', 'Bermuda'), ('BT', 'Bhutan'), ('BO', 'Bolivia (Plurinational State of)'), ('BQ', 'Bonaire, Sint Eustatius and Saba'), ('BA', 'Bosnia and Herzegovina'), ('BW', 'Botswana'), ('BV', 'Bouvet Island'), ('BR', 'Brazil'), ('IO', 'British Indian Ocean Territory'), ('BN', 'Brunei Darussalam'), ('BG', 'Bulgaria'), ('BF', 'Burkina Faso'), ('BI', 'Burundi'), ('CV', 'Cabo Verde'), ('KH', 'Cambodia'), ('CM', 'Cameroon'), ('CA', 'Canada'), ('KY', 'Cayman Islands'), ('CF', 'Central African Republic'), ('TD', 'Chad'), ('CL', 'Chile'), ('CN', 'China'), ('CX', 'Christmas Island'), ('CC', 'Cocos (Keeling) Islands'), ('CO', 'Colombia'), ('KM', 'Comoros'), ('CG', 'Congo'), ('CD', 'Congo (the Democratic Republic of the)'), ('CK', 'Cook Islands'), ('CR', 'Costa Rica'), ('CI', "Côte d'Ivoire"), ('HR', 'Croatia'), ('CU', 'Cuba'), ('CW', 'Curaçao'), ('CY', 'Cyprus'), ('CZ', 'Czechia'), ('DK', 'Denmark'), ('DJ', 'Djibouti'), ('DM', 'Dominica'), ('DO', 'Dominican Republic'), ('EC', 'Ecuador'), ('EG', 'Egypt'), ('SV', 'El Salvador'), ('GQ', 'Equatorial Guinea'), ('ER', 'Eritrea'), ('EE', 'Estonia'), ('SZ', 'Eswatini'), ('ET', 'Ethiopia'), ('FK', 'Falkland Islands (Malvinas)'), ('FO', 'Faroe Islands'), ('FJ', 'Fiji'), ('FI', 'Finland'), ('FR', 'France'), ('GF', 'French Guiana'), ('PF', 'French Polynesia'), ('TF', 'French Southern Territories'), ('GA', 'Gabon'), ('GM', 'Gambia'), ('GE', 'Georgia'), ('DE', 'Germany'), ('GH', 'Ghana'), ('GI', 'Gibraltar'), ('GR', 'Greece'), ('GL', 'Greenland'), ('GD', 'Grenada'), ('GP', 'Guadeloupe'), ('GU', 'Guam'), ('GT', 'Guatemala'), ('GG', 'Guernsey'), ('GN', 'Guinea'), ('GW', 'Guinea-Bissau'), ('GY', 'Guyana'), ('HT', 'Haiti'), ('HM', 'Heard Island and McDonald Islands'), ('VA', 'Holy See'), ('HN', 'Honduras'), ('HK', 'Hong Kong'), ('HU', 'Hungary'), ('IS', 'Iceland'), ('IN', 'India'), ('ID', 'Indonesia'), ('IR', 'Iran (Islamic Republic of)'), ('IQ', 'Iraq'), ('IE', 'Ireland'), ('IM', 'Isle of Man'), ('IL', 'Israel'), ('IT', 'Italy'), ('JM', 'Jamaica'), ('JP', 'Japan'), ('JE', 'Jersey'), ('JO', 'Jordan'), ('KZ', 'Kazakhstan'), ('KE', 'Kenya'), ('KI', 'Kiribati'), ('KP', "Korea (the Democratic People's Republic of)"), ('KR', 'Korea (the Republic of)'), ('KW', 'Kuwait'), ('KG', 'Kyrgyzstan'), ('LA', "Lao People's Democratic Republic"), ('LV', 'Latvia'), ('LB', 'Lebanon'), ('LS', 'Lesotho'), ('LR', 'Liberia'), ('LY', 'Libya'), ('LI', 'Liechtenstein'), ('LT', 'Lithuania'), ('LU', 'Luxembourg'), ('MO', 'Macao'), ('MG', 'Madagascar'), ('MW', 'Malawi'), ('MY', 'Malaysia'), ('MV', 'Maldives'), ('ML', 'Mali'), ('MT', 'Malta'), ('MH', 'Marshall Islands'), ('MQ', 'Martinique'), ('MR', 'Mauritania'), ('MU', 'Mauritius'), ('YT', 'Mayotte'), ('MX', 'Mexico'), ('FM', 'Micronesia (Federated States of)'), ('MD', 'Moldova (the Republic of)'), ('MC', 'Monaco'), ('MN', 'Mongolia'), ('ME', 'Montenegro'), ('MS', 'Montserrat'), ('MA', 'Morocco'), ('MZ', 'Mozambique'), ('MM', 'Myanmar'), ('NA', 'Namibia'), ('NR', 'Nauru'), ('NP', 'Nepal'), ('NL', 'Netherlands'), ('NC', 'New Caledonia'), ('NZ', 'New Zealand'), ('NI', 'Nicaragua'), ('NE', 'Niger'), ('NG', 'Nigeria'), ('NU', 'Niue'), ('NF', 'Norfolk Island'), ('MK', 'North Macedonia'), ('MP', 'Northern Mariana Islands'), ('NO', 'Norway'), ('OM', 'Oman'), ('PK', 'Pakistan'), ('PW', 'Palau'), ('PS', 'Palestine, State of'), ('PA', 'Panama'), ('PG', 'Papua New Guinea'), ('PY', 'Paraguay'), ('PE', 'Peru'), ('PH', 'Philippines'), ('PN', 'Pitcairn'), ('PL', 'Poland'), ('PT', 'Portugal'), ('PR', 'Puerto Rico'), ('QA', 'Qatar'), ('RE', 'Réunion'), ('RO', 'Romania'), ('RU', 'Russian Federation'), ('RW', 'Rwanda'), ('BL', 'Saint Barthélemy'), ('SH', 'Saint Helena, Ascension and Tristan da Cunha'), ('KN', 'Saint Kitts and Nevis'), ('LC', 'Saint Lucia'), ('MF', 'Saint Martin (French part)'), ('PM', 'Saint Pierre and Miquelon'), ('VC', 'Saint Vincent and the Grenadines'), ('WS', 'Samoa'), ('SM', 'San Marino'), ('ST', 'Sao Tome and Principe'), ('SA', 'Saudi Arabia'), ('SN', 'Senegal'), ('RS', 'Serbia'), ('SC', 'Seychelles'), ('SL', 'Sierra Leone'), ('SG', 'Singapore'), ('SX', 'Sint Maarten (Dutch part)'), ('SK', 'Slovakia'), ('SI', 'Slovenia'), ('SB', 'Solomon Islands'), ('SO', 'Somalia'), ('ZA', 'South Africa'), ('GS', 'South Georgia and the South Sandwich Islands'), ('SS', 'South Sudan'), ('ES', 'Spain'), ('LK', 'Sri Lanka'), ('SD', 'Sudan'), ('SR', 'Suriname'), ('SJ', 'Svalbard and Jan Mayen'), ('SE', 'Sweden'), ('CH', 'Switzerland'), ('SY', 'Syrian Arab Republic'), ('TW', 'Taiwan (Province of China)'), ('TJ', 'Tajikistan'), ('TZ', 'Tanzania, the United Republic of'), ('TH', 'Thailand'), ('TL', 'Timor-Leste'), ('TG', 'Togo'), ('TK', 'Tokelau'), ('TO', 'Tonga'), ('TT', 'Trinidad and Tobago'), ('TN', 'Tunisia'), ('TR', 'Turkey'), ('TM', 'Turkmenistan'), ('TC', 'Turks and Caicos Islands'), ('TV', 'Tuvalu'), ('UG', 'Uganda'), ('UA', 'Ukraine'), ('AE', 'United Arab Emirates'), ('GB', 'United Kingdom of Great Britain and Northern Ireland'), ('UM', 'United States Minor Outlying Islands'), ('US', 'United States of America'), ('UY', 'Uruguay'), ('UZ', 'Uzbekistan'), ('VU', 'Vanuatu'), ('VE', 'Venezuela (Bolivarian Republic of)'), ('VN', 'Viet Nam'), ('VG', 'Virgin Islands (British)'), ('VI', 'Virgin Islands (U.S.)'), ('WF', 'Wallis and Futuna'), ('EH', 'Western Sahara'), ('YE', 'Yemen'), ('ZM', 'Zambia'), ('ZW', 'Zimbabwe')], default='ES', max_length=20, verbose_name='country')), - ('vat', models.CharField(max_length=64, verbose_name='VAT number')), - ('account', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='billcontact', to=settings.AUTH_USER_MODEL, verbose_name='account')), - ], - ), - migrations.CreateModel( - name='BillLine', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('description', models.CharField(max_length=256, verbose_name='description')), - ('rate', models.DecimalField(blank=True, decimal_places=2, max_digits=12, null=True, verbose_name='rate')), - ('quantity', models.DecimalField(decimal_places=2, max_digits=12, verbose_name='quantity')), - ('verbose_quantity', models.CharField(max_length=16, verbose_name='Verbose quantity')), - ('subtotal', models.DecimalField(decimal_places=2, max_digits=12, verbose_name='subtotal')), - ('tax', models.DecimalField(decimal_places=2, max_digits=4, verbose_name='tax')), - ('start_on', models.DateField(verbose_name='start')), - ('end_on', models.DateField(null=True, verbose_name='end')), - ('order_billed_on', models.DateField(blank=True, null=True, verbose_name='order billed')), - ('order_billed_until', models.DateField(blank=True, null=True, verbose_name='order billed until')), - ('created_on', models.DateField(auto_now_add=True, verbose_name='created')), - ('amended_line', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='amendment_lines', to='bills.BillLine', verbose_name='amended line')), - ('bill', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='lines', to='bills.Bill', verbose_name='bill')), - ('order', models.ForeignKey(blank=True, help_text='Informative link back to the order', null=True, on_delete=django.db.models.deletion.SET_NULL, to='orders.Order')), - ], - ), - migrations.CreateModel( - name='BillSubline', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('description', models.CharField(max_length=256, verbose_name='description')), - ('total', models.DecimalField(decimal_places=2, max_digits=12)), - ('type', models.CharField(choices=[('VOLUME', 'Volume'), ('COMPENSATION', 'Compensation'), ('OTHER', 'Other')], default='OTHER', max_length=16, verbose_name='type')), - ('line', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='sublines', to='bills.BillLine', verbose_name='bill line')), - ], - ), - migrations.CreateModel( - name='AmendmentFee', - fields=[ - ], - options={ - 'proxy': True, - }, - bases=('bills.bill',), - ), - migrations.CreateModel( - name='AmendmentInvoice', - fields=[ - ], - options={ - 'proxy': True, - }, - bases=('bills.bill',), - ), - migrations.CreateModel( - name='Fee', - fields=[ - ], - options={ - 'proxy': True, - }, - bases=('bills.bill',), - ), - migrations.CreateModel( - name='Invoice', - fields=[ - ], - options={ - 'proxy': True, - }, - bases=('bills.bill',), - ), - migrations.CreateModel( - name='ProForma', - fields=[ - ], - options={ - 'proxy': True, - }, - bases=('bills.bill',), - ), - migrations.RemoveField( - model_name='bill', - name='total', - ), - migrations.AlterField( - model_name='billline', - name='quantity', - field=models.DecimalField(blank=True, decimal_places=2, max_digits=12, null=True, verbose_name='quantity'), - ), - migrations.AddField( - model_name='bill', - name='amend_of', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='amends', to='bills.Bill', verbose_name='amend of'), - ), - migrations.AlterField( - model_name='bill', - name='closed_on', - field=models.DateField(blank=True, db_index=True, null=True, verbose_name='closed on'), - ), - migrations.AlterField( - model_name='billline', - name='end_on', - field=models.DateField(blank=True, null=True, verbose_name='end'), - ), - migrations.AlterModelOptions( - name='billline', - options={'get_latest_by': 'id'}, - ), - migrations.AlterField( - model_name='billline', - name='order', - field=models.ForeignKey(blank=True, help_text='Informative link back to the order', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='lines', to='orders.Order'), - ), - migrations.AlterField( - model_name='billline', - name='verbose_quantity', - field=models.CharField(blank=True, max_length=16, verbose_name='Verbose quantity'), - ), - migrations.CreateModel( - name='AbonoInvoice', - fields=[ - ], - options={ - 'proxy': True, - }, - bases=('bills.bill',), - ), - migrations.AlterField( - model_name='bill', - name='type', - field=models.CharField(choices=[('INVOICE', 'Invoice'), ('AMENDMENTINVOICE', 'Amendment invoice'), ('FEE', 'Fee'), ('AMENDMENTFEE', 'Amendment Fee'), ('ABONOINVOICE', 'Abono Invoice'), ('PROFORMA', 'Pro forma')], max_length=16, verbose_name='type'), - ), - migrations.AlterField( - model_name='bill', - name='amend_of', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='amends', to='bills.Bill', verbose_name='amend of'), - ), - ] diff --git a/orchestra/contrib/bills/migrations/0002_auto_20150429_1417.py b/orchestra/contrib/bills/migrations/0002_auto_20150429_1417.py deleted file mode 100644 index 36d09695..00000000 --- a/orchestra/contrib/bills/migrations/0002_auto_20150429_1417.py +++ /dev/null @@ -1,19 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('bills', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='billcontact', - name='country', - field=models.CharField(choices=[('EE', 'Estonia'), ('PH', 'Philippines'), ('BT', 'Bhutan'), ('LA', "Lao People's Democratic Republic"), ('DJ', 'Djibouti'), ('TK', 'Tokelau'), ('IM', 'Isle of Man'), ('SR', 'Suriname'), ('KP', "Korea (the Democratic People's Republic of)"), ('JP', 'Japan'), ('KN', 'Saint Kitts and Nevis'), ('SY', 'Syrian Arab Republic'), ('AG', 'Antigua and Barbuda'), ('RW', 'Rwanda'), ('PA', 'Panama'), ('CA', 'Canada'), ('MR', 'Mauritania'), ('HK', 'Hong Kong'), ('UM', 'United States Minor Outlying Islands'), ('BB', 'Barbados'), ('NF', 'Norfolk Island'), ('MK', 'Macedonia (the former Yugoslav Republic of)'), ('GS', 'South Georgia and the South Sandwich Islands'), ('FK', 'Falkland Islands [Malvinas]'), ('TF', 'French Southern Territories'), ('TV', 'Tuvalu'), ('SX', 'Sint Maarten (Dutch part)'), ('PW', 'Palau'), ('QA', 'Qatar'), ('GT', 'Guatemala'), ('KG', 'Kyrgyzstan'), ('HT', 'Haiti'), ('NG', 'Nigeria'), ('TG', 'Togo'), ('GR', 'Greece'), ('GF', 'French Guiana'), ('HN', 'Honduras'), ('CV', 'Cabo Verde'), ('DM', 'Dominica'), ('GB', 'United Kingdom of Great Britain and Northern Ireland'), ('ME', 'Montenegro'), ('SG', 'Singapore'), ('MT', 'Malta'), ('GG', 'Guernsey'), ('MW', 'Malawi'), ('GH', 'Ghana'), ('GN', 'Guinea'), ('EG', 'Egypt'), ('MD', 'Moldova (the Republic of)'), ('NE', 'Niger'), ('NR', 'Nauru'), ('IE', 'Ireland'), ('CY', 'Cyprus'), ('BH', 'Bahrain'), ('BY', 'Belarus'), ('TC', 'Turks and Caicos Islands'), ('CF', 'Central African Republic'), ('CI', "Côte d'Ivoire"), ('LK', 'Sri Lanka'), ('GW', 'Guinea-Bissau'), ('SZ', 'Swaziland'), ('YE', 'Yemen'), ('AQ', 'Antarctica'), ('WS', 'Samoa'), ('PN', 'Pitcairn'), ('AE', 'United Arab Emirates'), ('LV', 'Latvia'), ('CZ', 'Czech Republic'), ('JO', 'Jordan'), ('LU', 'Luxembourg'), ('RU', 'Russian Federation'), ('SN', 'Senegal'), ('SH', 'Saint Helena, Ascension and Tristan da Cunha'), ('SS', 'South Sudan'), ('LI', 'Liechtenstein'), ('GM', 'Gambia'), ('SO', 'Somalia'), ('AT', 'Austria'), ('AL', 'Albania'), ('MM', 'Myanmar'), ('MC', 'Monaco'), ('AZ', 'Azerbaijan'), ('KY', 'Cayman Islands'), ('HU', 'Hungary'), ('SE', 'Sweden'), ('US', 'United States of America'), ('MS', 'Montserrat'), ('MX', 'Mexico'), ('IR', 'Iran (Islamic Republic of)'), ('SK', 'Slovakia'), ('IO', 'British Indian Ocean Territory'), ('SV', 'El Salvador'), ('ST', 'Sao Tome and Principe'), ('ZW', 'Zimbabwe'), ('MN', 'Mongolia'), ('MG', 'Madagascar'), ('LB', 'Lebanon'), ('PR', 'Puerto Rico'), ('JE', 'Jersey'), ('BD', 'Bangladesh'), ('HM', 'Heard Island and McDonald Islands'), ('RO', 'Romania'), ('TN', 'Tunisia'), ('AD', 'Andorra'), ('SJ', 'Svalbard and Jan Mayen'), ('PL', 'Poland'), ('AF', 'Afghanistan'), ('NC', 'New Caledonia'), ('FI', 'Finland'), ('GD', 'Grenada'), ('GY', 'Guyana'), ('ZA', 'South Africa'), ('MA', 'Morocco'), ('AS', 'American Samoa'), ('PY', 'Paraguay'), ('ZM', 'Zambia'), ('PG', 'Papua New Guinea'), ('CH', 'Switzerland'), ('LY', 'Libya'), ('KZ', 'Kazakhstan'), ('SL', 'Sierra Leone'), ('DO', 'Dominican Republic'), ('TZ', 'Tanzania, United Republic of'), ('LC', 'Saint Lucia'), ('NI', 'Nicaragua'), ('TH', 'Thailand'), ('BI', 'Burundi'), ('SD', 'Sudan'), ('BW', 'Botswana'), ('VE', 'Venezuela (Bolivarian Republic of)'), ('TJ', 'Tajikistan'), ('CM', 'Cameroon'), ('EC', 'Ecuador'), ('ER', 'Eritrea'), ('CX', 'Christmas Island'), ('MO', 'Macao'), ('MH', 'Marshall Islands'), ('AU', 'Australia'), ('DK', 'Denmark'), ('TT', 'Trinidad and Tobago'), ('BE', 'Belgium'), ('SI', 'Slovenia'), ('PM', 'Saint Pierre and Miquelon'), ('KH', 'Cambodia'), ('CW', 'Curaçao'), ('EH', 'Western Sahara'), ('TO', 'Tonga'), ('AO', 'Angola'), ('OM', 'Oman'), ('GE', 'Georgia'), ('MF', 'Saint Martin (French part)'), ('IT', 'Italy'), ('UA', 'Ukraine'), ('BA', 'Bosnia and Herzegovina'), ('WF', 'Wallis and Futuna'), ('FM', 'Micronesia (Federated States of)'), ('BO', 'Bolivia (Plurinational State of)'), ('PF', 'French Polynesia'), ('DE', 'Germany'), ('BZ', 'Belize'), ('IS', 'Iceland'), ('MY', 'Malaysia'), ('IQ', 'Iraq'), ('KR', 'Korea (the Republic of)'), ('CN', 'China'), ('SB', 'Solomon Islands'), ('TL', 'Timor-Leste'), ('TD', 'Chad'), ('PE', 'Peru'), ('BL', 'Saint Barthélemy'), ('CL', 'Chile'), ('KI', 'Kiribati'), ('PT', 'Portugal'), ('ES', 'Spain'), ('IL', 'Israel'), ('MU', 'Mauritius'), ('HR', 'Croatia'), ('PK', 'Pakistan'), ('PS', 'Palestine, State of'), ('NL', 'Netherlands'), ('CG', 'Congo'), ('MQ', 'Martinique'), ('BG', 'Bulgaria'), ('FR', 'France'), ('VI', 'Virgin Islands (U.S.)'), ('LT', 'Lithuania'), ('BN', 'Brunei Darussalam'), ('ET', 'Ethiopia'), ('NU', 'Niue'), ('AR', 'Argentina'), ('DZ', 'Algeria'), ('RS', 'Serbia'), ('UZ', 'Uzbekistan'), ('SM', 'San Marino'), ('JM', 'Jamaica'), ('VN', 'Viet Nam'), ('AM', 'Armenia'), ('KE', 'Kenya'), ('CO', 'Colombia'), ('LS', 'Lesotho'), ('GP', 'Guadeloupe'), ('GA', 'Gabon'), ('KM', 'Comoros'), ('BS', 'Bahamas'), ('TW', 'Taiwan (Province of China)'), ('RE', 'Réunion'), ('AW', 'Aruba'), ('BV', 'Bouvet Island'), ('UG', 'Uganda'), ('BQ', 'Bonaire, Sint Eustatius and Saba'), ('BF', 'Burkina Faso'), ('NP', 'Nepal'), ('VG', 'Virgin Islands (British)'), ('SA', 'Saudi Arabia'), ('AX', 'Åland Islands'), ('TM', 'Turkmenistan'), ('IN', 'India'), ('CC', 'Cocos (Keeling) Islands'), ('FO', 'Faroe Islands'), ('BJ', 'Benin'), ('BM', 'Bermuda'), ('ID', 'Indonesia'), ('NA', 'Namibia'), ('TR', 'Turkey'), ('GI', 'Gibraltar'), ('GQ', 'Equatorial Guinea'), ('GU', 'Guam'), ('ML', 'Mali'), ('SC', 'Seychelles'), ('MP', 'Northern Mariana Islands'), ('LR', 'Liberia'), ('CK', 'Cook Islands'), ('VA', 'Holy See'), ('FJ', 'Fiji'), ('YT', 'Mayotte'), ('NZ', 'New Zealand'), ('CU', 'Cuba'), ('AI', 'Anguilla'), ('VC', 'Saint Vincent and the Grenadines'), ('MV', 'Maldives'), ('GL', 'Greenland'), ('NO', 'Norway'), ('BR', 'Brazil'), ('CD', 'Congo (the Democratic Republic of the)'), ('CR', 'Costa Rica'), ('VU', 'Vanuatu'), ('MZ', 'Mozambique'), ('KW', 'Kuwait'), ('UY', 'Uruguay')], verbose_name='country', max_length=20, default='ES'), - ), - ] diff --git a/orchestra/contrib/bills/migrations/0003_auto_20150612_0944.py b/orchestra/contrib/bills/migrations/0003_auto_20150612_0944.py deleted file mode 100644 index 1b6691c4..00000000 --- a/orchestra/contrib/bills/migrations/0003_auto_20150612_0944.py +++ /dev/null @@ -1,24 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('bills', '0002_auto_20150429_1417'), - ] - - operations = [ - migrations.AlterField( - model_name='bill', - name='total', - field=models.DecimalField(null=True, decimal_places=2, max_digits=12), - ), - migrations.AlterField( - model_name='billcontact', - name='country', - field=models.CharField(choices=[('MX', 'Mexico'), ('RE', 'Réunion'), ('RW', 'Rwanda'), ('RS', 'Serbia'), ('KM', 'Comoros'), ('KP', "Korea (the Democratic People's Republic of)"), ('GA', 'Gabon'), ('CG', 'Congo'), ('RU', 'Russian Federation'), ('CM', 'Cameroon'), ('DO', 'Dominican Republic'), ('AG', 'Antigua and Barbuda'), ('SC', 'Seychelles'), ('TW', 'Taiwan (Province of China)'), ('SJ', 'Svalbard and Jan Mayen'), ('SM', 'San Marino'), ('ZA', 'South Africa'), ('TC', 'Turks and Caicos Islands'), ('AI', 'Anguilla'), ('EG', 'Egypt'), ('CI', "Côte d'Ivoire"), ('SV', 'El Salvador'), ('BN', 'Brunei Darussalam'), ('CF', 'Central African Republic'), ('QA', 'Qatar'), ('BO', 'Bolivia (Plurinational State of)'), ('IQ', 'Iraq'), ('AS', 'American Samoa'), ('TG', 'Togo'), ('FM', 'Micronesia (Federated States of)'), ('IL', 'Israel'), ('BF', 'Burkina Faso'), ('SI', 'Slovenia'), ('PT', 'Portugal'), ('FI', 'Finland'), ('BA', 'Bosnia and Herzegovina'), ('CX', 'Christmas Island'), ('BQ', 'Bonaire, Sint Eustatius and Saba'), ('GI', 'Gibraltar'), ('UY', 'Uruguay'), ('NR', 'Nauru'), ('BI', 'Burundi'), ('MO', 'Macao'), ('BV', 'Bouvet Island'), ('TD', 'Chad'), ('CW', 'Curaçao'), ('UG', 'Uganda'), ('GD', 'Grenada'), ('HM', 'Heard Island and McDonald Islands'), ('PA', 'Panama'), ('SA', 'Saudi Arabia'), ('PK', 'Pakistan'), ('LU', 'Luxembourg'), ('LC', 'Saint Lucia'), ('PS', 'Palestine, State of'), ('TM', 'Turkmenistan'), ('BL', 'Saint Barthélemy'), ('IR', 'Iran (Islamic Republic of)'), ('SO', 'Somalia'), ('CO', 'Colombia'), ('BE', 'Belgium'), ('MT', 'Malta'), ('ZM', 'Zambia'), ('VN', 'Viet Nam'), ('MG', 'Madagascar'), ('AX', 'Åland Islands'), ('ME', 'Montenegro'), ('BD', 'Bangladesh'), ('CK', 'Cook Islands'), ('US', 'United States of America'), ('HT', 'Haiti'), ('MQ', 'Martinique'), ('JP', 'Japan'), ('BZ', 'Belize'), ('CZ', 'Czech Republic'), ('IO', 'British Indian Ocean Territory'), ('RO', 'Romania'), ('BB', 'Barbados'), ('EH', 'Western Sahara'), ('HN', 'Honduras'), ('IS', 'Iceland'), ('ZW', 'Zimbabwe'), ('YE', 'Yemen'), ('ER', 'Eritrea'), ('CU', 'Cuba'), ('TT', 'Trinidad and Tobago'), ('AR', 'Argentina'), ('GU', 'Guam'), ('BT', 'Bhutan'), ('AM', 'Armenia'), ('GG', 'Guernsey'), ('LT', 'Lithuania'), ('KZ', 'Kazakhstan'), ('MU', 'Mauritius'), ('FO', 'Faroe Islands'), ('SB', 'Solomon Islands'), ('TJ', 'Tajikistan'), ('NF', 'Norfolk Island'), ('GP', 'Guadeloupe'), ('AD', 'Andorra'), ('PR', 'Puerto Rico'), ('AO', 'Angola'), ('BY', 'Belarus'), ('CY', 'Cyprus'), ('IM', 'Isle of Man'), ('DK', 'Denmark'), ('FK', 'Falkland Islands [Malvinas]'), ('MH', 'Marshall Islands'), ('CD', 'Congo (the Democratic Republic of the)'), ('GB', 'United Kingdom of Great Britain and Northern Ireland'), ('UM', 'United States Minor Outlying Islands'), ('CN', 'China'), ('FJ', 'Fiji'), ('DZ', 'Algeria'), ('DM', 'Dominica'), ('MZ', 'Mozambique'), ('GL', 'Greenland'), ('AQ', 'Antarctica'), ('GS', 'South Georgia and the South Sandwich Islands'), ('GQ', 'Equatorial Guinea'), ('MP', 'Northern Mariana Islands'), ('SX', 'Sint Maarten (Dutch part)'), ('GT', 'Guatemala'), ('CA', 'Canada'), ('IN', 'India'), ('MF', 'Saint Martin (French part)'), ('VA', 'Holy See'), ('MA', 'Morocco'), ('PF', 'French Polynesia'), ('SH', 'Saint Helena, Ascension and Tristan da Cunha'), ('NP', 'Nepal'), ('LI', 'Liechtenstein'), ('GE', 'Georgia'), ('TL', 'Timor-Leste'), ('WS', 'Samoa'), ('TV', 'Tuvalu'), ('TO', 'Tonga'), ('ID', 'Indonesia'), ('VG', 'Virgin Islands (British)'), ('LR', 'Liberia'), ('BW', 'Botswana'), ('PG', 'Papua New Guinea'), ('AZ', 'Azerbaijan'), ('CH', 'Switzerland'), ('AF', 'Afghanistan'), ('HK', 'Hong Kong'), ('NE', 'Niger'), ('JO', 'Jordan'), ('ST', 'Sao Tome and Principe'), ('NU', 'Niue'), ('ET', 'Ethiopia'), ('KW', 'Kuwait'), ('MK', 'Macedonia (the former Yugoslav Republic of)'), ('SZ', 'Swaziland'), ('PN', 'Pitcairn'), ('MD', 'Moldova (the Republic of)'), ('PW', 'Palau'), ('LB', 'Lebanon'), ('MS', 'Montserrat'), ('SE', 'Sweden'), ('VI', 'Virgin Islands (U.S.)'), ('GN', 'Guinea'), ('TZ', 'Tanzania, United Republic of'), ('TR', 'Turkey'), ('PY', 'Paraguay'), ('NI', 'Nicaragua'), ('IT', 'Italy'), ('SN', 'Senegal'), ('CV', 'Cabo Verde'), ('BS', 'Bahamas'), ('BR', 'Brazil'), ('DJ', 'Djibouti'), ('AL', 'Albania'), ('GF', 'French Guiana'), ('KI', 'Kiribati'), ('VU', 'Vanuatu'), ('GM', 'Gambia'), ('SS', 'South Sudan'), ('TF', 'French Southern Territories'), ('BH', 'Bahrain'), ('MN', 'Mongolia'), ('KN', 'Saint Kitts and Nevis'), ('NL', 'Netherlands'), ('LK', 'Sri Lanka'), ('PE', 'Peru'), ('TK', 'Tokelau'), ('YT', 'Mayotte'), ('TN', 'Tunisia'), ('SG', 'Singapore'), ('BJ', 'Benin'), ('GH', 'Ghana'), ('KR', 'Korea (the Republic of)'), ('CR', 'Costa Rica'), ('JM', 'Jamaica'), ('AU', 'Australia'), ('KE', 'Kenya'), ('MM', 'Myanmar'), ('NA', 'Namibia'), ('UZ', 'Uzbekistan'), ('GR', 'Greece'), ('MR', 'Mauritania'), ('PL', 'Poland'), ('SY', 'Syrian Arab Republic'), ('MY', 'Malaysia'), ('EE', 'Estonia'), ('NZ', 'New Zealand'), ('MC', 'Monaco'), ('HU', 'Hungary'), ('SD', 'Sudan'), ('NG', 'Nigeria'), ('LA', "Lao People's Democratic Republic"), ('SK', 'Slovakia'), ('GY', 'Guyana'), ('UA', 'Ukraine'), ('BM', 'Bermuda'), ('AE', 'United Arab Emirates'), ('VC', 'Saint Vincent and the Grenadines'), ('AW', 'Aruba'), ('JE', 'Jersey'), ('PH', 'Philippines'), ('KH', 'Cambodia'), ('PM', 'Saint Pierre and Miquelon'), ('MW', 'Malawi'), ('HR', 'Croatia'), ('CL', 'Chile'), ('CC', 'Cocos (Keeling) Islands'), ('NC', 'New Caledonia'), ('LS', 'Lesotho'), ('SR', 'Suriname'), ('VE', 'Venezuela (Bolivarian Republic of)'), ('ES', 'Spain'), ('DE', 'Germany'), ('EC', 'Ecuador'), ('LV', 'Latvia'), ('LY', 'Libya'), ('NO', 'Norway'), ('WF', 'Wallis and Futuna'), ('GW', 'Guinea-Bissau'), ('ML', 'Mali'), ('FR', 'France'), ('TH', 'Thailand'), ('AT', 'Austria'), ('SL', 'Sierra Leone'), ('IE', 'Ireland'), ('KY', 'Cayman Islands'), ('BG', 'Bulgaria'), ('KG', 'Kyrgyzstan'), ('MV', 'Maldives'), ('OM', 'Oman')], max_length=20, verbose_name='country', default='ES'), - ), - ] diff --git a/orchestra/contrib/bills/migrations/0004_auto_20150618_1311.py b/orchestra/contrib/bills/migrations/0004_auto_20150618_1311.py deleted file mode 100644 index d3ec1ef8..00000000 --- a/orchestra/contrib/bills/migrations/0004_auto_20150618_1311.py +++ /dev/null @@ -1,24 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('bills', '0003_auto_20150612_0944'), - ] - - operations = [ - migrations.AlterField( - model_name='billcontact', - name='country', - field=models.CharField(max_length=20, verbose_name='country', default='ES', choices=[('HT', 'Haiti'), ('TJ', 'Tajikistan'), ('VG', 'Virgin Islands (British)'), ('NL', 'Netherlands'), ('BA', 'Bosnia and Herzegovina'), ('AT', 'Austria'), ('ID', 'Indonesia'), ('IE', 'Ireland'), ('UA', 'Ukraine'), ('GR', 'Greece'), ('VA', 'Holy See'), ('TW', 'Taiwan (Province of China)'), ('MD', 'Moldova (the Republic of)'), ('GE', 'Georgia'), ('MK', 'Macedonia (the former Yugoslav Republic of)'), ('IO', 'British Indian Ocean Territory'), ('HR', 'Croatia'), ('AS', 'American Samoa'), ('KE', 'Kenya'), ('CF', 'Central African Republic'), ('DM', 'Dominica'), ('AZ', 'Azerbaijan'), ('NF', 'Norfolk Island'), ('NZ', 'New Zealand'), ('ES', 'Spain'), ('GM', 'Gambia'), ('GD', 'Grenada'), ('FR', 'France'), ('SG', 'Singapore'), ('SO', 'Somalia'), ('AX', 'Åland Islands'), ('BT', 'Bhutan'), ('JP', 'Japan'), ('SK', 'Slovakia'), ('SY', 'Syrian Arab Republic'), ('VN', 'Viet Nam'), ('KM', 'Comoros'), ('SJ', 'Svalbard and Jan Mayen'), ('SC', 'Seychelles'), ('LV', 'Latvia'), ('RS', 'Serbia'), ('PY', 'Paraguay'), ('CZ', 'Czech Republic'), ('DO', 'Dominican Republic'), ('LI', 'Liechtenstein'), ('IN', 'India'), ('SS', 'South Sudan'), ('CC', 'Cocos (Keeling) Islands'), ('NC', 'New Caledonia'), ('HK', 'Hong Kong'), ('KW', 'Kuwait'), ('PM', 'Saint Pierre and Miquelon'), ('SB', 'Solomon Islands'), ('GA', 'Gabon'), ('PK', 'Pakistan'), ('QA', 'Qatar'), ('FJ', 'Fiji'), ('IS', 'Iceland'), ('SL', 'Sierra Leone'), ('CD', 'Congo (the Democratic Republic of the)'), ('BJ', 'Benin'), ('BQ', 'Bonaire, Sint Eustatius and Saba'), ('MM', 'Myanmar'), ('TV', 'Tuvalu'), ('MY', 'Malaysia'), ('PR', 'Puerto Rico'), ('CI', "Côte d'Ivoire"), ('PF', 'French Polynesia'), ('GY', 'Guyana'), ('GU', 'Guam'), ('DK', 'Denmark'), ('UZ', 'Uzbekistan'), ('IR', 'Iran (Islamic Republic of)'), ('TC', 'Turks and Caicos Islands'), ('LU', 'Luxembourg'), ('UM', 'United States Minor Outlying Islands'), ('NG', 'Nigeria'), ('GS', 'South Georgia and the South Sandwich Islands'), ('GL', 'Greenland'), ('VC', 'Saint Vincent and the Grenadines'), ('KN', 'Saint Kitts and Nevis'), ('PN', 'Pitcairn'), ('AR', 'Argentina'), ('CU', 'Cuba'), ('PL', 'Poland'), ('AL', 'Albania'), ('JE', 'Jersey'), ('PE', 'Peru'), ('PW', 'Palau'), ('IT', 'Italy'), ('AG', 'Antigua and Barbuda'), ('BR', 'Brazil'), ('MN', 'Mongolia'), ('MU', 'Mauritius'), ('TR', 'Turkey'), ('NE', 'Niger'), ('ZM', 'Zambia'), ('ZW', 'Zimbabwe'), ('VU', 'Vanuatu'), ('MP', 'Northern Mariana Islands'), ('TO', 'Tonga'), ('BD', 'Bangladesh'), ('NA', 'Namibia'), ('LS', 'Lesotho'), ('GP', 'Guadeloupe'), ('CY', 'Cyprus'), ('CA', 'Canada'), ('SN', 'Senegal'), ('CR', 'Costa Rica'), ('UG', 'Uganda'), ('CG', 'Congo'), ('MV', 'Maldives'), ('WS', 'Samoa'), ('MZ', 'Mozambique'), ('KR', 'Korea (the Republic of)'), ('TN', 'Tunisia'), ('LR', 'Liberia'), ('NU', 'Niue'), ('YE', 'Yemen'), ('EE', 'Estonia'), ('KG', 'Kyrgyzstan'), ('HN', 'Honduras'), ('KH', 'Cambodia'), ('RW', 'Rwanda'), ('BL', 'Saint Barthélemy'), ('UY', 'Uruguay'), ('SI', 'Slovenia'), ('GW', 'Guinea-Bissau'), ('DJ', 'Djibouti'), ('NI', 'Nicaragua'), ('AW', 'Aruba'), ('TH', 'Thailand'), ('IQ', 'Iraq'), ('BZ', 'Belize'), ('ZA', 'South Africa'), ('MC', 'Monaco'), ('BF', 'Burkina Faso'), ('KP', "Korea (the Democratic People's Republic of)"), ('BW', 'Botswana'), ('BM', 'Bermuda'), ('LB', 'Lebanon'), ('TG', 'Togo'), ('AU', 'Australia'), ('ER', 'Eritrea'), ('SE', 'Sweden'), ('AQ', 'Antarctica'), ('BH', 'Bahrain'), ('CW', 'Curaçao'), ('DZ', 'Algeria'), ('BS', 'Bahamas'), ('SX', 'Sint Maarten (Dutch part)'), ('CX', 'Christmas Island'), ('SH', 'Saint Helena, Ascension and Tristan da Cunha'), ('BN', 'Brunei Darussalam'), ('CV', 'Cabo Verde'), ('CH', 'Switzerland'), ('BV', 'Bouvet Island'), ('PS', 'Palestine, State of'), ('MT', 'Malta'), ('BB', 'Barbados'), ('BE', 'Belgium'), ('RU', 'Russian Federation'), ('GB', 'United Kingdom of Great Britain and Northern Ireland'), ('NO', 'Norway'), ('RE', 'Réunion'), ('AO', 'Angola'), ('CO', 'Colombia'), ('SA', 'Saudi Arabia'), ('LK', 'Sri Lanka'), ('ML', 'Mali'), ('GH', 'Ghana'), ('GI', 'Gibraltar'), ('ME', 'Montenegro'), ('TM', 'Turkmenistan'), ('VI', 'Virgin Islands (U.S.)'), ('GF', 'French Guiana'), ('RO', 'Romania'), ('JM', 'Jamaica'), ('VE', 'Venezuela (Bolivarian Republic of)'), ('US', 'United States of America'), ('KI', 'Kiribati'), ('MX', 'Mexico'), ('SM', 'San Marino'), ('FM', 'Micronesia (Federated States of)'), ('GG', 'Guernsey'), ('LC', 'Saint Lucia'), ('MW', 'Malawi'), ('ET', 'Ethiopia'), ('BO', 'Bolivia (Plurinational State of)'), ('EC', 'Ecuador'), ('LT', 'Lithuania'), ('AI', 'Anguilla'), ('BY', 'Belarus'), ('AM', 'Armenia'), ('KZ', 'Kazakhstan'), ('TT', 'Trinidad and Tobago'), ('SR', 'Suriname'), ('MQ', 'Martinique'), ('GQ', 'Equatorial Guinea'), ('LY', 'Libya'), ('BG', 'Bulgaria'), ('CK', 'Cook Islands'), ('AD', 'Andorra'), ('DE', 'Germany'), ('MR', 'Mauritania'), ('TK', 'Tokelau'), ('EH', 'Western Sahara'), ('PT', 'Portugal'), ('CL', 'Chile'), ('GT', 'Guatemala'), ('KY', 'Cayman Islands'), ('SZ', 'Swaziland'), ('TL', 'Timor-Leste'), ('MF', 'Saint Martin (French part)'), ('SV', 'El Salvador'), ('EG', 'Egypt'), ('ST', 'Sao Tome and Principe'), ('HU', 'Hungary'), ('MA', 'Morocco'), ('TD', 'Chad'), ('PG', 'Papua New Guinea'), ('GN', 'Guinea'), ('MH', 'Marshall Islands'), ('FI', 'Finland'), ('BI', 'Burundi'), ('TZ', 'Tanzania, United Republic of'), ('CM', 'Cameroon'), ('FO', 'Faroe Islands'), ('TF', 'French Southern Territories'), ('FK', 'Falkland Islands [Malvinas]'), ('AF', 'Afghanistan'), ('NP', 'Nepal'), ('NR', 'Nauru'), ('SD', 'Sudan'), ('HM', 'Heard Island and McDonald Islands'), ('OM', 'Oman'), ('LA', "Lao People's Democratic Republic"), ('WF', 'Wallis and Futuna'), ('MG', 'Madagascar'), ('AE', 'United Arab Emirates'), ('JO', 'Jordan'), ('PA', 'Panama'), ('IL', 'Israel'), ('YT', 'Mayotte'), ('IM', 'Isle of Man'), ('MO', 'Macao'), ('PH', 'Philippines'), ('MS', 'Montserrat'), ('CN', 'China')]), - ), - migrations.AlterField( - model_name='billline', - name='quantity', - field=models.DecimalField(verbose_name='quantity', decimal_places=2, max_digits=12, blank=True, null=True), - ), - ] diff --git a/orchestra/contrib/bills/migrations/0005_auto_20150623_1031.py b/orchestra/contrib/bills/migrations/0005_auto_20150623_1031.py deleted file mode 100644 index 92aba3b9..00000000 --- a/orchestra/contrib/bills/migrations/0005_auto_20150623_1031.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -import django.db.models.deletion -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('bills', '0004_auto_20150618_1311'), - ] - - operations = [ - migrations.AddField( - model_name='bill', - name='amend_of', - field=models.ForeignKey(to='bills.Bill', blank=True, on_delete=django.db.models.deletion.CASCADE, related_name='amends', verbose_name='amend of', null=True), - ), - migrations.AlterField( - model_name='billcontact', - name='country', - field=models.CharField(default='ES', verbose_name='country', choices=[('AO', 'Angola'), ('BB', 'Barbados'), ('IR', 'Iran (Islamic Republic of)'), ('SJ', 'Svalbard and Jan Mayen'), ('UG', 'Uganda'), ('AT', 'Austria'), ('EC', 'Ecuador'), ('BI', 'Burundi'), ('KM', 'Comoros'), ('KY', 'Cayman Islands'), ('JM', 'Jamaica'), ('AG', 'Antigua and Barbuda'), ('CG', 'Congo'), ('VC', 'Saint Vincent and the Grenadines'), ('KH', 'Cambodia'), ('CN', 'China'), ('GL', 'Greenland'), ('YE', 'Yemen'), ('TV', 'Tuvalu'), ('BW', 'Botswana'), ('SK', 'Slovakia'), ('KI', 'Kiribati'), ('PH', 'Philippines'), ('RO', 'Romania'), ('CC', 'Cocos (Keeling) Islands'), ('FI', 'Finland'), ('SI', 'Slovenia'), ('LS', 'Lesotho'), ('MC', 'Monaco'), ('AL', 'Albania'), ('GR', 'Greece'), ('AF', 'Afghanistan'), ('SZ', 'Swaziland'), ('MA', 'Morocco'), ('EG', 'Egypt'), ('CK', 'Cook Islands'), ('NA', 'Namibia'), ('HK', 'Hong Kong'), ('RE', 'Réunion'), ('KW', 'Kuwait'), ('TK', 'Tokelau'), ('BQ', 'Bonaire, Sint Eustatius and Saba'), ('NP', 'Nepal'), ('EH', 'Western Sahara'), ('OM', 'Oman'), ('MV', 'Maldives'), ('LB', 'Lebanon'), ('RW', 'Rwanda'), ('FK', 'Falkland Islands [Malvinas]'), ('FM', 'Micronesia (Federated States of)'), ('TF', 'French Southern Territories'), ('LA', "Lao People's Democratic Republic"), ('RS', 'Serbia'), ('GM', 'Gambia'), ('DE', 'Germany'), ('BD', 'Bangladesh'), ('BF', 'Burkina Faso'), ('ET', 'Ethiopia'), ('MX', 'Mexico'), ('TT', 'Trinidad and Tobago'), ('IN', 'India'), ('PA', 'Panama'), ('BZ', 'Belize'), ('GG', 'Guernsey'), ('MW', 'Malawi'), ('ZA', 'South Africa'), ('MS', 'Montserrat'), ('LI', 'Liechtenstein'), ('SB', 'Solomon Islands'), ('PS', 'Palestine, State of'), ('BJ', 'Benin'), ('VE', 'Venezuela (Bolivarian Republic of)'), ('MO', 'Macao'), ('TC', 'Turks and Caicos Islands'), ('TH', 'Thailand'), ('CI', "Côte d'Ivoire"), ('PL', 'Poland'), ('DZ', 'Algeria'), ('MY', 'Malaysia'), ('KZ', 'Kazakhstan'), ('LY', 'Libya'), ('LU', 'Luxembourg'), ('SO', 'Somalia'), ('WS', 'Samoa'), ('PR', 'Puerto Rico'), ('AS', 'American Samoa'), ('CD', 'Congo (the Democratic Republic of the)'), ('GH', 'Ghana'), ('UM', 'United States Minor Outlying Islands'), ('QA', 'Qatar'), ('MM', 'Myanmar'), ('MT', 'Malta'), ('NR', 'Nauru'), ('NZ', 'New Zealand'), ('AD', 'Andorra'), ('MG', 'Madagascar'), ('GI', 'Gibraltar'), ('NI', 'Nicaragua'), ('SG', 'Singapore'), ('WF', 'Wallis and Futuna'), ('SC', 'Seychelles'), ('GE', 'Georgia'), ('MR', 'Mauritania'), ('LT', 'Lithuania'), ('PE', 'Peru'), ('DJ', 'Djibouti'), ('NU', 'Niue'), ('AZ', 'Azerbaijan'), ('YT', 'Mayotte'), ('KN', 'Saint Kitts and Nevis'), ('AR', 'Argentina'), ('CL', 'Chile'), ('PN', 'Pitcairn'), ('GB', 'United Kingdom of Great Britain and Northern Ireland'), ('CA', 'Canada'), ('GY', 'Guyana'), ('GS', 'South Georgia and the South Sandwich Islands'), ('PW', 'Palau'), ('CH', 'Switzerland'), ('ER', 'Eritrea'), ('AX', 'Åland Islands'), ('SM', 'San Marino'), ('PG', 'Papua New Guinea'), ('GN', 'Guinea'), ('VU', 'Vanuatu'), ('LV', 'Latvia'), ('SR', 'Suriname'), ('ME', 'Montenegro'), ('SD', 'Sudan'), ('TZ', 'Tanzania, United Republic of'), ('TO', 'Tonga'), ('ID', 'Indonesia'), ('SL', 'Sierra Leone'), ('SX', 'Sint Maarten (Dutch part)'), ('AQ', 'Antarctica'), ('CY', 'Cyprus'), ('LC', 'Saint Lucia'), ('IT', 'Italy'), ('MN', 'Mongolia'), ('TG', 'Togo'), ('LR', 'Liberia'), ('GQ', 'Equatorial Guinea'), ('UA', 'Ukraine'), ('ST', 'Sao Tome and Principe'), ('HU', 'Hungary'), ('PY', 'Paraguay'), ('MQ', 'Martinique'), ('BE', 'Belgium'), ('FO', 'Faroe Islands'), ('FR', 'France'), ('CM', 'Cameroon'), ('MF', 'Saint Martin (French part)'), ('JO', 'Jordan'), ('US', 'United States of America'), ('BO', 'Bolivia (Plurinational State of)'), ('MH', 'Marshall Islands'), ('SE', 'Sweden'), ('HR', 'Croatia'), ('AE', 'United Arab Emirates'), ('IM', 'Isle of Man'), ('GP', 'Guadeloupe'), ('AW', 'Aruba'), ('SS', 'South Sudan'), ('SV', 'El Salvador'), ('HT', 'Haiti'), ('SY', 'Syrian Arab Republic'), ('KR', 'Korea (the Republic of)'), ('GW', 'Guinea-Bissau'), ('TN', 'Tunisia'), ('JE', 'Jersey'), ('ZW', 'Zimbabwe'), ('MU', 'Mauritius'), ('VI', 'Virgin Islands (U.S.)'), ('VN', 'Viet Nam'), ('BR', 'Brazil'), ('BM', 'Bermuda'), ('BN', 'Brunei Darussalam'), ('IO', 'British Indian Ocean Territory'), ('IS', 'Iceland'), ('NC', 'New Caledonia'), ('PF', 'French Polynesia'), ('SA', 'Saudi Arabia'), ('CF', 'Central African Republic'), ('DM', 'Dominica'), ('BT', 'Bhutan'), ('HM', 'Heard Island and McDonald Islands'), ('JP', 'Japan'), ('KE', 'Kenya'), ('BA', 'Bosnia and Herzegovina'), ('SH', 'Saint Helena, Ascension and Tristan da Cunha'), ('IQ', 'Iraq'), ('DK', 'Denmark'), ('ML', 'Mali'), ('FJ', 'Fiji'), ('EE', 'Estonia'), ('GF', 'French Guiana'), ('PM', 'Saint Pierre and Miquelon'), ('DO', 'Dominican Republic'), ('BG', 'Bulgaria'), ('GD', 'Grenada'), ('NE', 'Niger'), ('ZM', 'Zambia'), ('GU', 'Guam'), ('TJ', 'Tajikistan'), ('GT', 'Guatemala'), ('AI', 'Anguilla'), ('BV', 'Bouvet Island'), ('PK', 'Pakistan'), ('MP', 'Northern Mariana Islands'), ('NF', 'Norfolk Island'), ('MZ', 'Mozambique'), ('CV', 'Cabo Verde'), ('RU', 'Russian Federation'), ('IE', 'Ireland'), ('NO', 'Norway'), ('CZ', 'Czech Republic'), ('TD', 'Chad'), ('KP', "Korea (the Democratic People's Republic of)"), ('AU', 'Australia'), ('MK', 'Macedonia (the former Yugoslav Republic of)'), ('SN', 'Senegal'), ('CO', 'Colombia'), ('BY', 'Belarus'), ('VG', 'Virgin Islands (British)'), ('CX', 'Christmas Island'), ('PT', 'Portugal'), ('TR', 'Turkey'), ('CW', 'Curaçao'), ('NL', 'Netherlands'), ('BH', 'Bahrain'), ('CU', 'Cuba'), ('VA', 'Holy See'), ('ES', 'Spain'), ('BL', 'Saint Barthélemy'), ('HN', 'Honduras'), ('TM', 'Turkmenistan'), ('NG', 'Nigeria'), ('LK', 'Sri Lanka'), ('AM', 'Armenia'), ('GA', 'Gabon'), ('UZ', 'Uzbekistan'), ('CR', 'Costa Rica'), ('UY', 'Uruguay'), ('TW', 'Taiwan (Province of China)'), ('BS', 'Bahamas'), ('KG', 'Kyrgyzstan'), ('MD', 'Moldova (the Republic of)'), ('IL', 'Israel'), ('TL', 'Timor-Leste')], max_length=20), - ), - ] diff --git a/orchestra/contrib/bills/migrations/0006_auto_20150709_1016.py b/orchestra/contrib/bills/migrations/0006_auto_20150709_1016.py deleted file mode 100644 index dc6a8be6..00000000 --- a/orchestra/contrib/bills/migrations/0006_auto_20150709_1016.py +++ /dev/null @@ -1,29 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('bills', '0005_auto_20150623_1031'), - ] - - operations = [ - migrations.AlterField( - model_name='bill', - name='closed_on', - field=models.DateField(db_index=True, blank=True, null=True, verbose_name='closed on'), - ), - migrations.AlterField( - model_name='billcontact', - name='country', - field=models.CharField(choices=[('BS', 'Bahamas'), ('CX', 'Christmas Island'), ('DK', 'Denmark'), ('AI', 'Anguilla'), ('PF', 'French Polynesia'), ('ZA', 'South Africa'), ('NI', 'Nicaragua'), ('BB', 'Barbados'), ('TD', 'Chad'), ('PR', 'Puerto Rico'), ('AD', 'Andorra'), ('GE', 'Georgia'), ('UY', 'Uruguay'), ('AG', 'Antigua and Barbuda'), ('DM', 'Dominica'), ('RU', 'Russian Federation'), ('SE', 'Sweden'), ('UG', 'Uganda'), ('KN', 'Saint Kitts and Nevis'), ('CF', 'Central African Republic'), ('MU', 'Mauritius'), ('SR', 'Suriname'), ('KH', 'Cambodia'), ('CV', 'Cabo Verde'), ('CD', 'Congo (the Democratic Republic of the)'), ('BV', 'Bouvet Island'), ('PS', 'Palestine, State of'), ('BQ', 'Bonaire, Sint Eustatius and Saba'), ('CK', 'Cook Islands'), ('MD', 'Moldova (the Republic of)'), ('DE', 'Germany'), ('CM', 'Cameroon'), ('BF', 'Burkina Faso'), ('SM', 'San Marino'), ('NL', 'Netherlands'), ('BL', 'Saint Barthélemy'), ('SV', 'El Salvador'), ('AU', 'Australia'), ('GN', 'Guinea'), ('GM', 'Gambia'), ('MK', 'Macedonia (the former Yugoslav Republic of)'), ('MQ', 'Martinique'), ('SC', 'Seychelles'), ('GY', 'Guyana'), ('TF', 'French Southern Territories'), ('NP', 'Nepal'), ('KW', 'Kuwait'), ('AT', 'Austria'), ('AZ', 'Azerbaijan'), ('QA', 'Qatar'), ('JP', 'Japan'), ('HT', 'Haiti'), ('EC', 'Ecuador'), ('LR', 'Liberia'), ('RO', 'Romania'), ('LB', 'Lebanon'), ('TT', 'Trinidad and Tobago'), ('BR', 'Brazil'), ('AW', 'Aruba'), ('BM', 'Bermuda'), ('VU', 'Vanuatu'), ('MR', 'Mauritania'), ('SL', 'Sierra Leone'), ('NE', 'Niger'), ('VC', 'Saint Vincent and the Grenadines'), ('IQ', 'Iraq'), ('NC', 'New Caledonia'), ('GI', 'Gibraltar'), ('NG', 'Nigeria'), ('MX', 'Mexico'), ('NZ', 'New Zealand'), ('KP', "Korea (the Democratic People's Republic of)"), ('ZM', 'Zambia'), ('ZW', 'Zimbabwe'), ('SX', 'Sint Maarten (Dutch part)'), ('WF', 'Wallis and Futuna'), ('CC', 'Cocos (Keeling) Islands'), ('TZ', 'Tanzania, United Republic of'), ('NU', 'Niue'), ('MP', 'Northern Mariana Islands'), ('IN', 'India'), ('LC', 'Saint Lucia'), ('TC', 'Turks and Caicos Islands'), ('PG', 'Papua New Guinea'), ('IL', 'Israel'), ('YE', 'Yemen'), ('LA', "Lao People's Democratic Republic"), ('BH', 'Bahrain'), ('NF', 'Norfolk Island'), ('DZ', 'Algeria'), ('MS', 'Montserrat'), ('JO', 'Jordan'), ('US', 'United States of America'), ('WS', 'Samoa'), ('KZ', 'Kazakhstan'), ('ME', 'Montenegro'), ('ET', 'Ethiopia'), ('UZ', 'Uzbekistan'), ('HR', 'Croatia'), ('PE', 'Peru'), ('LS', 'Lesotho'), ('UM', 'United States Minor Outlying Islands'), ('PL', 'Poland'), ('GF', 'French Guiana'), ('RW', 'Rwanda'), ('TV', 'Tuvalu'), ('FM', 'Micronesia (Federated States of)'), ('TR', 'Turkey'), ('TJ', 'Tajikistan'), ('SO', 'Somalia'), ('GP', 'Guadeloupe'), ('SG', 'Singapore'), ('JE', 'Jersey'), ('IS', 'Iceland'), ('KR', 'Korea (the Republic of)'), ('VN', 'Viet Nam'), ('SB', 'Solomon Islands'), ('CG', 'Congo'), ('NO', 'Norway'), ('VG', 'Virgin Islands (British)'), ('IT', 'Italy'), ('VE', 'Venezuela (Bolivarian Republic of)'), ('IR', 'Iran (Islamic Republic of)'), ('CO', 'Colombia'), ('IM', 'Isle of Man'), ('GQ', 'Equatorial Guinea'), ('UA', 'Ukraine'), ('MN', 'Mongolia'), ('GH', 'Ghana'), ('BO', 'Bolivia (Plurinational State of)'), ('AR', 'Argentina'), ('GB', 'United Kingdom of Great Britain and Northern Ireland'), ('TK', 'Tokelau'), ('PT', 'Portugal'), ('CW', 'Curaçao'), ('BN', 'Brunei Darussalam'), ('AM', 'Armenia'), ('TL', 'Timor-Leste'), ('TO', 'Tonga'), ('MY', 'Malaysia'), ('AX', 'Åland Islands'), ('CY', 'Cyprus'), ('GL', 'Greenland'), ('RS', 'Serbia'), ('AF', 'Afghanistan'), ('LT', 'Lithuania'), ('KY', 'Cayman Islands'), ('SK', 'Slovakia'), ('SI', 'Slovenia'), ('CN', 'China'), ('CL', 'Chile'), ('BA', 'Bosnia and Herzegovina'), ('DO', 'Dominican Republic'), ('CH', 'Switzerland'), ('LV', 'Latvia'), ('HN', 'Honduras'), ('TH', 'Thailand'), ('GT', 'Guatemala'), ('SY', 'Syrian Arab Republic'), ('BT', 'Bhutan'), ('GS', 'South Georgia and the South Sandwich Islands'), ('YT', 'Mayotte'), ('MV', 'Maldives'), ('LY', 'Libya'), ('MG', 'Madagascar'), ('FI', 'Finland'), ('AE', 'United Arab Emirates'), ('ID', 'Indonesia'), ('AS', 'American Samoa'), ('IO', 'British Indian Ocean Territory'), ('RE', 'Réunion'), ('SH', 'Saint Helena, Ascension and Tristan da Cunha'), ('ES', 'Spain'), ('MZ', 'Mozambique'), ('PN', 'Pitcairn'), ('DJ', 'Djibouti'), ('LI', 'Liechtenstein'), ('BZ', 'Belize'), ('EE', 'Estonia'), ('MF', 'Saint Martin (French part)'), ('PW', 'Palau'), ('TM', 'Turkmenistan'), ('AL', 'Albania'), ('MO', 'Macao'), ('AO', 'Angola'), ('VA', 'Holy See'), ('SN', 'Senegal'), ('GG', 'Guernsey'), ('MH', 'Marshall Islands'), ('NR', 'Nauru'), ('KE', 'Kenya'), ('BJ', 'Benin'), ('MA', 'Morocco'), ('EG', 'Egypt'), ('KG', 'Kyrgyzstan'), ('GD', 'Grenada'), ('IE', 'Ireland'), ('BG', 'Bulgaria'), ('HU', 'Hungary'), ('SD', 'Sudan'), ('NA', 'Namibia'), ('CU', 'Cuba'), ('BY', 'Belarus'), ('GR', 'Greece'), ('TW', 'Taiwan (Province of China)'), ('MT', 'Malta'), ('ST', 'Sao Tome and Principe'), ('JM', 'Jamaica'), ('BW', 'Botswana'), ('MM', 'Myanmar'), ('KI', 'Kiribati'), ('SA', 'Saudi Arabia'), ('FK', 'Falkland Islands [Malvinas]'), ('FR', 'France'), ('VI', 'Virgin Islands (U.S.)'), ('GA', 'Gabon'), ('ML', 'Mali'), ('LK', 'Sri Lanka'), ('FO', 'Faroe Islands'), ('CI', "Côte d'Ivoire"), ('LU', 'Luxembourg'), ('TN', 'Tunisia'), ('PA', 'Panama'), ('HK', 'Hong Kong'), ('TG', 'Togo'), ('KM', 'Comoros'), ('PH', 'Philippines'), ('PM', 'Saint Pierre and Miquelon'), ('AQ', 'Antarctica'), ('MW', 'Malawi'), ('MC', 'Monaco'), ('FJ', 'Fiji'), ('BI', 'Burundi'), ('PY', 'Paraguay'), ('SJ', 'Svalbard and Jan Mayen'), ('HM', 'Heard Island and McDonald Islands'), ('SS', 'South Sudan'), ('CZ', 'Czech Republic'), ('GU', 'Guam'), ('SZ', 'Swaziland'), ('GW', 'Guinea-Bissau'), ('CA', 'Canada'), ('EH', 'Western Sahara'), ('OM', 'Oman'), ('ER', 'Eritrea'), ('BE', 'Belgium'), ('CR', 'Costa Rica'), ('PK', 'Pakistan'), ('BD', 'Bangladesh')], default='ES', verbose_name='country', max_length=20), - ), - migrations.AlterField( - model_name='billline', - name='end_on', - field=models.DateField(blank=True, null=True, verbose_name='end'), - ), - ] diff --git a/orchestra/contrib/bills/migrations/0007_auto_20170528_2011.py b/orchestra/contrib/bills/migrations/0007_auto_20170528_2011.py deleted file mode 100644 index 0e073586..00000000 --- a/orchestra/contrib/bills/migrations/0007_auto_20170528_2011.py +++ /dev/null @@ -1,39 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-05-28 18:11 -from __future__ import unicode_literals - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('bills', '0006_auto_20150709_1016'), - ] - - operations = [ - migrations.AlterModelOptions( - name='billline', - options={'get_latest_by': 'id'}, - ), - migrations.RemoveField( - model_name='bill', - name='total', - ), - migrations.AlterField( - model_name='billcontact', - name='country', - field=models.CharField(choices=[('LR', 'Liberia'), ('BJ', 'Benin'), ('FM', 'Micronesia (Federated States of)'), ('GS', 'South Georgia and the South Sandwich Islands'), ('AU', 'Australia'), ('PR', 'Puerto Rico'), ('MZ', 'Mozambique'), ('CR', 'Costa Rica'), ('ST', 'Sao Tome and Principe'), ('PL', 'Poland'), ('NG', 'Nigeria'), ('AS', 'American Samoa'), ('LS', 'Lesotho'), ('SG', 'Singapore'), ('BT', 'Bhutan'), ('TG', 'Togo'), ('DM', 'Dominica'), ('GP', 'Guadeloupe'), ('CI', "Côte d'Ivoire"), ('SR', 'Suriname'), ('ZM', 'Zambia'), ('CX', 'Christmas Island'), ('ME', 'Montenegro'), ('TR', 'Turkey'), ('UG', 'Uganda'), ('RU', 'Russian Federation'), ('PG', 'Papua New Guinea'), ('VG', 'Virgin Islands (British)'), ('CW', 'Curaçao'), ('PM', 'Saint Pierre and Miquelon'), ('KP', "Korea (the Democratic People's Republic of)"), ('TJ', 'Tajikistan'), ('FR', 'France'), ('AX', 'Åland Islands'), ('CU', 'Cuba'), ('BA', 'Bosnia and Herzegovina'), ('NA', 'Namibia'), ('MS', 'Montserrat'), ('US', 'United States of America'), ('PS', 'Palestine, State of'), ('MF', 'Saint Martin (French part)'), ('NE', 'Niger'), ('BH', 'Bahrain'), ('CK', 'Cook Islands'), ('JE', 'Jersey'), ('DJ', 'Djibouti'), ('GI', 'Gibraltar'), ('AL', 'Albania'), ('CA', 'Canada'), ('AI', 'Anguilla'), ('GF', 'French Guiana'), ('AW', 'Aruba'), ('PE', 'Peru'), ('SM', 'San Marino'), ('LK', 'Sri Lanka'), ('PN', 'Pitcairn'), ('KM', 'Comoros'), ('ER', 'Eritrea'), ('SK', 'Slovakia'), ('SH', 'Saint Helena, Ascension and Tristan da Cunha'), ('SN', 'Senegal'), ('PW', 'Palau'), ('HT', 'Haiti'), ('MA', 'Morocco'), ('CY', 'Cyprus'), ('GT', 'Guatemala'), ('IT', 'Italy'), ('PY', 'Paraguay'), ('DO', 'Dominican Republic'), ('JO', 'Jordan'), ('AT', 'Austria'), ('NL', 'Netherlands'), ('AM', 'Armenia'), ('BN', 'Brunei Darussalam'), ('BB', 'Barbados'), ('IE', 'Ireland'), ('LB', 'Lebanon'), ('SI', 'Slovenia'), ('TM', 'Turkmenistan'), ('PH', 'Philippines'), ('GE', 'Georgia'), ('BQ', 'Bonaire, Sint Eustatius and Saba'), ('GD', 'Grenada'), ('KI', 'Kiribati'), ('NZ', 'New Zealand'), ('SL', 'Sierra Leone'), ('VN', 'Viet Nam'), ('BZ', 'Belize'), ('TF', 'French Southern Territories'), ('HK', 'Hong Kong'), ('BY', 'Belarus'), ('SD', 'Sudan'), ('UM', 'United States Minor Outlying Islands'), ('ES', 'Spain'), ('GH', 'Ghana'), ('GL', 'Greenland'), ('AD', 'Andorra'), ('ML', 'Mali'), ('NC', 'New Caledonia'), ('IS', 'Iceland'), ('TC', 'Turks and Caicos Islands'), ('FI', 'Finland'), ('DK', 'Denmark'), ('MM', 'Myanmar'), ('MT', 'Malta'), ('TT', 'Trinidad and Tobago'), ('SZ', 'Swaziland'), ('QA', 'Qatar'), ('TN', 'Tunisia'), ('EC', 'Ecuador'), ('CM', 'Cameroon'), ('WF', 'Wallis and Futuna'), ('CO', 'Colombia'), ('MP', 'Northern Mariana Islands'), ('KH', 'Cambodia'), ('MY', 'Malaysia'), ('WS', 'Samoa'), ('NR', 'Nauru'), ('MV', 'Maldives'), ('LI', 'Liechtenstein'), ('BF', 'Burkina Faso'), ('BW', 'Botswana'), ('PF', 'French Polynesia'), ('HM', 'Heard Island and McDonald Islands'), ('SC', 'Seychelles'), ('GU', 'Guam'), ('TZ', 'Tanzania, United Republic of'), ('MQ', 'Martinique'), ('IN', 'India'), ('BE', 'Belgium'), ('SO', 'Somalia'), ('DZ', 'Algeria'), ('AQ', 'Antarctica'), ('TV', 'Tuvalu'), ('GB', 'United Kingdom of Great Britain and Northern Ireland'), ('MC', 'Monaco'), ('KW', 'Kuwait'), ('RO', 'Romania'), ('BL', 'Saint Barthélemy'), ('CV', 'Cabo Verde'), ('BR', 'Brazil'), ('JP', 'Japan'), ('NF', 'Norfolk Island'), ('IO', 'British Indian Ocean Territory'), ('SB', 'Solomon Islands'), ('IM', 'Isle of Man'), ('LC', 'Saint Lucia'), ('ID', 'Indonesia'), ('LA', "Lao People's Democratic Republic"), ('SE', 'Sweden'), ('KG', 'Kyrgyzstan'), ('HN', 'Honduras'), ('KR', 'Korea (the Republic of)'), ('BI', 'Burundi'), ('ZW', 'Zimbabwe'), ('IQ', 'Iraq'), ('SA', 'Saudi Arabia'), ('CN', 'China'), ('NU', 'Niue'), ('GQ', 'Equatorial Guinea'), ('UY', 'Uruguay'), ('LV', 'Latvia'), ('TH', 'Thailand'), ('CC', 'Cocos (Keeling) Islands'), ('EH', 'Western Sahara'), ('PA', 'Panama'), ('GN', 'Guinea'), ('SY', 'Syrian Arab Republic'), ('TK', 'Tokelau'), ('KY', 'Cayman Islands'), ('CD', 'Congo (the Democratic Republic of the)'), ('FO', 'Faroe Islands'), ('KN', 'Saint Kitts and Nevis'), ('EE', 'Estonia'), ('LU', 'Luxembourg'), ('MX', 'Mexico'), ('AF', 'Afghanistan'), ('SV', 'El Salvador'), ('AE', 'United Arab Emirates'), ('BG', 'Bulgaria'), ('BD', 'Bangladesh'), ('IR', 'Iran (Islamic Republic of)'), ('BS', 'Bahamas'), ('TW', 'Taiwan (Province of China)'), ('EG', 'Egypt'), ('GM', 'Gambia'), ('MG', 'Madagascar'), ('OM', 'Oman'), ('IL', 'Israel'), ('FJ', 'Fiji'), ('AG', 'Antigua and Barbuda'), ('LT', 'Lithuania'), ('DE', 'Germany'), ('KE', 'Kenya'), ('BV', 'Bouvet Island'), ('PT', 'Portugal'), ('AZ', 'Azerbaijan'), ('MN', 'Mongolia'), ('RW', 'Rwanda'), ('MR', 'Mauritania'), ('NI', 'Nicaragua'), ('YT', 'Mayotte'), ('SS', 'South Sudan'), ('YE', 'Yemen'), ('GY', 'Guyana'), ('SJ', 'Svalbard and Jan Mayen'), ('MH', 'Marshall Islands'), ('SX', 'Sint Maarten (Dutch part)'), ('GG', 'Guernsey'), ('HR', 'Croatia'), ('VU', 'Vanuatu'), ('MW', 'Malawi'), ('CZ', 'Czech Republic'), ('CH', 'Switzerland'), ('RS', 'Serbia'), ('LY', 'Libya'), ('MO', 'Macao'), ('MK', 'Macedonia (the former Yugoslav Republic of)'), ('HU', 'Hungary'), ('GA', 'Gabon'), ('KZ', 'Kazakhstan'), ('TO', 'Tonga'), ('ET', 'Ethiopia'), ('UZ', 'Uzbekistan'), ('TD', 'Chad'), ('MD', 'Moldova (the Republic of)'), ('BO', 'Bolivia (Plurinational State of)'), ('AO', 'Angola'), ('GW', 'Guinea-Bissau'), ('VA', 'Holy See'), ('VC', 'Saint Vincent and the Grenadines'), ('TL', 'Timor-Leste'), ('VE', 'Venezuela (Bolivarian Republic of)'), ('FK', 'Falkland Islands [Malvinas]'), ('ZA', 'South Africa'), ('PK', 'Pakistan'), ('CF', 'Central African Republic'), ('NO', 'Norway'), ('CG', 'Congo'), ('UA', 'Ukraine'), ('AR', 'Argentina'), ('CL', 'Chile'), ('VI', 'Virgin Islands (U.S.)'), ('MU', 'Mauritius'), ('JM', 'Jamaica'), ('RE', 'Réunion'), ('GR', 'Greece'), ('NP', 'Nepal'), ('BM', 'Bermuda')], default='ES', max_length=20, verbose_name='country'), - ), - migrations.AlterField( - model_name='billline', - name='order', - field=models.ForeignKey(blank=True, help_text='Informative link back to the order', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='lines', to='orders.Order'), - ), - migrations.AlterField( - model_name='billline', - name='verbose_quantity', - field=models.CharField(blank=True, max_length=16, verbose_name='Verbose quantity'), - ), - ] diff --git a/orchestra/contrib/bills/migrations/0008_auto_20170625_1813.py b/orchestra/contrib/bills/migrations/0008_auto_20170625_1813.py deleted file mode 100644 index 512e9c67..00000000 --- a/orchestra/contrib/bills/migrations/0008_auto_20170625_1813.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-06-25 16:13 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('bills', '0007_auto_20170528_2011'), - ] - - operations = [ - migrations.AlterField( - model_name='billcontact', - name='country', - field=models.CharField(choices=[('GA', 'Gabon'), ('TK', 'Tokelau'), ('GU', 'Guam'), ('MS', 'Montserrat'), ('AE', 'United Arab Emirates'), ('TW', 'Taiwan (Province of China)'), ('CX', 'Christmas Island'), ('MW', 'Malawi'), ('BE', 'Belgium'), ('CM', 'Cameroon'), ('PY', 'Paraguay'), ('MU', 'Mauritius'), ('KP', "Korea (the Democratic People's Republic of)"), ('KE', 'Kenya'), ('CD', 'Congo (the Democratic Republic of the)'), ('LS', 'Lesotho'), ('LA', "Lao People's Democratic Republic"), ('GG', 'Guernsey'), ('KZ', 'Kazakhstan'), ('AI', 'Anguilla'), ('PA', 'Panama'), ('KI', 'Kiribati'), ('IE', 'Ireland'), ('BN', 'Brunei Darussalam'), ('CO', 'Colombia'), ('OM', 'Oman'), ('FJ', 'Fiji'), ('SJ', 'Svalbard and Jan Mayen'), ('GF', 'French Guiana'), ('MP', 'Northern Mariana Islands'), ('SM', 'San Marino'), ('YT', 'Mayotte'), ('MT', 'Malta'), ('FM', 'Micronesia (Federated States of)'), ('RU', 'Russian Federation'), ('CU', 'Cuba'), ('SG', 'Singapore'), ('BZ', 'Belize'), ('YE', 'Yemen'), ('MV', 'Maldives'), ('VC', 'Saint Vincent and the Grenadines'), ('NG', 'Nigeria'), ('EH', 'Western Sahara'), ('NZ', 'New Zealand'), ('DE', 'Germany'), ('TH', 'Thailand'), ('TN', 'Tunisia'), ('MH', 'Marshall Islands'), ('GY', 'Guyana'), ('IO', 'British Indian Ocean Territory'), ('LV', 'Latvia'), ('NP', 'Nepal'), ('VG', 'Virgin Islands (British)'), ('TF', 'French Southern Territories'), ('SO', 'Somalia'), ('WF', 'Wallis and Futuna'), ('FK', 'Falkland Islands [Malvinas]'), ('VN', 'Viet Nam'), ('ES', 'Spain'), ('TM', 'Turkmenistan'), ('EG', 'Egypt'), ('PK', 'Pakistan'), ('AT', 'Austria'), ('SB', 'Solomon Islands'), ('GT', 'Guatemala'), ('KH', 'Cambodia'), ('BD', 'Bangladesh'), ('GH', 'Ghana'), ('LR', 'Liberia'), ('GW', 'Guinea-Bissau'), ('UZ', 'Uzbekistan'), ('MN', 'Mongolia'), ('TR', 'Turkey'), ('DO', 'Dominican Republic'), ('PN', 'Pitcairn'), ('LK', 'Sri Lanka'), ('UG', 'Uganda'), ('GM', 'Gambia'), ('BH', 'Bahrain'), ('FR', 'France'), ('PL', 'Poland'), ('AQ', 'Antarctica'), ('CF', 'Central African Republic'), ('HR', 'Croatia'), ('AO', 'Angola'), ('RO', 'Romania'), ('MG', 'Madagascar'), ('UY', 'Uruguay'), ('PS', 'Palestine, State of'), ('ET', 'Ethiopia'), ('NO', 'Norway'), ('LT', 'Lithuania'), ('FO', 'Faroe Islands'), ('ST', 'Sao Tome and Principe'), ('JO', 'Jordan'), ('ME', 'Montenegro'), ('MY', 'Malaysia'), ('LY', 'Libya'), ('PT', 'Portugal'), ('CA', 'Canada'), ('MK', 'Macedonia (the former Yugoslav Republic of)'), ('CG', 'Congo'), ('NL', 'Netherlands'), ('BM', 'Bermuda'), ('TT', 'Trinidad and Tobago'), ('ID', 'Indonesia'), ('SX', 'Sint Maarten (Dutch part)'), ('AR', 'Argentina'), ('HN', 'Honduras'), ('SI', 'Slovenia'), ('DJ', 'Djibouti'), ('KR', 'Korea (the Republic of)'), ('CI', "Côte d'Ivoire"), ('BB', 'Barbados'), ('AD', 'Andorra'), ('JE', 'Jersey'), ('PG', 'Papua New Guinea'), ('MX', 'Mexico'), ('TL', 'Timor-Leste'), ('SV', 'El Salvador'), ('TV', 'Tuvalu'), ('EE', 'Estonia'), ('LI', 'Liechtenstein'), ('MA', 'Morocco'), ('LU', 'Luxembourg'), ('LB', 'Lebanon'), ('SE', 'Sweden'), ('CV', 'Cabo Verde'), ('RE', 'Réunion'), ('NI', 'Nicaragua'), ('BY', 'Belarus'), ('TJ', 'Tajikistan'), ('NR', 'Nauru'), ('AG', 'Antigua and Barbuda'), ('SZ', 'Swaziland'), ('DM', 'Dominica'), ('ZM', 'Zambia'), ('CL', 'Chile'), ('TC', 'Turks and Caicos Islands'), ('GP', 'Guadeloupe'), ('DZ', 'Algeria'), ('RS', 'Serbia'), ('AW', 'Aruba'), ('ER', 'Eritrea'), ('BI', 'Burundi'), ('EC', 'Ecuador'), ('ML', 'Mali'), ('IL', 'Israel'), ('JM', 'Jamaica'), ('MC', 'Monaco'), ('CZ', 'Czech Republic'), ('BT', 'Bhutan'), ('CY', 'Cyprus'), ('PF', 'French Polynesia'), ('MZ', 'Mozambique'), ('ZW', 'Zimbabwe'), ('KM', 'Comoros'), ('SL', 'Sierra Leone'), ('CW', 'Curaçao'), ('SY', 'Syrian Arab Republic'), ('MF', 'Saint Martin (French part)'), ('LC', 'Saint Lucia'), ('HM', 'Heard Island and McDonald Islands'), ('GB', 'United Kingdom of Great Britain and Northern Ireland'), ('KG', 'Kyrgyzstan'), ('MD', 'Moldova (the Republic of)'), ('VE', 'Venezuela (Bolivarian Republic of)'), ('US', 'United States of America'), ('HU', 'Hungary'), ('TD', 'Chad'), ('CK', 'Cook Islands'), ('UA', 'Ukraine'), ('SN', 'Senegal'), ('GE', 'Georgia'), ('BF', 'Burkina Faso'), ('VA', 'Holy See'), ('SC', 'Seychelles'), ('PW', 'Palau'), ('BW', 'Botswana'), ('SR', 'Suriname'), ('IR', 'Iran (Islamic Republic of)'), ('MM', 'Myanmar'), ('SK', 'Slovakia'), ('SA', 'Saudi Arabia'), ('RW', 'Rwanda'), ('KW', 'Kuwait'), ('GN', 'Guinea'), ('AZ', 'Azerbaijan'), ('AL', 'Albania'), ('NC', 'New Caledonia'), ('MQ', 'Martinique'), ('CR', 'Costa Rica'), ('BQ', 'Bonaire, Sint Eustatius and Saba'), ('BS', 'Bahamas'), ('AF', 'Afghanistan'), ('AS', 'American Samoa'), ('MR', 'Mauritania'), ('AM', 'Armenia'), ('CH', 'Switzerland'), ('IM', 'Isle of Man'), ('BL', 'Saint Barthélemy'), ('VI', 'Virgin Islands (U.S.)'), ('WS', 'Samoa'), ('SS', 'South Sudan'), ('NU', 'Niue'), ('IS', 'Iceland'), ('ZA', 'South Africa'), ('DK', 'Denmark'), ('GL', 'Greenland'), ('JP', 'Japan'), ('FI', 'Finland'), ('TZ', 'Tanzania, United Republic of'), ('IT', 'Italy'), ('CN', 'China'), ('AX', 'Åland Islands'), ('PE', 'Peru'), ('GR', 'Greece'), ('SD', 'Sudan'), ('BA', 'Bosnia and Herzegovina'), ('NA', 'Namibia'), ('SH', 'Saint Helena, Ascension and Tristan da Cunha'), ('IQ', 'Iraq'), ('KN', 'Saint Kitts and Nevis'), ('IN', 'India'), ('BV', 'Bouvet Island'), ('MO', 'Macao'), ('HK', 'Hong Kong'), ('TO', 'Tonga'), ('NE', 'Niger'), ('TG', 'Togo'), ('PH', 'Philippines'), ('UM', 'United States Minor Outlying Islands'), ('GQ', 'Equatorial Guinea'), ('BG', 'Bulgaria'), ('AU', 'Australia'), ('GD', 'Grenada'), ('QA', 'Qatar'), ('GI', 'Gibraltar'), ('HT', 'Haiti'), ('GS', 'South Georgia and the South Sandwich Islands'), ('CC', 'Cocos (Keeling) Islands'), ('BR', 'Brazil'), ('PM', 'Saint Pierre and Miquelon'), ('BO', 'Bolivia (Plurinational State of)'), ('NF', 'Norfolk Island'), ('BJ', 'Benin'), ('VU', 'Vanuatu'), ('KY', 'Cayman Islands'), ('PR', 'Puerto Rico')], default='ES', max_length=20, verbose_name='country'), - ), - ] diff --git a/orchestra/contrib/bills/migrations/0009_auto_20170625_1840.py b/orchestra/contrib/bills/migrations/0009_auto_20170625_1840.py deleted file mode 100644 index 36879af3..00000000 --- a/orchestra/contrib/bills/migrations/0009_auto_20170625_1840.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-06-25 16:40 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('bills', '0008_auto_20170625_1813'), - ] - - operations = [ - migrations.AlterField( - model_name='billcontact', - name='country', - field=models.CharField(choices=[('CD', 'Congo (the Democratic Republic of the)'), ('SO', 'Somalia'), ('TO', 'Tonga'), ('TF', 'French Southern Territories'), ('VN', 'Viet Nam'), ('TC', 'Turks and Caicos Islands'), ('KG', 'Kyrgyzstan'), ('VE', 'Venezuela (Bolivarian Republic of)'), ('AR', 'Argentina'), ('TD', 'Chad'), ('EH', 'Western Sahara'), ('PL', 'Poland'), ('SI', 'Slovenia'), ('RU', 'Russian Federation'), ('GR', 'Greece'), ('AZ', 'Azerbaijan'), ('IR', 'Iran (Islamic Republic of)'), ('PY', 'Paraguay'), ('BJ', 'Benin'), ('PH', 'Philippines'), ('BM', 'Bermuda'), ('CZ', 'Czech Republic'), ('BS', 'Bahamas'), ('PS', 'Palestine, State of'), ('ES', 'Spain'), ('NF', 'Norfolk Island'), ('BH', 'Bahrain'), ('SD', 'Sudan'), ('US', 'United States of America'), ('GQ', 'Equatorial Guinea'), ('GB', 'United Kingdom of Great Britain and Northern Ireland'), ('CU', 'Cuba'), ('BD', 'Bangladesh'), ('AL', 'Albania'), ('IT', 'Italy'), ('KZ', 'Kazakhstan'), ('TV', 'Tuvalu'), ('ET', 'Ethiopia'), ('LA', "Lao People's Democratic Republic"), ('ID', 'Indonesia'), ('SH', 'Saint Helena, Ascension and Tristan da Cunha'), ('CO', 'Colombia'), ('IO', 'British Indian Ocean Territory'), ('IL', 'Israel'), ('CF', 'Central African Republic'), ('MN', 'Mongolia'), ('VG', 'Virgin Islands (British)'), ('LB', 'Lebanon'), ('LK', 'Sri Lanka'), ('AO', 'Angola'), ('WF', 'Wallis and Futuna'), ('GI', 'Gibraltar'), ('PM', 'Saint Pierre and Miquelon'), ('HK', 'Hong Kong'), ('PF', 'French Polynesia'), ('SY', 'Syrian Arab Republic'), ('JO', 'Jordan'), ('SL', 'Sierra Leone'), ('LV', 'Latvia'), ('ZW', 'Zimbabwe'), ('SC', 'Seychelles'), ('MM', 'Myanmar'), ('QA', 'Qatar'), ('CM', 'Cameroon'), ('SN', 'Senegal'), ('LS', 'Lesotho'), ('TL', 'Timor-Leste'), ('GA', 'Gabon'), ('LR', 'Liberia'), ('MT', 'Malta'), ('SX', 'Sint Maarten (Dutch part)'), ('AU', 'Australia'), ('MY', 'Malaysia'), ('MA', 'Morocco'), ('SK', 'Slovakia'), ('UG', 'Uganda'), ('GH', 'Ghana'), ('RO', 'Romania'), ('NL', 'Netherlands'), ('MP', 'Northern Mariana Islands'), ('NO', 'Norway'), ('NA', 'Namibia'), ('ZM', 'Zambia'), ('PW', 'Palau'), ('BT', 'Bhutan'), ('PE', 'Peru'), ('BW', 'Botswana'), ('RW', 'Rwanda'), ('JP', 'Japan'), ('NR', 'Nauru'), ('GW', 'Guinea-Bissau'), ('AQ', 'Antarctica'), ('LC', 'Saint Lucia'), ('CY', 'Cyprus'), ('SA', 'Saudi Arabia'), ('LT', 'Lithuania'), ('BB', 'Barbados'), ('RS', 'Serbia'), ('CL', 'Chile'), ('BL', 'Saint Barthélemy'), ('MQ', 'Martinique'), ('CW', 'Curaçao'), ('OM', 'Oman'), ('KR', 'Korea (the Republic of)'), ('GY', 'Guyana'), ('TJ', 'Tajikistan'), ('AS', 'American Samoa'), ('IS', 'Iceland'), ('TG', 'Togo'), ('LY', 'Libya'), ('AM', 'Armenia'), ('NG', 'Nigeria'), ('GL', 'Greenland'), ('AT', 'Austria'), ('SS', 'South Sudan'), ('KE', 'Kenya'), ('MW', 'Malawi'), ('DE', 'Germany'), ('AX', 'Åland Islands'), ('MO', 'Macao'), ('MD', 'Moldova (the Republic of)'), ('AI', 'Anguilla'), ('GG', 'Guernsey'), ('TH', 'Thailand'), ('MG', 'Madagascar'), ('BY', 'Belarus'), ('LI', 'Liechtenstein'), ('NE', 'Niger'), ('KP', "Korea (the Democratic People's Republic of)"), ('PN', 'Pitcairn'), ('PT', 'Portugal'), ('BF', 'Burkina Faso'), ('KY', 'Cayman Islands'), ('HU', 'Hungary'), ('MZ', 'Mozambique'), ('UZ', 'Uzbekistan'), ('EC', 'Ecuador'), ('DJ', 'Djibouti'), ('NU', 'Niue'), ('YT', 'Mayotte'), ('CR', 'Costa Rica'), ('TW', 'Taiwan (Province of China)'), ('JM', 'Jamaica'), ('SJ', 'Svalbard and Jan Mayen'), ('GN', 'Guinea'), ('BZ', 'Belize'), ('KN', 'Saint Kitts and Nevis'), ('CK', 'Cook Islands'), ('SR', 'Suriname'), ('FJ', 'Fiji'), ('FO', 'Faroe Islands'), ('VI', 'Virgin Islands (U.S.)'), ('AW', 'Aruba'), ('IM', 'Isle of Man'), ('KW', 'Kuwait'), ('BN', 'Brunei Darussalam'), ('SB', 'Solomon Islands'), ('GS', 'South Georgia and the South Sandwich Islands'), ('BI', 'Burundi'), ('DO', 'Dominican Republic'), ('BG', 'Bulgaria'), ('DM', 'Dominica'), ('GM', 'Gambia'), ('SZ', 'Swaziland'), ('PK', 'Pakistan'), ('TZ', 'Tanzania, United Republic of'), ('ZA', 'South Africa'), ('YE', 'Yemen'), ('VU', 'Vanuatu'), ('HT', 'Haiti'), ('GP', 'Guadeloupe'), ('NC', 'New Caledonia'), ('PR', 'Puerto Rico'), ('TR', 'Turkey'), ('DZ', 'Algeria'), ('HM', 'Heard Island and McDonald Islands'), ('SV', 'El Salvador'), ('CV', 'Cabo Verde'), ('CA', 'Canada'), ('TM', 'Turkmenistan'), ('MR', 'Mauritania'), ('ST', 'Sao Tome and Principe'), ('SE', 'Sweden'), ('HR', 'Croatia'), ('TK', 'Tokelau'), ('GU', 'Guam'), ('EG', 'Egypt'), ('IN', 'India'), ('SM', 'San Marino'), ('TN', 'Tunisia'), ('KI', 'Kiribati'), ('LU', 'Luxembourg'), ('KM', 'Comoros'), ('SG', 'Singapore'), ('CI', "Côte d'Ivoire"), ('AE', 'United Arab Emirates'), ('ML', 'Mali'), ('GF', 'French Guiana'), ('MU', 'Mauritius'), ('BR', 'Brazil'), ('HN', 'Honduras'), ('CX', 'Christmas Island'), ('MC', 'Monaco'), ('ER', 'Eritrea'), ('PA', 'Panama'), ('FI', 'Finland'), ('GD', 'Grenada'), ('FK', 'Falkland Islands [Malvinas]'), ('BE', 'Belgium'), ('BO', 'Bolivia (Plurinational State of)'), ('CC', 'Cocos (Keeling) Islands'), ('IE', 'Ireland'), ('MS', 'Montserrat'), ('EE', 'Estonia'), ('CH', 'Switzerland'), ('BV', 'Bouvet Island'), ('MX', 'Mexico'), ('MK', 'Macedonia (the former Yugoslav Republic of)'), ('AF', 'Afghanistan'), ('VC', 'Saint Vincent and the Grenadines'), ('BA', 'Bosnia and Herzegovina'), ('GT', 'Guatemala'), ('KH', 'Cambodia'), ('GE', 'Georgia'), ('RE', 'Réunion'), ('FR', 'France'), ('PG', 'Papua New Guinea'), ('WS', 'Samoa'), ('DK', 'Denmark'), ('NZ', 'New Zealand'), ('MV', 'Maldives'), ('UM', 'United States Minor Outlying Islands'), ('AD', 'Andorra'), ('JE', 'Jersey'), ('TT', 'Trinidad and Tobago'), ('AG', 'Antigua and Barbuda'), ('NP', 'Nepal'), ('IQ', 'Iraq'), ('ME', 'Montenegro'), ('NI', 'Nicaragua'), ('UA', 'Ukraine'), ('CN', 'China'), ('FM', 'Micronesia (Federated States of)'), ('MH', 'Marshall Islands'), ('UY', 'Uruguay'), ('CG', 'Congo'), ('VA', 'Holy See'), ('MF', 'Saint Martin (French part)'), ('BQ', 'Bonaire, Sint Eustatius and Saba')], default='ES', max_length=20, verbose_name='country'), - ), - ] diff --git a/orchestra/contrib/bills/migrations/0010_auto_20170625_1840.py b/orchestra/contrib/bills/migrations/0010_auto_20170625_1840.py deleted file mode 100644 index 9cd7db42..00000000 --- a/orchestra/contrib/bills/migrations/0010_auto_20170625_1840.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-06-25 16:40 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('bills', '0009_auto_20170625_1840'), - ] - - operations = [ - migrations.AlterField( - model_name='billcontact', - name='country', - field=models.CharField(choices=[('TF', 'French Southern Territories'), ('BN', 'Brunei Darussalam'), ('TK', 'Tokelau'), ('EC', 'Ecuador'), ('JE', 'Jersey'), ('MC', 'Monaco'), ('SA', 'Saudi Arabia'), ('CI', "Côte d'Ivoire"), ('LA', "Lao People's Democratic Republic"), ('CX', 'Christmas Island'), ('MK', 'Macedonia (the former Yugoslav Republic of)'), ('CZ', 'Czech Republic'), ('MO', 'Macao'), ('TC', 'Turks and Caicos Islands'), ('MU', 'Mauritius'), ('TL', 'Timor-Leste'), ('GU', 'Guam'), ('NI', 'Nicaragua'), ('TZ', 'Tanzania, United Republic of'), ('EH', 'Western Sahara'), ('BB', 'Barbados'), ('GM', 'Gambia'), ('SX', 'Sint Maarten (Dutch part)'), ('DJ', 'Djibouti'), ('BA', 'Bosnia and Herzegovina'), ('BD', 'Bangladesh'), ('CO', 'Colombia'), ('FO', 'Faroe Islands'), ('VI', 'Virgin Islands (U.S.)'), ('MH', 'Marshall Islands'), ('NL', 'Netherlands'), ('ID', 'Indonesia'), ('BR', 'Brazil'), ('SL', 'Sierra Leone'), ('MR', 'Mauritania'), ('UZ', 'Uzbekistan'), ('UG', 'Uganda'), ('LI', 'Liechtenstein'), ('VN', 'Viet Nam'), ('UM', 'United States Minor Outlying Islands'), ('TJ', 'Tajikistan'), ('BJ', 'Benin'), ('AQ', 'Antarctica'), ('BE', 'Belgium'), ('CC', 'Cocos (Keeling) Islands'), ('BT', 'Bhutan'), ('MD', 'Moldova (the Republic of)'), ('CW', 'Curaçao'), ('HN', 'Honduras'), ('HU', 'Hungary'), ('MW', 'Malawi'), ('UA', 'Ukraine'), ('CH', 'Switzerland'), ('ZA', 'South Africa'), ('KY', 'Cayman Islands'), ('VG', 'Virgin Islands (British)'), ('HM', 'Heard Island and McDonald Islands'), ('SN', 'Senegal'), ('PK', 'Pakistan'), ('GW', 'Guinea-Bissau'), ('BM', 'Bermuda'), ('SM', 'San Marino'), ('AL', 'Albania'), ('OM', 'Oman'), ('LU', 'Luxembourg'), ('NR', 'Nauru'), ('PT', 'Portugal'), ('AD', 'Andorra'), ('AF', 'Afghanistan'), ('PE', 'Peru'), ('TR', 'Turkey'), ('YE', 'Yemen'), ('RU', 'Russian Federation'), ('CU', 'Cuba'), ('NF', 'Norfolk Island'), ('LC', 'Saint Lucia'), ('GB', 'United Kingdom of Great Britain and Northern Ireland'), ('EE', 'Estonia'), ('HR', 'Croatia'), ('CY', 'Cyprus'), ('VC', 'Saint Vincent and the Grenadines'), ('ZW', 'Zimbabwe'), ('BY', 'Belarus'), ('SD', 'Sudan'), ('SZ', 'Swaziland'), ('SR', 'Suriname'), ('CD', 'Congo (the Democratic Republic of the)'), ('AM', 'Armenia'), ('AW', 'Aruba'), ('CN', 'China'), ('ZM', 'Zambia'), ('MT', 'Malta'), ('DK', 'Denmark'), ('TW', 'Taiwan (Province of China)'), ('MN', 'Mongolia'), ('KN', 'Saint Kitts and Nevis'), ('IL', 'Israel'), ('GS', 'South Georgia and the South Sandwich Islands'), ('IM', 'Isle of Man'), ('KP', "Korea (the Democratic People's Republic of)"), ('PF', 'French Polynesia'), ('BH', 'Bahrain'), ('RO', 'Romania'), ('GI', 'Gibraltar'), ('PL', 'Poland'), ('LT', 'Lithuania'), ('LY', 'Libya'), ('IE', 'Ireland'), ('MZ', 'Mozambique'), ('BZ', 'Belize'), ('NE', 'Niger'), ('AO', 'Angola'), ('GE', 'Georgia'), ('WS', 'Samoa'), ('PM', 'Saint Pierre and Miquelon'), ('BV', 'Bouvet Island'), ('IO', 'British Indian Ocean Territory'), ('NO', 'Norway'), ('TV', 'Tuvalu'), ('MP', 'Northern Mariana Islands'), ('FJ', 'Fiji'), ('ES', 'Spain'), ('DZ', 'Algeria'), ('UY', 'Uruguay'), ('HT', 'Haiti'), ('FK', 'Falkland Islands [Malvinas]'), ('KZ', 'Kazakhstan'), ('IQ', 'Iraq'), ('ET', 'Ethiopia'), ('IT', 'Italy'), ('NG', 'Nigeria'), ('SG', 'Singapore'), ('ST', 'Sao Tome and Principe'), ('NP', 'Nepal'), ('MX', 'Mexico'), ('NA', 'Namibia'), ('GD', 'Grenada'), ('AT', 'Austria'), ('NC', 'New Caledonia'), ('DM', 'Dominica'), ('LV', 'Latvia'), ('CG', 'Congo'), ('DE', 'Germany'), ('AS', 'American Samoa'), ('KH', 'Cambodia'), ('SB', 'Solomon Islands'), ('GG', 'Guernsey'), ('PN', 'Pitcairn'), ('GL', 'Greenland'), ('KI', 'Kiribati'), ('BG', 'Bulgaria'), ('DO', 'Dominican Republic'), ('RE', 'Réunion'), ('BI', 'Burundi'), ('SE', 'Sweden'), ('MF', 'Saint Martin (French part)'), ('GR', 'Greece'), ('RS', 'Serbia'), ('GT', 'Guatemala'), ('KE', 'Kenya'), ('BQ', 'Bonaire, Sint Eustatius and Saba'), ('TN', 'Tunisia'), ('MY', 'Malaysia'), ('SO', 'Somalia'), ('ML', 'Mali'), ('TD', 'Chad'), ('BS', 'Bahamas'), ('FI', 'Finland'), ('KW', 'Kuwait'), ('SK', 'Slovakia'), ('TH', 'Thailand'), ('IS', 'Iceland'), ('MQ', 'Martinique'), ('GY', 'Guyana'), ('IN', 'India'), ('SJ', 'Svalbard and Jan Mayen'), ('SS', 'South Sudan'), ('KM', 'Comoros'), ('MA', 'Morocco'), ('TG', 'Togo'), ('AE', 'United Arab Emirates'), ('CM', 'Cameroon'), ('CV', 'Cabo Verde'), ('MM', 'Myanmar'), ('NZ', 'New Zealand'), ('AU', 'Australia'), ('PS', 'Palestine, State of'), ('QA', 'Qatar'), ('BW', 'Botswana'), ('FM', 'Micronesia (Federated States of)'), ('MS', 'Montserrat'), ('YT', 'Mayotte'), ('TM', 'Turkmenistan'), ('IR', 'Iran (Islamic Republic of)'), ('BL', 'Saint Barthélemy'), ('PY', 'Paraguay'), ('PH', 'Philippines'), ('EG', 'Egypt'), ('PR', 'Puerto Rico'), ('FR', 'France'), ('KG', 'Kyrgyzstan'), ('GP', 'Guadeloupe'), ('GF', 'French Guiana'), ('MV', 'Maldives'), ('NU', 'Niue'), ('SY', 'Syrian Arab Republic'), ('JP', 'Japan'), ('PA', 'Panama'), ('GA', 'Gabon'), ('VU', 'Vanuatu'), ('LB', 'Lebanon'), ('BF', 'Burkina Faso'), ('SC', 'Seychelles'), ('LR', 'Liberia'), ('BO', 'Bolivia (Plurinational State of)'), ('WF', 'Wallis and Futuna'), ('VE', 'Venezuela (Bolivarian Republic of)'), ('RW', 'Rwanda'), ('PG', 'Papua New Guinea'), ('VA', 'Holy See'), ('CF', 'Central African Republic'), ('TT', 'Trinidad and Tobago'), ('CR', 'Costa Rica'), ('GH', 'Ghana'), ('AG', 'Antigua and Barbuda'), ('TO', 'Tonga'), ('LK', 'Sri Lanka'), ('CK', 'Cook Islands'), ('CA', 'Canada'), ('SH', 'Saint Helena, Ascension and Tristan da Cunha'), ('AZ', 'Azerbaijan'), ('ER', 'Eritrea'), ('MG', 'Madagascar'), ('AX', 'Åland Islands'), ('PW', 'Palau'), ('ME', 'Montenegro'), ('SV', 'El Salvador'), ('GN', 'Guinea'), ('GQ', 'Equatorial Guinea'), ('KR', 'Korea (the Republic of)'), ('AI', 'Anguilla'), ('SI', 'Slovenia'), ('AR', 'Argentina'), ('HK', 'Hong Kong'), ('CL', 'Chile'), ('JM', 'Jamaica'), ('LS', 'Lesotho'), ('US', 'United States of America'), ('JO', 'Jordan')], default='ES', max_length=20, verbose_name='country'), - ), - ] diff --git a/orchestra/contrib/bills/migrations/0011_auto_20170625_1840.py b/orchestra/contrib/bills/migrations/0011_auto_20170625_1840.py deleted file mode 100644 index e7fea51f..00000000 --- a/orchestra/contrib/bills/migrations/0011_auto_20170625_1840.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-06-25 16:40 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('bills', '0010_auto_20170625_1840'), - ] - - operations = [ - migrations.AlterField( - model_name='billcontact', - name='country', - field=models.CharField(choices=[('CX', 'Christmas Island'), ('KW', 'Kuwait'), ('PF', 'French Polynesia'), ('UZ', 'Uzbekistan'), ('SZ', 'Swaziland'), ('KI', 'Kiribati'), ('SH', 'Saint Helena, Ascension and Tristan da Cunha'), ('MF', 'Saint Martin (French part)'), ('NE', 'Niger'), ('EG', 'Egypt'), ('MY', 'Malaysia'), ('BA', 'Bosnia and Herzegovina'), ('FI', 'Finland'), ('AT', 'Austria'), ('GT', 'Guatemala'), ('MZ', 'Mozambique'), ('NP', 'Nepal'), ('AW', 'Aruba'), ('SG', 'Singapore'), ('BT', 'Bhutan'), ('VG', 'Virgin Islands (British)'), ('DZ', 'Algeria'), ('TH', 'Thailand'), ('AZ', 'Azerbaijan'), ('TJ', 'Tajikistan'), ('NC', 'New Caledonia'), ('ML', 'Mali'), ('KR', 'Korea (the Republic of)'), ('SK', 'Slovakia'), ('MM', 'Myanmar'), ('AQ', 'Antarctica'), ('LV', 'Latvia'), ('BH', 'Bahrain'), ('MK', 'Macedonia (the former Yugoslav Republic of)'), ('SB', 'Solomon Islands'), ('ET', 'Ethiopia'), ('LS', 'Lesotho'), ('BQ', 'Bonaire, Sint Eustatius and Saba'), ('WF', 'Wallis and Futuna'), ('BM', 'Bermuda'), ('PS', 'Palestine, State of'), ('IM', 'Isle of Man'), ('BZ', 'Belize'), ('KM', 'Comoros'), ('GY', 'Guyana'), ('CO', 'Colombia'), ('GF', 'French Guiana'), ('MX', 'Mexico'), ('MD', 'Moldova (the Republic of)'), ('AU', 'Australia'), ('TZ', 'Tanzania, United Republic of'), ('AX', 'Åland Islands'), ('HM', 'Heard Island and McDonald Islands'), ('IL', 'Israel'), ('SE', 'Sweden'), ('RO', 'Romania'), ('NU', 'Niue'), ('EC', 'Ecuador'), ('TG', 'Togo'), ('UY', 'Uruguay'), ('NL', 'Netherlands'), ('TO', 'Tonga'), ('ME', 'Montenegro'), ('TT', 'Trinidad and Tobago'), ('RE', 'Réunion'), ('PT', 'Portugal'), ('ID', 'Indonesia'), ('GH', 'Ghana'), ('NF', 'Norfolk Island'), ('BR', 'Brazil'), ('CG', 'Congo'), ('MW', 'Malawi'), ('MN', 'Mongolia'), ('VA', 'Holy See'), ('KP', "Korea (the Democratic People's Republic of)"), ('SY', 'Syrian Arab Republic'), ('BB', 'Barbados'), ('VC', 'Saint Vincent and the Grenadines'), ('KE', 'Kenya'), ('CN', 'China'), ('KH', 'Cambodia'), ('IN', 'India'), ('MH', 'Marshall Islands'), ('YE', 'Yemen'), ('LU', 'Luxembourg'), ('TM', 'Turkmenistan'), ('UM', 'United States Minor Outlying Islands'), ('TN', 'Tunisia'), ('ES', 'Spain'), ('AM', 'Armenia'), ('TR', 'Turkey'), ('HU', 'Hungary'), ('AO', 'Angola'), ('HR', 'Croatia'), ('SL', 'Sierra Leone'), ('TL', 'Timor-Leste'), ('JE', 'Jersey'), ('ZW', 'Zimbabwe'), ('RU', 'Russian Federation'), ('CD', 'Congo (the Democratic Republic of the)'), ('IT', 'Italy'), ('MO', 'Macao'), ('CA', 'Canada'), ('SX', 'Sint Maarten (Dutch part)'), ('AF', 'Afghanistan'), ('VE', 'Venezuela (Bolivarian Republic of)'), ('DE', 'Germany'), ('LK', 'Sri Lanka'), ('FO', 'Faroe Islands'), ('CV', 'Cabo Verde'), ('MT', 'Malta'), ('TW', 'Taiwan (Province of China)'), ('AD', 'Andorra'), ('ER', 'Eritrea'), ('JO', 'Jordan'), ('IQ', 'Iraq'), ('EH', 'Western Sahara'), ('CI', "Côte d'Ivoire"), ('CM', 'Cameroon'), ('CZ', 'Czech Republic'), ('MS', 'Montserrat'), ('AS', 'American Samoa'), ('SA', 'Saudi Arabia'), ('PK', 'Pakistan'), ('PL', 'Poland'), ('YT', 'Mayotte'), ('BD', 'Bangladesh'), ('SI', 'Slovenia'), ('TF', 'French Southern Territories'), ('PE', 'Peru'), ('NG', 'Nigeria'), ('GW', 'Guinea-Bissau'), ('IR', 'Iran (Islamic Republic of)'), ('SO', 'Somalia'), ('AI', 'Anguilla'), ('GR', 'Greece'), ('VI', 'Virgin Islands (U.S.)'), ('DO', 'Dominican Republic'), ('MC', 'Monaco'), ('UG', 'Uganda'), ('GP', 'Guadeloupe'), ('KY', 'Cayman Islands'), ('BO', 'Bolivia (Plurinational State of)'), ('AR', 'Argentina'), ('BN', 'Brunei Darussalam'), ('LA', "Lao People's Democratic Republic"), ('BI', 'Burundi'), ('JP', 'Japan'), ('WS', 'Samoa'), ('FK', 'Falkland Islands [Malvinas]'), ('SD', 'Sudan'), ('MU', 'Mauritius'), ('CF', 'Central African Republic'), ('GD', 'Grenada'), ('IE', 'Ireland'), ('HT', 'Haiti'), ('TC', 'Turks and Caicos Islands'), ('BY', 'Belarus'), ('MP', 'Northern Mariana Islands'), ('HN', 'Honduras'), ('MG', 'Madagascar'), ('FJ', 'Fiji'), ('SS', 'South Sudan'), ('SV', 'El Salvador'), ('PR', 'Puerto Rico'), ('GE', 'Georgia'), ('RS', 'Serbia'), ('TK', 'Tokelau'), ('JM', 'Jamaica'), ('KZ', 'Kazakhstan'), ('PA', 'Panama'), ('PH', 'Philippines'), ('MR', 'Mauritania'), ('ZM', 'Zambia'), ('CY', 'Cyprus'), ('GS', 'South Georgia and the South Sandwich Islands'), ('BF', 'Burkina Faso'), ('SR', 'Suriname'), ('FM', 'Micronesia (Federated States of)'), ('BW', 'Botswana'), ('ZA', 'South Africa'), ('AL', 'Albania'), ('DK', 'Denmark'), ('US', 'United States of America'), ('KG', 'Kyrgyzstan'), ('CH', 'Switzerland'), ('BG', 'Bulgaria'), ('GL', 'Greenland'), ('LC', 'Saint Lucia'), ('TV', 'Tuvalu'), ('HK', 'Hong Kong'), ('AE', 'United Arab Emirates'), ('PY', 'Paraguay'), ('BV', 'Bouvet Island'), ('PG', 'Papua New Guinea'), ('NO', 'Norway'), ('LY', 'Libya'), ('ST', 'Sao Tome and Principe'), ('DM', 'Dominica'), ('BL', 'Saint Barthélemy'), ('FR', 'France'), ('CU', 'Cuba'), ('IS', 'Iceland'), ('MA', 'Morocco'), ('GI', 'Gibraltar'), ('MV', 'Maldives'), ('MQ', 'Martinique'), ('GM', 'Gambia'), ('RW', 'Rwanda'), ('BJ', 'Benin'), ('NR', 'Nauru'), ('OM', 'Oman'), ('QA', 'Qatar'), ('CW', 'Curaçao'), ('LT', 'Lithuania'), ('CL', 'Chile'), ('BE', 'Belgium'), ('NZ', 'New Zealand'), ('GB', 'United Kingdom of Great Britain and Northern Ireland'), ('PN', 'Pitcairn'), ('LB', 'Lebanon'), ('DJ', 'Djibouti'), ('GQ', 'Equatorial Guinea'), ('IO', 'British Indian Ocean Territory'), ('PW', 'Palau'), ('EE', 'Estonia'), ('AG', 'Antigua and Barbuda'), ('VU', 'Vanuatu'), ('GA', 'Gabon'), ('SN', 'Senegal'), ('KN', 'Saint Kitts and Nevis'), ('CK', 'Cook Islands'), ('UA', 'Ukraine'), ('SJ', 'Svalbard and Jan Mayen'), ('GU', 'Guam'), ('CC', 'Cocos (Keeling) Islands'), ('CR', 'Costa Rica'), ('GN', 'Guinea'), ('PM', 'Saint Pierre and Miquelon'), ('SM', 'San Marino'), ('GG', 'Guernsey'), ('TD', 'Chad'), ('NA', 'Namibia'), ('LR', 'Liberia'), ('BS', 'Bahamas'), ('NI', 'Nicaragua'), ('SC', 'Seychelles'), ('VN', 'Viet Nam'), ('LI', 'Liechtenstein')], default='ES', max_length=20, verbose_name='country'), - ), - ] diff --git a/orchestra/contrib/bills/migrations/0012_auto_20170625_1841.py b/orchestra/contrib/bills/migrations/0012_auto_20170625_1841.py deleted file mode 100644 index 28d7dab2..00000000 --- a/orchestra/contrib/bills/migrations/0012_auto_20170625_1841.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-06-25 16:41 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('bills', '0011_auto_20170625_1840'), - ] - - operations = [ - migrations.AlterField( - model_name='billcontact', - name='country', - field=models.CharField(choices=[('BI', 'Burundi'), ('PN', 'Pitcairn'), ('GD', 'Grenada'), ('NF', 'Norfolk Island'), ('UM', 'United States Minor Outlying Islands'), ('KN', 'Saint Kitts and Nevis'), ('ES', 'Spain'), ('AI', 'Anguilla'), ('BJ', 'Benin'), ('BA', 'Bosnia and Herzegovina'), ('PF', 'French Polynesia'), ('AL', 'Albania'), ('ME', 'Montenegro'), ('PK', 'Pakistan'), ('IE', 'Ireland'), ('GS', 'South Georgia and the South Sandwich Islands'), ('BV', 'Bouvet Island'), ('SV', 'El Salvador'), ('BR', 'Brazil'), ('PG', 'Papua New Guinea'), ('VG', 'Virgin Islands (British)'), ('DK', 'Denmark'), ('MV', 'Maldives'), ('JP', 'Japan'), ('BM', 'Bermuda'), ('GM', 'Gambia'), ('VC', 'Saint Vincent and the Grenadines'), ('SM', 'San Marino'), ('NR', 'Nauru'), ('LA', "Lao People's Democratic Republic"), ('RO', 'Romania'), ('UZ', 'Uzbekistan'), ('CM', 'Cameroon'), ('SS', 'South Sudan'), ('BG', 'Bulgaria'), ('NL', 'Netherlands'), ('GA', 'Gabon'), ('GG', 'Guernsey'), ('MD', 'Moldova (the Republic of)'), ('MG', 'Madagascar'), ('LU', 'Luxembourg'), ('TW', 'Taiwan (Province of China)'), ('CA', 'Canada'), ('DO', 'Dominican Republic'), ('AR', 'Argentina'), ('SK', 'Slovakia'), ('CV', 'Cabo Verde'), ('OM', 'Oman'), ('ET', 'Ethiopia'), ('FI', 'Finland'), ('BW', 'Botswana'), ('KZ', 'Kazakhstan'), ('SG', 'Singapore'), ('SI', 'Slovenia'), ('US', 'United States of America'), ('LI', 'Liechtenstein'), ('PR', 'Puerto Rico'), ('EC', 'Ecuador'), ('KH', 'Cambodia'), ('BY', 'Belarus'), ('GT', 'Guatemala'), ('SA', 'Saudi Arabia'), ('ML', 'Mali'), ('YE', 'Yemen'), ('SZ', 'Swaziland'), ('CX', 'Christmas Island'), ('AO', 'Angola'), ('HM', 'Heard Island and McDonald Islands'), ('EE', 'Estonia'), ('TM', 'Turkmenistan'), ('WF', 'Wallis and Futuna'), ('LR', 'Liberia'), ('IN', 'India'), ('FM', 'Micronesia (Federated States of)'), ('IR', 'Iran (Islamic Republic of)'), ('LC', 'Saint Lucia'), ('AU', 'Australia'), ('DJ', 'Djibouti'), ('MU', 'Mauritius'), ('ZW', 'Zimbabwe'), ('SC', 'Seychelles'), ('SR', 'Suriname'), ('GI', 'Gibraltar'), ('LV', 'Latvia'), ('RE', 'Réunion'), ('PY', 'Paraguay'), ('ST', 'Sao Tome and Principe'), ('PM', 'Saint Pierre and Miquelon'), ('CW', 'Curaçao'), ('IO', 'British Indian Ocean Territory'), ('PS', 'Palestine, State of'), ('YT', 'Mayotte'), ('LT', 'Lithuania'), ('AS', 'American Samoa'), ('QA', 'Qatar'), ('LB', 'Lebanon'), ('AG', 'Antigua and Barbuda'), ('FK', 'Falkland Islands [Malvinas]'), ('FR', 'France'), ('BO', 'Bolivia (Plurinational State of)'), ('HT', 'Haiti'), ('PH', 'Philippines'), ('KG', 'Kyrgyzstan'), ('UY', 'Uruguay'), ('TJ', 'Tajikistan'), ('GY', 'Guyana'), ('FO', 'Faroe Islands'), ('CI', "Côte d'Ivoire"), ('MZ', 'Mozambique'), ('AF', 'Afghanistan'), ('CL', 'Chile'), ('JE', 'Jersey'), ('HN', 'Honduras'), ('JM', 'Jamaica'), ('MH', 'Marshall Islands'), ('KR', 'Korea (the Republic of)'), ('TZ', 'Tanzania, United Republic of'), ('PT', 'Portugal'), ('NI', 'Nicaragua'), ('HR', 'Croatia'), ('ID', 'Indonesia'), ('SY', 'Syrian Arab Republic'), ('BZ', 'Belize'), ('HK', 'Hong Kong'), ('CD', 'Congo (the Democratic Republic of the)'), ('GL', 'Greenland'), ('GB', 'United Kingdom of Great Britain and Northern Ireland'), ('TH', 'Thailand'), ('MK', 'Macedonia (the former Yugoslav Republic of)'), ('TC', 'Turks and Caicos Islands'), ('TR', 'Turkey'), ('NA', 'Namibia'), ('PW', 'Palau'), ('MO', 'Macao'), ('NO', 'Norway'), ('MR', 'Mauritania'), ('JO', 'Jordan'), ('VN', 'Viet Nam'), ('SB', 'Solomon Islands'), ('GE', 'Georgia'), ('IQ', 'Iraq'), ('BD', 'Bangladesh'), ('BF', 'Burkina Faso'), ('UG', 'Uganda'), ('GH', 'Ghana'), ('MW', 'Malawi'), ('TO', 'Tonga'), ('VE', 'Venezuela (Bolivarian Republic of)'), ('BH', 'Bahrain'), ('KP', "Korea (the Democratic People's Republic of)"), ('LK', 'Sri Lanka'), ('GP', 'Guadeloupe'), ('AT', 'Austria'), ('MS', 'Montserrat'), ('BE', 'Belgium'), ('KE', 'Kenya'), ('GN', 'Guinea'), ('AD', 'Andorra'), ('MA', 'Morocco'), ('NG', 'Nigeria'), ('CC', 'Cocos (Keeling) Islands'), ('AM', 'Armenia'), ('BN', 'Brunei Darussalam'), ('DZ', 'Algeria'), ('PA', 'Panama'), ('CZ', 'Czech Republic'), ('CU', 'Cuba'), ('MM', 'Myanmar'), ('AZ', 'Azerbaijan'), ('SD', 'Sudan'), ('IS', 'Iceland'), ('VA', 'Holy See'), ('CY', 'Cyprus'), ('BT', 'Bhutan'), ('TN', 'Tunisia'), ('VU', 'Vanuatu'), ('TF', 'French Southern Territories'), ('IL', 'Israel'), ('TK', 'Tokelau'), ('SO', 'Somalia'), ('SX', 'Sint Maarten (Dutch part)'), ('LY', 'Libya'), ('MF', 'Saint Martin (French part)'), ('CF', 'Central African Republic'), ('TL', 'Timor-Leste'), ('SJ', 'Svalbard and Jan Mayen'), ('CR', 'Costa Rica'), ('MY', 'Malaysia'), ('EG', 'Egypt'), ('BB', 'Barbados'), ('ER', 'Eritrea'), ('NU', 'Niue'), ('DE', 'Germany'), ('AX', 'Åland Islands'), ('CN', 'China'), ('DM', 'Dominica'), ('GU', 'Guam'), ('MP', 'Northern Mariana Islands'), ('VI', 'Virgin Islands (U.S.)'), ('MQ', 'Martinique'), ('TG', 'Togo'), ('MX', 'Mexico'), ('IM', 'Isle of Man'), ('RW', 'Rwanda'), ('FJ', 'Fiji'), ('TT', 'Trinidad and Tobago'), ('KI', 'Kiribati'), ('TD', 'Chad'), ('GR', 'Greece'), ('SH', 'Saint Helena, Ascension and Tristan da Cunha'), ('UA', 'Ukraine'), ('HU', 'Hungary'), ('SL', 'Sierra Leone'), ('WS', 'Samoa'), ('IT', 'Italy'), ('BL', 'Saint Barthélemy'), ('EH', 'Western Sahara'), ('BS', 'Bahamas'), ('TV', 'Tuvalu'), ('PE', 'Peru'), ('ZA', 'South Africa'), ('NE', 'Niger'), ('MT', 'Malta'), ('CK', 'Cook Islands'), ('GQ', 'Equatorial Guinea'), ('GF', 'French Guiana'), ('NZ', 'New Zealand'), ('LS', 'Lesotho'), ('KY', 'Cayman Islands'), ('MN', 'Mongolia'), ('RU', 'Russian Federation'), ('ZM', 'Zambia'), ('AQ', 'Antarctica'), ('BQ', 'Bonaire, Sint Eustatius and Saba'), ('CH', 'Switzerland'), ('AW', 'Aruba'), ('MC', 'Monaco'), ('KM', 'Comoros'), ('CG', 'Congo'), ('PL', 'Poland'), ('CO', 'Colombia'), ('SN', 'Senegal'), ('NP', 'Nepal'), ('RS', 'Serbia'), ('GW', 'Guinea-Bissau'), ('AE', 'United Arab Emirates'), ('NC', 'New Caledonia'), ('KW', 'Kuwait'), ('SE', 'Sweden')], default='ES', max_length=20, verbose_name='country'), - ), - ] diff --git a/orchestra/contrib/bills/migrations/0013_auto_20190805_1134.py b/orchestra/contrib/bills/migrations/0013_auto_20190805_1134.py deleted file mode 100644 index aabeb934..00000000 --- a/orchestra/contrib/bills/migrations/0013_auto_20190805_1134.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2019-08-05 09:34 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('bills', '0012_auto_20170625_1841'), - ] - - operations = [ - migrations.AlterField( - model_name='billcontact', - name='country', - field=models.CharField(choices=[('CG', 'Congo'), ('MS', 'Montserrat'), ('UM', 'United States Minor Outlying Islands'), ('GL', 'Greenland'), ('PS', 'Palestine, State of'), ('HR', 'Croatia'), ('CW', 'Curaçao'), ('EC', 'Ecuador'), ('UG', 'Uganda'), ('ID', 'Indonesia'), ('ET', 'Ethiopia'), ('ZM', 'Zambia'), ('VC', 'Saint Vincent and the Grenadines'), ('AT', 'Austria'), ('BA', 'Bosnia and Herzegovina'), ('BI', 'Burundi'), ('AI', 'Anguilla'), ('FK', 'Falkland Islands [Malvinas]'), ('PN', 'Pitcairn'), ('BY', 'Belarus'), ('KY', 'Cayman Islands'), ('UZ', 'Uzbekistan'), ('GR', 'Greece'), ('LK', 'Sri Lanka'), ('FR', 'France'), ('CF', 'Central African Republic'), ('GB', 'United Kingdom of Great Britain and Northern Ireland'), ('ZW', 'Zimbabwe'), ('EG', 'Egypt'), ('MH', 'Marshall Islands'), ('BB', 'Barbados'), ('CZ', 'Czech Republic'), ('SJ', 'Svalbard and Jan Mayen'), ('MQ', 'Martinique'), ('MT', 'Malta'), ('BV', 'Bouvet Island'), ('KG', 'Kyrgyzstan'), ('AD', 'Andorra'), ('SR', 'Suriname'), ('UA', 'Ukraine'), ('MF', 'Saint Martin (French part)'), ('IO', 'British Indian Ocean Territory'), ('KN', 'Saint Kitts and Nevis'), ('SX', 'Sint Maarten (Dutch part)'), ('BD', 'Bangladesh'), ('IS', 'Iceland'), ('NE', 'Niger'), ('SN', 'Senegal'), ('GY', 'Guyana'), ('SA', 'Saudi Arabia'), ('AQ', 'Antarctica'), ('HU', 'Hungary'), ('AU', 'Australia'), ('SY', 'Syrian Arab Republic'), ('BF', 'Burkina Faso'), ('TF', 'French Southern Territories'), ('AE', 'United Arab Emirates'), ('VU', 'Vanuatu'), ('WF', 'Wallis and Futuna'), ('CD', 'Congo (the Democratic Republic of the)'), ('LC', 'Saint Lucia'), ('NU', 'Niue'), ('GW', 'Guinea-Bissau'), ('KH', 'Cambodia'), ('TV', 'Tuvalu'), ('KE', 'Kenya'), ('LT', 'Lithuania'), ('PK', 'Pakistan'), ('BO', 'Bolivia (Plurinational State of)'), ('NG', 'Nigeria'), ('RE', 'Réunion'), ('TL', 'Timor-Leste'), ('SG', 'Singapore'), ('NC', 'New Caledonia'), ('LS', 'Lesotho'), ('IQ', 'Iraq'), ('KW', 'Kuwait'), ('VN', 'Viet Nam'), ('YT', 'Mayotte'), ('GD', 'Grenada'), ('VA', 'Holy See'), ('FI', 'Finland'), ('CH', 'Switzerland'), ('UY', 'Uruguay'), ('EH', 'Western Sahara'), ('RS', 'Serbia'), ('CX', 'Christmas Island'), ('MC', 'Monaco'), ('VG', 'Virgin Islands (British)'), ('GF', 'French Guiana'), ('VE', 'Venezuela (Bolivarian Republic of)'), ('DM', 'Dominica'), ('JO', 'Jordan'), ('GH', 'Ghana'), ('US', 'United States of America'), ('CV', 'Cabo Verde'), ('PA', 'Panama'), ('MY', 'Malaysia'), ('SH', 'Saint Helena, Ascension and Tristan da Cunha'), ('MX', 'Mexico'), ('LU', 'Luxembourg'), ('WS', 'Samoa'), ('ER', 'Eritrea'), ('CK', 'Cook Islands'), ('CI', "Côte d'Ivoire"), ('PT', 'Portugal'), ('CN', 'China'), ('LR', 'Liberia'), ('MP', 'Northern Mariana Islands'), ('KP', "Korea (the Democratic People's Republic of)"), ('ML', 'Mali'), ('CY', 'Cyprus'), ('TT', 'Trinidad and Tobago'), ('GI', 'Gibraltar'), ('HK', 'Hong Kong'), ('TK', 'Tokelau'), ('AL', 'Albania'), ('BJ', 'Benin'), ('CL', 'Chile'), ('SO', 'Somalia'), ('PE', 'Peru'), ('BS', 'Bahamas'), ('BM', 'Bermuda'), ('BQ', 'Bonaire, Sint Eustatius and Saba'), ('ST', 'Sao Tome and Principe'), ('TN', 'Tunisia'), ('HT', 'Haiti'), ('AX', 'Åland Islands'), ('IE', 'Ireland'), ('MR', 'Mauritania'), ('BE', 'Belgium'), ('DE', 'Germany'), ('JE', 'Jersey'), ('KZ', 'Kazakhstan'), ('TR', 'Turkey'), ('FJ', 'Fiji'), ('AO', 'Angola'), ('DZ', 'Algeria'), ('MV', 'Maldives'), ('NL', 'Netherlands'), ('BW', 'Botswana'), ('SV', 'El Salvador'), ('AZ', 'Azerbaijan'), ('IM', 'Isle of Man'), ('PF', 'French Polynesia'), ('AF', 'Afghanistan'), ('TG', 'Togo'), ('EE', 'Estonia'), ('JM', 'Jamaica'), ('GS', 'South Georgia and the South Sandwich Islands'), ('LI', 'Liechtenstein'), ('GM', 'Gambia'), ('ES', 'Spain'), ('PL', 'Poland'), ('DO', 'Dominican Republic'), ('MK', 'Macedonia (the former Yugoslav Republic of)'), ('BL', 'Saint Barthélemy'), ('GQ', 'Equatorial Guinea'), ('ME', 'Montenegro'), ('GE', 'Georgia'), ('LA', "Lao People's Democratic Republic"), ('BT', 'Bhutan'), ('SC', 'Seychelles'), ('SM', 'San Marino'), ('CU', 'Cuba'), ('KR', 'Korea (the Republic of)'), ('VI', 'Virgin Islands (U.S.)'), ('PY', 'Paraguay'), ('AM', 'Armenia'), ('NA', 'Namibia'), ('PW', 'Palau'), ('BR', 'Brazil'), ('CR', 'Costa Rica'), ('BH', 'Bahrain'), ('PM', 'Saint Pierre and Miquelon'), ('QA', 'Qatar'), ('LY', 'Libya'), ('TM', 'Turkmenistan'), ('FO', 'Faroe Islands'), ('YE', 'Yemen'), ('TZ', 'Tanzania, United Republic of'), ('SD', 'Sudan'), ('SK', 'Slovakia'), ('KM', 'Comoros'), ('HM', 'Heard Island and McDonald Islands'), ('MZ', 'Mozambique'), ('MG', 'Madagascar'), ('CO', 'Colombia'), ('TC', 'Turks and Caicos Islands'), ('RW', 'Rwanda'), ('IL', 'Israel'), ('BZ', 'Belize'), ('MN', 'Mongolia'), ('AW', 'Aruba'), ('GA', 'Gabon'), ('CM', 'Cameroon'), ('PH', 'Philippines'), ('DJ', 'Djibouti'), ('KI', 'Kiribati'), ('RO', 'Romania'), ('PG', 'Papua New Guinea'), ('DK', 'Denmark'), ('TD', 'Chad'), ('BN', 'Brunei Darussalam'), ('LV', 'Latvia'), ('CA', 'Canada'), ('SL', 'Sierra Leone'), ('IR', 'Iran (Islamic Republic of)'), ('BG', 'Bulgaria'), ('AR', 'Argentina'), ('TO', 'Tonga'), ('GP', 'Guadeloupe'), ('HN', 'Honduras'), ('AG', 'Antigua and Barbuda'), ('NP', 'Nepal'), ('MA', 'Morocco'), ('SZ', 'Swaziland'), ('TW', 'Taiwan (Province of China)'), ('RU', 'Russian Federation'), ('NR', 'Nauru'), ('GG', 'Guernsey'), ('TH', 'Thailand'), ('CC', 'Cocos (Keeling) Islands'), ('MU', 'Mauritius'), ('ZA', 'South Africa'), ('OM', 'Oman'), ('SB', 'Solomon Islands'), ('SE', 'Sweden'), ('SS', 'South Sudan'), ('NO', 'Norway'), ('SI', 'Slovenia'), ('GU', 'Guam'), ('GT', 'Guatemala'), ('PR', 'Puerto Rico'), ('GN', 'Guinea'), ('MO', 'Macao'), ('IN', 'India'), ('NI', 'Nicaragua'), ('TJ', 'Tajikistan'), ('NZ', 'New Zealand'), ('MD', 'Moldova (the Republic of)'), ('MM', 'Myanmar'), ('NF', 'Norfolk Island'), ('AS', 'American Samoa'), ('FM', 'Micronesia (Federated States of)'), ('IT', 'Italy'), ('MW', 'Malawi'), ('JP', 'Japan'), ('LB', 'Lebanon')], default='ES', max_length=20, verbose_name='country'), - ), - ] diff --git a/orchestra/contrib/bills/migrations/0014_auto_20200204_1217.py b/orchestra/contrib/bills/migrations/0014_auto_20200204_1217.py deleted file mode 100644 index 79f4d87e..00000000 --- a/orchestra/contrib/bills/migrations/0014_auto_20200204_1217.py +++ /dev/null @@ -1,34 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2020-02-04 11:17 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('bills', '0013_auto_20190805_1134'), - ] - - operations = [ - migrations.CreateModel( - name='AbonoInvoice', - fields=[ - ], - options={ - 'proxy': True, - }, - bases=('bills.bill',), - ), - migrations.AlterField( - model_name='bill', - name='type', - field=models.CharField(choices=[('INVOICE', 'Invoice'), ('AMENDMENTINVOICE', 'Amendment invoice'), ('FEE', 'Fee'), ('AMENDMENTFEE', 'Amendment Fee'), ('ABONOINVOICE', 'Abono Invoice'), ('PROFORMA', 'Pro forma')], max_length=16, verbose_name='type'), - ), - migrations.AlterField( - model_name='billcontact', - name='country', - field=models.CharField(choices=[('KZ', 'Kazakhstan'), ('GY', 'Guyana'), ('BA', 'Bosnia and Herzegovina'), ('AS', 'American Samoa'), ('SO', 'Somalia'), ('GE', 'Georgia'), ('DK', 'Denmark'), ('NL', 'Netherlands'), ('HR', 'Croatia'), ('DZ', 'Algeria'), ('TG', 'Togo'), ('GP', 'Guadeloupe'), ('AX', 'Åland Islands'), ('LU', 'Luxembourg'), ('BN', 'Brunei Darussalam'), ('GQ', 'Equatorial Guinea'), ('GL', 'Greenland'), ('VE', 'Venezuela (Bolivarian Republic of)'), ('KR', 'Korea (the Republic of)'), ('MH', 'Marshall Islands'), ('NO', 'Norway'), ('EC', 'Ecuador'), ('RS', 'Serbia'), ('FK', 'Falkland Islands [Malvinas]'), ('SJ', 'Svalbard and Jan Mayen'), ('ME', 'Montenegro'), ('GW', 'Guinea-Bissau'), ('LS', 'Lesotho'), ('PT', 'Portugal'), ('CU', 'Cuba'), ('TV', 'Tuvalu'), ('JP', 'Japan'), ('CA', 'Canada'), ('ER', 'Eritrea'), ('ET', 'Ethiopia'), ('GR', 'Greece'), ('RU', 'Russian Federation'), ('BH', 'Bahrain'), ('LI', 'Liechtenstein'), ('MP', 'Northern Mariana Islands'), ('CX', 'Christmas Island'), ('PS', 'Palestine, State of'), ('GB', 'United Kingdom of Great Britain and Northern Ireland'), ('WS', 'Samoa'), ('AT', 'Austria'), ('TL', 'Timor-Leste'), ('KM', 'Comoros'), ('WF', 'Wallis and Futuna'), ('BR', 'Brazil'), ('GT', 'Guatemala'), ('RW', 'Rwanda'), ('HM', 'Heard Island and McDonald Islands'), ('NI', 'Nicaragua'), ('IT', 'Italy'), ('MT', 'Malta'), ('BL', 'Saint Barthélemy'), ('AF', 'Afghanistan'), ('CG', 'Congo'), ('NR', 'Nauru'), ('FJ', 'Fiji'), ('MV', 'Maldives'), ('VU', 'Vanuatu'), ('DE', 'Germany'), ('BM', 'Bermuda'), ('NZ', 'New Zealand'), ('AM', 'Armenia'), ('PR', 'Puerto Rico'), ('ES', 'Spain'), ('NC', 'New Caledonia'), ('DJ', 'Djibouti'), ('LY', 'Libya'), ('AI', 'Anguilla'), ('TT', 'Trinidad and Tobago'), ('LK', 'Sri Lanka'), ('FR', 'France'), ('SG', 'Singapore'), ('ST', 'Sao Tome and Principe'), ('IR', 'Iran (Islamic Republic of)'), ('BF', 'Burkina Faso'), ('IS', 'Iceland'), ('TN', 'Tunisia'), ('MM', 'Myanmar'), ('AQ', 'Antarctica'), ('ZW', 'Zimbabwe'), ('SR', 'Suriname'), ('NF', 'Norfolk Island'), ('AO', 'Angola'), ('SV', 'El Salvador'), ('EH', 'Western Sahara'), ('GN', 'Guinea'), ('SH', 'Saint Helena, Ascension and Tristan da Cunha'), ('FM', 'Micronesia (Federated States of)'), ('GH', 'Ghana'), ('MK', 'Macedonia (the former Yugoslav Republic of)'), ('HU', 'Hungary'), ('AL', 'Albania'), ('OM', 'Oman'), ('VA', 'Holy See'), ('KI', 'Kiribati'), ('PM', 'Saint Pierre and Miquelon'), ('SS', 'South Sudan'), ('ID', 'Indonesia'), ('NP', 'Nepal'), ('BE', 'Belgium'), ('CF', 'Central African Republic'), ('BQ', 'Bonaire, Sint Eustatius and Saba'), ('MQ', 'Martinique'), ('UY', 'Uruguay'), ('SA', 'Saudi Arabia'), ('TD', 'Chad'), ('FI', 'Finland'), ('SZ', 'Swaziland'), ('LB', 'Lebanon'), ('CL', 'Chile'), ('KE', 'Kenya'), ('RO', 'Romania'), ('BT', 'Bhutan'), ('QA', 'Qatar'), ('BD', 'Bangladesh'), ('KH', 'Cambodia'), ('HN', 'Honduras'), ('MS', 'Montserrat'), ('KP', "Korea (the Democratic People's Republic of)"), ('GD', 'Grenada'), ('BJ', 'Benin'), ('JM', 'Jamaica'), ('LT', 'Lithuania'), ('CM', 'Cameroon'), ('CR', 'Costa Rica'), ('CD', 'Congo (the Democratic Republic of the)'), ('IE', 'Ireland'), ('CW', 'Curaçao'), ('PH', 'Philippines'), ('GM', 'Gambia'), ('YE', 'Yemen'), ('AU', 'Australia'), ('BW', 'Botswana'), ('KW', 'Kuwait'), ('IQ', 'Iraq'), ('ML', 'Mali'), ('MG', 'Madagascar'), ('GS', 'South Georgia and the South Sandwich Islands'), ('MN', 'Mongolia'), ('EE', 'Estonia'), ('FO', 'Faroe Islands'), ('MF', 'Saint Martin (French part)'), ('AZ', 'Azerbaijan'), ('CK', 'Cook Islands'), ('SI', 'Slovenia'), ('CC', 'Cocos (Keeling) Islands'), ('SE', 'Sweden'), ('ZA', 'South Africa'), ('HT', 'Haiti'), ('MU', 'Mauritius'), ('BG', 'Bulgaria'), ('TF', 'French Southern Territories'), ('AR', 'Argentina'), ('VG', 'Virgin Islands (British)'), ('LV', 'Latvia'), ('CN', 'China'), ('TZ', 'Tanzania, United Republic of'), ('VC', 'Saint Vincent and the Grenadines'), ('DO', 'Dominican Republic'), ('KY', 'Cayman Islands'), ('NU', 'Niue'), ('AD', 'Andorra'), ('VN', 'Viet Nam'), ('LR', 'Liberia'), ('SX', 'Sint Maarten (Dutch part)'), ('TK', 'Tokelau'), ('LA', "Lao People's Democratic Republic"), ('GI', 'Gibraltar'), ('HK', 'Hong Kong'), ('JO', 'Jordan'), ('PA', 'Panama'), ('TC', 'Turks and Caicos Islands'), ('PE', 'Peru'), ('UA', 'Ukraine'), ('NG', 'Nigeria'), ('TO', 'Tonga'), ('BV', 'Bouvet Island'), ('CY', 'Cyprus'), ('GF', 'French Guiana'), ('SY', 'Syrian Arab Republic'), ('IM', 'Isle of Man'), ('BO', 'Bolivia (Plurinational State of)'), ('LC', 'Saint Lucia'), ('CO', 'Colombia'), ('NA', 'Namibia'), ('BB', 'Barbados'), ('KN', 'Saint Kitts and Nevis'), ('BS', 'Bahamas'), ('MC', 'Monaco'), ('VI', 'Virgin Islands (U.S.)'), ('MW', 'Malawi'), ('MO', 'Macao'), ('SC', 'Seychelles'), ('SL', 'Sierra Leone'), ('PN', 'Pitcairn'), ('IL', 'Israel'), ('CI', "Côte d'Ivoire"), ('MA', 'Morocco'), ('JE', 'Jersey'), ('MR', 'Mauritania'), ('CZ', 'Czech Republic'), ('CH', 'Switzerland'), ('PW', 'Palau'), ('PG', 'Papua New Guinea'), ('SK', 'Slovakia'), ('NE', 'Niger'), ('TW', 'Taiwan (Province of China)'), ('AW', 'Aruba'), ('CV', 'Cabo Verde'), ('ZM', 'Zambia'), ('SB', 'Solomon Islands'), ('UG', 'Uganda'), ('KG', 'Kyrgyzstan'), ('BZ', 'Belize'), ('SN', 'Senegal'), ('DM', 'Dominica'), ('MD', 'Moldova (the Republic of)'), ('UM', 'United States Minor Outlying Islands'), ('US', 'United States of America'), ('MX', 'Mexico'), ('IO', 'British Indian Ocean Territory'), ('IN', 'India'), ('SD', 'Sudan'), ('BY', 'Belarus'), ('SM', 'San Marino'), ('MY', 'Malaysia'), ('GG', 'Guernsey'), ('TR', 'Turkey'), ('TH', 'Thailand'), ('MZ', 'Mozambique'), ('GU', 'Guam'), ('EG', 'Egypt'), ('PF', 'French Polynesia'), ('YT', 'Mayotte'), ('PY', 'Paraguay'), ('TJ', 'Tajikistan'), ('PL', 'Poland'), ('AE', 'United Arab Emirates'), ('AG', 'Antigua and Barbuda'), ('UZ', 'Uzbekistan'), ('BI', 'Burundi'), ('RE', 'Réunion'), ('GA', 'Gabon'), ('PK', 'Pakistan'), ('TM', 'Turkmenistan')], default='ES', max_length=20, verbose_name='country'), - ), - ] diff --git a/orchestra/contrib/bills/migrations/0015_auto_20200204_1218.py b/orchestra/contrib/bills/migrations/0015_auto_20200204_1218.py deleted file mode 100644 index 58df422d..00000000 --- a/orchestra/contrib/bills/migrations/0015_auto_20200204_1218.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2020-02-04 11:18 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('bills', '0014_auto_20200204_1217'), - ] - - operations = [ - migrations.AlterField( - model_name='billcontact', - name='country', - field=models.CharField(choices=[('OM', 'Oman'), ('AM', 'Armenia'), ('WF', 'Wallis and Futuna'), ('ET', 'Ethiopia'), ('IR', 'Iran (Islamic Republic of)'), ('BR', 'Brazil'), ('TG', 'Togo'), ('SV', 'El Salvador'), ('SL', 'Sierra Leone'), ('CO', 'Colombia'), ('MQ', 'Martinique'), ('SY', 'Syrian Arab Republic'), ('TL', 'Timor-Leste'), ('GR', 'Greece'), ('HU', 'Hungary'), ('TO', 'Tonga'), ('AU', 'Australia'), ('BI', 'Burundi'), ('MV', 'Maldives'), ('WS', 'Samoa'), ('TC', 'Turks and Caicos Islands'), ('KW', 'Kuwait'), ('NP', 'Nepal'), ('MZ', 'Mozambique'), ('PF', 'French Polynesia'), ('US', 'United States of America'), ('MA', 'Morocco'), ('PS', 'Palestine, State of'), ('KH', 'Cambodia'), ('KZ', 'Kazakhstan'), ('MH', 'Marshall Islands'), ('CK', 'Cook Islands'), ('ST', 'Sao Tome and Principe'), ('LT', 'Lithuania'), ('BV', 'Bouvet Island'), ('RO', 'Romania'), ('TK', 'Tokelau'), ('CX', 'Christmas Island'), ('UG', 'Uganda'), ('TV', 'Tuvalu'), ('GY', 'Guyana'), ('GF', 'French Guiana'), ('ME', 'Montenegro'), ('MT', 'Malta'), ('LB', 'Lebanon'), ('ML', 'Mali'), ('TW', 'Taiwan (Province of China)'), ('FR', 'France'), ('AO', 'Angola'), ('BQ', 'Bonaire, Sint Eustatius and Saba'), ('GQ', 'Equatorial Guinea'), ('CU', 'Cuba'), ('CM', 'Cameroon'), ('FI', 'Finland'), ('FO', 'Faroe Islands'), ('JM', 'Jamaica'), ('BT', 'Bhutan'), ('KG', 'Kyrgyzstan'), ('BF', 'Burkina Faso'), ('EH', 'Western Sahara'), ('CD', 'Congo (the Democratic Republic of the)'), ('UZ', 'Uzbekistan'), ('PK', 'Pakistan'), ('IN', 'India'), ('DJ', 'Djibouti'), ('LY', 'Libya'), ('BL', 'Saint Barthélemy'), ('SB', 'Solomon Islands'), ('NL', 'Netherlands'), ('NZ', 'New Zealand'), ('LC', 'Saint Lucia'), ('CN', 'China'), ('CF', 'Central African Republic'), ('JE', 'Jersey'), ('HT', 'Haiti'), ('HK', 'Hong Kong'), ('AQ', 'Antarctica'), ('MG', 'Madagascar'), ('SG', 'Singapore'), ('PA', 'Panama'), ('CW', 'Curaçao'), ('HM', 'Heard Island and McDonald Islands'), ('PW', 'Palau'), ('BB', 'Barbados'), ('VC', 'Saint Vincent and the Grenadines'), ('SD', 'Sudan'), ('BW', 'Botswana'), ('TT', 'Trinidad and Tobago'), ('TM', 'Turkmenistan'), ('LR', 'Liberia'), ('PY', 'Paraguay'), ('ZA', 'South Africa'), ('HR', 'Croatia'), ('CI', "Côte d'Ivoire"), ('DO', 'Dominican Republic'), ('AD', 'Andorra'), ('DM', 'Dominica'), ('SZ', 'Swaziland'), ('FM', 'Micronesia (Federated States of)'), ('VA', 'Holy See'), ('GM', 'Gambia'), ('IT', 'Italy'), ('LA', "Lao People's Democratic Republic"), ('KM', 'Comoros'), ('CA', 'Canada'), ('IE', 'Ireland'), ('PR', 'Puerto Rico'), ('TD', 'Chad'), ('BM', 'Bermuda'), ('CV', 'Cabo Verde'), ('KE', 'Kenya'), ('MY', 'Malaysia'), ('PL', 'Poland'), ('PN', 'Pitcairn'), ('PE', 'Peru'), ('CL', 'Chile'), ('KR', 'Korea (the Republic of)'), ('AE', 'United Arab Emirates'), ('LU', 'Luxembourg'), ('BE', 'Belgium'), ('KP', "Korea (the Democratic People's Republic of)"), ('AZ', 'Azerbaijan'), ('AL', 'Albania'), ('MK', 'Macedonia (the former Yugoslav Republic of)'), ('VI', 'Virgin Islands (U.S.)'), ('BO', 'Bolivia (Plurinational State of)'), ('EG', 'Egypt'), ('KN', 'Saint Kitts and Nevis'), ('MU', 'Mauritius'), ('AR', 'Argentina'), ('SN', 'Senegal'), ('SC', 'Seychelles'), ('GN', 'Guinea'), ('SH', 'Saint Helena, Ascension and Tristan da Cunha'), ('MS', 'Montserrat'), ('BJ', 'Benin'), ('VU', 'Vanuatu'), ('MO', 'Macao'), ('CZ', 'Czech Republic'), ('VE', 'Venezuela (Bolivarian Republic of)'), ('SA', 'Saudi Arabia'), ('SS', 'South Sudan'), ('NI', 'Nicaragua'), ('RE', 'Réunion'), ('DZ', 'Algeria'), ('KY', 'Cayman Islands'), ('GB', 'United Kingdom of Great Britain and Northern Ireland'), ('CR', 'Costa Rica'), ('AX', 'Åland Islands'), ('GA', 'Gabon'), ('BD', 'Bangladesh'), ('IS', 'Iceland'), ('TH', 'Thailand'), ('VG', 'Virgin Islands (British)'), ('LS', 'Lesotho'), ('ID', 'Indonesia'), ('UY', 'Uruguay'), ('TN', 'Tunisia'), ('GW', 'Guinea-Bissau'), ('SJ', 'Svalbard and Jan Mayen'), ('EE', 'Estonia'), ('ZM', 'Zambia'), ('AG', 'Antigua and Barbuda'), ('MP', 'Northern Mariana Islands'), ('JO', 'Jordan'), ('CY', 'Cyprus'), ('GS', 'South Georgia and the South Sandwich Islands'), ('CG', 'Congo'), ('IL', 'Israel'), ('RW', 'Rwanda'), ('NO', 'Norway'), ('IQ', 'Iraq'), ('FK', 'Falkland Islands [Malvinas]'), ('TZ', 'Tanzania, United Republic of'), ('AT', 'Austria'), ('AS', 'American Samoa'), ('BY', 'Belarus'), ('TF', 'French Southern Territories'), ('EC', 'Ecuador'), ('GT', 'Guatemala'), ('MF', 'Saint Martin (French part)'), ('MX', 'Mexico'), ('AF', 'Afghanistan'), ('AI', 'Anguilla'), ('JP', 'Japan'), ('BN', 'Brunei Darussalam'), ('AW', 'Aruba'), ('NF', 'Norfolk Island'), ('IO', 'British Indian Ocean Territory'), ('ER', 'Eritrea'), ('SK', 'Slovakia'), ('GE', 'Georgia'), ('LK', 'Sri Lanka'), ('MR', 'Mauritania'), ('GD', 'Grenada'), ('VN', 'Viet Nam'), ('YE', 'Yemen'), ('CH', 'Switzerland'), ('HN', 'Honduras'), ('MM', 'Myanmar'), ('ZW', 'Zimbabwe'), ('FJ', 'Fiji'), ('NA', 'Namibia'), ('MN', 'Mongolia'), ('QA', 'Qatar'), ('UA', 'Ukraine'), ('BG', 'Bulgaria'), ('PT', 'Portugal'), ('SX', 'Sint Maarten (Dutch part)'), ('NC', 'New Caledonia'), ('MW', 'Malawi'), ('UM', 'United States Minor Outlying Islands'), ('PH', 'Philippines'), ('KI', 'Kiribati'), ('PM', 'Saint Pierre and Miquelon'), ('IM', 'Isle of Man'), ('LV', 'Latvia'), ('CC', 'Cocos (Keeling) Islands'), ('NG', 'Nigeria'), ('SR', 'Suriname'), ('RS', 'Serbia'), ('BZ', 'Belize'), ('GH', 'Ghana'), ('TR', 'Turkey'), ('SO', 'Somalia'), ('BA', 'Bosnia and Herzegovina'), ('NR', 'Nauru'), ('RU', 'Russian Federation'), ('GL', 'Greenland'), ('SI', 'Slovenia'), ('NE', 'Niger'), ('YT', 'Mayotte'), ('DK', 'Denmark'), ('SE', 'Sweden'), ('GU', 'Guam'), ('SM', 'San Marino'), ('DE', 'Germany'), ('GI', 'Gibraltar'), ('GG', 'Guernsey'), ('BH', 'Bahrain'), ('GP', 'Guadeloupe'), ('BS', 'Bahamas'), ('MC', 'Monaco'), ('ES', 'Spain'), ('LI', 'Liechtenstein'), ('TJ', 'Tajikistan'), ('PG', 'Papua New Guinea'), ('NU', 'Niue'), ('MD', 'Moldova (the Republic of)')], default='ES', max_length=20, verbose_name='country'), - ), - ] diff --git a/orchestra/contrib/bills/migrations/0016_auto_20210330_1049.py b/orchestra/contrib/bills/migrations/0016_auto_20210330_1049.py deleted file mode 100644 index 7df6b7a1..00000000 --- a/orchestra/contrib/bills/migrations/0016_auto_20210330_1049.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2021-03-30 10:49 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('bills', '0015_auto_20200204_1218'), - ] - - operations = [ - migrations.AlterField( - model_name='billcontact', - name='country', - field=models.CharField(choices=[('AF', 'Afghanistan'), ('AX', 'Åland Islands'), ('AL', 'Albania'), ('DZ', 'Algeria'), ('AS', 'American Samoa'), ('AD', 'Andorra'), ('AO', 'Angola'), ('AI', 'Anguilla'), ('AQ', 'Antarctica'), ('AG', 'Antigua and Barbuda'), ('AR', 'Argentina'), ('AM', 'Armenia'), ('AW', 'Aruba'), ('AU', 'Australia'), ('AT', 'Austria'), ('AZ', 'Azerbaijan'), ('BS', 'Bahamas'), ('BH', 'Bahrain'), ('BD', 'Bangladesh'), ('BB', 'Barbados'), ('BY', 'Belarus'), ('BE', 'Belgium'), ('BZ', 'Belize'), ('BJ', 'Benin'), ('BM', 'Bermuda'), ('BT', 'Bhutan'), ('BO', 'Bolivia (Plurinational State of)'), ('BQ', 'Bonaire, Sint Eustatius and Saba'), ('BA', 'Bosnia and Herzegovina'), ('BW', 'Botswana'), ('BV', 'Bouvet Island'), ('BR', 'Brazil'), ('IO', 'British Indian Ocean Territory'), ('BN', 'Brunei Darussalam'), ('BG', 'Bulgaria'), ('BF', 'Burkina Faso'), ('BI', 'Burundi'), ('CV', 'Cabo Verde'), ('KH', 'Cambodia'), ('CM', 'Cameroon'), ('CA', 'Canada'), ('KY', 'Cayman Islands'), ('CF', 'Central African Republic'), ('TD', 'Chad'), ('CL', 'Chile'), ('CN', 'China'), ('CX', 'Christmas Island'), ('CC', 'Cocos (Keeling) Islands'), ('CO', 'Colombia'), ('KM', 'Comoros'), ('CG', 'Congo'), ('CD', 'Congo (the Democratic Republic of the)'), ('CK', 'Cook Islands'), ('CR', 'Costa Rica'), ('CI', "Côte d'Ivoire"), ('HR', 'Croatia'), ('CU', 'Cuba'), ('CW', 'Curaçao'), ('CY', 'Cyprus'), ('CZ', 'Czechia'), ('DK', 'Denmark'), ('DJ', 'Djibouti'), ('DM', 'Dominica'), ('DO', 'Dominican Republic'), ('EC', 'Ecuador'), ('EG', 'Egypt'), ('SV', 'El Salvador'), ('GQ', 'Equatorial Guinea'), ('ER', 'Eritrea'), ('EE', 'Estonia'), ('SZ', 'Eswatini'), ('ET', 'Ethiopia'), ('FK', 'Falkland Islands (Malvinas)'), ('FO', 'Faroe Islands'), ('FJ', 'Fiji'), ('FI', 'Finland'), ('FR', 'France'), ('GF', 'French Guiana'), ('PF', 'French Polynesia'), ('TF', 'French Southern Territories'), ('GA', 'Gabon'), ('GM', 'Gambia'), ('GE', 'Georgia'), ('DE', 'Germany'), ('GH', 'Ghana'), ('GI', 'Gibraltar'), ('GR', 'Greece'), ('GL', 'Greenland'), ('GD', 'Grenada'), ('GP', 'Guadeloupe'), ('GU', 'Guam'), ('GT', 'Guatemala'), ('GG', 'Guernsey'), ('GN', 'Guinea'), ('GW', 'Guinea-Bissau'), ('GY', 'Guyana'), ('HT', 'Haiti'), ('HM', 'Heard Island and McDonald Islands'), ('VA', 'Holy See'), ('HN', 'Honduras'), ('HK', 'Hong Kong'), ('HU', 'Hungary'), ('IS', 'Iceland'), ('IN', 'India'), ('ID', 'Indonesia'), ('IR', 'Iran (Islamic Republic of)'), ('IQ', 'Iraq'), ('IE', 'Ireland'), ('IM', 'Isle of Man'), ('IL', 'Israel'), ('IT', 'Italy'), ('JM', 'Jamaica'), ('JP', 'Japan'), ('JE', 'Jersey'), ('JO', 'Jordan'), ('KZ', 'Kazakhstan'), ('KE', 'Kenya'), ('KI', 'Kiribati'), ('KP', "Korea (the Democratic People's Republic of)"), ('KR', 'Korea (the Republic of)'), ('KW', 'Kuwait'), ('KG', 'Kyrgyzstan'), ('LA', "Lao People's Democratic Republic"), ('LV', 'Latvia'), ('LB', 'Lebanon'), ('LS', 'Lesotho'), ('LR', 'Liberia'), ('LY', 'Libya'), ('LI', 'Liechtenstein'), ('LT', 'Lithuania'), ('LU', 'Luxembourg'), ('MO', 'Macao'), ('MG', 'Madagascar'), ('MW', 'Malawi'), ('MY', 'Malaysia'), ('MV', 'Maldives'), ('ML', 'Mali'), ('MT', 'Malta'), ('MH', 'Marshall Islands'), ('MQ', 'Martinique'), ('MR', 'Mauritania'), ('MU', 'Mauritius'), ('YT', 'Mayotte'), ('MX', 'Mexico'), ('FM', 'Micronesia (Federated States of)'), ('MD', 'Moldova (the Republic of)'), ('MC', 'Monaco'), ('MN', 'Mongolia'), ('ME', 'Montenegro'), ('MS', 'Montserrat'), ('MA', 'Morocco'), ('MZ', 'Mozambique'), ('MM', 'Myanmar'), ('NA', 'Namibia'), ('NR', 'Nauru'), ('NP', 'Nepal'), ('NL', 'Netherlands'), ('NC', 'New Caledonia'), ('NZ', 'New Zealand'), ('NI', 'Nicaragua'), ('NE', 'Niger'), ('NG', 'Nigeria'), ('NU', 'Niue'), ('NF', 'Norfolk Island'), ('MK', 'North Macedonia'), ('MP', 'Northern Mariana Islands'), ('NO', 'Norway'), ('OM', 'Oman'), ('PK', 'Pakistan'), ('PW', 'Palau'), ('PS', 'Palestine, State of'), ('PA', 'Panama'), ('PG', 'Papua New Guinea'), ('PY', 'Paraguay'), ('PE', 'Peru'), ('PH', 'Philippines'), ('PN', 'Pitcairn'), ('PL', 'Poland'), ('PT', 'Portugal'), ('PR', 'Puerto Rico'), ('QA', 'Qatar'), ('RE', 'Réunion'), ('RO', 'Romania'), ('RU', 'Russian Federation'), ('RW', 'Rwanda'), ('BL', 'Saint Barthélemy'), ('SH', 'Saint Helena, Ascension and Tristan da Cunha'), ('KN', 'Saint Kitts and Nevis'), ('LC', 'Saint Lucia'), ('MF', 'Saint Martin (French part)'), ('PM', 'Saint Pierre and Miquelon'), ('VC', 'Saint Vincent and the Grenadines'), ('WS', 'Samoa'), ('SM', 'San Marino'), ('ST', 'Sao Tome and Principe'), ('SA', 'Saudi Arabia'), ('SN', 'Senegal'), ('RS', 'Serbia'), ('SC', 'Seychelles'), ('SL', 'Sierra Leone'), ('SG', 'Singapore'), ('SX', 'Sint Maarten (Dutch part)'), ('SK', 'Slovakia'), ('SI', 'Slovenia'), ('SB', 'Solomon Islands'), ('SO', 'Somalia'), ('ZA', 'South Africa'), ('GS', 'South Georgia and the South Sandwich Islands'), ('SS', 'South Sudan'), ('ES', 'Spain'), ('LK', 'Sri Lanka'), ('SD', 'Sudan'), ('SR', 'Suriname'), ('SJ', 'Svalbard and Jan Mayen'), ('SE', 'Sweden'), ('CH', 'Switzerland'), ('SY', 'Syrian Arab Republic'), ('TW', 'Taiwan (Province of China)'), ('TJ', 'Tajikistan'), ('TZ', 'Tanzania, the United Republic of'), ('TH', 'Thailand'), ('TL', 'Timor-Leste'), ('TG', 'Togo'), ('TK', 'Tokelau'), ('TO', 'Tonga'), ('TT', 'Trinidad and Tobago'), ('TN', 'Tunisia'), ('TR', 'Turkey'), ('TM', 'Turkmenistan'), ('TC', 'Turks and Caicos Islands'), ('TV', 'Tuvalu'), ('UG', 'Uganda'), ('UA', 'Ukraine'), ('AE', 'United Arab Emirates'), ('GB', 'United Kingdom of Great Britain and Northern Ireland'), ('UM', 'United States Minor Outlying Islands'), ('US', 'United States of America'), ('UY', 'Uruguay'), ('UZ', 'Uzbekistan'), ('VU', 'Vanuatu'), ('VE', 'Venezuela (Bolivarian Republic of)'), ('VN', 'Viet Nam'), ('VG', 'Virgin Islands (British)'), ('VI', 'Virgin Islands (U.S.)'), ('WF', 'Wallis and Futuna'), ('EH', 'Western Sahara'), ('YE', 'Yemen'), ('ZM', 'Zambia'), ('ZW', 'Zimbabwe')], default='ES', max_length=20, verbose_name='country'), - ), - ] diff --git a/orchestra/contrib/bills/migrations/__init__.py b/orchestra/contrib/bills/migrations/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/orchestra/contrib/bills/models.py b/orchestra/contrib/bills/models.py index 90765ca3..9510f6b6 100644 --- a/orchestra/contrib/bills/models.py +++ b/orchestra/contrib/bills/models.py @@ -8,9 +8,9 @@ from django.db.models import F, Sum from django.db.models.functions import Coalesce from django.template import loader from django.utils import timezone, translation -from django.utils.encoding import force_text +from django.utils.encoding import force_str from django.utils.functional import cached_property -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.admin.utils import change_url from orchestra.contrib.accounts.models import Account @@ -209,7 +209,7 @@ class Bill(models.Model): def get_payment_state_display(self): value = self.payment_state - return force_text(dict(self.PAYMENT_STATES).get(value, value)) + return force_str(dict(self.PAYMENT_STATES).get(value, value)) def get_current_transaction(self): return self.transactions.exclude_rejected().first() diff --git a/orchestra/contrib/contacts/admin.py b/orchestra/contrib/contacts/admin.py index 82adc381..c5c76471 100644 --- a/orchestra/contrib/contacts/admin.py +++ b/orchestra/contrib/contacts/admin.py @@ -1,6 +1,6 @@ from django import forms from django.contrib import admin -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.admin import AtLeastOneRequiredInlineFormSet, ExtendedModelAdmin from orchestra.admin.actions import SendEmail diff --git a/orchestra/contrib/contacts/filters.py b/orchestra/contrib/contacts/filters.py index 2ffae3ed..0f36a547 100644 --- a/orchestra/contrib/contacts/filters.py +++ b/orchestra/contrib/contacts/filters.py @@ -1,5 +1,5 @@ from django.contrib.admin import SimpleListFilter -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from .models import Contact diff --git a/orchestra/contrib/contacts/migrations/0001_initial.py b/orchestra/contrib/contacts/migrations/0001_initial.py deleted file mode 100644 index a3e5ae07..00000000 --- a/orchestra/contrib/contacts/migrations/0001_initial.py +++ /dev/null @@ -1,36 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations -import django.core.validators -import django.db.models.deletion -import orchestra.contrib.contacts.validators -import orchestra.models.fields -from django.conf import settings - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.CreateModel( - name='Contact', - fields=[ - ('id', models.AutoField(primary_key=True, serialize=False, auto_created=True, verbose_name='ID')), - ('short_name', models.CharField(max_length=128, verbose_name='short name')), - ('full_name', models.CharField(max_length=256, verbose_name='full name', blank=True)), - ('email', models.EmailField(max_length=254)), - ('email_usage', orchestra.models.fields.MultiSelectField(choices=[('SUPPORT', 'Support tickets'), ('ADMIN', 'Administrative'), ('BILLING', 'Billing'), ('TECH', 'Technical'), ('ADDS', 'Announcements'), ('EMERGENCY', 'Emergency contact')], max_length=256, default=('SUPPORT', 'ADMIN', 'BILLING', 'TECH', 'ADDS', 'EMERGENCY'), verbose_name='email usage', blank=True)), - ('phone', models.CharField(max_length=32, blank=True, validators=[orchestra.contrib.contacts.validators.validate_phone], verbose_name='phone')), - ('phone2', models.CharField(max_length=32, blank=True, validators=[orchestra.contrib.contacts.validators.validate_phone], verbose_name='alternative phone')), - ('address', models.TextField(verbose_name='address', blank=True)), - ('city', models.CharField(max_length=128, verbose_name='city', blank=True)), - ('zipcode', models.CharField(max_length=10, blank=True, validators=[django.core.validators.RegexValidator('^[0-9,A-Z]{3,10}$', 'Enter a valid zipcode.', 'invalid')], verbose_name='zip code')), - ('country', models.CharField(choices=[('VC', 'Saint Vincent and the Grenadines'), ('TM', 'Turkmenistan'), ('CL', 'Chile'), ('BN', 'Brunei Darussalam'), ('IS', 'Iceland'), ('AM', 'Armenia'), ('FI', 'Finland'), ('TK', 'Tokelau'), ('AF', 'Afghanistan'), ('IE', 'Ireland'), ('CW', 'Curaçao'), ('PY', 'Paraguay'), ('WF', 'Wallis and Futuna'), ('PK', 'Pakistan'), ('JP', 'Japan'), ('AO', 'Angola'), ('FM', 'Micronesia (Federated States of)'), ('SH', 'Saint Helena, Ascension and Tristan da Cunha'), ('SG', 'Singapore'), ('BL', 'Saint Barthélemy'), ('MK', 'Macedonia (the former Yugoslav Republic of)'), ('MY', 'Malaysia'), ('IM', 'Isle of Man'), ('GW', 'Guinea-Bissau'), ('IQ', 'Iraq'), ('GR', 'Greece'), ('VA', 'Holy See'), ('RW', 'Rwanda'), ('GD', 'Grenada'), ('TZ', 'Tanzania, United Republic of'), ('DZ', 'Algeria'), ('BF', 'Burkina Faso'), ('HU', 'Hungary'), ('TT', 'Trinidad and Tobago'), ('LU', 'Luxembourg'), ('BA', 'Bosnia and Herzegovina'), ('ET', 'Ethiopia'), ('TG', 'Togo'), ('RU', 'Russian Federation'), ('EG', 'Egypt'), ('RO', 'Romania'), ('SR', 'Suriname'), ('GB', 'United Kingdom of Great Britain and Northern Ireland'), ('JM', 'Jamaica'), ('HK', 'Hong Kong'), ('BH', 'Bahrain'), ('KM', 'Comoros'), ('HN', 'Honduras'), ('TD', 'Chad'), ('RS', 'Serbia'), ('PH', 'Philippines'), ('PE', 'Peru'), ('UA', 'Ukraine'), ('AE', 'United Arab Emirates'), ('KW', 'Kuwait'), ('GE', 'Georgia'), ('NA', 'Namibia'), ('CZ', 'Czech Republic'), ('CY', 'Cyprus'), ('LA', "Lao People's Democratic Republic"), ('BZ', 'Belize'), ('MX', 'Mexico'), ('MZ', 'Mozambique'), ('FR', 'France'), ('KG', 'Kyrgyzstan'), ('PW', 'Palau'), ('MG', 'Madagascar'), ('AU', 'Australia'), ('AI', 'Anguilla'), ('UZ', 'Uzbekistan'), ('NL', 'Netherlands'), ('VI', 'Virgin Islands (U.S.)'), ('LT', 'Lithuania'), ('WS', 'Samoa'), ('PA', 'Panama'), ('CO', 'Colombia'), ('AL', 'Albania'), ('PN', 'Pitcairn'), ('SC', 'Seychelles'), ('CH', 'Switzerland'), ('DO', 'Dominican Republic'), ('AW', 'Aruba'), ('GH', 'Ghana'), ('MM', 'Myanmar'), ('ML', 'Mali'), ('PS', 'Palestine, State of'), ('UY', 'Uruguay'), ('MN', 'Mongolia'), ('NE', 'Niger'), ('FK', 'Falkland Islands [Malvinas]'), ('US', 'United States of America'), ('BD', 'Bangladesh'), ('SB', 'Solomon Islands'), ('ZA', 'South Africa'), ('SJ', 'Svalbard and Jan Mayen'), ('IT', 'Italy'), ('HT', 'Haiti'), ('BW', 'Botswana'), ('MA', 'Morocco'), ('GP', 'Guadeloupe'), ('NI', 'Nicaragua'), ('CU', 'Cuba'), ('GL', 'Greenland'), ('MQ', 'Martinique'), ('NZ', 'New Zealand'), ('DE', 'Germany'), ('GY', 'Guyana'), ('YT', 'Mayotte'), ('MR', 'Mauritania'), ('IR', 'Iran (Islamic Republic of)'), ('SL', 'Sierra Leone'), ('MD', 'Moldova (the Republic of)'), ('SM', 'San Marino'), ('SS', 'South Sudan'), ('DM', 'Dominica'), ('NG', 'Nigeria'), ('UM', 'United States Minor Outlying Islands'), ('BI', 'Burundi'), ('GU', 'Guam'), ('GQ', 'Equatorial Guinea'), ('UG', 'Uganda'), ('VU', 'Vanuatu'), ('GT', 'Guatemala'), ('TR', 'Turkey'), ('BO', 'Bolivia (Plurinational State of)'), ('MP', 'Northern Mariana Islands'), ('AQ', 'Antarctica'), ('BS', 'Bahamas'), ('SK', 'Slovakia'), ('BY', 'Belarus'), ('AR', 'Argentina'), ('QA', 'Qatar'), ('LV', 'Latvia'), ('EH', 'Western Sahara'), ('LK', 'Sri Lanka'), ('LB', 'Lebanon'), ('JE', 'Jersey'), ('DJ', 'Djibouti'), ('LC', 'Saint Lucia'), ('CF', 'Central African Republic'), ('KE', 'Kenya'), ('NF', 'Norfolk Island'), ('FO', 'Faroe Islands'), ('BQ', 'Bonaire, Sint Eustatius and Saba'), ('TF', 'French Southern Territories'), ('TC', 'Turks and Caicos Islands'), ('GM', 'Gambia'), ('PF', 'French Polynesia'), ('DK', 'Denmark'), ('GI', 'Gibraltar'), ('SN', 'Senegal'), ('ER', 'Eritrea'), ('CR', 'Costa Rica'), ('AZ', 'Azerbaijan'), ('BR', 'Brazil'), ('SE', 'Sweden'), ('SI', 'Slovenia'), ('SV', 'El Salvador'), ('TO', 'Tonga'), ('LR', 'Liberia'), ('CV', 'Cabo Verde'), ('OM', 'Oman'), ('KR', 'Korea (the Republic of)'), ('BV', 'Bouvet Island'), ('CA', 'Canada'), ('CK', 'Cook Islands'), ('BG', 'Bulgaria'), ('ZW', 'Zimbabwe'), ('FJ', 'Fiji'), ('NU', 'Niue'), ('YE', 'Yemen'), ('CM', 'Cameroon'), ('ZM', 'Zambia'), ('MC', 'Monaco'), ('SX', 'Sint Maarten (Dutch part)'), ('VG', 'Virgin Islands (British)'), ('AD', 'Andorra'), ('MF', 'Saint Martin (French part)'), ('PM', 'Saint Pierre and Miquelon'), ('RE', 'Réunion'), ('SO', 'Somalia'), ('AG', 'Antigua and Barbuda'), ('MH', 'Marshall Islands'), ('TW', 'Taiwan (Province of China)'), ('EE', 'Estonia'), ('NP', 'Nepal'), ('TV', 'Tuvalu'), ('NC', 'New Caledonia'), ('ME', 'Montenegro'), ('CX', 'Christmas Island'), ('LY', 'Libya'), ('KP', "Korea (the Democratic People's Republic of)"), ('SD', 'Sudan'), ('VE', 'Venezuela (Bolivarian Republic of)'), ('KZ', 'Kazakhstan'), ('MV', 'Maldives'), ('CI', "Côte d'Ivoire"), ('VN', 'Viet Nam'), ('IN', 'India'), ('GN', 'Guinea'), ('AX', 'Åland Islands'), ('ST', 'Sao Tome and Principe'), ('HR', 'Croatia'), ('HM', 'Heard Island and McDonald Islands'), ('MO', 'Macao'), ('MS', 'Montserrat'), ('AT', 'Austria'), ('NO', 'Norway'), ('BT', 'Bhutan'), ('PT', 'Portugal'), ('IO', 'British Indian Ocean Territory'), ('KN', 'Saint Kitts and Nevis'), ('PL', 'Poland'), ('MW', 'Malawi'), ('LS', 'Lesotho'), ('SZ', 'Swaziland'), ('TJ', 'Tajikistan'), ('NR', 'Nauru'), ('MT', 'Malta'), ('ES', 'Spain'), ('BB', 'Barbados'), ('CG', 'Congo'), ('PG', 'Papua New Guinea'), ('GS', 'South Georgia and the South Sandwich Islands'), ('TN', 'Tunisia'), ('MU', 'Mauritius'), ('TH', 'Thailand'), ('BJ', 'Benin'), ('KY', 'Cayman Islands'), ('ID', 'Indonesia'), ('CD', 'Congo (the Democratic Republic of the)'), ('KI', 'Kiribati'), ('IL', 'Israel'), ('CN', 'China'), ('SA', 'Saudi Arabia'), ('AS', 'American Samoa'), ('KH', 'Cambodia'), ('JO', 'Jordan'), ('SY', 'Syrian Arab Republic'), ('LI', 'Liechtenstein'), ('GF', 'French Guiana'), ('EC', 'Ecuador'), ('CC', 'Cocos (Keeling) Islands'), ('TL', 'Timor-Leste'), ('BE', 'Belgium'), ('PR', 'Puerto Rico'), ('GA', 'Gabon'), ('BM', 'Bermuda'), ('GG', 'Guernsey')], max_length=20, default='ES', verbose_name='country', blank=True)), - ('account', models.ForeignKey(null=True, related_name='contacts', on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL, verbose_name='Account')), - ], - ), - ] diff --git a/orchestra/contrib/contacts/migrations/0001_squashed_0012_auto_20210422_1108.py b/orchestra/contrib/contacts/migrations/0001_squashed_0012_auto_20210422_1108.py deleted file mode 100644 index 31a58dbd..00000000 --- a/orchestra/contrib/contacts/migrations/0001_squashed_0012_auto_20210422_1108.py +++ /dev/null @@ -1,41 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2021-04-22 11:08 -from __future__ import unicode_literals - -from django.conf import settings -import django.core.validators -from django.db import migrations, models -import django.db.models.deletion -import orchestra.contrib.contacts.validators -import orchestra.models.fields - - -class Migration(migrations.Migration): - - replaces = [('contacts', '0001_initial'), ('contacts', '0002_auto_20170528_2011'), ('contacts', '0003_auto_20170625_1813'), ('contacts', '0004_auto_20170625_1840'), ('contacts', '0005_auto_20170625_1840'), ('contacts', '0006_auto_20170625_1840'), ('contacts', '0007_auto_20170625_1841'), ('contacts', '0008_auto_20190805_1134'), ('contacts', '0009_auto_20200204_1217'), ('contacts', '0010_auto_20200204_1218'), ('contacts', '0011_auto_20210330_1049'), ('contacts', '0012_auto_20210422_1108')] - - initial = True - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.CreateModel( - name='Contact', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('short_name', models.CharField(max_length=128, verbose_name='short name')), - ('full_name', models.CharField(blank=True, max_length=256, verbose_name='full name')), - ('email', models.EmailField(max_length=254)), - ('email_usage', orchestra.models.fields.MultiSelectField(blank=True, choices=[('SUPPORT', 'Support tickets'), ('ADMIN', 'Administrative'), ('BILLING', 'Billing'), ('TECH', 'Technical'), ('ADDS', 'Announcements'), ('EMERGENCY', 'Emergency contact')], default=('SUPPORT', 'ADMIN', 'BILLING', 'TECH', 'ADDS', 'EMERGENCY'), max_length=256, verbose_name='email usage')), - ('phone', models.CharField(blank=True, max_length=32, validators=[orchestra.contrib.contacts.validators.validate_phone], verbose_name='phone')), - ('phone2', models.CharField(blank=True, max_length=32, validators=[orchestra.contrib.contacts.validators.validate_phone], verbose_name='alternative phone')), - ('address', models.TextField(blank=True, verbose_name='address')), - ('city', models.CharField(blank=True, max_length=128, verbose_name='city')), - ('zipcode', models.CharField(blank=True, max_length=10, validators=[django.core.validators.RegexValidator('^[0-9,A-Z]{3,10}$', 'Enter a valid zipcode.', 'invalid')], verbose_name='zip code')), - ('country', models.CharField(blank=True, choices=[('AF', 'Afghanistan'), ('AX', 'Åland Islands'), ('AL', 'Albania'), ('DZ', 'Algeria'), ('AS', 'American Samoa'), ('AD', 'Andorra'), ('AO', 'Angola'), ('AI', 'Anguilla'), ('AQ', 'Antarctica'), ('AG', 'Antigua and Barbuda'), ('AR', 'Argentina'), ('AM', 'Armenia'), ('AW', 'Aruba'), ('AU', 'Australia'), ('AT', 'Austria'), ('AZ', 'Azerbaijan'), ('BS', 'Bahamas'), ('BH', 'Bahrain'), ('BD', 'Bangladesh'), ('BB', 'Barbados'), ('BY', 'Belarus'), ('BE', 'Belgium'), ('BZ', 'Belize'), ('BJ', 'Benin'), ('BM', 'Bermuda'), ('BT', 'Bhutan'), ('BO', 'Bolivia (Plurinational State of)'), ('BQ', 'Bonaire, Sint Eustatius and Saba'), ('BA', 'Bosnia and Herzegovina'), ('BW', 'Botswana'), ('BV', 'Bouvet Island'), ('BR', 'Brazil'), ('IO', 'British Indian Ocean Territory'), ('BN', 'Brunei Darussalam'), ('BG', 'Bulgaria'), ('BF', 'Burkina Faso'), ('BI', 'Burundi'), ('CV', 'Cabo Verde'), ('KH', 'Cambodia'), ('CM', 'Cameroon'), ('CA', 'Canada'), ('KY', 'Cayman Islands'), ('CF', 'Central African Republic'), ('TD', 'Chad'), ('CL', 'Chile'), ('CN', 'China'), ('CX', 'Christmas Island'), ('CC', 'Cocos (Keeling) Islands'), ('CO', 'Colombia'), ('KM', 'Comoros'), ('CG', 'Congo'), ('CD', 'Congo (the Democratic Republic of the)'), ('CK', 'Cook Islands'), ('CR', 'Costa Rica'), ('CI', "Côte d'Ivoire"), ('HR', 'Croatia'), ('CU', 'Cuba'), ('CW', 'Curaçao'), ('CY', 'Cyprus'), ('CZ', 'Czechia'), ('DK', 'Denmark'), ('DJ', 'Djibouti'), ('DM', 'Dominica'), ('DO', 'Dominican Republic'), ('EC', 'Ecuador'), ('EG', 'Egypt'), ('SV', 'El Salvador'), ('GQ', 'Equatorial Guinea'), ('ER', 'Eritrea'), ('EE', 'Estonia'), ('SZ', 'Eswatini'), ('ET', 'Ethiopia'), ('FK', 'Falkland Islands (Malvinas)'), ('FO', 'Faroe Islands'), ('FJ', 'Fiji'), ('FI', 'Finland'), ('FR', 'France'), ('GF', 'French Guiana'), ('PF', 'French Polynesia'), ('TF', 'French Southern Territories'), ('GA', 'Gabon'), ('GM', 'Gambia'), ('GE', 'Georgia'), ('DE', 'Germany'), ('GH', 'Ghana'), ('GI', 'Gibraltar'), ('GR', 'Greece'), ('GL', 'Greenland'), ('GD', 'Grenada'), ('GP', 'Guadeloupe'), ('GU', 'Guam'), ('GT', 'Guatemala'), ('GG', 'Guernsey'), ('GN', 'Guinea'), ('GW', 'Guinea-Bissau'), ('GY', 'Guyana'), ('HT', 'Haiti'), ('HM', 'Heard Island and McDonald Islands'), ('VA', 'Holy See'), ('HN', 'Honduras'), ('HK', 'Hong Kong'), ('HU', 'Hungary'), ('IS', 'Iceland'), ('IN', 'India'), ('ID', 'Indonesia'), ('IR', 'Iran (Islamic Republic of)'), ('IQ', 'Iraq'), ('IE', 'Ireland'), ('IM', 'Isle of Man'), ('IL', 'Israel'), ('IT', 'Italy'), ('JM', 'Jamaica'), ('JP', 'Japan'), ('JE', 'Jersey'), ('JO', 'Jordan'), ('KZ', 'Kazakhstan'), ('KE', 'Kenya'), ('KI', 'Kiribati'), ('KP', "Korea (the Democratic People's Republic of)"), ('KR', 'Korea (the Republic of)'), ('KW', 'Kuwait'), ('KG', 'Kyrgyzstan'), ('LA', "Lao People's Democratic Republic"), ('LV', 'Latvia'), ('LB', 'Lebanon'), ('LS', 'Lesotho'), ('LR', 'Liberia'), ('LY', 'Libya'), ('LI', 'Liechtenstein'), ('LT', 'Lithuania'), ('LU', 'Luxembourg'), ('MO', 'Macao'), ('MG', 'Madagascar'), ('MW', 'Malawi'), ('MY', 'Malaysia'), ('MV', 'Maldives'), ('ML', 'Mali'), ('MT', 'Malta'), ('MH', 'Marshall Islands'), ('MQ', 'Martinique'), ('MR', 'Mauritania'), ('MU', 'Mauritius'), ('YT', 'Mayotte'), ('MX', 'Mexico'), ('FM', 'Micronesia (Federated States of)'), ('MD', 'Moldova (the Republic of)'), ('MC', 'Monaco'), ('MN', 'Mongolia'), ('ME', 'Montenegro'), ('MS', 'Montserrat'), ('MA', 'Morocco'), ('MZ', 'Mozambique'), ('MM', 'Myanmar'), ('NA', 'Namibia'), ('NR', 'Nauru'), ('NP', 'Nepal'), ('NL', 'Netherlands'), ('NC', 'New Caledonia'), ('NZ', 'New Zealand'), ('NI', 'Nicaragua'), ('NE', 'Niger'), ('NG', 'Nigeria'), ('NU', 'Niue'), ('NF', 'Norfolk Island'), ('MK', 'North Macedonia'), ('MP', 'Northern Mariana Islands'), ('NO', 'Norway'), ('OM', 'Oman'), ('PK', 'Pakistan'), ('PW', 'Palau'), ('PS', 'Palestine, State of'), ('PA', 'Panama'), ('PG', 'Papua New Guinea'), ('PY', 'Paraguay'), ('PE', 'Peru'), ('PH', 'Philippines'), ('PN', 'Pitcairn'), ('PL', 'Poland'), ('PT', 'Portugal'), ('PR', 'Puerto Rico'), ('QA', 'Qatar'), ('RE', 'Réunion'), ('RO', 'Romania'), ('RU', 'Russian Federation'), ('RW', 'Rwanda'), ('BL', 'Saint Barthélemy'), ('SH', 'Saint Helena, Ascension and Tristan da Cunha'), ('KN', 'Saint Kitts and Nevis'), ('LC', 'Saint Lucia'), ('MF', 'Saint Martin (French part)'), ('PM', 'Saint Pierre and Miquelon'), ('VC', 'Saint Vincent and the Grenadines'), ('WS', 'Samoa'), ('SM', 'San Marino'), ('ST', 'Sao Tome and Principe'), ('SA', 'Saudi Arabia'), ('SN', 'Senegal'), ('RS', 'Serbia'), ('SC', 'Seychelles'), ('SL', 'Sierra Leone'), ('SG', 'Singapore'), ('SX', 'Sint Maarten (Dutch part)'), ('SK', 'Slovakia'), ('SI', 'Slovenia'), ('SB', 'Solomon Islands'), ('SO', 'Somalia'), ('ZA', 'South Africa'), ('GS', 'South Georgia and the South Sandwich Islands'), ('SS', 'South Sudan'), ('ES', 'Spain'), ('LK', 'Sri Lanka'), ('SD', 'Sudan'), ('SR', 'Suriname'), ('SJ', 'Svalbard and Jan Mayen'), ('SE', 'Sweden'), ('CH', 'Switzerland'), ('SY', 'Syrian Arab Republic'), ('TW', 'Taiwan (Province of China)'), ('TJ', 'Tajikistan'), ('TZ', 'Tanzania, the United Republic of'), ('TH', 'Thailand'), ('TL', 'Timor-Leste'), ('TG', 'Togo'), ('TK', 'Tokelau'), ('TO', 'Tonga'), ('TT', 'Trinidad and Tobago'), ('TN', 'Tunisia'), ('TR', 'Turkey'), ('TM', 'Turkmenistan'), ('TC', 'Turks and Caicos Islands'), ('TV', 'Tuvalu'), ('UG', 'Uganda'), ('UA', 'Ukraine'), ('AE', 'United Arab Emirates'), ('GB', 'United Kingdom of Great Britain and Northern Ireland'), ('UM', 'United States Minor Outlying Islands'), ('US', 'United States of America'), ('UY', 'Uruguay'), ('UZ', 'Uzbekistan'), ('VU', 'Vanuatu'), ('VE', 'Venezuela (Bolivarian Republic of)'), ('VN', 'Viet Nam'), ('VG', 'Virgin Islands (British)'), ('VI', 'Virgin Islands (U.S.)'), ('WF', 'Wallis and Futuna'), ('EH', 'Western Sahara'), ('YE', 'Yemen'), ('ZM', 'Zambia'), ('ZW', 'Zimbabwe')], default='ES', max_length=20, verbose_name='country')), - ('account', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='contacts', to=settings.AUTH_USER_MODEL, verbose_name='Account')), - ], - ), - ] diff --git a/orchestra/contrib/contacts/migrations/0002_auto_20170528_2011.py b/orchestra/contrib/contacts/migrations/0002_auto_20170528_2011.py deleted file mode 100644 index 541d0d00..00000000 --- a/orchestra/contrib/contacts/migrations/0002_auto_20170528_2011.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-05-28 18:11 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('contacts', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='contact', - name='country', - field=models.CharField(blank=True, choices=[('LR', 'Liberia'), ('BJ', 'Benin'), ('FM', 'Micronesia (Federated States of)'), ('GS', 'South Georgia and the South Sandwich Islands'), ('AU', 'Australia'), ('PR', 'Puerto Rico'), ('MZ', 'Mozambique'), ('CR', 'Costa Rica'), ('ST', 'Sao Tome and Principe'), ('PL', 'Poland'), ('NG', 'Nigeria'), ('AS', 'American Samoa'), ('LS', 'Lesotho'), ('SG', 'Singapore'), ('BT', 'Bhutan'), ('TG', 'Togo'), ('DM', 'Dominica'), ('GP', 'Guadeloupe'), ('CI', "Côte d'Ivoire"), ('SR', 'Suriname'), ('ZM', 'Zambia'), ('CX', 'Christmas Island'), ('ME', 'Montenegro'), ('TR', 'Turkey'), ('UG', 'Uganda'), ('RU', 'Russian Federation'), ('PG', 'Papua New Guinea'), ('VG', 'Virgin Islands (British)'), ('CW', 'Curaçao'), ('PM', 'Saint Pierre and Miquelon'), ('KP', "Korea (the Democratic People's Republic of)"), ('TJ', 'Tajikistan'), ('FR', 'France'), ('AX', 'Åland Islands'), ('CU', 'Cuba'), ('BA', 'Bosnia and Herzegovina'), ('NA', 'Namibia'), ('MS', 'Montserrat'), ('US', 'United States of America'), ('PS', 'Palestine, State of'), ('MF', 'Saint Martin (French part)'), ('NE', 'Niger'), ('BH', 'Bahrain'), ('CK', 'Cook Islands'), ('JE', 'Jersey'), ('DJ', 'Djibouti'), ('GI', 'Gibraltar'), ('AL', 'Albania'), ('CA', 'Canada'), ('AI', 'Anguilla'), ('GF', 'French Guiana'), ('AW', 'Aruba'), ('PE', 'Peru'), ('SM', 'San Marino'), ('LK', 'Sri Lanka'), ('PN', 'Pitcairn'), ('KM', 'Comoros'), ('ER', 'Eritrea'), ('SK', 'Slovakia'), ('SH', 'Saint Helena, Ascension and Tristan da Cunha'), ('SN', 'Senegal'), ('PW', 'Palau'), ('HT', 'Haiti'), ('MA', 'Morocco'), ('CY', 'Cyprus'), ('GT', 'Guatemala'), ('IT', 'Italy'), ('PY', 'Paraguay'), ('DO', 'Dominican Republic'), ('JO', 'Jordan'), ('AT', 'Austria'), ('NL', 'Netherlands'), ('AM', 'Armenia'), ('BN', 'Brunei Darussalam'), ('BB', 'Barbados'), ('IE', 'Ireland'), ('LB', 'Lebanon'), ('SI', 'Slovenia'), ('TM', 'Turkmenistan'), ('PH', 'Philippines'), ('GE', 'Georgia'), ('BQ', 'Bonaire, Sint Eustatius and Saba'), ('GD', 'Grenada'), ('KI', 'Kiribati'), ('NZ', 'New Zealand'), ('SL', 'Sierra Leone'), ('VN', 'Viet Nam'), ('BZ', 'Belize'), ('TF', 'French Southern Territories'), ('HK', 'Hong Kong'), ('BY', 'Belarus'), ('SD', 'Sudan'), ('UM', 'United States Minor Outlying Islands'), ('ES', 'Spain'), ('GH', 'Ghana'), ('GL', 'Greenland'), ('AD', 'Andorra'), ('ML', 'Mali'), ('NC', 'New Caledonia'), ('IS', 'Iceland'), ('TC', 'Turks and Caicos Islands'), ('FI', 'Finland'), ('DK', 'Denmark'), ('MM', 'Myanmar'), ('MT', 'Malta'), ('TT', 'Trinidad and Tobago'), ('SZ', 'Swaziland'), ('QA', 'Qatar'), ('TN', 'Tunisia'), ('EC', 'Ecuador'), ('CM', 'Cameroon'), ('WF', 'Wallis and Futuna'), ('CO', 'Colombia'), ('MP', 'Northern Mariana Islands'), ('KH', 'Cambodia'), ('MY', 'Malaysia'), ('WS', 'Samoa'), ('NR', 'Nauru'), ('MV', 'Maldives'), ('LI', 'Liechtenstein'), ('BF', 'Burkina Faso'), ('BW', 'Botswana'), ('PF', 'French Polynesia'), ('HM', 'Heard Island and McDonald Islands'), ('SC', 'Seychelles'), ('GU', 'Guam'), ('TZ', 'Tanzania, United Republic of'), ('MQ', 'Martinique'), ('IN', 'India'), ('BE', 'Belgium'), ('SO', 'Somalia'), ('DZ', 'Algeria'), ('AQ', 'Antarctica'), ('TV', 'Tuvalu'), ('GB', 'United Kingdom of Great Britain and Northern Ireland'), ('MC', 'Monaco'), ('KW', 'Kuwait'), ('RO', 'Romania'), ('BL', 'Saint Barthélemy'), ('CV', 'Cabo Verde'), ('BR', 'Brazil'), ('JP', 'Japan'), ('NF', 'Norfolk Island'), ('IO', 'British Indian Ocean Territory'), ('SB', 'Solomon Islands'), ('IM', 'Isle of Man'), ('LC', 'Saint Lucia'), ('ID', 'Indonesia'), ('LA', "Lao People's Democratic Republic"), ('SE', 'Sweden'), ('KG', 'Kyrgyzstan'), ('HN', 'Honduras'), ('KR', 'Korea (the Republic of)'), ('BI', 'Burundi'), ('ZW', 'Zimbabwe'), ('IQ', 'Iraq'), ('SA', 'Saudi Arabia'), ('CN', 'China'), ('NU', 'Niue'), ('GQ', 'Equatorial Guinea'), ('UY', 'Uruguay'), ('LV', 'Latvia'), ('TH', 'Thailand'), ('CC', 'Cocos (Keeling) Islands'), ('EH', 'Western Sahara'), ('PA', 'Panama'), ('GN', 'Guinea'), ('SY', 'Syrian Arab Republic'), ('TK', 'Tokelau'), ('KY', 'Cayman Islands'), ('CD', 'Congo (the Democratic Republic of the)'), ('FO', 'Faroe Islands'), ('KN', 'Saint Kitts and Nevis'), ('EE', 'Estonia'), ('LU', 'Luxembourg'), ('MX', 'Mexico'), ('AF', 'Afghanistan'), ('SV', 'El Salvador'), ('AE', 'United Arab Emirates'), ('BG', 'Bulgaria'), ('BD', 'Bangladesh'), ('IR', 'Iran (Islamic Republic of)'), ('BS', 'Bahamas'), ('TW', 'Taiwan (Province of China)'), ('EG', 'Egypt'), ('GM', 'Gambia'), ('MG', 'Madagascar'), ('OM', 'Oman'), ('IL', 'Israel'), ('FJ', 'Fiji'), ('AG', 'Antigua and Barbuda'), ('LT', 'Lithuania'), ('DE', 'Germany'), ('KE', 'Kenya'), ('BV', 'Bouvet Island'), ('PT', 'Portugal'), ('AZ', 'Azerbaijan'), ('MN', 'Mongolia'), ('RW', 'Rwanda'), ('MR', 'Mauritania'), ('NI', 'Nicaragua'), ('YT', 'Mayotte'), ('SS', 'South Sudan'), ('YE', 'Yemen'), ('GY', 'Guyana'), ('SJ', 'Svalbard and Jan Mayen'), ('MH', 'Marshall Islands'), ('SX', 'Sint Maarten (Dutch part)'), ('GG', 'Guernsey'), ('HR', 'Croatia'), ('VU', 'Vanuatu'), ('MW', 'Malawi'), ('CZ', 'Czech Republic'), ('CH', 'Switzerland'), ('RS', 'Serbia'), ('LY', 'Libya'), ('MO', 'Macao'), ('MK', 'Macedonia (the former Yugoslav Republic of)'), ('HU', 'Hungary'), ('GA', 'Gabon'), ('KZ', 'Kazakhstan'), ('TO', 'Tonga'), ('ET', 'Ethiopia'), ('UZ', 'Uzbekistan'), ('TD', 'Chad'), ('MD', 'Moldova (the Republic of)'), ('BO', 'Bolivia (Plurinational State of)'), ('AO', 'Angola'), ('GW', 'Guinea-Bissau'), ('VA', 'Holy See'), ('VC', 'Saint Vincent and the Grenadines'), ('TL', 'Timor-Leste'), ('VE', 'Venezuela (Bolivarian Republic of)'), ('FK', 'Falkland Islands [Malvinas]'), ('ZA', 'South Africa'), ('PK', 'Pakistan'), ('CF', 'Central African Republic'), ('NO', 'Norway'), ('CG', 'Congo'), ('UA', 'Ukraine'), ('AR', 'Argentina'), ('CL', 'Chile'), ('VI', 'Virgin Islands (U.S.)'), ('MU', 'Mauritius'), ('JM', 'Jamaica'), ('RE', 'Réunion'), ('GR', 'Greece'), ('NP', 'Nepal'), ('BM', 'Bermuda')], default='ES', max_length=20, verbose_name='country'), - ), - ] diff --git a/orchestra/contrib/contacts/migrations/0003_auto_20170625_1813.py b/orchestra/contrib/contacts/migrations/0003_auto_20170625_1813.py deleted file mode 100644 index c4c695ce..00000000 --- a/orchestra/contrib/contacts/migrations/0003_auto_20170625_1813.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-06-25 16:13 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('contacts', '0002_auto_20170528_2011'), - ] - - operations = [ - migrations.AlterField( - model_name='contact', - name='country', - field=models.CharField(blank=True, choices=[('GA', 'Gabon'), ('TK', 'Tokelau'), ('GU', 'Guam'), ('MS', 'Montserrat'), ('AE', 'United Arab Emirates'), ('TW', 'Taiwan (Province of China)'), ('CX', 'Christmas Island'), ('MW', 'Malawi'), ('BE', 'Belgium'), ('CM', 'Cameroon'), ('PY', 'Paraguay'), ('MU', 'Mauritius'), ('KP', "Korea (the Democratic People's Republic of)"), ('KE', 'Kenya'), ('CD', 'Congo (the Democratic Republic of the)'), ('LS', 'Lesotho'), ('LA', "Lao People's Democratic Republic"), ('GG', 'Guernsey'), ('KZ', 'Kazakhstan'), ('AI', 'Anguilla'), ('PA', 'Panama'), ('KI', 'Kiribati'), ('IE', 'Ireland'), ('BN', 'Brunei Darussalam'), ('CO', 'Colombia'), ('OM', 'Oman'), ('FJ', 'Fiji'), ('SJ', 'Svalbard and Jan Mayen'), ('GF', 'French Guiana'), ('MP', 'Northern Mariana Islands'), ('SM', 'San Marino'), ('YT', 'Mayotte'), ('MT', 'Malta'), ('FM', 'Micronesia (Federated States of)'), ('RU', 'Russian Federation'), ('CU', 'Cuba'), ('SG', 'Singapore'), ('BZ', 'Belize'), ('YE', 'Yemen'), ('MV', 'Maldives'), ('VC', 'Saint Vincent and the Grenadines'), ('NG', 'Nigeria'), ('EH', 'Western Sahara'), ('NZ', 'New Zealand'), ('DE', 'Germany'), ('TH', 'Thailand'), ('TN', 'Tunisia'), ('MH', 'Marshall Islands'), ('GY', 'Guyana'), ('IO', 'British Indian Ocean Territory'), ('LV', 'Latvia'), ('NP', 'Nepal'), ('VG', 'Virgin Islands (British)'), ('TF', 'French Southern Territories'), ('SO', 'Somalia'), ('WF', 'Wallis and Futuna'), ('FK', 'Falkland Islands [Malvinas]'), ('VN', 'Viet Nam'), ('ES', 'Spain'), ('TM', 'Turkmenistan'), ('EG', 'Egypt'), ('PK', 'Pakistan'), ('AT', 'Austria'), ('SB', 'Solomon Islands'), ('GT', 'Guatemala'), ('KH', 'Cambodia'), ('BD', 'Bangladesh'), ('GH', 'Ghana'), ('LR', 'Liberia'), ('GW', 'Guinea-Bissau'), ('UZ', 'Uzbekistan'), ('MN', 'Mongolia'), ('TR', 'Turkey'), ('DO', 'Dominican Republic'), ('PN', 'Pitcairn'), ('LK', 'Sri Lanka'), ('UG', 'Uganda'), ('GM', 'Gambia'), ('BH', 'Bahrain'), ('FR', 'France'), ('PL', 'Poland'), ('AQ', 'Antarctica'), ('CF', 'Central African Republic'), ('HR', 'Croatia'), ('AO', 'Angola'), ('RO', 'Romania'), ('MG', 'Madagascar'), ('UY', 'Uruguay'), ('PS', 'Palestine, State of'), ('ET', 'Ethiopia'), ('NO', 'Norway'), ('LT', 'Lithuania'), ('FO', 'Faroe Islands'), ('ST', 'Sao Tome and Principe'), ('JO', 'Jordan'), ('ME', 'Montenegro'), ('MY', 'Malaysia'), ('LY', 'Libya'), ('PT', 'Portugal'), ('CA', 'Canada'), ('MK', 'Macedonia (the former Yugoslav Republic of)'), ('CG', 'Congo'), ('NL', 'Netherlands'), ('BM', 'Bermuda'), ('TT', 'Trinidad and Tobago'), ('ID', 'Indonesia'), ('SX', 'Sint Maarten (Dutch part)'), ('AR', 'Argentina'), ('HN', 'Honduras'), ('SI', 'Slovenia'), ('DJ', 'Djibouti'), ('KR', 'Korea (the Republic of)'), ('CI', "Côte d'Ivoire"), ('BB', 'Barbados'), ('AD', 'Andorra'), ('JE', 'Jersey'), ('PG', 'Papua New Guinea'), ('MX', 'Mexico'), ('TL', 'Timor-Leste'), ('SV', 'El Salvador'), ('TV', 'Tuvalu'), ('EE', 'Estonia'), ('LI', 'Liechtenstein'), ('MA', 'Morocco'), ('LU', 'Luxembourg'), ('LB', 'Lebanon'), ('SE', 'Sweden'), ('CV', 'Cabo Verde'), ('RE', 'Réunion'), ('NI', 'Nicaragua'), ('BY', 'Belarus'), ('TJ', 'Tajikistan'), ('NR', 'Nauru'), ('AG', 'Antigua and Barbuda'), ('SZ', 'Swaziland'), ('DM', 'Dominica'), ('ZM', 'Zambia'), ('CL', 'Chile'), ('TC', 'Turks and Caicos Islands'), ('GP', 'Guadeloupe'), ('DZ', 'Algeria'), ('RS', 'Serbia'), ('AW', 'Aruba'), ('ER', 'Eritrea'), ('BI', 'Burundi'), ('EC', 'Ecuador'), ('ML', 'Mali'), ('IL', 'Israel'), ('JM', 'Jamaica'), ('MC', 'Monaco'), ('CZ', 'Czech Republic'), ('BT', 'Bhutan'), ('CY', 'Cyprus'), ('PF', 'French Polynesia'), ('MZ', 'Mozambique'), ('ZW', 'Zimbabwe'), ('KM', 'Comoros'), ('SL', 'Sierra Leone'), ('CW', 'Curaçao'), ('SY', 'Syrian Arab Republic'), ('MF', 'Saint Martin (French part)'), ('LC', 'Saint Lucia'), ('HM', 'Heard Island and McDonald Islands'), ('GB', 'United Kingdom of Great Britain and Northern Ireland'), ('KG', 'Kyrgyzstan'), ('MD', 'Moldova (the Republic of)'), ('VE', 'Venezuela (Bolivarian Republic of)'), ('US', 'United States of America'), ('HU', 'Hungary'), ('TD', 'Chad'), ('CK', 'Cook Islands'), ('UA', 'Ukraine'), ('SN', 'Senegal'), ('GE', 'Georgia'), ('BF', 'Burkina Faso'), ('VA', 'Holy See'), ('SC', 'Seychelles'), ('PW', 'Palau'), ('BW', 'Botswana'), ('SR', 'Suriname'), ('IR', 'Iran (Islamic Republic of)'), ('MM', 'Myanmar'), ('SK', 'Slovakia'), ('SA', 'Saudi Arabia'), ('RW', 'Rwanda'), ('KW', 'Kuwait'), ('GN', 'Guinea'), ('AZ', 'Azerbaijan'), ('AL', 'Albania'), ('NC', 'New Caledonia'), ('MQ', 'Martinique'), ('CR', 'Costa Rica'), ('BQ', 'Bonaire, Sint Eustatius and Saba'), ('BS', 'Bahamas'), ('AF', 'Afghanistan'), ('AS', 'American Samoa'), ('MR', 'Mauritania'), ('AM', 'Armenia'), ('CH', 'Switzerland'), ('IM', 'Isle of Man'), ('BL', 'Saint Barthélemy'), ('VI', 'Virgin Islands (U.S.)'), ('WS', 'Samoa'), ('SS', 'South Sudan'), ('NU', 'Niue'), ('IS', 'Iceland'), ('ZA', 'South Africa'), ('DK', 'Denmark'), ('GL', 'Greenland'), ('JP', 'Japan'), ('FI', 'Finland'), ('TZ', 'Tanzania, United Republic of'), ('IT', 'Italy'), ('CN', 'China'), ('AX', 'Åland Islands'), ('PE', 'Peru'), ('GR', 'Greece'), ('SD', 'Sudan'), ('BA', 'Bosnia and Herzegovina'), ('NA', 'Namibia'), ('SH', 'Saint Helena, Ascension and Tristan da Cunha'), ('IQ', 'Iraq'), ('KN', 'Saint Kitts and Nevis'), ('IN', 'India'), ('BV', 'Bouvet Island'), ('MO', 'Macao'), ('HK', 'Hong Kong'), ('TO', 'Tonga'), ('NE', 'Niger'), ('TG', 'Togo'), ('PH', 'Philippines'), ('UM', 'United States Minor Outlying Islands'), ('GQ', 'Equatorial Guinea'), ('BG', 'Bulgaria'), ('AU', 'Australia'), ('GD', 'Grenada'), ('QA', 'Qatar'), ('GI', 'Gibraltar'), ('HT', 'Haiti'), ('GS', 'South Georgia and the South Sandwich Islands'), ('CC', 'Cocos (Keeling) Islands'), ('BR', 'Brazil'), ('PM', 'Saint Pierre and Miquelon'), ('BO', 'Bolivia (Plurinational State of)'), ('NF', 'Norfolk Island'), ('BJ', 'Benin'), ('VU', 'Vanuatu'), ('KY', 'Cayman Islands'), ('PR', 'Puerto Rico')], default='ES', max_length=20, verbose_name='country'), - ), - ] diff --git a/orchestra/contrib/contacts/migrations/0004_auto_20170625_1840.py b/orchestra/contrib/contacts/migrations/0004_auto_20170625_1840.py deleted file mode 100644 index ac7a6a76..00000000 --- a/orchestra/contrib/contacts/migrations/0004_auto_20170625_1840.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-06-25 16:40 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('contacts', '0003_auto_20170625_1813'), - ] - - operations = [ - migrations.AlterField( - model_name='contact', - name='country', - field=models.CharField(blank=True, choices=[('CD', 'Congo (the Democratic Republic of the)'), ('SO', 'Somalia'), ('TO', 'Tonga'), ('TF', 'French Southern Territories'), ('VN', 'Viet Nam'), ('TC', 'Turks and Caicos Islands'), ('KG', 'Kyrgyzstan'), ('VE', 'Venezuela (Bolivarian Republic of)'), ('AR', 'Argentina'), ('TD', 'Chad'), ('EH', 'Western Sahara'), ('PL', 'Poland'), ('SI', 'Slovenia'), ('RU', 'Russian Federation'), ('GR', 'Greece'), ('AZ', 'Azerbaijan'), ('IR', 'Iran (Islamic Republic of)'), ('PY', 'Paraguay'), ('BJ', 'Benin'), ('PH', 'Philippines'), ('BM', 'Bermuda'), ('CZ', 'Czech Republic'), ('BS', 'Bahamas'), ('PS', 'Palestine, State of'), ('ES', 'Spain'), ('NF', 'Norfolk Island'), ('BH', 'Bahrain'), ('SD', 'Sudan'), ('US', 'United States of America'), ('GQ', 'Equatorial Guinea'), ('GB', 'United Kingdom of Great Britain and Northern Ireland'), ('CU', 'Cuba'), ('BD', 'Bangladesh'), ('AL', 'Albania'), ('IT', 'Italy'), ('KZ', 'Kazakhstan'), ('TV', 'Tuvalu'), ('ET', 'Ethiopia'), ('LA', "Lao People's Democratic Republic"), ('ID', 'Indonesia'), ('SH', 'Saint Helena, Ascension and Tristan da Cunha'), ('CO', 'Colombia'), ('IO', 'British Indian Ocean Territory'), ('IL', 'Israel'), ('CF', 'Central African Republic'), ('MN', 'Mongolia'), ('VG', 'Virgin Islands (British)'), ('LB', 'Lebanon'), ('LK', 'Sri Lanka'), ('AO', 'Angola'), ('WF', 'Wallis and Futuna'), ('GI', 'Gibraltar'), ('PM', 'Saint Pierre and Miquelon'), ('HK', 'Hong Kong'), ('PF', 'French Polynesia'), ('SY', 'Syrian Arab Republic'), ('JO', 'Jordan'), ('SL', 'Sierra Leone'), ('LV', 'Latvia'), ('ZW', 'Zimbabwe'), ('SC', 'Seychelles'), ('MM', 'Myanmar'), ('QA', 'Qatar'), ('CM', 'Cameroon'), ('SN', 'Senegal'), ('LS', 'Lesotho'), ('TL', 'Timor-Leste'), ('GA', 'Gabon'), ('LR', 'Liberia'), ('MT', 'Malta'), ('SX', 'Sint Maarten (Dutch part)'), ('AU', 'Australia'), ('MY', 'Malaysia'), ('MA', 'Morocco'), ('SK', 'Slovakia'), ('UG', 'Uganda'), ('GH', 'Ghana'), ('RO', 'Romania'), ('NL', 'Netherlands'), ('MP', 'Northern Mariana Islands'), ('NO', 'Norway'), ('NA', 'Namibia'), ('ZM', 'Zambia'), ('PW', 'Palau'), ('BT', 'Bhutan'), ('PE', 'Peru'), ('BW', 'Botswana'), ('RW', 'Rwanda'), ('JP', 'Japan'), ('NR', 'Nauru'), ('GW', 'Guinea-Bissau'), ('AQ', 'Antarctica'), ('LC', 'Saint Lucia'), ('CY', 'Cyprus'), ('SA', 'Saudi Arabia'), ('LT', 'Lithuania'), ('BB', 'Barbados'), ('RS', 'Serbia'), ('CL', 'Chile'), ('BL', 'Saint Barthélemy'), ('MQ', 'Martinique'), ('CW', 'Curaçao'), ('OM', 'Oman'), ('KR', 'Korea (the Republic of)'), ('GY', 'Guyana'), ('TJ', 'Tajikistan'), ('AS', 'American Samoa'), ('IS', 'Iceland'), ('TG', 'Togo'), ('LY', 'Libya'), ('AM', 'Armenia'), ('NG', 'Nigeria'), ('GL', 'Greenland'), ('AT', 'Austria'), ('SS', 'South Sudan'), ('KE', 'Kenya'), ('MW', 'Malawi'), ('DE', 'Germany'), ('AX', 'Åland Islands'), ('MO', 'Macao'), ('MD', 'Moldova (the Republic of)'), ('AI', 'Anguilla'), ('GG', 'Guernsey'), ('TH', 'Thailand'), ('MG', 'Madagascar'), ('BY', 'Belarus'), ('LI', 'Liechtenstein'), ('NE', 'Niger'), ('KP', "Korea (the Democratic People's Republic of)"), ('PN', 'Pitcairn'), ('PT', 'Portugal'), ('BF', 'Burkina Faso'), ('KY', 'Cayman Islands'), ('HU', 'Hungary'), ('MZ', 'Mozambique'), ('UZ', 'Uzbekistan'), ('EC', 'Ecuador'), ('DJ', 'Djibouti'), ('NU', 'Niue'), ('YT', 'Mayotte'), ('CR', 'Costa Rica'), ('TW', 'Taiwan (Province of China)'), ('JM', 'Jamaica'), ('SJ', 'Svalbard and Jan Mayen'), ('GN', 'Guinea'), ('BZ', 'Belize'), ('KN', 'Saint Kitts and Nevis'), ('CK', 'Cook Islands'), ('SR', 'Suriname'), ('FJ', 'Fiji'), ('FO', 'Faroe Islands'), ('VI', 'Virgin Islands (U.S.)'), ('AW', 'Aruba'), ('IM', 'Isle of Man'), ('KW', 'Kuwait'), ('BN', 'Brunei Darussalam'), ('SB', 'Solomon Islands'), ('GS', 'South Georgia and the South Sandwich Islands'), ('BI', 'Burundi'), ('DO', 'Dominican Republic'), ('BG', 'Bulgaria'), ('DM', 'Dominica'), ('GM', 'Gambia'), ('SZ', 'Swaziland'), ('PK', 'Pakistan'), ('TZ', 'Tanzania, United Republic of'), ('ZA', 'South Africa'), ('YE', 'Yemen'), ('VU', 'Vanuatu'), ('HT', 'Haiti'), ('GP', 'Guadeloupe'), ('NC', 'New Caledonia'), ('PR', 'Puerto Rico'), ('TR', 'Turkey'), ('DZ', 'Algeria'), ('HM', 'Heard Island and McDonald Islands'), ('SV', 'El Salvador'), ('CV', 'Cabo Verde'), ('CA', 'Canada'), ('TM', 'Turkmenistan'), ('MR', 'Mauritania'), ('ST', 'Sao Tome and Principe'), ('SE', 'Sweden'), ('HR', 'Croatia'), ('TK', 'Tokelau'), ('GU', 'Guam'), ('EG', 'Egypt'), ('IN', 'India'), ('SM', 'San Marino'), ('TN', 'Tunisia'), ('KI', 'Kiribati'), ('LU', 'Luxembourg'), ('KM', 'Comoros'), ('SG', 'Singapore'), ('CI', "Côte d'Ivoire"), ('AE', 'United Arab Emirates'), ('ML', 'Mali'), ('GF', 'French Guiana'), ('MU', 'Mauritius'), ('BR', 'Brazil'), ('HN', 'Honduras'), ('CX', 'Christmas Island'), ('MC', 'Monaco'), ('ER', 'Eritrea'), ('PA', 'Panama'), ('FI', 'Finland'), ('GD', 'Grenada'), ('FK', 'Falkland Islands [Malvinas]'), ('BE', 'Belgium'), ('BO', 'Bolivia (Plurinational State of)'), ('CC', 'Cocos (Keeling) Islands'), ('IE', 'Ireland'), ('MS', 'Montserrat'), ('EE', 'Estonia'), ('CH', 'Switzerland'), ('BV', 'Bouvet Island'), ('MX', 'Mexico'), ('MK', 'Macedonia (the former Yugoslav Republic of)'), ('AF', 'Afghanistan'), ('VC', 'Saint Vincent and the Grenadines'), ('BA', 'Bosnia and Herzegovina'), ('GT', 'Guatemala'), ('KH', 'Cambodia'), ('GE', 'Georgia'), ('RE', 'Réunion'), ('FR', 'France'), ('PG', 'Papua New Guinea'), ('WS', 'Samoa'), ('DK', 'Denmark'), ('NZ', 'New Zealand'), ('MV', 'Maldives'), ('UM', 'United States Minor Outlying Islands'), ('AD', 'Andorra'), ('JE', 'Jersey'), ('TT', 'Trinidad and Tobago'), ('AG', 'Antigua and Barbuda'), ('NP', 'Nepal'), ('IQ', 'Iraq'), ('ME', 'Montenegro'), ('NI', 'Nicaragua'), ('UA', 'Ukraine'), ('CN', 'China'), ('FM', 'Micronesia (Federated States of)'), ('MH', 'Marshall Islands'), ('UY', 'Uruguay'), ('CG', 'Congo'), ('VA', 'Holy See'), ('MF', 'Saint Martin (French part)'), ('BQ', 'Bonaire, Sint Eustatius and Saba')], default='ES', max_length=20, verbose_name='country'), - ), - ] diff --git a/orchestra/contrib/contacts/migrations/0005_auto_20170625_1840.py b/orchestra/contrib/contacts/migrations/0005_auto_20170625_1840.py deleted file mode 100644 index b5dd1487..00000000 --- a/orchestra/contrib/contacts/migrations/0005_auto_20170625_1840.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-06-25 16:40 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('contacts', '0004_auto_20170625_1840'), - ] - - operations = [ - migrations.AlterField( - model_name='contact', - name='country', - field=models.CharField(blank=True, choices=[('TF', 'French Southern Territories'), ('BN', 'Brunei Darussalam'), ('TK', 'Tokelau'), ('EC', 'Ecuador'), ('JE', 'Jersey'), ('MC', 'Monaco'), ('SA', 'Saudi Arabia'), ('CI', "Côte d'Ivoire"), ('LA', "Lao People's Democratic Republic"), ('CX', 'Christmas Island'), ('MK', 'Macedonia (the former Yugoslav Republic of)'), ('CZ', 'Czech Republic'), ('MO', 'Macao'), ('TC', 'Turks and Caicos Islands'), ('MU', 'Mauritius'), ('TL', 'Timor-Leste'), ('GU', 'Guam'), ('NI', 'Nicaragua'), ('TZ', 'Tanzania, United Republic of'), ('EH', 'Western Sahara'), ('BB', 'Barbados'), ('GM', 'Gambia'), ('SX', 'Sint Maarten (Dutch part)'), ('DJ', 'Djibouti'), ('BA', 'Bosnia and Herzegovina'), ('BD', 'Bangladesh'), ('CO', 'Colombia'), ('FO', 'Faroe Islands'), ('VI', 'Virgin Islands (U.S.)'), ('MH', 'Marshall Islands'), ('NL', 'Netherlands'), ('ID', 'Indonesia'), ('BR', 'Brazil'), ('SL', 'Sierra Leone'), ('MR', 'Mauritania'), ('UZ', 'Uzbekistan'), ('UG', 'Uganda'), ('LI', 'Liechtenstein'), ('VN', 'Viet Nam'), ('UM', 'United States Minor Outlying Islands'), ('TJ', 'Tajikistan'), ('BJ', 'Benin'), ('AQ', 'Antarctica'), ('BE', 'Belgium'), ('CC', 'Cocos (Keeling) Islands'), ('BT', 'Bhutan'), ('MD', 'Moldova (the Republic of)'), ('CW', 'Curaçao'), ('HN', 'Honduras'), ('HU', 'Hungary'), ('MW', 'Malawi'), ('UA', 'Ukraine'), ('CH', 'Switzerland'), ('ZA', 'South Africa'), ('KY', 'Cayman Islands'), ('VG', 'Virgin Islands (British)'), ('HM', 'Heard Island and McDonald Islands'), ('SN', 'Senegal'), ('PK', 'Pakistan'), ('GW', 'Guinea-Bissau'), ('BM', 'Bermuda'), ('SM', 'San Marino'), ('AL', 'Albania'), ('OM', 'Oman'), ('LU', 'Luxembourg'), ('NR', 'Nauru'), ('PT', 'Portugal'), ('AD', 'Andorra'), ('AF', 'Afghanistan'), ('PE', 'Peru'), ('TR', 'Turkey'), ('YE', 'Yemen'), ('RU', 'Russian Federation'), ('CU', 'Cuba'), ('NF', 'Norfolk Island'), ('LC', 'Saint Lucia'), ('GB', 'United Kingdom of Great Britain and Northern Ireland'), ('EE', 'Estonia'), ('HR', 'Croatia'), ('CY', 'Cyprus'), ('VC', 'Saint Vincent and the Grenadines'), ('ZW', 'Zimbabwe'), ('BY', 'Belarus'), ('SD', 'Sudan'), ('SZ', 'Swaziland'), ('SR', 'Suriname'), ('CD', 'Congo (the Democratic Republic of the)'), ('AM', 'Armenia'), ('AW', 'Aruba'), ('CN', 'China'), ('ZM', 'Zambia'), ('MT', 'Malta'), ('DK', 'Denmark'), ('TW', 'Taiwan (Province of China)'), ('MN', 'Mongolia'), ('KN', 'Saint Kitts and Nevis'), ('IL', 'Israel'), ('GS', 'South Georgia and the South Sandwich Islands'), ('IM', 'Isle of Man'), ('KP', "Korea (the Democratic People's Republic of)"), ('PF', 'French Polynesia'), ('BH', 'Bahrain'), ('RO', 'Romania'), ('GI', 'Gibraltar'), ('PL', 'Poland'), ('LT', 'Lithuania'), ('LY', 'Libya'), ('IE', 'Ireland'), ('MZ', 'Mozambique'), ('BZ', 'Belize'), ('NE', 'Niger'), ('AO', 'Angola'), ('GE', 'Georgia'), ('WS', 'Samoa'), ('PM', 'Saint Pierre and Miquelon'), ('BV', 'Bouvet Island'), ('IO', 'British Indian Ocean Territory'), ('NO', 'Norway'), ('TV', 'Tuvalu'), ('MP', 'Northern Mariana Islands'), ('FJ', 'Fiji'), ('ES', 'Spain'), ('DZ', 'Algeria'), ('UY', 'Uruguay'), ('HT', 'Haiti'), ('FK', 'Falkland Islands [Malvinas]'), ('KZ', 'Kazakhstan'), ('IQ', 'Iraq'), ('ET', 'Ethiopia'), ('IT', 'Italy'), ('NG', 'Nigeria'), ('SG', 'Singapore'), ('ST', 'Sao Tome and Principe'), ('NP', 'Nepal'), ('MX', 'Mexico'), ('NA', 'Namibia'), ('GD', 'Grenada'), ('AT', 'Austria'), ('NC', 'New Caledonia'), ('DM', 'Dominica'), ('LV', 'Latvia'), ('CG', 'Congo'), ('DE', 'Germany'), ('AS', 'American Samoa'), ('KH', 'Cambodia'), ('SB', 'Solomon Islands'), ('GG', 'Guernsey'), ('PN', 'Pitcairn'), ('GL', 'Greenland'), ('KI', 'Kiribati'), ('BG', 'Bulgaria'), ('DO', 'Dominican Republic'), ('RE', 'Réunion'), ('BI', 'Burundi'), ('SE', 'Sweden'), ('MF', 'Saint Martin (French part)'), ('GR', 'Greece'), ('RS', 'Serbia'), ('GT', 'Guatemala'), ('KE', 'Kenya'), ('BQ', 'Bonaire, Sint Eustatius and Saba'), ('TN', 'Tunisia'), ('MY', 'Malaysia'), ('SO', 'Somalia'), ('ML', 'Mali'), ('TD', 'Chad'), ('BS', 'Bahamas'), ('FI', 'Finland'), ('KW', 'Kuwait'), ('SK', 'Slovakia'), ('TH', 'Thailand'), ('IS', 'Iceland'), ('MQ', 'Martinique'), ('GY', 'Guyana'), ('IN', 'India'), ('SJ', 'Svalbard and Jan Mayen'), ('SS', 'South Sudan'), ('KM', 'Comoros'), ('MA', 'Morocco'), ('TG', 'Togo'), ('AE', 'United Arab Emirates'), ('CM', 'Cameroon'), ('CV', 'Cabo Verde'), ('MM', 'Myanmar'), ('NZ', 'New Zealand'), ('AU', 'Australia'), ('PS', 'Palestine, State of'), ('QA', 'Qatar'), ('BW', 'Botswana'), ('FM', 'Micronesia (Federated States of)'), ('MS', 'Montserrat'), ('YT', 'Mayotte'), ('TM', 'Turkmenistan'), ('IR', 'Iran (Islamic Republic of)'), ('BL', 'Saint Barthélemy'), ('PY', 'Paraguay'), ('PH', 'Philippines'), ('EG', 'Egypt'), ('PR', 'Puerto Rico'), ('FR', 'France'), ('KG', 'Kyrgyzstan'), ('GP', 'Guadeloupe'), ('GF', 'French Guiana'), ('MV', 'Maldives'), ('NU', 'Niue'), ('SY', 'Syrian Arab Republic'), ('JP', 'Japan'), ('PA', 'Panama'), ('GA', 'Gabon'), ('VU', 'Vanuatu'), ('LB', 'Lebanon'), ('BF', 'Burkina Faso'), ('SC', 'Seychelles'), ('LR', 'Liberia'), ('BO', 'Bolivia (Plurinational State of)'), ('WF', 'Wallis and Futuna'), ('VE', 'Venezuela (Bolivarian Republic of)'), ('RW', 'Rwanda'), ('PG', 'Papua New Guinea'), ('VA', 'Holy See'), ('CF', 'Central African Republic'), ('TT', 'Trinidad and Tobago'), ('CR', 'Costa Rica'), ('GH', 'Ghana'), ('AG', 'Antigua and Barbuda'), ('TO', 'Tonga'), ('LK', 'Sri Lanka'), ('CK', 'Cook Islands'), ('CA', 'Canada'), ('SH', 'Saint Helena, Ascension and Tristan da Cunha'), ('AZ', 'Azerbaijan'), ('ER', 'Eritrea'), ('MG', 'Madagascar'), ('AX', 'Åland Islands'), ('PW', 'Palau'), ('ME', 'Montenegro'), ('SV', 'El Salvador'), ('GN', 'Guinea'), ('GQ', 'Equatorial Guinea'), ('KR', 'Korea (the Republic of)'), ('AI', 'Anguilla'), ('SI', 'Slovenia'), ('AR', 'Argentina'), ('HK', 'Hong Kong'), ('CL', 'Chile'), ('JM', 'Jamaica'), ('LS', 'Lesotho'), ('US', 'United States of America'), ('JO', 'Jordan')], default='ES', max_length=20, verbose_name='country'), - ), - ] diff --git a/orchestra/contrib/contacts/migrations/0006_auto_20170625_1840.py b/orchestra/contrib/contacts/migrations/0006_auto_20170625_1840.py deleted file mode 100644 index 67e710a3..00000000 --- a/orchestra/contrib/contacts/migrations/0006_auto_20170625_1840.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-06-25 16:40 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('contacts', '0005_auto_20170625_1840'), - ] - - operations = [ - migrations.AlterField( - model_name='contact', - name='country', - field=models.CharField(blank=True, choices=[('CX', 'Christmas Island'), ('KW', 'Kuwait'), ('PF', 'French Polynesia'), ('UZ', 'Uzbekistan'), ('SZ', 'Swaziland'), ('KI', 'Kiribati'), ('SH', 'Saint Helena, Ascension and Tristan da Cunha'), ('MF', 'Saint Martin (French part)'), ('NE', 'Niger'), ('EG', 'Egypt'), ('MY', 'Malaysia'), ('BA', 'Bosnia and Herzegovina'), ('FI', 'Finland'), ('AT', 'Austria'), ('GT', 'Guatemala'), ('MZ', 'Mozambique'), ('NP', 'Nepal'), ('AW', 'Aruba'), ('SG', 'Singapore'), ('BT', 'Bhutan'), ('VG', 'Virgin Islands (British)'), ('DZ', 'Algeria'), ('TH', 'Thailand'), ('AZ', 'Azerbaijan'), ('TJ', 'Tajikistan'), ('NC', 'New Caledonia'), ('ML', 'Mali'), ('KR', 'Korea (the Republic of)'), ('SK', 'Slovakia'), ('MM', 'Myanmar'), ('AQ', 'Antarctica'), ('LV', 'Latvia'), ('BH', 'Bahrain'), ('MK', 'Macedonia (the former Yugoslav Republic of)'), ('SB', 'Solomon Islands'), ('ET', 'Ethiopia'), ('LS', 'Lesotho'), ('BQ', 'Bonaire, Sint Eustatius and Saba'), ('WF', 'Wallis and Futuna'), ('BM', 'Bermuda'), ('PS', 'Palestine, State of'), ('IM', 'Isle of Man'), ('BZ', 'Belize'), ('KM', 'Comoros'), ('GY', 'Guyana'), ('CO', 'Colombia'), ('GF', 'French Guiana'), ('MX', 'Mexico'), ('MD', 'Moldova (the Republic of)'), ('AU', 'Australia'), ('TZ', 'Tanzania, United Republic of'), ('AX', 'Åland Islands'), ('HM', 'Heard Island and McDonald Islands'), ('IL', 'Israel'), ('SE', 'Sweden'), ('RO', 'Romania'), ('NU', 'Niue'), ('EC', 'Ecuador'), ('TG', 'Togo'), ('UY', 'Uruguay'), ('NL', 'Netherlands'), ('TO', 'Tonga'), ('ME', 'Montenegro'), ('TT', 'Trinidad and Tobago'), ('RE', 'Réunion'), ('PT', 'Portugal'), ('ID', 'Indonesia'), ('GH', 'Ghana'), ('NF', 'Norfolk Island'), ('BR', 'Brazil'), ('CG', 'Congo'), ('MW', 'Malawi'), ('MN', 'Mongolia'), ('VA', 'Holy See'), ('KP', "Korea (the Democratic People's Republic of)"), ('SY', 'Syrian Arab Republic'), ('BB', 'Barbados'), ('VC', 'Saint Vincent and the Grenadines'), ('KE', 'Kenya'), ('CN', 'China'), ('KH', 'Cambodia'), ('IN', 'India'), ('MH', 'Marshall Islands'), ('YE', 'Yemen'), ('LU', 'Luxembourg'), ('TM', 'Turkmenistan'), ('UM', 'United States Minor Outlying Islands'), ('TN', 'Tunisia'), ('ES', 'Spain'), ('AM', 'Armenia'), ('TR', 'Turkey'), ('HU', 'Hungary'), ('AO', 'Angola'), ('HR', 'Croatia'), ('SL', 'Sierra Leone'), ('TL', 'Timor-Leste'), ('JE', 'Jersey'), ('ZW', 'Zimbabwe'), ('RU', 'Russian Federation'), ('CD', 'Congo (the Democratic Republic of the)'), ('IT', 'Italy'), ('MO', 'Macao'), ('CA', 'Canada'), ('SX', 'Sint Maarten (Dutch part)'), ('AF', 'Afghanistan'), ('VE', 'Venezuela (Bolivarian Republic of)'), ('DE', 'Germany'), ('LK', 'Sri Lanka'), ('FO', 'Faroe Islands'), ('CV', 'Cabo Verde'), ('MT', 'Malta'), ('TW', 'Taiwan (Province of China)'), ('AD', 'Andorra'), ('ER', 'Eritrea'), ('JO', 'Jordan'), ('IQ', 'Iraq'), ('EH', 'Western Sahara'), ('CI', "Côte d'Ivoire"), ('CM', 'Cameroon'), ('CZ', 'Czech Republic'), ('MS', 'Montserrat'), ('AS', 'American Samoa'), ('SA', 'Saudi Arabia'), ('PK', 'Pakistan'), ('PL', 'Poland'), ('YT', 'Mayotte'), ('BD', 'Bangladesh'), ('SI', 'Slovenia'), ('TF', 'French Southern Territories'), ('PE', 'Peru'), ('NG', 'Nigeria'), ('GW', 'Guinea-Bissau'), ('IR', 'Iran (Islamic Republic of)'), ('SO', 'Somalia'), ('AI', 'Anguilla'), ('GR', 'Greece'), ('VI', 'Virgin Islands (U.S.)'), ('DO', 'Dominican Republic'), ('MC', 'Monaco'), ('UG', 'Uganda'), ('GP', 'Guadeloupe'), ('KY', 'Cayman Islands'), ('BO', 'Bolivia (Plurinational State of)'), ('AR', 'Argentina'), ('BN', 'Brunei Darussalam'), ('LA', "Lao People's Democratic Republic"), ('BI', 'Burundi'), ('JP', 'Japan'), ('WS', 'Samoa'), ('FK', 'Falkland Islands [Malvinas]'), ('SD', 'Sudan'), ('MU', 'Mauritius'), ('CF', 'Central African Republic'), ('GD', 'Grenada'), ('IE', 'Ireland'), ('HT', 'Haiti'), ('TC', 'Turks and Caicos Islands'), ('BY', 'Belarus'), ('MP', 'Northern Mariana Islands'), ('HN', 'Honduras'), ('MG', 'Madagascar'), ('FJ', 'Fiji'), ('SS', 'South Sudan'), ('SV', 'El Salvador'), ('PR', 'Puerto Rico'), ('GE', 'Georgia'), ('RS', 'Serbia'), ('TK', 'Tokelau'), ('JM', 'Jamaica'), ('KZ', 'Kazakhstan'), ('PA', 'Panama'), ('PH', 'Philippines'), ('MR', 'Mauritania'), ('ZM', 'Zambia'), ('CY', 'Cyprus'), ('GS', 'South Georgia and the South Sandwich Islands'), ('BF', 'Burkina Faso'), ('SR', 'Suriname'), ('FM', 'Micronesia (Federated States of)'), ('BW', 'Botswana'), ('ZA', 'South Africa'), ('AL', 'Albania'), ('DK', 'Denmark'), ('US', 'United States of America'), ('KG', 'Kyrgyzstan'), ('CH', 'Switzerland'), ('BG', 'Bulgaria'), ('GL', 'Greenland'), ('LC', 'Saint Lucia'), ('TV', 'Tuvalu'), ('HK', 'Hong Kong'), ('AE', 'United Arab Emirates'), ('PY', 'Paraguay'), ('BV', 'Bouvet Island'), ('PG', 'Papua New Guinea'), ('NO', 'Norway'), ('LY', 'Libya'), ('ST', 'Sao Tome and Principe'), ('DM', 'Dominica'), ('BL', 'Saint Barthélemy'), ('FR', 'France'), ('CU', 'Cuba'), ('IS', 'Iceland'), ('MA', 'Morocco'), ('GI', 'Gibraltar'), ('MV', 'Maldives'), ('MQ', 'Martinique'), ('GM', 'Gambia'), ('RW', 'Rwanda'), ('BJ', 'Benin'), ('NR', 'Nauru'), ('OM', 'Oman'), ('QA', 'Qatar'), ('CW', 'Curaçao'), ('LT', 'Lithuania'), ('CL', 'Chile'), ('BE', 'Belgium'), ('NZ', 'New Zealand'), ('GB', 'United Kingdom of Great Britain and Northern Ireland'), ('PN', 'Pitcairn'), ('LB', 'Lebanon'), ('DJ', 'Djibouti'), ('GQ', 'Equatorial Guinea'), ('IO', 'British Indian Ocean Territory'), ('PW', 'Palau'), ('EE', 'Estonia'), ('AG', 'Antigua and Barbuda'), ('VU', 'Vanuatu'), ('GA', 'Gabon'), ('SN', 'Senegal'), ('KN', 'Saint Kitts and Nevis'), ('CK', 'Cook Islands'), ('UA', 'Ukraine'), ('SJ', 'Svalbard and Jan Mayen'), ('GU', 'Guam'), ('CC', 'Cocos (Keeling) Islands'), ('CR', 'Costa Rica'), ('GN', 'Guinea'), ('PM', 'Saint Pierre and Miquelon'), ('SM', 'San Marino'), ('GG', 'Guernsey'), ('TD', 'Chad'), ('NA', 'Namibia'), ('LR', 'Liberia'), ('BS', 'Bahamas'), ('NI', 'Nicaragua'), ('SC', 'Seychelles'), ('VN', 'Viet Nam'), ('LI', 'Liechtenstein')], default='ES', max_length=20, verbose_name='country'), - ), - ] diff --git a/orchestra/contrib/contacts/migrations/0007_auto_20170625_1841.py b/orchestra/contrib/contacts/migrations/0007_auto_20170625_1841.py deleted file mode 100644 index d9843a07..00000000 --- a/orchestra/contrib/contacts/migrations/0007_auto_20170625_1841.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-06-25 16:41 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('contacts', '0006_auto_20170625_1840'), - ] - - operations = [ - migrations.AlterField( - model_name='contact', - name='country', - field=models.CharField(blank=True, choices=[('BI', 'Burundi'), ('PN', 'Pitcairn'), ('GD', 'Grenada'), ('NF', 'Norfolk Island'), ('UM', 'United States Minor Outlying Islands'), ('KN', 'Saint Kitts and Nevis'), ('ES', 'Spain'), ('AI', 'Anguilla'), ('BJ', 'Benin'), ('BA', 'Bosnia and Herzegovina'), ('PF', 'French Polynesia'), ('AL', 'Albania'), ('ME', 'Montenegro'), ('PK', 'Pakistan'), ('IE', 'Ireland'), ('GS', 'South Georgia and the South Sandwich Islands'), ('BV', 'Bouvet Island'), ('SV', 'El Salvador'), ('BR', 'Brazil'), ('PG', 'Papua New Guinea'), ('VG', 'Virgin Islands (British)'), ('DK', 'Denmark'), ('MV', 'Maldives'), ('JP', 'Japan'), ('BM', 'Bermuda'), ('GM', 'Gambia'), ('VC', 'Saint Vincent and the Grenadines'), ('SM', 'San Marino'), ('NR', 'Nauru'), ('LA', "Lao People's Democratic Republic"), ('RO', 'Romania'), ('UZ', 'Uzbekistan'), ('CM', 'Cameroon'), ('SS', 'South Sudan'), ('BG', 'Bulgaria'), ('NL', 'Netherlands'), ('GA', 'Gabon'), ('GG', 'Guernsey'), ('MD', 'Moldova (the Republic of)'), ('MG', 'Madagascar'), ('LU', 'Luxembourg'), ('TW', 'Taiwan (Province of China)'), ('CA', 'Canada'), ('DO', 'Dominican Republic'), ('AR', 'Argentina'), ('SK', 'Slovakia'), ('CV', 'Cabo Verde'), ('OM', 'Oman'), ('ET', 'Ethiopia'), ('FI', 'Finland'), ('BW', 'Botswana'), ('KZ', 'Kazakhstan'), ('SG', 'Singapore'), ('SI', 'Slovenia'), ('US', 'United States of America'), ('LI', 'Liechtenstein'), ('PR', 'Puerto Rico'), ('EC', 'Ecuador'), ('KH', 'Cambodia'), ('BY', 'Belarus'), ('GT', 'Guatemala'), ('SA', 'Saudi Arabia'), ('ML', 'Mali'), ('YE', 'Yemen'), ('SZ', 'Swaziland'), ('CX', 'Christmas Island'), ('AO', 'Angola'), ('HM', 'Heard Island and McDonald Islands'), ('EE', 'Estonia'), ('TM', 'Turkmenistan'), ('WF', 'Wallis and Futuna'), ('LR', 'Liberia'), ('IN', 'India'), ('FM', 'Micronesia (Federated States of)'), ('IR', 'Iran (Islamic Republic of)'), ('LC', 'Saint Lucia'), ('AU', 'Australia'), ('DJ', 'Djibouti'), ('MU', 'Mauritius'), ('ZW', 'Zimbabwe'), ('SC', 'Seychelles'), ('SR', 'Suriname'), ('GI', 'Gibraltar'), ('LV', 'Latvia'), ('RE', 'Réunion'), ('PY', 'Paraguay'), ('ST', 'Sao Tome and Principe'), ('PM', 'Saint Pierre and Miquelon'), ('CW', 'Curaçao'), ('IO', 'British Indian Ocean Territory'), ('PS', 'Palestine, State of'), ('YT', 'Mayotte'), ('LT', 'Lithuania'), ('AS', 'American Samoa'), ('QA', 'Qatar'), ('LB', 'Lebanon'), ('AG', 'Antigua and Barbuda'), ('FK', 'Falkland Islands [Malvinas]'), ('FR', 'France'), ('BO', 'Bolivia (Plurinational State of)'), ('HT', 'Haiti'), ('PH', 'Philippines'), ('KG', 'Kyrgyzstan'), ('UY', 'Uruguay'), ('TJ', 'Tajikistan'), ('GY', 'Guyana'), ('FO', 'Faroe Islands'), ('CI', "Côte d'Ivoire"), ('MZ', 'Mozambique'), ('AF', 'Afghanistan'), ('CL', 'Chile'), ('JE', 'Jersey'), ('HN', 'Honduras'), ('JM', 'Jamaica'), ('MH', 'Marshall Islands'), ('KR', 'Korea (the Republic of)'), ('TZ', 'Tanzania, United Republic of'), ('PT', 'Portugal'), ('NI', 'Nicaragua'), ('HR', 'Croatia'), ('ID', 'Indonesia'), ('SY', 'Syrian Arab Republic'), ('BZ', 'Belize'), ('HK', 'Hong Kong'), ('CD', 'Congo (the Democratic Republic of the)'), ('GL', 'Greenland'), ('GB', 'United Kingdom of Great Britain and Northern Ireland'), ('TH', 'Thailand'), ('MK', 'Macedonia (the former Yugoslav Republic of)'), ('TC', 'Turks and Caicos Islands'), ('TR', 'Turkey'), ('NA', 'Namibia'), ('PW', 'Palau'), ('MO', 'Macao'), ('NO', 'Norway'), ('MR', 'Mauritania'), ('JO', 'Jordan'), ('VN', 'Viet Nam'), ('SB', 'Solomon Islands'), ('GE', 'Georgia'), ('IQ', 'Iraq'), ('BD', 'Bangladesh'), ('BF', 'Burkina Faso'), ('UG', 'Uganda'), ('GH', 'Ghana'), ('MW', 'Malawi'), ('TO', 'Tonga'), ('VE', 'Venezuela (Bolivarian Republic of)'), ('BH', 'Bahrain'), ('KP', "Korea (the Democratic People's Republic of)"), ('LK', 'Sri Lanka'), ('GP', 'Guadeloupe'), ('AT', 'Austria'), ('MS', 'Montserrat'), ('BE', 'Belgium'), ('KE', 'Kenya'), ('GN', 'Guinea'), ('AD', 'Andorra'), ('MA', 'Morocco'), ('NG', 'Nigeria'), ('CC', 'Cocos (Keeling) Islands'), ('AM', 'Armenia'), ('BN', 'Brunei Darussalam'), ('DZ', 'Algeria'), ('PA', 'Panama'), ('CZ', 'Czech Republic'), ('CU', 'Cuba'), ('MM', 'Myanmar'), ('AZ', 'Azerbaijan'), ('SD', 'Sudan'), ('IS', 'Iceland'), ('VA', 'Holy See'), ('CY', 'Cyprus'), ('BT', 'Bhutan'), ('TN', 'Tunisia'), ('VU', 'Vanuatu'), ('TF', 'French Southern Territories'), ('IL', 'Israel'), ('TK', 'Tokelau'), ('SO', 'Somalia'), ('SX', 'Sint Maarten (Dutch part)'), ('LY', 'Libya'), ('MF', 'Saint Martin (French part)'), ('CF', 'Central African Republic'), ('TL', 'Timor-Leste'), ('SJ', 'Svalbard and Jan Mayen'), ('CR', 'Costa Rica'), ('MY', 'Malaysia'), ('EG', 'Egypt'), ('BB', 'Barbados'), ('ER', 'Eritrea'), ('NU', 'Niue'), ('DE', 'Germany'), ('AX', 'Åland Islands'), ('CN', 'China'), ('DM', 'Dominica'), ('GU', 'Guam'), ('MP', 'Northern Mariana Islands'), ('VI', 'Virgin Islands (U.S.)'), ('MQ', 'Martinique'), ('TG', 'Togo'), ('MX', 'Mexico'), ('IM', 'Isle of Man'), ('RW', 'Rwanda'), ('FJ', 'Fiji'), ('TT', 'Trinidad and Tobago'), ('KI', 'Kiribati'), ('TD', 'Chad'), ('GR', 'Greece'), ('SH', 'Saint Helena, Ascension and Tristan da Cunha'), ('UA', 'Ukraine'), ('HU', 'Hungary'), ('SL', 'Sierra Leone'), ('WS', 'Samoa'), ('IT', 'Italy'), ('BL', 'Saint Barthélemy'), ('EH', 'Western Sahara'), ('BS', 'Bahamas'), ('TV', 'Tuvalu'), ('PE', 'Peru'), ('ZA', 'South Africa'), ('NE', 'Niger'), ('MT', 'Malta'), ('CK', 'Cook Islands'), ('GQ', 'Equatorial Guinea'), ('GF', 'French Guiana'), ('NZ', 'New Zealand'), ('LS', 'Lesotho'), ('KY', 'Cayman Islands'), ('MN', 'Mongolia'), ('RU', 'Russian Federation'), ('ZM', 'Zambia'), ('AQ', 'Antarctica'), ('BQ', 'Bonaire, Sint Eustatius and Saba'), ('CH', 'Switzerland'), ('AW', 'Aruba'), ('MC', 'Monaco'), ('KM', 'Comoros'), ('CG', 'Congo'), ('PL', 'Poland'), ('CO', 'Colombia'), ('SN', 'Senegal'), ('NP', 'Nepal'), ('RS', 'Serbia'), ('GW', 'Guinea-Bissau'), ('AE', 'United Arab Emirates'), ('NC', 'New Caledonia'), ('KW', 'Kuwait'), ('SE', 'Sweden')], default='ES', max_length=20, verbose_name='country'), - ), - ] diff --git a/orchestra/contrib/contacts/migrations/0008_auto_20190805_1134.py b/orchestra/contrib/contacts/migrations/0008_auto_20190805_1134.py deleted file mode 100644 index 00cfaca7..00000000 --- a/orchestra/contrib/contacts/migrations/0008_auto_20190805_1134.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2019-08-05 09:34 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('contacts', '0007_auto_20170625_1841'), - ] - - operations = [ - migrations.AlterField( - model_name='contact', - name='country', - field=models.CharField(blank=True, choices=[('CG', 'Congo'), ('MS', 'Montserrat'), ('UM', 'United States Minor Outlying Islands'), ('GL', 'Greenland'), ('PS', 'Palestine, State of'), ('HR', 'Croatia'), ('CW', 'Curaçao'), ('EC', 'Ecuador'), ('UG', 'Uganda'), ('ID', 'Indonesia'), ('ET', 'Ethiopia'), ('ZM', 'Zambia'), ('VC', 'Saint Vincent and the Grenadines'), ('AT', 'Austria'), ('BA', 'Bosnia and Herzegovina'), ('BI', 'Burundi'), ('AI', 'Anguilla'), ('FK', 'Falkland Islands [Malvinas]'), ('PN', 'Pitcairn'), ('BY', 'Belarus'), ('KY', 'Cayman Islands'), ('UZ', 'Uzbekistan'), ('GR', 'Greece'), ('LK', 'Sri Lanka'), ('FR', 'France'), ('CF', 'Central African Republic'), ('GB', 'United Kingdom of Great Britain and Northern Ireland'), ('ZW', 'Zimbabwe'), ('EG', 'Egypt'), ('MH', 'Marshall Islands'), ('BB', 'Barbados'), ('CZ', 'Czech Republic'), ('SJ', 'Svalbard and Jan Mayen'), ('MQ', 'Martinique'), ('MT', 'Malta'), ('BV', 'Bouvet Island'), ('KG', 'Kyrgyzstan'), ('AD', 'Andorra'), ('SR', 'Suriname'), ('UA', 'Ukraine'), ('MF', 'Saint Martin (French part)'), ('IO', 'British Indian Ocean Territory'), ('KN', 'Saint Kitts and Nevis'), ('SX', 'Sint Maarten (Dutch part)'), ('BD', 'Bangladesh'), ('IS', 'Iceland'), ('NE', 'Niger'), ('SN', 'Senegal'), ('GY', 'Guyana'), ('SA', 'Saudi Arabia'), ('AQ', 'Antarctica'), ('HU', 'Hungary'), ('AU', 'Australia'), ('SY', 'Syrian Arab Republic'), ('BF', 'Burkina Faso'), ('TF', 'French Southern Territories'), ('AE', 'United Arab Emirates'), ('VU', 'Vanuatu'), ('WF', 'Wallis and Futuna'), ('CD', 'Congo (the Democratic Republic of the)'), ('LC', 'Saint Lucia'), ('NU', 'Niue'), ('GW', 'Guinea-Bissau'), ('KH', 'Cambodia'), ('TV', 'Tuvalu'), ('KE', 'Kenya'), ('LT', 'Lithuania'), ('PK', 'Pakistan'), ('BO', 'Bolivia (Plurinational State of)'), ('NG', 'Nigeria'), ('RE', 'Réunion'), ('TL', 'Timor-Leste'), ('SG', 'Singapore'), ('NC', 'New Caledonia'), ('LS', 'Lesotho'), ('IQ', 'Iraq'), ('KW', 'Kuwait'), ('VN', 'Viet Nam'), ('YT', 'Mayotte'), ('GD', 'Grenada'), ('VA', 'Holy See'), ('FI', 'Finland'), ('CH', 'Switzerland'), ('UY', 'Uruguay'), ('EH', 'Western Sahara'), ('RS', 'Serbia'), ('CX', 'Christmas Island'), ('MC', 'Monaco'), ('VG', 'Virgin Islands (British)'), ('GF', 'French Guiana'), ('VE', 'Venezuela (Bolivarian Republic of)'), ('DM', 'Dominica'), ('JO', 'Jordan'), ('GH', 'Ghana'), ('US', 'United States of America'), ('CV', 'Cabo Verde'), ('PA', 'Panama'), ('MY', 'Malaysia'), ('SH', 'Saint Helena, Ascension and Tristan da Cunha'), ('MX', 'Mexico'), ('LU', 'Luxembourg'), ('WS', 'Samoa'), ('ER', 'Eritrea'), ('CK', 'Cook Islands'), ('CI', "Côte d'Ivoire"), ('PT', 'Portugal'), ('CN', 'China'), ('LR', 'Liberia'), ('MP', 'Northern Mariana Islands'), ('KP', "Korea (the Democratic People's Republic of)"), ('ML', 'Mali'), ('CY', 'Cyprus'), ('TT', 'Trinidad and Tobago'), ('GI', 'Gibraltar'), ('HK', 'Hong Kong'), ('TK', 'Tokelau'), ('AL', 'Albania'), ('BJ', 'Benin'), ('CL', 'Chile'), ('SO', 'Somalia'), ('PE', 'Peru'), ('BS', 'Bahamas'), ('BM', 'Bermuda'), ('BQ', 'Bonaire, Sint Eustatius and Saba'), ('ST', 'Sao Tome and Principe'), ('TN', 'Tunisia'), ('HT', 'Haiti'), ('AX', 'Åland Islands'), ('IE', 'Ireland'), ('MR', 'Mauritania'), ('BE', 'Belgium'), ('DE', 'Germany'), ('JE', 'Jersey'), ('KZ', 'Kazakhstan'), ('TR', 'Turkey'), ('FJ', 'Fiji'), ('AO', 'Angola'), ('DZ', 'Algeria'), ('MV', 'Maldives'), ('NL', 'Netherlands'), ('BW', 'Botswana'), ('SV', 'El Salvador'), ('AZ', 'Azerbaijan'), ('IM', 'Isle of Man'), ('PF', 'French Polynesia'), ('AF', 'Afghanistan'), ('TG', 'Togo'), ('EE', 'Estonia'), ('JM', 'Jamaica'), ('GS', 'South Georgia and the South Sandwich Islands'), ('LI', 'Liechtenstein'), ('GM', 'Gambia'), ('ES', 'Spain'), ('PL', 'Poland'), ('DO', 'Dominican Republic'), ('MK', 'Macedonia (the former Yugoslav Republic of)'), ('BL', 'Saint Barthélemy'), ('GQ', 'Equatorial Guinea'), ('ME', 'Montenegro'), ('GE', 'Georgia'), ('LA', "Lao People's Democratic Republic"), ('BT', 'Bhutan'), ('SC', 'Seychelles'), ('SM', 'San Marino'), ('CU', 'Cuba'), ('KR', 'Korea (the Republic of)'), ('VI', 'Virgin Islands (U.S.)'), ('PY', 'Paraguay'), ('AM', 'Armenia'), ('NA', 'Namibia'), ('PW', 'Palau'), ('BR', 'Brazil'), ('CR', 'Costa Rica'), ('BH', 'Bahrain'), ('PM', 'Saint Pierre and Miquelon'), ('QA', 'Qatar'), ('LY', 'Libya'), ('TM', 'Turkmenistan'), ('FO', 'Faroe Islands'), ('YE', 'Yemen'), ('TZ', 'Tanzania, United Republic of'), ('SD', 'Sudan'), ('SK', 'Slovakia'), ('KM', 'Comoros'), ('HM', 'Heard Island and McDonald Islands'), ('MZ', 'Mozambique'), ('MG', 'Madagascar'), ('CO', 'Colombia'), ('TC', 'Turks and Caicos Islands'), ('RW', 'Rwanda'), ('IL', 'Israel'), ('BZ', 'Belize'), ('MN', 'Mongolia'), ('AW', 'Aruba'), ('GA', 'Gabon'), ('CM', 'Cameroon'), ('PH', 'Philippines'), ('DJ', 'Djibouti'), ('KI', 'Kiribati'), ('RO', 'Romania'), ('PG', 'Papua New Guinea'), ('DK', 'Denmark'), ('TD', 'Chad'), ('BN', 'Brunei Darussalam'), ('LV', 'Latvia'), ('CA', 'Canada'), ('SL', 'Sierra Leone'), ('IR', 'Iran (Islamic Republic of)'), ('BG', 'Bulgaria'), ('AR', 'Argentina'), ('TO', 'Tonga'), ('GP', 'Guadeloupe'), ('HN', 'Honduras'), ('AG', 'Antigua and Barbuda'), ('NP', 'Nepal'), ('MA', 'Morocco'), ('SZ', 'Swaziland'), ('TW', 'Taiwan (Province of China)'), ('RU', 'Russian Federation'), ('NR', 'Nauru'), ('GG', 'Guernsey'), ('TH', 'Thailand'), ('CC', 'Cocos (Keeling) Islands'), ('MU', 'Mauritius'), ('ZA', 'South Africa'), ('OM', 'Oman'), ('SB', 'Solomon Islands'), ('SE', 'Sweden'), ('SS', 'South Sudan'), ('NO', 'Norway'), ('SI', 'Slovenia'), ('GU', 'Guam'), ('GT', 'Guatemala'), ('PR', 'Puerto Rico'), ('GN', 'Guinea'), ('MO', 'Macao'), ('IN', 'India'), ('NI', 'Nicaragua'), ('TJ', 'Tajikistan'), ('NZ', 'New Zealand'), ('MD', 'Moldova (the Republic of)'), ('MM', 'Myanmar'), ('NF', 'Norfolk Island'), ('AS', 'American Samoa'), ('FM', 'Micronesia (Federated States of)'), ('IT', 'Italy'), ('MW', 'Malawi'), ('JP', 'Japan'), ('LB', 'Lebanon')], default='ES', max_length=20, verbose_name='country'), - ), - ] diff --git a/orchestra/contrib/contacts/migrations/0009_auto_20200204_1217.py b/orchestra/contrib/contacts/migrations/0009_auto_20200204_1217.py deleted file mode 100644 index 65c56270..00000000 --- a/orchestra/contrib/contacts/migrations/0009_auto_20200204_1217.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2020-02-04 11:17 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('contacts', '0008_auto_20190805_1134'), - ] - - operations = [ - migrations.AlterField( - model_name='contact', - name='country', - field=models.CharField(blank=True, choices=[('KZ', 'Kazakhstan'), ('GY', 'Guyana'), ('BA', 'Bosnia and Herzegovina'), ('AS', 'American Samoa'), ('SO', 'Somalia'), ('GE', 'Georgia'), ('DK', 'Denmark'), ('NL', 'Netherlands'), ('HR', 'Croatia'), ('DZ', 'Algeria'), ('TG', 'Togo'), ('GP', 'Guadeloupe'), ('AX', 'Åland Islands'), ('LU', 'Luxembourg'), ('BN', 'Brunei Darussalam'), ('GQ', 'Equatorial Guinea'), ('GL', 'Greenland'), ('VE', 'Venezuela (Bolivarian Republic of)'), ('KR', 'Korea (the Republic of)'), ('MH', 'Marshall Islands'), ('NO', 'Norway'), ('EC', 'Ecuador'), ('RS', 'Serbia'), ('FK', 'Falkland Islands [Malvinas]'), ('SJ', 'Svalbard and Jan Mayen'), ('ME', 'Montenegro'), ('GW', 'Guinea-Bissau'), ('LS', 'Lesotho'), ('PT', 'Portugal'), ('CU', 'Cuba'), ('TV', 'Tuvalu'), ('JP', 'Japan'), ('CA', 'Canada'), ('ER', 'Eritrea'), ('ET', 'Ethiopia'), ('GR', 'Greece'), ('RU', 'Russian Federation'), ('BH', 'Bahrain'), ('LI', 'Liechtenstein'), ('MP', 'Northern Mariana Islands'), ('CX', 'Christmas Island'), ('PS', 'Palestine, State of'), ('GB', 'United Kingdom of Great Britain and Northern Ireland'), ('WS', 'Samoa'), ('AT', 'Austria'), ('TL', 'Timor-Leste'), ('KM', 'Comoros'), ('WF', 'Wallis and Futuna'), ('BR', 'Brazil'), ('GT', 'Guatemala'), ('RW', 'Rwanda'), ('HM', 'Heard Island and McDonald Islands'), ('NI', 'Nicaragua'), ('IT', 'Italy'), ('MT', 'Malta'), ('BL', 'Saint Barthélemy'), ('AF', 'Afghanistan'), ('CG', 'Congo'), ('NR', 'Nauru'), ('FJ', 'Fiji'), ('MV', 'Maldives'), ('VU', 'Vanuatu'), ('DE', 'Germany'), ('BM', 'Bermuda'), ('NZ', 'New Zealand'), ('AM', 'Armenia'), ('PR', 'Puerto Rico'), ('ES', 'Spain'), ('NC', 'New Caledonia'), ('DJ', 'Djibouti'), ('LY', 'Libya'), ('AI', 'Anguilla'), ('TT', 'Trinidad and Tobago'), ('LK', 'Sri Lanka'), ('FR', 'France'), ('SG', 'Singapore'), ('ST', 'Sao Tome and Principe'), ('IR', 'Iran (Islamic Republic of)'), ('BF', 'Burkina Faso'), ('IS', 'Iceland'), ('TN', 'Tunisia'), ('MM', 'Myanmar'), ('AQ', 'Antarctica'), ('ZW', 'Zimbabwe'), ('SR', 'Suriname'), ('NF', 'Norfolk Island'), ('AO', 'Angola'), ('SV', 'El Salvador'), ('EH', 'Western Sahara'), ('GN', 'Guinea'), ('SH', 'Saint Helena, Ascension and Tristan da Cunha'), ('FM', 'Micronesia (Federated States of)'), ('GH', 'Ghana'), ('MK', 'Macedonia (the former Yugoslav Republic of)'), ('HU', 'Hungary'), ('AL', 'Albania'), ('OM', 'Oman'), ('VA', 'Holy See'), ('KI', 'Kiribati'), ('PM', 'Saint Pierre and Miquelon'), ('SS', 'South Sudan'), ('ID', 'Indonesia'), ('NP', 'Nepal'), ('BE', 'Belgium'), ('CF', 'Central African Republic'), ('BQ', 'Bonaire, Sint Eustatius and Saba'), ('MQ', 'Martinique'), ('UY', 'Uruguay'), ('SA', 'Saudi Arabia'), ('TD', 'Chad'), ('FI', 'Finland'), ('SZ', 'Swaziland'), ('LB', 'Lebanon'), ('CL', 'Chile'), ('KE', 'Kenya'), ('RO', 'Romania'), ('BT', 'Bhutan'), ('QA', 'Qatar'), ('BD', 'Bangladesh'), ('KH', 'Cambodia'), ('HN', 'Honduras'), ('MS', 'Montserrat'), ('KP', "Korea (the Democratic People's Republic of)"), ('GD', 'Grenada'), ('BJ', 'Benin'), ('JM', 'Jamaica'), ('LT', 'Lithuania'), ('CM', 'Cameroon'), ('CR', 'Costa Rica'), ('CD', 'Congo (the Democratic Republic of the)'), ('IE', 'Ireland'), ('CW', 'Curaçao'), ('PH', 'Philippines'), ('GM', 'Gambia'), ('YE', 'Yemen'), ('AU', 'Australia'), ('BW', 'Botswana'), ('KW', 'Kuwait'), ('IQ', 'Iraq'), ('ML', 'Mali'), ('MG', 'Madagascar'), ('GS', 'South Georgia and the South Sandwich Islands'), ('MN', 'Mongolia'), ('EE', 'Estonia'), ('FO', 'Faroe Islands'), ('MF', 'Saint Martin (French part)'), ('AZ', 'Azerbaijan'), ('CK', 'Cook Islands'), ('SI', 'Slovenia'), ('CC', 'Cocos (Keeling) Islands'), ('SE', 'Sweden'), ('ZA', 'South Africa'), ('HT', 'Haiti'), ('MU', 'Mauritius'), ('BG', 'Bulgaria'), ('TF', 'French Southern Territories'), ('AR', 'Argentina'), ('VG', 'Virgin Islands (British)'), ('LV', 'Latvia'), ('CN', 'China'), ('TZ', 'Tanzania, United Republic of'), ('VC', 'Saint Vincent and the Grenadines'), ('DO', 'Dominican Republic'), ('KY', 'Cayman Islands'), ('NU', 'Niue'), ('AD', 'Andorra'), ('VN', 'Viet Nam'), ('LR', 'Liberia'), ('SX', 'Sint Maarten (Dutch part)'), ('TK', 'Tokelau'), ('LA', "Lao People's Democratic Republic"), ('GI', 'Gibraltar'), ('HK', 'Hong Kong'), ('JO', 'Jordan'), ('PA', 'Panama'), ('TC', 'Turks and Caicos Islands'), ('PE', 'Peru'), ('UA', 'Ukraine'), ('NG', 'Nigeria'), ('TO', 'Tonga'), ('BV', 'Bouvet Island'), ('CY', 'Cyprus'), ('GF', 'French Guiana'), ('SY', 'Syrian Arab Republic'), ('IM', 'Isle of Man'), ('BO', 'Bolivia (Plurinational State of)'), ('LC', 'Saint Lucia'), ('CO', 'Colombia'), ('NA', 'Namibia'), ('BB', 'Barbados'), ('KN', 'Saint Kitts and Nevis'), ('BS', 'Bahamas'), ('MC', 'Monaco'), ('VI', 'Virgin Islands (U.S.)'), ('MW', 'Malawi'), ('MO', 'Macao'), ('SC', 'Seychelles'), ('SL', 'Sierra Leone'), ('PN', 'Pitcairn'), ('IL', 'Israel'), ('CI', "Côte d'Ivoire"), ('MA', 'Morocco'), ('JE', 'Jersey'), ('MR', 'Mauritania'), ('CZ', 'Czech Republic'), ('CH', 'Switzerland'), ('PW', 'Palau'), ('PG', 'Papua New Guinea'), ('SK', 'Slovakia'), ('NE', 'Niger'), ('TW', 'Taiwan (Province of China)'), ('AW', 'Aruba'), ('CV', 'Cabo Verde'), ('ZM', 'Zambia'), ('SB', 'Solomon Islands'), ('UG', 'Uganda'), ('KG', 'Kyrgyzstan'), ('BZ', 'Belize'), ('SN', 'Senegal'), ('DM', 'Dominica'), ('MD', 'Moldova (the Republic of)'), ('UM', 'United States Minor Outlying Islands'), ('US', 'United States of America'), ('MX', 'Mexico'), ('IO', 'British Indian Ocean Territory'), ('IN', 'India'), ('SD', 'Sudan'), ('BY', 'Belarus'), ('SM', 'San Marino'), ('MY', 'Malaysia'), ('GG', 'Guernsey'), ('TR', 'Turkey'), ('TH', 'Thailand'), ('MZ', 'Mozambique'), ('GU', 'Guam'), ('EG', 'Egypt'), ('PF', 'French Polynesia'), ('YT', 'Mayotte'), ('PY', 'Paraguay'), ('TJ', 'Tajikistan'), ('PL', 'Poland'), ('AE', 'United Arab Emirates'), ('AG', 'Antigua and Barbuda'), ('UZ', 'Uzbekistan'), ('BI', 'Burundi'), ('RE', 'Réunion'), ('GA', 'Gabon'), ('PK', 'Pakistan'), ('TM', 'Turkmenistan')], default='ES', max_length=20, verbose_name='country'), - ), - ] diff --git a/orchestra/contrib/contacts/migrations/0010_auto_20200204_1218.py b/orchestra/contrib/contacts/migrations/0010_auto_20200204_1218.py deleted file mode 100644 index 2b409a6c..00000000 --- a/orchestra/contrib/contacts/migrations/0010_auto_20200204_1218.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2020-02-04 11:18 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('contacts', '0009_auto_20200204_1217'), - ] - - operations = [ - migrations.AlterField( - model_name='contact', - name='country', - field=models.CharField(blank=True, choices=[('OM', 'Oman'), ('AM', 'Armenia'), ('WF', 'Wallis and Futuna'), ('ET', 'Ethiopia'), ('IR', 'Iran (Islamic Republic of)'), ('BR', 'Brazil'), ('TG', 'Togo'), ('SV', 'El Salvador'), ('SL', 'Sierra Leone'), ('CO', 'Colombia'), ('MQ', 'Martinique'), ('SY', 'Syrian Arab Republic'), ('TL', 'Timor-Leste'), ('GR', 'Greece'), ('HU', 'Hungary'), ('TO', 'Tonga'), ('AU', 'Australia'), ('BI', 'Burundi'), ('MV', 'Maldives'), ('WS', 'Samoa'), ('TC', 'Turks and Caicos Islands'), ('KW', 'Kuwait'), ('NP', 'Nepal'), ('MZ', 'Mozambique'), ('PF', 'French Polynesia'), ('US', 'United States of America'), ('MA', 'Morocco'), ('PS', 'Palestine, State of'), ('KH', 'Cambodia'), ('KZ', 'Kazakhstan'), ('MH', 'Marshall Islands'), ('CK', 'Cook Islands'), ('ST', 'Sao Tome and Principe'), ('LT', 'Lithuania'), ('BV', 'Bouvet Island'), ('RO', 'Romania'), ('TK', 'Tokelau'), ('CX', 'Christmas Island'), ('UG', 'Uganda'), ('TV', 'Tuvalu'), ('GY', 'Guyana'), ('GF', 'French Guiana'), ('ME', 'Montenegro'), ('MT', 'Malta'), ('LB', 'Lebanon'), ('ML', 'Mali'), ('TW', 'Taiwan (Province of China)'), ('FR', 'France'), ('AO', 'Angola'), ('BQ', 'Bonaire, Sint Eustatius and Saba'), ('GQ', 'Equatorial Guinea'), ('CU', 'Cuba'), ('CM', 'Cameroon'), ('FI', 'Finland'), ('FO', 'Faroe Islands'), ('JM', 'Jamaica'), ('BT', 'Bhutan'), ('KG', 'Kyrgyzstan'), ('BF', 'Burkina Faso'), ('EH', 'Western Sahara'), ('CD', 'Congo (the Democratic Republic of the)'), ('UZ', 'Uzbekistan'), ('PK', 'Pakistan'), ('IN', 'India'), ('DJ', 'Djibouti'), ('LY', 'Libya'), ('BL', 'Saint Barthélemy'), ('SB', 'Solomon Islands'), ('NL', 'Netherlands'), ('NZ', 'New Zealand'), ('LC', 'Saint Lucia'), ('CN', 'China'), ('CF', 'Central African Republic'), ('JE', 'Jersey'), ('HT', 'Haiti'), ('HK', 'Hong Kong'), ('AQ', 'Antarctica'), ('MG', 'Madagascar'), ('SG', 'Singapore'), ('PA', 'Panama'), ('CW', 'Curaçao'), ('HM', 'Heard Island and McDonald Islands'), ('PW', 'Palau'), ('BB', 'Barbados'), ('VC', 'Saint Vincent and the Grenadines'), ('SD', 'Sudan'), ('BW', 'Botswana'), ('TT', 'Trinidad and Tobago'), ('TM', 'Turkmenistan'), ('LR', 'Liberia'), ('PY', 'Paraguay'), ('ZA', 'South Africa'), ('HR', 'Croatia'), ('CI', "Côte d'Ivoire"), ('DO', 'Dominican Republic'), ('AD', 'Andorra'), ('DM', 'Dominica'), ('SZ', 'Swaziland'), ('FM', 'Micronesia (Federated States of)'), ('VA', 'Holy See'), ('GM', 'Gambia'), ('IT', 'Italy'), ('LA', "Lao People's Democratic Republic"), ('KM', 'Comoros'), ('CA', 'Canada'), ('IE', 'Ireland'), ('PR', 'Puerto Rico'), ('TD', 'Chad'), ('BM', 'Bermuda'), ('CV', 'Cabo Verde'), ('KE', 'Kenya'), ('MY', 'Malaysia'), ('PL', 'Poland'), ('PN', 'Pitcairn'), ('PE', 'Peru'), ('CL', 'Chile'), ('KR', 'Korea (the Republic of)'), ('AE', 'United Arab Emirates'), ('LU', 'Luxembourg'), ('BE', 'Belgium'), ('KP', "Korea (the Democratic People's Republic of)"), ('AZ', 'Azerbaijan'), ('AL', 'Albania'), ('MK', 'Macedonia (the former Yugoslav Republic of)'), ('VI', 'Virgin Islands (U.S.)'), ('BO', 'Bolivia (Plurinational State of)'), ('EG', 'Egypt'), ('KN', 'Saint Kitts and Nevis'), ('MU', 'Mauritius'), ('AR', 'Argentina'), ('SN', 'Senegal'), ('SC', 'Seychelles'), ('GN', 'Guinea'), ('SH', 'Saint Helena, Ascension and Tristan da Cunha'), ('MS', 'Montserrat'), ('BJ', 'Benin'), ('VU', 'Vanuatu'), ('MO', 'Macao'), ('CZ', 'Czech Republic'), ('VE', 'Venezuela (Bolivarian Republic of)'), ('SA', 'Saudi Arabia'), ('SS', 'South Sudan'), ('NI', 'Nicaragua'), ('RE', 'Réunion'), ('DZ', 'Algeria'), ('KY', 'Cayman Islands'), ('GB', 'United Kingdom of Great Britain and Northern Ireland'), ('CR', 'Costa Rica'), ('AX', 'Åland Islands'), ('GA', 'Gabon'), ('BD', 'Bangladesh'), ('IS', 'Iceland'), ('TH', 'Thailand'), ('VG', 'Virgin Islands (British)'), ('LS', 'Lesotho'), ('ID', 'Indonesia'), ('UY', 'Uruguay'), ('TN', 'Tunisia'), ('GW', 'Guinea-Bissau'), ('SJ', 'Svalbard and Jan Mayen'), ('EE', 'Estonia'), ('ZM', 'Zambia'), ('AG', 'Antigua and Barbuda'), ('MP', 'Northern Mariana Islands'), ('JO', 'Jordan'), ('CY', 'Cyprus'), ('GS', 'South Georgia and the South Sandwich Islands'), ('CG', 'Congo'), ('IL', 'Israel'), ('RW', 'Rwanda'), ('NO', 'Norway'), ('IQ', 'Iraq'), ('FK', 'Falkland Islands [Malvinas]'), ('TZ', 'Tanzania, United Republic of'), ('AT', 'Austria'), ('AS', 'American Samoa'), ('BY', 'Belarus'), ('TF', 'French Southern Territories'), ('EC', 'Ecuador'), ('GT', 'Guatemala'), ('MF', 'Saint Martin (French part)'), ('MX', 'Mexico'), ('AF', 'Afghanistan'), ('AI', 'Anguilla'), ('JP', 'Japan'), ('BN', 'Brunei Darussalam'), ('AW', 'Aruba'), ('NF', 'Norfolk Island'), ('IO', 'British Indian Ocean Territory'), ('ER', 'Eritrea'), ('SK', 'Slovakia'), ('GE', 'Georgia'), ('LK', 'Sri Lanka'), ('MR', 'Mauritania'), ('GD', 'Grenada'), ('VN', 'Viet Nam'), ('YE', 'Yemen'), ('CH', 'Switzerland'), ('HN', 'Honduras'), ('MM', 'Myanmar'), ('ZW', 'Zimbabwe'), ('FJ', 'Fiji'), ('NA', 'Namibia'), ('MN', 'Mongolia'), ('QA', 'Qatar'), ('UA', 'Ukraine'), ('BG', 'Bulgaria'), ('PT', 'Portugal'), ('SX', 'Sint Maarten (Dutch part)'), ('NC', 'New Caledonia'), ('MW', 'Malawi'), ('UM', 'United States Minor Outlying Islands'), ('PH', 'Philippines'), ('KI', 'Kiribati'), ('PM', 'Saint Pierre and Miquelon'), ('IM', 'Isle of Man'), ('LV', 'Latvia'), ('CC', 'Cocos (Keeling) Islands'), ('NG', 'Nigeria'), ('SR', 'Suriname'), ('RS', 'Serbia'), ('BZ', 'Belize'), ('GH', 'Ghana'), ('TR', 'Turkey'), ('SO', 'Somalia'), ('BA', 'Bosnia and Herzegovina'), ('NR', 'Nauru'), ('RU', 'Russian Federation'), ('GL', 'Greenland'), ('SI', 'Slovenia'), ('NE', 'Niger'), ('YT', 'Mayotte'), ('DK', 'Denmark'), ('SE', 'Sweden'), ('GU', 'Guam'), ('SM', 'San Marino'), ('DE', 'Germany'), ('GI', 'Gibraltar'), ('GG', 'Guernsey'), ('BH', 'Bahrain'), ('GP', 'Guadeloupe'), ('BS', 'Bahamas'), ('MC', 'Monaco'), ('ES', 'Spain'), ('LI', 'Liechtenstein'), ('TJ', 'Tajikistan'), ('PG', 'Papua New Guinea'), ('NU', 'Niue'), ('MD', 'Moldova (the Republic of)')], default='ES', max_length=20, verbose_name='country'), - ), - ] diff --git a/orchestra/contrib/contacts/migrations/0011_auto_20210330_1049.py b/orchestra/contrib/contacts/migrations/0011_auto_20210330_1049.py deleted file mode 100644 index d4664e93..00000000 --- a/orchestra/contrib/contacts/migrations/0011_auto_20210330_1049.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2021-03-30 10:49 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('contacts', '0010_auto_20200204_1218'), - ] - - operations = [ - migrations.AlterField( - model_name='contact', - name='country', - field=models.CharField(blank=True, choices=[('AF', 'Afghanistan'), ('AX', 'Åland Islands'), ('AL', 'Albania'), ('DZ', 'Algeria'), ('AS', 'American Samoa'), ('AD', 'Andorra'), ('AO', 'Angola'), ('AI', 'Anguilla'), ('AQ', 'Antarctica'), ('AG', 'Antigua and Barbuda'), ('AR', 'Argentina'), ('AM', 'Armenia'), ('AW', 'Aruba'), ('AU', 'Australia'), ('AT', 'Austria'), ('AZ', 'Azerbaijan'), ('BS', 'Bahamas'), ('BH', 'Bahrain'), ('BD', 'Bangladesh'), ('BB', 'Barbados'), ('BY', 'Belarus'), ('BE', 'Belgium'), ('BZ', 'Belize'), ('BJ', 'Benin'), ('BM', 'Bermuda'), ('BT', 'Bhutan'), ('BO', 'Bolivia (Plurinational State of)'), ('BQ', 'Bonaire, Sint Eustatius and Saba'), ('BA', 'Bosnia and Herzegovina'), ('BW', 'Botswana'), ('BV', 'Bouvet Island'), ('BR', 'Brazil'), ('IO', 'British Indian Ocean Territory'), ('BN', 'Brunei Darussalam'), ('BG', 'Bulgaria'), ('BF', 'Burkina Faso'), ('BI', 'Burundi'), ('CV', 'Cabo Verde'), ('KH', 'Cambodia'), ('CM', 'Cameroon'), ('CA', 'Canada'), ('KY', 'Cayman Islands'), ('CF', 'Central African Republic'), ('TD', 'Chad'), ('CL', 'Chile'), ('CN', 'China'), ('CX', 'Christmas Island'), ('CC', 'Cocos (Keeling) Islands'), ('CO', 'Colombia'), ('KM', 'Comoros'), ('CG', 'Congo'), ('CD', 'Congo (the Democratic Republic of the)'), ('CK', 'Cook Islands'), ('CR', 'Costa Rica'), ('CI', "Côte d'Ivoire"), ('HR', 'Croatia'), ('CU', 'Cuba'), ('CW', 'Curaçao'), ('CY', 'Cyprus'), ('CZ', 'Czechia'), ('DK', 'Denmark'), ('DJ', 'Djibouti'), ('DM', 'Dominica'), ('DO', 'Dominican Republic'), ('EC', 'Ecuador'), ('EG', 'Egypt'), ('SV', 'El Salvador'), ('GQ', 'Equatorial Guinea'), ('ER', 'Eritrea'), ('EE', 'Estonia'), ('SZ', 'Eswatini'), ('ET', 'Ethiopia'), ('FK', 'Falkland Islands (Malvinas)'), ('FO', 'Faroe Islands'), ('FJ', 'Fiji'), ('FI', 'Finland'), ('FR', 'France'), ('GF', 'French Guiana'), ('PF', 'French Polynesia'), ('TF', 'French Southern Territories'), ('GA', 'Gabon'), ('GM', 'Gambia'), ('GE', 'Georgia'), ('DE', 'Germany'), ('GH', 'Ghana'), ('GI', 'Gibraltar'), ('GR', 'Greece'), ('GL', 'Greenland'), ('GD', 'Grenada'), ('GP', 'Guadeloupe'), ('GU', 'Guam'), ('GT', 'Guatemala'), ('GG', 'Guernsey'), ('GN', 'Guinea'), ('GW', 'Guinea-Bissau'), ('GY', 'Guyana'), ('HT', 'Haiti'), ('HM', 'Heard Island and McDonald Islands'), ('VA', 'Holy See'), ('HN', 'Honduras'), ('HK', 'Hong Kong'), ('HU', 'Hungary'), ('IS', 'Iceland'), ('IN', 'India'), ('ID', 'Indonesia'), ('IR', 'Iran (Islamic Republic of)'), ('IQ', 'Iraq'), ('IE', 'Ireland'), ('IM', 'Isle of Man'), ('IL', 'Israel'), ('IT', 'Italy'), ('JM', 'Jamaica'), ('JP', 'Japan'), ('JE', 'Jersey'), ('JO', 'Jordan'), ('KZ', 'Kazakhstan'), ('KE', 'Kenya'), ('KI', 'Kiribati'), ('KP', "Korea (the Democratic People's Republic of)"), ('KR', 'Korea (the Republic of)'), ('KW', 'Kuwait'), ('KG', 'Kyrgyzstan'), ('LA', "Lao People's Democratic Republic"), ('LV', 'Latvia'), ('LB', 'Lebanon'), ('LS', 'Lesotho'), ('LR', 'Liberia'), ('LY', 'Libya'), ('LI', 'Liechtenstein'), ('LT', 'Lithuania'), ('LU', 'Luxembourg'), ('MO', 'Macao'), ('MG', 'Madagascar'), ('MW', 'Malawi'), ('MY', 'Malaysia'), ('MV', 'Maldives'), ('ML', 'Mali'), ('MT', 'Malta'), ('MH', 'Marshall Islands'), ('MQ', 'Martinique'), ('MR', 'Mauritania'), ('MU', 'Mauritius'), ('YT', 'Mayotte'), ('MX', 'Mexico'), ('FM', 'Micronesia (Federated States of)'), ('MD', 'Moldova (the Republic of)'), ('MC', 'Monaco'), ('MN', 'Mongolia'), ('ME', 'Montenegro'), ('MS', 'Montserrat'), ('MA', 'Morocco'), ('MZ', 'Mozambique'), ('MM', 'Myanmar'), ('NA', 'Namibia'), ('NR', 'Nauru'), ('NP', 'Nepal'), ('NL', 'Netherlands'), ('NC', 'New Caledonia'), ('NZ', 'New Zealand'), ('NI', 'Nicaragua'), ('NE', 'Niger'), ('NG', 'Nigeria'), ('NU', 'Niue'), ('NF', 'Norfolk Island'), ('MK', 'North Macedonia'), ('MP', 'Northern Mariana Islands'), ('NO', 'Norway'), ('OM', 'Oman'), ('PK', 'Pakistan'), ('PW', 'Palau'), ('PS', 'Palestine, State of'), ('PA', 'Panama'), ('PG', 'Papua New Guinea'), ('PY', 'Paraguay'), ('PE', 'Peru'), ('PH', 'Philippines'), ('PN', 'Pitcairn'), ('PL', 'Poland'), ('PT', 'Portugal'), ('PR', 'Puerto Rico'), ('QA', 'Qatar'), ('RE', 'Réunion'), ('RO', 'Romania'), ('RU', 'Russian Federation'), ('RW', 'Rwanda'), ('BL', 'Saint Barthélemy'), ('SH', 'Saint Helena, Ascension and Tristan da Cunha'), ('KN', 'Saint Kitts and Nevis'), ('LC', 'Saint Lucia'), ('MF', 'Saint Martin (French part)'), ('PM', 'Saint Pierre and Miquelon'), ('VC', 'Saint Vincent and the Grenadines'), ('WS', 'Samoa'), ('SM', 'San Marino'), ('ST', 'Sao Tome and Principe'), ('SA', 'Saudi Arabia'), ('SN', 'Senegal'), ('RS', 'Serbia'), ('SC', 'Seychelles'), ('SL', 'Sierra Leone'), ('SG', 'Singapore'), ('SX', 'Sint Maarten (Dutch part)'), ('SK', 'Slovakia'), ('SI', 'Slovenia'), ('SB', 'Solomon Islands'), ('SO', 'Somalia'), ('ZA', 'South Africa'), ('GS', 'South Georgia and the South Sandwich Islands'), ('SS', 'South Sudan'), ('ES', 'Spain'), ('LK', 'Sri Lanka'), ('SD', 'Sudan'), ('SR', 'Suriname'), ('SJ', 'Svalbard and Jan Mayen'), ('SE', 'Sweden'), ('CH', 'Switzerland'), ('SY', 'Syrian Arab Republic'), ('TW', 'Taiwan (Province of China)'), ('TJ', 'Tajikistan'), ('TZ', 'Tanzania, the United Republic of'), ('TH', 'Thailand'), ('TL', 'Timor-Leste'), ('TG', 'Togo'), ('TK', 'Tokelau'), ('TO', 'Tonga'), ('TT', 'Trinidad and Tobago'), ('TN', 'Tunisia'), ('TR', 'Turkey'), ('TM', 'Turkmenistan'), ('TC', 'Turks and Caicos Islands'), ('TV', 'Tuvalu'), ('UG', 'Uganda'), ('UA', 'Ukraine'), ('AE', 'United Arab Emirates'), ('GB', 'United Kingdom of Great Britain and Northern Ireland'), ('UM', 'United States Minor Outlying Islands'), ('US', 'United States of America'), ('UY', 'Uruguay'), ('UZ', 'Uzbekistan'), ('VU', 'Vanuatu'), ('VE', 'Venezuela (Bolivarian Republic of)'), ('VN', 'Viet Nam'), ('VG', 'Virgin Islands (British)'), ('VI', 'Virgin Islands (U.S.)'), ('WF', 'Wallis and Futuna'), ('EH', 'Western Sahara'), ('YE', 'Yemen'), ('ZM', 'Zambia'), ('ZW', 'Zimbabwe')], default='ES', max_length=20, verbose_name='country'), - ), - ] diff --git a/orchestra/contrib/contacts/migrations/__init__.py b/orchestra/contrib/contacts/migrations/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/orchestra/contrib/contacts/models.py b/orchestra/contrib/contacts/models.py index a8de1580..2f069afb 100644 --- a/orchestra/contrib/contacts/models.py +++ b/orchestra/contrib/contacts/models.py @@ -1,7 +1,7 @@ from django.core.exceptions import ValidationError from django.core.validators import RegexValidator from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.core import validators from orchestra.models.fields import MultiSelectField diff --git a/orchestra/contrib/databases/admin.py b/orchestra/contrib/databases/admin.py index d50c23d4..21ca6da9 100644 --- a/orchestra/contrib/databases/admin.py +++ b/orchestra/contrib/databases/admin.py @@ -1,9 +1,9 @@ -from django.conf.urls import url +from django.urls import re_path as url from django.contrib import admin from django.contrib.auth.admin import UserAdmin from django.utils.html import format_html from django.utils.safestring import mark_safe -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.admin import ExtendedModelAdmin, ChangePasswordAdminMixin from orchestra.admin.utils import change_url @@ -11,7 +11,7 @@ from orchestra.contrib.accounts.actions import list_accounts from orchestra.contrib.accounts.admin import SelectAccountAdminMixin from .filters import HasUserListFilter, HasDatabaseListFilter -from .forms import DatabaseCreationForm, DatabaseUserChangeForm, DatabaseUserCreationForm +from .forms import DatabaseCreationForm, DatabaseUserChangeForm, DatabaseUserCreationForm, DatabaseForm from .models import Database, DatabaseUser def save_selected(modeladmin, request, queryset): @@ -23,18 +23,18 @@ class DatabaseAdmin(SelectAccountAdminMixin, ExtendedModelAdmin): list_display = ('name', 'type', 'display_users', 'account_link') list_filter = ('type', HasUserListFilter) search_fields = ('name', 'account__username') - change_readonly_fields = ('name', 'type') + change_readonly_fields = ('name', 'type', 'target_server') extra = 1 fieldsets = ( (None, { 'classes': ('extrapretty',), - 'fields': ('account_link', 'name', 'type', 'users', 'display_users', 'comments'), + 'fields': ('account_link', 'name', 'type', 'users', 'display_users', 'comments', 'target_server'), }), ) add_fieldsets = ( (None, { 'classes': ('wide',), - 'fields': ('account_link', 'name', 'type') + 'fields': ('account_link', 'name', 'type', 'target_server') }), (_("Create new user"), { 'classes': ('wide',), @@ -45,11 +45,12 @@ class DatabaseAdmin(SelectAccountAdminMixin, ExtendedModelAdmin): 'fields': ('user',) }), ) + form = DatabaseForm add_form = DatabaseCreationForm readonly_fields = ('account_link', 'display_users',) filter_horizontal = ['users'] - filter_by_account_fields = ('users',) - list_prefetch_related = ('users',) + # filter_by_account_fields = ('users',) + # list_prefetch_related = ('users',) actions = (list_accounts, save_selected) @mark_safe @@ -71,6 +72,7 @@ class DatabaseAdmin(SelectAccountAdminMixin, ExtendedModelAdmin): username=form.cleaned_data['username'], type=obj.type, account_id=obj.account.pk, + target_server=form.cleaned_data['target_server'], ) user.set_password(form.cleaned_data["password1"]) user.save() @@ -78,22 +80,22 @@ class DatabaseAdmin(SelectAccountAdminMixin, ExtendedModelAdmin): class DatabaseUserAdmin(SelectAccountAdminMixin, ChangePasswordAdminMixin, ExtendedModelAdmin): - list_display = ('username', 'type', 'display_databases', 'account_link') + list_display = ('username', 'target_server', 'type', 'display_databases', 'account_link') list_filter = ('type', HasDatabaseListFilter) search_fields = ('username', 'account__username') form = DatabaseUserChangeForm add_form = DatabaseUserCreationForm - change_readonly_fields = ('username', 'type') + change_readonly_fields = ('username', 'type', 'target_server') fieldsets = ( (None, { 'classes': ('extrapretty',), - 'fields': ('account_link', 'username', 'password', 'type', 'display_databases') + 'fields': ('account_link', 'username', 'password', 'type', 'display_databases', 'target_server', 'permision') }), ) add_fieldsets = ( (None, { 'classes': ('extrapretty',), - 'fields': ('account_link', 'username', 'password1', 'password2', 'type') + 'fields': ('account_link', 'username', 'password1', 'password2', 'type', 'target_server', 'permision') }), ) readonly_fields = ('account_link', 'display_databases',) diff --git a/orchestra/contrib/databases/apps.py b/orchestra/contrib/databases/apps.py index 97f8ef4a..87e89386 100644 --- a/orchestra/contrib/databases/apps.py +++ b/orchestra/contrib/databases/apps.py @@ -1,5 +1,5 @@ from django.apps import AppConfig -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.core import services diff --git a/orchestra/contrib/databases/backends.py b/orchestra/contrib/databases/backends.py index 29e764ba..ca48ff03 100644 --- a/orchestra/contrib/databases/backends.py +++ b/orchestra/contrib/databases/backends.py @@ -1,6 +1,6 @@ import textwrap -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.contrib.orchestration import ServiceController, replace from orchestra.contrib.resources import ServiceMonitor @@ -36,10 +36,16 @@ class MySQLController(ServiceController): 'username': user.username, 'grant': 'WITH GRANT OPTION' if user == context['owner'] else '' }) - self.append(textwrap.dedent("""\ - mysql -e 'GRANT ALL PRIVILEGES ON `%(database)s`.* TO "%(username)s"@"%(host)s" %(grant)s;'\ - """) % context - ) + if user.permision == "ro": + self.append(textwrap.dedent("""\ + mysql -e 'GRANT SELECT ON `%(database)s`.* TO "%(username)s"@"%(host)s" %(grant)s;'\ + """) % context + ) + else: + self.append(textwrap.dedent("""\ + mysql -e 'GRANT ALL PRIVILEGES ON `%(database)s`.* TO "%(username)s"@"%(host)s" %(grant)s;'\ + """) % context + ) def delete(self, database): if database.type != database.MYSQL: @@ -83,12 +89,20 @@ class MySQLUserController(ServiceController): if user.type != user.MYSQL: return context = self.get_context(user) - self.append(textwrap.dedent("""\ - # Create user %(username)s - mysql -e 'CREATE USER "%(username)s"@"%(host)s";' || true # User already exists - mysql -e 'UPDATE mysql.user SET Password="%(password)s" WHERE User="%(username)s";'\ - """) % context - ) + if user.target_server.name != "mysql.pangea.lan": + self.append(textwrap.dedent("""\ + # Create user %(username)s + mysql -e 'CREATE USER IF NOT EXISTS "%(username)s"@"%(host)s";' + mysql -e 'ALTER USER IF EXISTS "%(username)s"@"%(host)s" IDENTIFIED BY PASSWORD "%(password)s";'\ + """) % context + ) + else: + self.append(textwrap.dedent("""\ + # Create user %(username)s + mysql -e 'CREATE USER "%(username)s"@"%(host)s";' || true # User already exists + mysql -e 'UPDATE mysql.user SET Password="%(password)s" WHERE User="%(username)s";'\ + """) % context + ) def delete(self, user): if user.type != user.MYSQL: @@ -172,7 +186,7 @@ class MysqlDisk(ServiceMonitor): def get_context(self, db): context = { 'db_name': db.name, - 'db_dirname': db.name.replace('-', '@003f'), + 'db_dirname': db.name.replace('-', '@002d'), 'db_id': db.pk, 'db_type': db.type, } diff --git a/orchestra/contrib/databases/filters.py b/orchestra/contrib/databases/filters.py index 9b76957a..50136c70 100644 --- a/orchestra/contrib/databases/filters.py +++ b/orchestra/contrib/databases/filters.py @@ -1,5 +1,5 @@ from django.contrib.admin import SimpleListFilter -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ class HasUserListFilter(SimpleListFilter): diff --git a/orchestra/contrib/databases/forms.py b/orchestra/contrib/databases/forms.py index aa4c720a..f35f00c7 100644 --- a/orchestra/contrib/databases/forms.py +++ b/orchestra/contrib/databases/forms.py @@ -3,7 +3,7 @@ from django.contrib.auth.forms import ReadOnlyPasswordHashField from django.core.exceptions import ValidationError from django.utils.html import format_html from django.utils.safestring import mark_safe -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.core import validators @@ -31,6 +31,32 @@ class DatabaseUserCreationForm(forms.ModelForm): return password2 +class DatabaseForm(forms.ModelForm): + + class Meta: + model = Database + fields = ('name', 'users', 'type', 'account', 'target_server') + + def __init__(self, *args, **kwargs): + super(DatabaseForm, self).__init__(*args, **kwargs) + # muestra solo los usuarios del mismo server + account_id = self.instance.account_id + database_server_id = self.instance.target_server_id + if account_id: + self.fields['users'].queryset = DatabaseUser.objects.filter(account=account_id, target_server=database_server_id) + + def clean(self): + # verifica que los usuarios petenecen al servidor de la bbdd + database_server_id = self.instance.target_server_id + users = self.cleaned_data.get('users') + if users and database_server_id: + for user in users: + if user.target_server_id != database_server_id: + self.add_error("users", _(f"{user.username} does not belong to the database server")) + + return self.cleaned_data + + class DatabaseCreationForm(DatabaseUserCreationForm): username = forms.CharField(label=_("Username"), max_length=16, required=False, validators=[validators.validate_name], @@ -50,13 +76,14 @@ class DatabaseCreationForm(DatabaseUserCreationForm): account_id = self.initial.get('account', self.initial_account) if account_id: qs = self.fields['user'].queryset.filter(account=account_id).order_by('username') - choices = [ (u.pk, "%s (%s)" % (u, u.get_type_display())) for u in qs ] + choices = [ (u.pk, "%s (%s) (%s)" % (u, u.get_type_display(), str(u.target_server.name) )) for u in qs ] self.fields['user'].queryset = qs self.fields['user'].choices = [(None, '--------'),] + choices def clean_username(self): username = self.cleaned_data.get('username') - if DatabaseUser.objects.filter(username=username).exists(): + server = self.cleaned_data.get('target_server') + if DatabaseUser.objects.filter(username=username, target_server=server).exists(): raise ValidationError("Provided username already exists.") return username @@ -76,6 +103,9 @@ class DatabaseCreationForm(DatabaseUserCreationForm): if user and user.type != self.cleaned_data.get('type'): msg = _("Database type and user type doesn't match") raise ValidationError(msg) + if user and user.target_server != self.cleaned_data.get('target_server'): + msg = _("Database server and user server doesn't match") + raise ValidationError(msg) return user def clean(self): diff --git a/orchestra/contrib/databases/migrations/0001_initial.py b/orchestra/contrib/databases/migrations/0001_initial.py index e25696ac..cf3f8f85 100644 --- a/orchestra/contrib/databases/migrations/0001_initial.py +++ b/orchestra/contrib/databases/migrations/0001_initial.py @@ -1,52 +1,46 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals +# Generated by Django 2.2.28 on 2023-06-28 17:06 -from django.db import models, migrations from django.conf import settings +from django.db import migrations, models import django.db.models.deletion import orchestra.core.validators class Migration(migrations.Migration): + initial = True + dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ - migrations.CreateModel( - name='Database', - fields=[ - ('id', models.AutoField(serialize=False, primary_key=True, verbose_name='ID', auto_created=True)), - ('name', models.CharField(verbose_name='name', max_length=64, validators=[orchestra.core.validators.validate_name])), - ('type', models.CharField(default='mysql', choices=[('mysql', 'MySQL'), ('postgres', 'PostgreSQL')], verbose_name='type', max_length=32)), - ('account', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='databases', verbose_name='Account', to=settings.AUTH_USER_MODEL)), - ], - ), migrations.CreateModel( name='DatabaseUser', fields=[ - ('id', models.AutoField(serialize=False, primary_key=True, verbose_name='ID', auto_created=True)), - ('username', models.CharField(verbose_name='username', max_length=16, validators=[orchestra.core.validators.validate_name])), - ('password', models.CharField(verbose_name='password', max_length=256)), - ('type', models.CharField(default='mysql', choices=[('mysql', 'MySQL'), ('postgres', 'PostgreSQL')], verbose_name='type', max_length=32)), - ('account', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='databaseusers', verbose_name='Account', to=settings.AUTH_USER_MODEL)), + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('username', models.CharField(max_length=16, validators=[orchestra.core.validators.validate_name], verbose_name='username')), + ('password', models.CharField(max_length=256, verbose_name='password')), + ('type', models.CharField(choices=[('mysql', 'MySQL')], default='mysql', max_length=32, verbose_name='type')), + ('account', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='databaseusers', to=settings.AUTH_USER_MODEL, verbose_name='Account')), ], options={ 'verbose_name_plural': 'DB users', + 'unique_together': {('username', 'type')}, }, ), - migrations.AddField( - model_name='database', - name='users', - field=models.ManyToManyField(related_name='databases', to='databases.DatabaseUser', verbose_name='users', blank=True), - ), - migrations.AlterUniqueTogether( - name='databaseuser', - unique_together=set([('username', 'type')]), - ), - migrations.AlterUniqueTogether( - name='database', - unique_together=set([('name', 'type')]), + migrations.CreateModel( + name='Database', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=64, validators=[orchestra.core.validators.validate_name], verbose_name='name')), + ('type', models.CharField(choices=[('mysql', 'MySQL')], default='mysql', max_length=32, verbose_name='type')), + ('comments', models.TextField(blank=True, default='')), + ('account', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='databases', to=settings.AUTH_USER_MODEL, verbose_name='Account')), + ('users', models.ManyToManyField(blank=True, related_name='databases', to='databases.DatabaseUser', verbose_name='users')), + ], + options={ + 'unique_together': {('name', 'type')}, + }, ), ] diff --git a/orchestra/contrib/databases/migrations/0001_squashed_0004_auto_20210330_1049.py b/orchestra/contrib/databases/migrations/0001_squashed_0004_auto_20210330_1049.py deleted file mode 100644 index 2c12381c..00000000 --- a/orchestra/contrib/databases/migrations/0001_squashed_0004_auto_20210330_1049.py +++ /dev/null @@ -1,82 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2021-04-22 11:25 -from __future__ import unicode_literals - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion -import orchestra.core.validators - - -class Migration(migrations.Migration): - - replaces = [('databases', '0001_initial'), ('databases', '0002_auto_20170528_2005'), ('databases', '0003_database_comments'), ('databases', '0004_auto_20210330_1049')] - - initial = True - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.CreateModel( - name='Database', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=64, validators=[orchestra.core.validators.validate_name], verbose_name='name')), - ('type', models.CharField(choices=[('mysql', 'MySQL'), ('postgres', 'PostgreSQL')], default='mysql', max_length=32, verbose_name='type')), - ('account', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='databases', to=settings.AUTH_USER_MODEL, verbose_name='Account')), - ], - ), - migrations.CreateModel( - name='DatabaseUser', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('username', models.CharField(max_length=16, validators=[orchestra.core.validators.validate_name], verbose_name='username')), - ('password', models.CharField(max_length=256, verbose_name='password')), - ('type', models.CharField(choices=[('mysql', 'MySQL'), ('postgres', 'PostgreSQL')], default='mysql', max_length=32, verbose_name='type')), - ('account', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='databaseusers', to=settings.AUTH_USER_MODEL, verbose_name='Account')), - ], - options={ - 'verbose_name_plural': 'DB users', - }, - ), - migrations.AddField( - model_name='database', - name='users', - field=models.ManyToManyField(blank=True, related_name='databases', to='databases.DatabaseUser', verbose_name='users'), - ), - migrations.AlterUniqueTogether( - name='databaseuser', - unique_together=set([('username', 'type')]), - ), - migrations.AlterUniqueTogether( - name='database', - unique_together=set([('name', 'type')]), - ), - migrations.AlterField( - model_name='database', - name='type', - field=models.CharField(choices=[('mysql', 'MySQL')], default='mysql', max_length=32, verbose_name='type'), - ), - migrations.AlterField( - model_name='databaseuser', - name='type', - field=models.CharField(choices=[('mysql', 'MySQL')], default='mysql', max_length=32, verbose_name='type'), - ), - migrations.AddField( - model_name='database', - name='comments', - field=models.TextField(blank=True, default=''), - ), - migrations.AlterField( - model_name='database', - name='type', - field=models.CharField(choices=[('mysql', 'MySQL'), ('postgres', 'PostgreSQL')], default='mysql', max_length=32, verbose_name='type'), - ), - migrations.AlterField( - model_name='databaseuser', - name='type', - field=models.CharField(choices=[('mysql', 'MySQL'), ('postgres', 'PostgreSQL')], default='mysql', max_length=32, verbose_name='type'), - ), - ] diff --git a/orchestra/contrib/databases/migrations/0002_auto_20170528_2005.py b/orchestra/contrib/databases/migrations/0002_auto_20170528_2005.py deleted file mode 100644 index 9f797244..00000000 --- a/orchestra/contrib/databases/migrations/0002_auto_20170528_2005.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-05-28 18:05 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('databases', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='database', - name='type', - field=models.CharField(choices=[('mysql', 'MySQL')], default='mysql', max_length=32, verbose_name='type'), - ), - migrations.AlterField( - model_name='databaseuser', - name='type', - field=models.CharField(choices=[('mysql', 'MySQL')], default='mysql', max_length=32, verbose_name='type'), - ), - ] diff --git a/orchestra/contrib/databases/migrations/0002_databaseuser_target_server.py b/orchestra/contrib/databases/migrations/0002_databaseuser_target_server.py new file mode 100644 index 00000000..3db3d0ca --- /dev/null +++ b/orchestra/contrib/databases/migrations/0002_databaseuser_target_server.py @@ -0,0 +1,20 @@ +# Generated by Django 2.2.28 on 2023-06-28 17:11 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('orchestration', '__first__'), + ('databases', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='databaseuser', + name='target_server', + field=models.ForeignKey(default=3, on_delete=django.db.models.deletion.CASCADE, to='orchestration.Server', verbose_name='Target Server'), + ), + ] diff --git a/orchestra/contrib/databases/migrations/0003_auto_20230629_1838.py b/orchestra/contrib/databases/migrations/0003_auto_20230629_1838.py new file mode 100644 index 00000000..cd71691f --- /dev/null +++ b/orchestra/contrib/databases/migrations/0003_auto_20230629_1838.py @@ -0,0 +1,29 @@ +# Generated by Django 2.2.28 on 2023-06-29 16:38 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('orchestration', '__first__'), + ('databases', '0002_databaseuser_target_server'), + ] + + operations = [ + migrations.AddField( + model_name='databaseuser', + name='permision', + field=models.CharField(choices=[('all', 'all'), ('ro', 'read only')], default='all', max_length=20, verbose_name='Permisson'), + ), + migrations.AlterField( + model_name='databaseuser', + name='target_server', + field=models.ForeignKey(default=3, on_delete=django.db.models.deletion.CASCADE, to='orchestration.Server', verbose_name='Server'), + ), + migrations.AlterUniqueTogether( + name='databaseuser', + unique_together={('username', 'type', 'target_server')}, + ), + ] diff --git a/orchestra/contrib/databases/migrations/0003_database_comments.py b/orchestra/contrib/databases/migrations/0003_database_comments.py deleted file mode 100644 index 3a2149ba..00000000 --- a/orchestra/contrib/databases/migrations/0003_database_comments.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2020-02-04 11:21 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('databases', '0002_auto_20170528_2005'), - ] - - operations = [ - migrations.AddField( - model_name='database', - name='comments', - field=models.TextField(default=''), - ), - ] diff --git a/orchestra/contrib/databases/migrations/0004_auto_20210330_1049.py b/orchestra/contrib/databases/migrations/0004_auto_20210330_1049.py deleted file mode 100644 index 9259bfa4..00000000 --- a/orchestra/contrib/databases/migrations/0004_auto_20210330_1049.py +++ /dev/null @@ -1,30 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2021-03-30 10:49 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('databases', '0003_database_comments'), - ] - - operations = [ - migrations.AlterField( - model_name='database', - name='comments', - field=models.TextField(blank=True, default=''), - ), - migrations.AlterField( - model_name='database', - name='type', - field=models.CharField(choices=[('mysql', 'MySQL'), ('postgres', 'PostgreSQL')], default='mysql', max_length=32, verbose_name='type'), - ), - migrations.AlterField( - model_name='databaseuser', - name='type', - field=models.CharField(choices=[('mysql', 'MySQL'), ('postgres', 'PostgreSQL')], default='mysql', max_length=32, verbose_name='type'), - ), - ] diff --git a/orchestra/contrib/databases/migrations/0004_database_target_server.py b/orchestra/contrib/databases/migrations/0004_database_target_server.py new file mode 100644 index 00000000..2868cbfb --- /dev/null +++ b/orchestra/contrib/databases/migrations/0004_database_target_server.py @@ -0,0 +1,20 @@ +# Generated by Django 2.2.28 on 2023-06-29 16:57 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('orchestration', '__first__'), + ('databases', '0003_auto_20230629_1838'), + ] + + operations = [ + migrations.AddField( + model_name='database', + name='target_server', + field=models.ForeignKey(default=3, on_delete=django.db.models.deletion.CASCADE, to='orchestration.Server', verbose_name='Server'), + ), + ] diff --git a/orchestra/contrib/databases/migrations/0005_auto_20230705_1208.py b/orchestra/contrib/databases/migrations/0005_auto_20230705_1208.py new file mode 100644 index 00000000..55285684 --- /dev/null +++ b/orchestra/contrib/databases/migrations/0005_auto_20230705_1208.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.28 on 2023-07-05 10:08 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('orchestration', '__first__'), + ('databases', '0004_database_target_server'), + ] + + operations = [ + migrations.AlterUniqueTogether( + name='database', + unique_together={('name', 'type', 'target_server')}, + ), + ] diff --git a/orchestra/contrib/databases/migrations/0006_auto_20230705_1237.py b/orchestra/contrib/databases/migrations/0006_auto_20230705_1237.py new file mode 100644 index 00000000..a0864891 --- /dev/null +++ b/orchestra/contrib/databases/migrations/0006_auto_20230705_1237.py @@ -0,0 +1,19 @@ +# Generated by Django 2.2.28 on 2023-07-05 10:37 + +from django.db import migrations, models +import orchestra.core.validators + + +class Migration(migrations.Migration): + + dependencies = [ + ('databases', '0005_auto_20230705_1208'), + ] + + operations = [ + migrations.AlterField( + model_name='databaseuser', + name='username', + field=models.CharField(max_length=32, validators=[orchestra.core.validators.validate_name], verbose_name='username'), + ), + ] diff --git a/orchestra/contrib/databases/models.py b/orchestra/contrib/databases/models.py index 207fe63d..528657f6 100644 --- a/orchestra/contrib/databases/models.py +++ b/orchestra/contrib/databases/models.py @@ -1,7 +1,7 @@ import hashlib from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.core import validators @@ -23,9 +23,11 @@ class Database(models.Model): account = models.ForeignKey('accounts.Account', on_delete=models.CASCADE, verbose_name=_("Account"), related_name='databases') comments = models.TextField(default="", blank=True) + target_server = models.ForeignKey('orchestration.Server', on_delete=models.CASCADE, + verbose_name=_("Server"), default=3 ) class Meta: - unique_together = ('name', 'type') + unique_together = ('name', 'type', 'target_server') def __str__(self): return "%s" % self.name @@ -54,7 +56,12 @@ class DatabaseUser(models.Model): MYSQL = Database.MYSQL POSTGRESQL = Database.POSTGRESQL - username = models.CharField(_("username"), max_length=16, # MySQL usernames 16 char long + typeOfPermision = [ + ('all','all'), + ('ro', 'read only'), + ] + + username = models.CharField(_("username"), max_length=32, # MySQL usernames 16 char long validators=[validators.validate_name]) password = models.CharField(_("password"), max_length=256) type = models.CharField(_("type"), max_length=32, @@ -62,10 +69,14 @@ class DatabaseUser(models.Model): default=settings.DATABASES_DEFAULT_TYPE) account = models.ForeignKey('accounts.Account', on_delete=models.CASCADE, verbose_name=_("Account"), related_name='databaseusers') + target_server = models.ForeignKey('orchestration.Server', on_delete=models.CASCADE, + verbose_name=_("Server"), default=3 ) + permision = models.CharField(verbose_name=_("Permisson"), max_length=20, choices=typeOfPermision, default='all') + class Meta: verbose_name_plural = _("DB users") - unique_together = ('username', 'type') + unique_together = ('username', 'type', 'target_server') def __str__(self): return self.username diff --git a/orchestra/contrib/domains/actions.py b/orchestra/contrib/domains/actions.py index 6b66188c..0e1b222f 100644 --- a/orchestra/contrib/domains/actions.py +++ b/orchestra/contrib/domains/actions.py @@ -7,7 +7,7 @@ from django.db.models.functions import Concat, Coalesce from django.forms.models import modelformset_factory from django.shortcuts import render from django.utils.safestring import mark_safe -from django.utils.translation import ungettext, ugettext_lazy as _ +from django.utils.translation import ngettext, gettext_lazy as _ from django.template.response import TemplateResponse from orchestra.admin.utils import get_object_from_url, change_url, admin_link @@ -84,7 +84,7 @@ def edit_records(modeladmin, request, queryset): change_message = modeladmin.construct_change_message(request, fake_form, [formset]) modeladmin.log_change(request, formset.instance, change_message) num = len(formsets) - message = ungettext( + message = ngettext( _("Records for one selected domain have been updated."), _("Records for %i selected domains have been updated.") % num, num) @@ -127,7 +127,7 @@ def set_soa(modeladmin, request, queryset): modeladmin.log_change(request, domain, change_message) domain.save() num = len(queryset) - msg = ungettext( + msg = ngettext( _("SOA record for one domain has been updated."), _("SOA record for %s domains has been updated.") % num, num diff --git a/orchestra/contrib/domains/admin.py b/orchestra/contrib/domains/admin.py index a1dd6141..10994cf4 100644 --- a/orchestra/contrib/domains/admin.py +++ b/orchestra/contrib/domains/admin.py @@ -5,7 +5,7 @@ from django.db.models.functions import Concat, Coalesce from django.templatetags.static import static from django.utils.html import format_html from django.utils.safestring import mark_safe -from django.utils.translation import ugettext, ugettext_lazy as _ +from django.utils.translation import gettext, gettext_lazy as _ from orchestra.admin import ExtendedModelAdmin from orchestra.admin.utils import admin_link, change_url diff --git a/orchestra/contrib/domains/backends.py b/orchestra/contrib/domains/backends.py index f372b6e2..e160e61b 100644 --- a/orchestra/contrib/domains/backends.py +++ b/orchestra/contrib/domains/backends.py @@ -2,7 +2,7 @@ import re import socket import textwrap -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.contrib.orchestration import ServiceController from orchestra.contrib.orchestration import Operation diff --git a/orchestra/contrib/domains/filters.py b/orchestra/contrib/domains/filters.py index 589079a4..c12f48e2 100644 --- a/orchestra/contrib/domains/filters.py +++ b/orchestra/contrib/domains/filters.py @@ -1,5 +1,5 @@ from django.contrib.admin import SimpleListFilter -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ class TopDomainListFilter(SimpleListFilter): diff --git a/orchestra/contrib/domains/forms.py b/orchestra/contrib/domains/forms.py index c73e92a7..15db21c8 100644 --- a/orchestra/contrib/domains/forms.py +++ b/orchestra/contrib/domains/forms.py @@ -1,7 +1,7 @@ from django import forms from django.core.exceptions import ValidationError from django.utils.text import capfirst -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.admin.forms import AdminFormSet, AdminFormMixin diff --git a/orchestra/contrib/domains/migrations/0001_initial.py b/orchestra/contrib/domains/migrations/0001_initial.py deleted file mode 100644 index f0877cd7..00000000 --- a/orchestra/contrib/domains/migrations/0001_initial.py +++ /dev/null @@ -1,38 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations -import django.db.models.deletion -import orchestra.contrib.domains.utils -import orchestra.contrib.domains.validators -from django.conf import settings - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.CreateModel( - name='Domain', - fields=[ - ('id', models.AutoField(serialize=False, primary_key=True, auto_created=True, verbose_name='ID')), - ('name', models.CharField(unique=True, max_length=256, validators=[orchestra.contrib.domains.validators.validate_domain_name, orchestra.contrib.domains.validators.validate_allowed_domain], verbose_name='name', help_text='Domain or subdomain name.')), - ('serial', models.IntegerField(default=orchestra.contrib.domains.utils.generate_zone_serial, verbose_name='serial', help_text='Serial number')), - ('account', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='domains', help_text='Automatically selected for subdomains.', to=settings.AUTH_USER_MODEL, verbose_name='Account', blank=True)), - ('top', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, null=True, to='domains.Domain', editable=False, related_name='subdomain_set')), - ], - ), - migrations.CreateModel( - name='Record', - fields=[ - ('id', models.AutoField(serialize=False, primary_key=True, auto_created=True, verbose_name='ID')), - ('ttl', models.CharField(help_text='Record TTL, defaults to 1h', max_length=8, validators=[orchestra.contrib.domains.validators.validate_zone_interval], verbose_name='TTL', blank=True)), - ('type', models.CharField(max_length=32, verbose_name='type', choices=[('MX', 'MX'), ('NS', 'NS'), ('CNAME', 'CNAME'), ('A', 'A (IPv4 address)'), ('AAAA', 'AAAA (IPv6 address)'), ('SRV', 'SRV'), ('TXT', 'TXT'), ('SOA', 'SOA')])), - ('value', models.CharField(max_length=256, verbose_name='value')), - ('domain', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='records', to='domains.Domain', verbose_name='domain')), - ], - ), - ] diff --git a/orchestra/contrib/domains/migrations/0001_squashed_0010_auto_20210330_1049.py b/orchestra/contrib/domains/migrations/0001_squashed_0010_auto_20210330_1049.py deleted file mode 100644 index ee8cfb2f..00000000 --- a/orchestra/contrib/domains/migrations/0001_squashed_0010_auto_20210330_1049.py +++ /dev/null @@ -1,83 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2021-04-22 11:27 -from __future__ import unicode_literals - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion -import orchestra.contrib.domains.utils -import orchestra.contrib.domains.validators - - -class Migration(migrations.Migration): - - replaces = [('domains', '0001_initial'), ('domains', '0002_auto_20150715_1017'), ('domains', '0003_auto_20150720_1121'), ('domains', '0004_auto_20150720_1121'), ('domains', '0005_auto_20160219_1034'), ('domains', '0006_auto_20170528_2011'), ('domains', '0007_auto_20190805_1134'), ('domains', '0008_domain_dns2136_address_match_list'), ('domains', '0009_auto_20200204_1217'), ('domains', '0010_auto_20210330_1049')] - - initial = True - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.CreateModel( - name='Domain', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(help_text='Domain or subdomain name.', max_length=256, unique=True, validators=[orchestra.contrib.domains.validators.validate_domain_name, orchestra.contrib.domains.validators.validate_allowed_domain], verbose_name='name')), - ('serial', models.IntegerField(default=orchestra.contrib.domains.utils.generate_zone_serial, help_text='Serial number', verbose_name='serial')), - ('account', models.ForeignKey(blank=True, help_text='Automatically selected for subdomains.', on_delete=django.db.models.deletion.CASCADE, related_name='domains', to=settings.AUTH_USER_MODEL, verbose_name='Account')), - ('top', models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='subdomain_set', to='domains.Domain')), - ], - ), - migrations.CreateModel( - name='Record', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('ttl', models.CharField(blank=True, help_text='Record TTL, defaults to 1h', max_length=8, validators=[orchestra.contrib.domains.validators.validate_zone_interval], verbose_name='TTL')), - ('type', models.CharField(choices=[('MX', 'MX'), ('NS', 'NS'), ('CNAME', 'CNAME'), ('A', 'A (IPv4 address)'), ('AAAA', 'AAAA (IPv6 address)'), ('SRV', 'SRV'), ('TXT', 'TXT'), ('SPF', 'SPF')], max_length=32, verbose_name='type')), - ('value', models.CharField(help_text='MX, NS and CNAME records sould end with a dot.', max_length=1024, verbose_name='value')), - ('domain', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='records', to='domains.Domain', verbose_name='domain')), - ], - ), - migrations.AlterField( - model_name='domain', - name='serial', - field=models.IntegerField(default=orchestra.contrib.domains.utils.generate_zone_serial, editable=False, help_text='A revision number that changes whenever this domain is updated.', verbose_name='serial'), - ), - migrations.AddField( - model_name='domain', - name='expire', - field=models.CharField(blank=True, help_text='The time that a secondary server will keep trying to complete a zone transfer. If this time expires prior to a successful zone transfer, the secondary server will expire its zone file. This means the secondary will stop answering queries. The default value is 4w.', max_length=16, validators=[orchestra.contrib.domains.validators.validate_zone_interval], verbose_name='expire'), - ), - migrations.AddField( - model_name='domain', - name='min_ttl', - field=models.CharField(blank=True, help_text='The minimum time-to-live value applies to all resource records in the zone file. This value is supplied in query responses to inform other servers how long they should keep the data in cache. The default value is 1h.', max_length=16, validators=[orchestra.contrib.domains.validators.validate_zone_interval], verbose_name='min TTL'), - ), - migrations.AddField( - model_name='domain', - name='refresh', - field=models.CharField(blank=True, help_text="The time a secondary DNS server waits before querying the primary DNS server's SOA record to check for changes. When the refresh time expires, the secondary DNS server requests a copy of the current SOA record from the primary. The primary DNS server complies with this request. The secondary DNS server compares the serial number of the primary DNS server's current SOA record and the serial number in it's own SOA record. If they are different, the secondary DNS server will request a zone transfer from the primary DNS server. The default value is 1d.", max_length=16, validators=[orchestra.contrib.domains.validators.validate_zone_interval], verbose_name='refresh'), - ), - migrations.AddField( - model_name='domain', - name='retry', - field=models.CharField(blank=True, help_text='The time a secondary server waits before retrying a failed zone transfer. Normally, the retry time is less than the refresh time. The default value is 2h.', max_length=16, validators=[orchestra.contrib.domains.validators.validate_zone_interval], verbose_name='retry'), - ), - migrations.AlterField( - model_name='domain', - name='name', - field=models.CharField(db_index=True, help_text='Domain or subdomain name.', max_length=256, unique=True, validators=[orchestra.contrib.domains.validators.validate_domain_name, orchestra.contrib.domains.validators.validate_allowed_domain], verbose_name='name'), - ), - migrations.AlterField( - model_name='domain', - name='top', - field=models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='subdomain_set', to='domains.Domain', verbose_name='top domain'), - ), - migrations.AddField( - model_name='domain', - name='dns2136_address_match_list', - field=models.CharField(blank=True, default='key pangea.key;', help_text="A bind-9 'address_match_list' that will be granted permission to perform dns2136 updates. Chiefly used to enable Let's Encrypt self-service validation.", max_length=80), - ), - ] diff --git a/orchestra/contrib/domains/migrations/0002_auto_20150715_1017.py b/orchestra/contrib/domains/migrations/0002_auto_20150715_1017.py deleted file mode 100644 index 7b6d9ad1..00000000 --- a/orchestra/contrib/domains/migrations/0002_auto_20150715_1017.py +++ /dev/null @@ -1,39 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('domains', '0001_initial'), - ] - - operations = [ - migrations.AddField( - model_name='domain', - name='expire', - field=models.IntegerField(null=True, blank=True, help_text='The upper limit in seconds before a zone is considered no longer authoritative (4w by default).', verbose_name='expire'), - ), - migrations.AddField( - model_name='domain', - name='min_ttl', - field=models.IntegerField(null=True, blank=True, help_text='The negative result TTL (for example, how long a resolver should consider a negative result for a subdomain to be valid before retrying) (1h by default).', verbose_name='refresh'), - ), - migrations.AddField( - model_name='domain', - name='refresh', - field=models.IntegerField(null=True, blank=True, help_text='The number of seconds before the zone should be refreshed (1d by default).', verbose_name='refresh'), - ), - migrations.AddField( - model_name='domain', - name='retry', - field=models.IntegerField(null=True, blank=True, help_text='The number of seconds before a failed refresh should be retried (2h by default).', verbose_name='retry'), - ), - migrations.AlterField( - model_name='record', - name='value', - field=models.CharField(max_length=256, help_text='MX, NS and CNAME records sould end with a dot.', verbose_name='value'), - ), - ] diff --git a/orchestra/contrib/domains/migrations/0003_auto_20150720_1121.py b/orchestra/contrib/domains/migrations/0003_auto_20150720_1121.py deleted file mode 100644 index d240ea0b..00000000 --- a/orchestra/contrib/domains/migrations/0003_auto_20150720_1121.py +++ /dev/null @@ -1,36 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations -import orchestra.contrib.domains.utils - - -class Migration(migrations.Migration): - - dependencies = [ - ('domains', '0002_auto_20150715_1017'), - ] - - operations = [ - migrations.RemoveField( - model_name='domain', - name='expire', - ), - migrations.RemoveField( - model_name='domain', - name='min_ttl', - ), - migrations.RemoveField( - model_name='domain', - name='refresh', - ), - migrations.RemoveField( - model_name='domain', - name='retry', - ), - migrations.AlterField( - model_name='domain', - name='serial', - field=models.IntegerField(editable=False, verbose_name='serial', default=orchestra.contrib.domains.utils.generate_zone_serial, help_text='A revision number that changes whenever this domain is updated.'), - ), - ] diff --git a/orchestra/contrib/domains/migrations/0004_auto_20150720_1121.py b/orchestra/contrib/domains/migrations/0004_auto_20150720_1121.py deleted file mode 100644 index e133d415..00000000 --- a/orchestra/contrib/domains/migrations/0004_auto_20150720_1121.py +++ /dev/null @@ -1,35 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations -import orchestra.contrib.domains.validators - - -class Migration(migrations.Migration): - - dependencies = [ - ('domains', '0003_auto_20150720_1121'), - ] - - operations = [ - migrations.AddField( - model_name='domain', - name='expire', - field=models.CharField(validators=[orchestra.contrib.domains.validators.validate_zone_interval], blank=True, help_text='The time that a secondary server will keep trying to complete a zone transfer. If this time expires prior to a successful zone transfer, the secondary server will expire its zone file. This means the secondary will stop answering queries. The default value is 4w.', verbose_name='expire', max_length=16), - ), - migrations.AddField( - model_name='domain', - name='min_ttl', - field=models.CharField(validators=[orchestra.contrib.domains.validators.validate_zone_interval], blank=True, help_text='The minimum time-to-live value applies to all resource records in the zone file. This value is supplied in query responses to inform other servers how long they should keep the data in cache. The default value is 1h.', verbose_name='min TTL', max_length=16), - ), - migrations.AddField( - model_name='domain', - name='refresh', - field=models.CharField(validators=[orchestra.contrib.domains.validators.validate_zone_interval], blank=True, help_text="The time a secondary DNS server waits before querying the primary DNS server's SOA record to check for changes. When the refresh time expires, the secondary DNS server requests a copy of the current SOA record from the primary. The primary DNS server complies with this request. The secondary DNS server compares the serial number of the primary DNS server's current SOA record and the serial number in it's own SOA record. If they are different, the secondary DNS server will request a zone transfer from the primary DNS server. The default value is 1d.", verbose_name='refresh', max_length=16), - ), - migrations.AddField( - model_name='domain', - name='retry', - field=models.CharField(validators=[orchestra.contrib.domains.validators.validate_zone_interval], blank=True, help_text='The time a secondary server waits before retrying a failed zone transfer. Normally, the retry time is less than the refresh time. The default value is 2h.', verbose_name='retry', max_length=16), - ), - ] diff --git a/orchestra/contrib/domains/migrations/0005_auto_20160219_1034.py b/orchestra/contrib/domains/migrations/0005_auto_20160219_1034.py deleted file mode 100644 index 7ef16e9b..00000000 --- a/orchestra/contrib/domains/migrations/0005_auto_20160219_1034.py +++ /dev/null @@ -1,31 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations, models -import django.db.models.deletion -import orchestra.contrib.domains.validators - - -class Migration(migrations.Migration): - - dependencies = [ - ('domains', '0004_auto_20150720_1121'), - ] - - operations = [ - migrations.AlterField( - model_name='domain', - name='name', - field=models.CharField(max_length=256, validators=[orchestra.contrib.domains.validators.validate_domain_name, orchestra.contrib.domains.validators.validate_allowed_domain], db_index=True, verbose_name='name', unique=True, help_text='Domain or subdomain name.'), - ), - migrations.AlterField( - model_name='domain', - name='top', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, editable=False, verbose_name='top domain', related_name='subdomain_set', to='domains.Domain', null=True), - ), - migrations.AlterField( - model_name='record', - name='type', - field=models.CharField(max_length=32, verbose_name='type', choices=[('MX', 'MX'), ('NS', 'NS'), ('CNAME', 'CNAME'), ('A', 'A (IPv4 address)'), ('AAAA', 'AAAA (IPv6 address)'), ('SRV', 'SRV'), ('TXT', 'TXT'), ('SPF', 'SPF'), ('SOA', 'SOA')]), - ), - ] diff --git a/orchestra/contrib/domains/migrations/0006_auto_20170528_2011.py b/orchestra/contrib/domains/migrations/0006_auto_20170528_2011.py deleted file mode 100644 index eac37d54..00000000 --- a/orchestra/contrib/domains/migrations/0006_auto_20170528_2011.py +++ /dev/null @@ -1,31 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-05-28 18:11 -from __future__ import unicode_literals - -from django.db import migrations, models -import orchestra.contrib.domains.validators - - -class Migration(migrations.Migration): - - dependencies = [ - ('domains', '0005_auto_20160219_1034'), - ] - - operations = [ - migrations.AlterField( - model_name='domain', - name='min_ttl', - field=models.CharField(blank=True, help_text='The minimum time-to-live value applies to all resource records in the zone file. This value is supplied in query responses to inform other servers how long they should keep the data in cache. The default value is 30m.', max_length=16, validators=[orchestra.contrib.domains.validators.validate_zone_interval], verbose_name='min TTL'), - ), - migrations.AlterField( - model_name='record', - name='ttl', - field=models.CharField(blank=True, help_text='Record TTL, defaults to 30m', max_length=8, validators=[orchestra.contrib.domains.validators.validate_zone_interval], verbose_name='TTL'), - ), - migrations.AlterField( - model_name='record', - name='type', - field=models.CharField(choices=[('MX', 'MX'), ('NS', 'NS'), ('CNAME', 'CNAME'), ('A', 'A (IPv4 address)'), ('AAAA', 'AAAA (IPv6 address)'), ('SRV', 'SRV'), ('TXT', 'TXT'), ('SPF', 'SPF')], max_length=32, verbose_name='type'), - ), - ] diff --git a/orchestra/contrib/domains/migrations/0007_auto_20190805_1134.py b/orchestra/contrib/domains/migrations/0007_auto_20190805_1134.py deleted file mode 100644 index 8f0842f7..00000000 --- a/orchestra/contrib/domains/migrations/0007_auto_20190805_1134.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2019-08-05 09:34 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('domains', '0006_auto_20170528_2011'), - ] - - operations = [ - migrations.AlterField( - model_name='record', - name='value', - field=models.CharField(help_text='MX, NS and CNAME records sould end with a dot.', max_length=1024, verbose_name='value'), - ), - ] diff --git a/orchestra/contrib/domains/migrations/0008_domain_dns2136_address_match_list.py b/orchestra/contrib/domains/migrations/0008_domain_dns2136_address_match_list.py deleted file mode 100644 index 75630260..00000000 --- a/orchestra/contrib/domains/migrations/0008_domain_dns2136_address_match_list.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2019-09-20 07:21 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('domains', '0007_auto_20190805_1134'), - ] - - operations = [ - migrations.AddField( - model_name='domain', - name='dns2136_address_match_list', - field=models.CharField(blank=True, default='none;', help_text="A bind-9 'address_match_list' that will be granted permission to perform dns2136 updates. Chiefly used to enable Let's Encrypt self-service validation.", max_length=80), - ), - ] diff --git a/orchestra/contrib/domains/migrations/0009_auto_20200204_1217.py b/orchestra/contrib/domains/migrations/0009_auto_20200204_1217.py deleted file mode 100644 index 86570942..00000000 --- a/orchestra/contrib/domains/migrations/0009_auto_20200204_1217.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2020-02-04 11:17 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('domains', '0008_domain_dns2136_address_match_list'), - ] - - operations = [ - migrations.AlterField( - model_name='domain', - name='dns2136_address_match_list', - field=models.CharField(blank=True, default='key pangea.key;', help_text="A bind-9 'address_match_list' that will be granted permission to perform dns2136 updates. Chiefly used to enable Let's Encrypt self-service validation.", max_length=80), - ), - ] diff --git a/orchestra/contrib/domains/migrations/0010_auto_20210330_1049.py b/orchestra/contrib/domains/migrations/0010_auto_20210330_1049.py deleted file mode 100644 index 37f81aaa..00000000 --- a/orchestra/contrib/domains/migrations/0010_auto_20210330_1049.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2021-03-30 10:49 -from __future__ import unicode_literals - -from django.db import migrations, models -import orchestra.contrib.domains.validators - - -class Migration(migrations.Migration): - - dependencies = [ - ('domains', '0009_auto_20200204_1217'), - ] - - operations = [ - migrations.AlterField( - model_name='domain', - name='min_ttl', - field=models.CharField(blank=True, help_text='The minimum time-to-live value applies to all resource records in the zone file. This value is supplied in query responses to inform other servers how long they should keep the data in cache. The default value is 1h.', max_length=16, validators=[orchestra.contrib.domains.validators.validate_zone_interval], verbose_name='min TTL'), - ), - migrations.AlterField( - model_name='record', - name='ttl', - field=models.CharField(blank=True, help_text='Record TTL, defaults to 1h', max_length=8, validators=[orchestra.contrib.domains.validators.validate_zone_interval], verbose_name='TTL'), - ), - ] diff --git a/orchestra/contrib/domains/migrations/__init__.py b/orchestra/contrib/domains/migrations/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/orchestra/contrib/domains/models.py b/orchestra/contrib/domains/models.py index 05434559..9d099aa4 100644 --- a/orchestra/contrib/domains/models.py +++ b/orchestra/contrib/domains/models.py @@ -1,6 +1,6 @@ from django.core.exceptions import ValidationError from django.db import models -from django.utils.translation import ungettext, ugettext_lazy as _ +from django.utils.translation import ngettext, gettext_lazy as _ from orchestra.core.validators import validate_ipv4_address, validate_ipv6_address, validate_ascii from orchestra.utils.python import AttrDict @@ -114,7 +114,7 @@ class Domain(models.Model): def get_description(self): if self.is_top: num = self.subdomains.count() - return ungettext( + return ngettext( _("top domain with one subdomain"), _("top domain with %d subdomains") % num, num) @@ -144,6 +144,10 @@ class Domain(models.Model): tail.append(subdomain) else: zone += subdomain.render_records() + ###darmengo 2021-03-25 add autoconfig + if self.has_default_mx(): + zone += 'autoconfig.{}. 30m IN A 109.69.8.133\n'.format(self.name) + ###END darmengo 2021-03-25 add autoconfig for subdomain in sorted(tail, key=lambda x: len(x.name), reverse=True): zone += subdomain.render_records() return zone.strip() diff --git a/orchestra/contrib/domains/serializers.py b/orchestra/contrib/domains/serializers.py index 96451a56..7c6bebd6 100644 --- a/orchestra/contrib/domains/serializers.py +++ b/orchestra/contrib/domains/serializers.py @@ -1,5 +1,5 @@ from django.core.exceptions import ValidationError -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from orchestra.api.serializers import HyperlinkedModelSerializer diff --git a/orchestra/contrib/domains/templates/admin/domains/domain/change_form.html b/orchestra/contrib/domains/templates/admin/domains/domain/change_form.html index c14c9254..5bf4ffb4 100644 --- a/orchestra/contrib/domains/templates/admin/domains/domain/change_form.html +++ b/orchestra/contrib/domains/templates/admin/domains/domain/change_form.html @@ -1,5 +1,5 @@ {% extends "admin/change_form.html" %} -{% load i18n admin_urls admin_static admin_modify %} +{% load i18n admin_urls static admin_modify %} {% block object-tools-items %} diff --git a/orchestra/contrib/domains/validators.py b/orchestra/contrib/domains/validators.py index c3e1ed61..4722493a 100644 --- a/orchestra/contrib/domains/validators.py +++ b/orchestra/contrib/domains/validators.py @@ -3,7 +3,7 @@ import os import re from django.core.exceptions import ValidationError -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.core.validators import validate_hostname from orchestra.utils import paths diff --git a/orchestra/contrib/history/admin.py b/orchestra/contrib/history/admin.py index bc32e734..903eeda0 100644 --- a/orchestra/contrib/history/admin.py +++ b/orchestra/contrib/history/admin.py @@ -1,12 +1,12 @@ from django.contrib import admin -from django.contrib.admin.templatetags.admin_static import static +from django.templatetags.static import static from django.contrib.admin.templatetags.admin_urls import add_preserved_filters from django.contrib.admin.utils import unquote from django.http import HttpResponseRedirect from django.urls import NoReverseMatch, reverse from django.utils.html import format_html from django.utils.safestring import mark_safe -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.admin.utils import admin_date, admin_link diff --git a/orchestra/contrib/issues/actions.py b/orchestra/contrib/issues/actions.py index 3e6e1dde..dac29765 100644 --- a/orchestra/contrib/issues/actions.py +++ b/orchestra/contrib/issues/actions.py @@ -2,7 +2,7 @@ import sys from django.contrib import messages from django.db import transaction -from django.utils.translation import ungettext, ugettext_lazy as _ +from django.utils.translation import ngettext, gettext_lazy as _ from orchestra.admin.decorators import action_with_confirmation @@ -102,7 +102,7 @@ def mark_as_unread(modeladmin, request, queryset): ticket.mark_as_unread_by(request.user) modeladmin.log_change(request, ticket, 'Marked as unread') num = len(queryset) - msg = ungettext( + msg = ngettext( _("Selected ticket has been marked as unread."), _("%i selected tickets have been marked as unread.") % num, num) @@ -116,7 +116,7 @@ def mark_as_read(modeladmin, request, queryset): ticket.mark_as_read_by(request.user) modeladmin.log_change(request, ticket, 'Marked as read') num = len(queryset) - msg = ungettext( + msg = ngettext( _("Selected ticket has been marked as read."), _("%i selected tickets have been marked as read.") % num, num) diff --git a/orchestra/contrib/issues/admin.py b/orchestra/contrib/issues/admin.py index 7b607fe9..25ae3f21 100644 --- a/orchestra/contrib/issues/admin.py +++ b/orchestra/contrib/issues/admin.py @@ -1,5 +1,5 @@ from django import forms -from django.conf.urls import url +from django.urls import re_path as url from django.contrib import admin from django.urls import reverse from django.db import models @@ -7,7 +7,7 @@ from django.http import HttpResponse from django.shortcuts import get_object_or_404 from django.utils.html import format_html, strip_tags from django.utils.safestring import mark_safe -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from markdown import markdown from orchestra.admin import ExtendedModelAdmin @@ -68,7 +68,7 @@ class MessageReadOnlyInline(admin.TabularInline): return header + content content_html.short_description = _("Content") - def has_add_permission(self, request): + def has_add_permission(self, request, obj): return False def has_delete_permission(self, request, obj=None): diff --git a/orchestra/contrib/issues/filters.py b/orchestra/contrib/issues/filters.py index 142fd1d4..d0431feb 100644 --- a/orchestra/contrib/issues/filters.py +++ b/orchestra/contrib/issues/filters.py @@ -1,5 +1,5 @@ from django.contrib.admin import SimpleListFilter -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from .models import Ticket diff --git a/orchestra/contrib/issues/forms.py b/orchestra/contrib/issues/forms.py index 292c85aa..137e7097 100644 --- a/orchestra/contrib/issues/forms.py +++ b/orchestra/contrib/issues/forms.py @@ -2,7 +2,7 @@ from django import forms from django.contrib.auth import get_user_model from django.utils.html import strip_tags from django.utils.safestring import mark_safe -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.templatetags.static import static from markdown import markdown diff --git a/orchestra/contrib/issues/migrations/0001_initial.py b/orchestra/contrib/issues/migrations/0001_initial.py deleted file mode 100644 index 0c76499c..00000000 --- a/orchestra/contrib/issues/migrations/0001_initial.py +++ /dev/null @@ -1,77 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -import django.db.models.deletion -from django.db import models, migrations -import orchestra.models.fields -from django.conf import settings - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.CreateModel( - name='Message', - fields=[ - ('id', models.AutoField(primary_key=True, serialize=False, auto_created=True, verbose_name='ID')), - ('author_name', models.CharField(blank=True, max_length=256, verbose_name='author name')), - ('content', models.TextField(verbose_name='content')), - ('created_on', models.DateTimeField(auto_now_add=True, verbose_name='created on')), - ('author', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='ticket_messages', to=settings.AUTH_USER_MODEL, verbose_name='author')), - ], - options={ - 'get_latest_by': 'id', - }, - ), - migrations.CreateModel( - name='Queue', - fields=[ - ('id', models.AutoField(primary_key=True, serialize=False, auto_created=True, verbose_name='ID')), - ('name', models.CharField(max_length=128, verbose_name='name', unique=True)), - ('verbose_name', models.CharField(blank=True, max_length=128, verbose_name='verbose_name')), - ('default', models.BooleanField(verbose_name='default', default=False)), - ('notify', orchestra.models.fields.MultiSelectField(blank=True, max_length=256, help_text='Contacts to notify by email', verbose_name='notify', default=('SUPPORT', 'ADMIN', 'BILLING', 'TECH', 'ADDS', 'EMERGENCY'), choices=[('SUPPORT', 'Support tickets'), ('ADMIN', 'Administrative'), ('BILLING', 'Billing'), ('TECH', 'Technical'), ('ADDS', 'Announcements'), ('EMERGENCY', 'Emergency contact')])), - ], - ), - migrations.CreateModel( - name='Ticket', - fields=[ - ('id', models.AutoField(primary_key=True, serialize=False, auto_created=True, verbose_name='ID')), - ('creator_name', models.CharField(blank=True, max_length=256, verbose_name='creator name')), - ('subject', models.CharField(max_length=256, verbose_name='subject')), - ('description', models.TextField(verbose_name='description')), - ('priority', models.CharField(max_length=32, default='MEDIUM', verbose_name='priority', choices=[('HIGH', 'High'), ('MEDIUM', 'Medium'), ('LOW', 'Low')])), - ('state', models.CharField(max_length=32, default='NEW', verbose_name='state', choices=[('NEW', 'New'), ('IN_PROGRESS', 'In Progress'), ('RESOLVED', 'Resolved'), ('FEEDBACK', 'Feedback'), ('REJECTED', 'Rejected'), ('CLOSED', 'Closed')])), - ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='created')), - ('updated_at', models.DateTimeField(auto_now=True, verbose_name='modified')), - ('cc', models.TextField(blank=True, help_text='emails to send a carbon copy to', verbose_name='CC')), - ('creator', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='tickets_created', null=True, to=settings.AUTH_USER_MODEL, verbose_name='created by')), - ('owner', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, blank=True, related_name='tickets_owned', null=True, to=settings.AUTH_USER_MODEL, verbose_name='assigned to')), - ('queue', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, blank=True, related_name='tickets', null=True, to='issues.Queue')), - ], - options={ - 'ordering': ['-updated_at'], - }, - ), - migrations.CreateModel( - name='TicketTracker', - fields=[ - ('id', models.AutoField(primary_key=True, serialize=False, auto_created=True, verbose_name='ID')), - ('ticket', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='trackers', to='issues.Ticket', verbose_name='ticket')), - ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='ticket_trackers', to=settings.AUTH_USER_MODEL, verbose_name='user')), - ], - ), - migrations.AddField( - model_name='message', - name='ticket', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='messages', to='issues.Ticket', verbose_name='ticket'), - ), - migrations.AlterUniqueTogether( - name='tickettracker', - unique_together=set([('ticket', 'user')]), - ), - ] diff --git a/orchestra/contrib/issues/migrations/0001_squashed_0004_auto_20170528_2011.py b/orchestra/contrib/issues/migrations/0001_squashed_0004_auto_20170528_2011.py deleted file mode 100644 index 2763cf79..00000000 --- a/orchestra/contrib/issues/migrations/0001_squashed_0004_auto_20170528_2011.py +++ /dev/null @@ -1,114 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2021-04-22 11:27 -from __future__ import unicode_literals - -import datetime -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion -from django.utils.timezone import utc -import orchestra.models.fields - - -class Migration(migrations.Migration): - - replaces = [('issues', '0001_initial'), ('issues', '0002_auto_20150709_1018'), ('issues', '0003_auto_20160320_1127'), ('issues', '0004_auto_20170528_2011')] - - initial = True - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.CreateModel( - name='Message', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('author_name', models.CharField(blank=True, max_length=256, verbose_name='author name')), - ('content', models.TextField(verbose_name='content')), - ('created_on', models.DateTimeField(auto_now_add=True, verbose_name='created on')), - ('author', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='ticket_messages', to=settings.AUTH_USER_MODEL, verbose_name='author')), - ], - options={ - 'get_latest_by': 'id', - }, - ), - migrations.CreateModel( - name='Queue', - 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')), - ('verbose_name', models.CharField(blank=True, max_length=128, verbose_name='verbose_name')), - ('default', models.BooleanField(default=False, verbose_name='default')), - ('notify', orchestra.models.fields.MultiSelectField(blank=True, choices=[('SUPPORT', 'Support tickets'), ('ADMIN', 'Administrative'), ('BILLING', 'Billing'), ('TECH', 'Technical'), ('ADDS', 'Announcements'), ('EMERGENCY', 'Emergency contact')], default=('SUPPORT', 'ADMIN', 'BILLING', 'TECH', 'ADDS', 'EMERGENCY'), help_text='Contacts to notify by email', max_length=256, verbose_name='notify')), - ], - ), - migrations.CreateModel( - name='Ticket', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('creator_name', models.CharField(blank=True, max_length=256, verbose_name='creator name')), - ('subject', models.CharField(max_length=256, verbose_name='subject')), - ('description', models.TextField(verbose_name='description')), - ('priority', models.CharField(choices=[('HIGH', 'High'), ('MEDIUM', 'Medium'), ('LOW', 'Low')], default='MEDIUM', max_length=32, verbose_name='priority')), - ('state', models.CharField(choices=[('NEW', 'New'), ('IN_PROGRESS', 'In Progress'), ('RESOLVED', 'Resolved'), ('FEEDBACK', 'Feedback'), ('REJECTED', 'Rejected'), ('CLOSED', 'Closed')], default='NEW', max_length=32, verbose_name='state')), - ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='created')), - ('updated_at', models.DateTimeField(auto_now=True, verbose_name='modified')), - ('cc', models.TextField(blank=True, help_text='emails to send a carbon copy to', verbose_name='CC')), - ('creator', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tickets_created', to=settings.AUTH_USER_MODEL, verbose_name='created by')), - ('owner', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tickets_owned', to=settings.AUTH_USER_MODEL, verbose_name='assigned to')), - ('queue', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tickets', to='issues.Queue')), - ], - options={ - 'ordering': ['-updated_at'], - }, - ), - migrations.CreateModel( - name='TicketTracker', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('ticket', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='trackers', to='issues.Ticket', verbose_name='ticket')), - ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='ticket_trackers', to=settings.AUTH_USER_MODEL, verbose_name='user')), - ], - ), - migrations.AddField( - model_name='message', - name='ticket', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='messages', to='issues.Ticket', verbose_name='ticket'), - ), - migrations.AlterUniqueTogether( - name='tickettracker', - unique_together=set([('ticket', 'user')]), - ), - migrations.AlterField( - model_name='ticket', - name='created_at', - field=models.DateTimeField(auto_now_add=True, db_index=True, verbose_name='created'), - ), - migrations.RemoveField( - model_name='message', - name='created_on', - ), - migrations.AddField( - model_name='message', - name='created_at', - field=models.DateTimeField(auto_now_add=True, default=datetime.datetime(2016, 3, 20, 10, 27, 45, 766388, tzinfo=utc), verbose_name='created at'), - preserve_default=False, - ), - migrations.AlterField( - model_name='ticket', - name='creator', - field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='tickets_created', to=settings.AUTH_USER_MODEL, verbose_name='created by'), - ), - migrations.AlterField( - model_name='ticket', - name='owner', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='tickets_owned', to=settings.AUTH_USER_MODEL, verbose_name='assigned to'), - ), - migrations.AlterField( - model_name='ticket', - name='queue', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='tickets', to='issues.Queue'), - ), - ] diff --git a/orchestra/contrib/issues/migrations/0002_auto_20150709_1018.py b/orchestra/contrib/issues/migrations/0002_auto_20150709_1018.py deleted file mode 100644 index b0ceac03..00000000 --- a/orchestra/contrib/issues/migrations/0002_auto_20150709_1018.py +++ /dev/null @@ -1,19 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('issues', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='ticket', - name='created_at', - field=models.DateTimeField(db_index=True, auto_now_add=True, verbose_name='created'), - ), - ] diff --git a/orchestra/contrib/issues/migrations/0003_auto_20160320_1127.py b/orchestra/contrib/issues/migrations/0003_auto_20160320_1127.py deleted file mode 100644 index fbf2a1fe..00000000 --- a/orchestra/contrib/issues/migrations/0003_auto_20160320_1127.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations, models -import datetime -from django.utils.timezone import utc - - -class Migration(migrations.Migration): - - dependencies = [ - ('issues', '0002_auto_20150709_1018'), - ] - - operations = [ - migrations.RemoveField( - model_name='message', - name='created_on', - ), - migrations.AddField( - model_name='message', - name='created_at', - field=models.DateTimeField(auto_now_add=True, default=datetime.datetime(2016, 3, 20, 10, 27, 45, 766388, tzinfo=utc), verbose_name='created at'), - preserve_default=False, - ), - ] diff --git a/orchestra/contrib/issues/migrations/0004_auto_20170528_2011.py b/orchestra/contrib/issues/migrations/0004_auto_20170528_2011.py deleted file mode 100644 index 60427054..00000000 --- a/orchestra/contrib/issues/migrations/0004_auto_20170528_2011.py +++ /dev/null @@ -1,32 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-05-28 18:11 -from __future__ import unicode_literals - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('issues', '0003_auto_20160320_1127'), - ] - - operations = [ - migrations.AlterField( - model_name='ticket', - name='creator', - field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='tickets_created', to=settings.AUTH_USER_MODEL, verbose_name='created by'), - ), - migrations.AlterField( - model_name='ticket', - name='owner', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='tickets_owned', to=settings.AUTH_USER_MODEL, verbose_name='assigned to'), - ), - migrations.AlterField( - model_name='ticket', - name='queue', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='tickets', to='issues.Queue'), - ), - ] diff --git a/orchestra/contrib/issues/migrations/__init__.py b/orchestra/contrib/issues/migrations/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/orchestra/contrib/issues/models.py b/orchestra/contrib/issues/models.py index 8c783ea3..717f3acf 100644 --- a/orchestra/contrib/issues/models.py +++ b/orchestra/contrib/issues/models.py @@ -1,7 +1,7 @@ from django.conf import settings as djsettings from django.db import models from django.db.models import query, Q -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.contrib.contacts import settings as contacts_settings from orchestra.contrib.contacts.models import Contact diff --git a/orchestra/contrib/letsencrypt/actions.py b/orchestra/contrib/letsencrypt/actions.py index b484494f..375933ac 100644 --- a/orchestra/contrib/letsencrypt/actions.py +++ b/orchestra/contrib/letsencrypt/actions.py @@ -1,7 +1,7 @@ from django.contrib import messages, admin from django.template.response import TemplateResponse from django.utils.safestring import mark_safe -from django.utils.translation import ungettext, ugettext, ugettext_lazy as _ +from django.utils.translation import ngettext, gettext, gettext_lazy as _ from orchestra.admin.utils import admin_link from orchestra.contrib.orchestration import Operation, helpers @@ -16,12 +16,12 @@ def letsencrypt(modeladmin, request, queryset): content_error = '' contentless = queryset.exclude(content__path='/').distinct() if contentless: - content_error = ungettext( - ugettext("Selected website %s doesn't have a webapp mounted on /."), - ugettext("Selected websites %s don't have a webapp mounted on /."), + content_error = ngettext( + gettext("Selected website %s doesn't have a webapp mounted on /."), + gettext("Selected websites %s don't have a webapp mounted on /."), len(contentless), ) - content_error += ugettext("
Websites need a webapp (e.g. static) mounted on / " + content_error += gettext("
Websites need a webapp (e.g. static) mounted on / " "for let's encrypt HTTP-01 challenge to work.") content_error = content_error % ', '.join((admin_link()(website) for website in contentless)) content_error = '' % content_error @@ -76,19 +76,19 @@ def letsencrypt(modeladmin, request, queryset): 'no_https': no_https } if errors: - msg = ungettext( + msg = ngettext( _("No lineages found for websites {name}."), _("No lineages found for {errors} websites."), errors) messages.error(request, msg % context) if successes: - msg = ungettext( + msg = ngettext( _("{name} website has successfully been encrypted."), _("{successes} websites have been successfully encrypted."), successes) messages.success(request, msg.format(**context)) if no_https: - msg = ungettext( + msg = ngettext( _("{name} website does not have HTTPS protocol enabled."), _("{no_https} websites do not have HTTPS protocol enabled."), no_https) @@ -99,7 +99,7 @@ def letsencrypt(modeladmin, request, queryset): context = { 'title': _("Let's encrypt!"), 'action_name': _("Encrypt"), - 'content_message': ugettext("You are going to request certificates for the following domains.
" + 'content_message': gettext("You are going to request certificates for the following domains.
" "This operation is safe to run multiple times, " "existing certificates will not be regenerated. " "Also notice that let's encrypt does not currently support wildcard certificates.") + content_error, diff --git a/orchestra/contrib/letsencrypt/forms.py b/orchestra/contrib/letsencrypt/forms.py index ef8cbf39..9d1db1dc 100644 --- a/orchestra/contrib/letsencrypt/forms.py +++ b/orchestra/contrib/letsencrypt/forms.py @@ -1,6 +1,6 @@ from django import forms from django.core.exceptions import ValidationError -from django.utils.translation import ungettext, ugettext_lazy as _ +from django.utils.translation import ngettext, gettext_lazy as _ from .helpers import is_valid_domain diff --git a/orchestra/contrib/lists/admin.py b/orchestra/contrib/lists/admin.py index 8332fe10..d356d726 100644 --- a/orchestra/contrib/lists/admin.py +++ b/orchestra/contrib/lists/admin.py @@ -1,7 +1,7 @@ from django.contrib import admin -from django.conf.urls import url +from django.urls import re_path as url from django.contrib.auth.admin import UserAdmin -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.admin import ExtendedModelAdmin, ChangePasswordAdminMixin from orchestra.admin.actions import disable, enable diff --git a/orchestra/contrib/lists/backends.py b/orchestra/contrib/lists/backends.py index c9e6f1dc..b6d4dc97 100644 --- a/orchestra/contrib/lists/backends.py +++ b/orchestra/contrib/lists/backends.py @@ -1,6 +1,6 @@ import textwrap -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.contrib.orchestration import ServiceController, replace from orchestra.contrib.resources import ServiceMonitor @@ -18,7 +18,7 @@ class MailmanVirtualDomainController(ServiceController): doc_settings = (settings, ('LISTS_VIRTUAL_ALIAS_DOMAINS_PATH',) ) - + def is_hosted_domain(self, domain): """ whether or not domain MX points to this server """ return domain.has_default_mx() @@ -48,11 +48,11 @@ class MailmanVirtualDomainController(ServiceController): def save(self, mail_list): context = self.get_context(mail_list) - #self.include_virtual_alias_domain(context) + self.include_virtual_alias_domain(context) def delete(self, mail_list): context = self.get_context(mail_list) - #self.exclude_virtual_alias_domain(context) + self.exclude_virtual_alias_domain(context) def commit(self): context = self.get_context_files() @@ -100,29 +100,70 @@ class MailmanController(MailmanVirtualDomainController): aliases = ['# %(banner)s' % context] for suffix in self.address_suffixes: context['suffix'] = suffix - # Because mailman doesn't properly handle lists aliases we need two virtual aliases - aliases.append("%(address_name)s%(suffix)s@%(domain)s\t%(name)s%(suffix)s@grups.pangea.org" % context) + # Because mailman doesn't properly handle lists aliases we need virtual aliases if context['address_name'] != context['name']: - # And another with the original list name; Mailman generates links with it - aliases.append("%(name)s%(suffix)s@%(domain)s\t%(name)s%(suffix)s" % context) + aliases.append("%(address_name)s%(suffix)s@%(domain)s\t%(name)s%(suffix)s@grups.pangea.org" % context) return '\n'.join(aliases) + def save(self, mail_list): context = self.get_context(mail_list) + # Create list cmd = "/opt/mailman/venv/bin/python /usr/local/admin/orchestra_mailman3/save.py %(name)s %(admin)s %(address_name)s@%(domain)s" % context if not mail_list.active: cmd += ' --inactive' self.append(cmd) + # Custom domain + if mail_list.address: + context.update({ + 'aliases': self.get_virtual_aliases(context), + 'num_entries': 2 if context['address_name'] != context['name'] else 1, + }) + self.append(textwrap.dedent("""\ + # Create list alias for custom domain + aliases='%(aliases)s' + if ! grep '\s\s*%(name)s\s*$' %(virtual_alias)s > /dev/null; then + echo "${aliases}" >> %(virtual_alias)s + UPDATED_VIRTUAL_ALIAS=1 + else + if grep -E '(%(address_name)s|%(name)s)@(%(address_domain)s|grups.pangea.org)' %(virtual_alias)s > /dev/null ; then + sed -i -e '/^.*%(name)s\(-admin\|-bounces\|-confirm\|-join\|-leave\|-owner\|-request\|-subscribe\|-unsubscribe\|@\).*$/d' \\ + -e '/# .*%(name)s$/d' %(virtual_alias)s + echo "${aliases}" >> %(virtual_alias)s + UPDATED_VIRTUAL_ALIAS=1 + fi + fi """) % context + ) + else: + self.append(textwrap.dedent("""\ + # Cleanup possible ex-custom domain + if grep '\s\s*%(name)s\s*$' %(virtual_alias)s > /dev/null; then + #sed -i "/^.*\s%(name)s\s*$/d" %(virtual_alias)s + sed -i -e '/^.*%(name)s\(-admin\|-bounces\|-confirm\|-join\|-leave\|-owner\|-request\|-subscribe\|-unsubscribe\|@\).*$/d' \\ + -e '/# .*%(name)s$/d' %(virtual_alias)s + fi""") % context + ) + + def delete(self, mail_list): context = self.get_context(mail_list) + + # Custom domain delete + self.append(textwrap.dedent("""\ + # Cleanup possible ex-custom domain + if grep '\s\s*%(name)s\s*$' %(virtual_alias)s > /dev/null; then + sed -i -e '/^.*%(name)s\(-admin\|-bounces\|-confirm\|-join\|-leave\|-owner\|-request\|-subscribe\|-unsubscribe\|@\).*$/d' \\ + -e '/# .*%(name)s$/d' %(virtual_alias)s + fi""") % context + ) + # Delete list - cmd = "/opt/mailman/venv/bin/python /usr/local/admin/orchestra_mailman3/delete.py %(name)s %(admin)s %(address_name)s@%(domain)s" % context - if not mail_list.active: - cmd += ' --inactive' + cmd = "/opt/mailman/venv/bin/python /usr/local/admin/orchestra_mailman3/delete.py %(name)s" % context self.append(cmd) - + + def commit(self): pass diff --git a/orchestra/contrib/lists/filters.py b/orchestra/contrib/lists/filters.py index 5271153d..8ba06ebb 100644 --- a/orchestra/contrib/lists/filters.py +++ b/orchestra/contrib/lists/filters.py @@ -1,5 +1,5 @@ from django.contrib.admin import SimpleListFilter -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ class HasCustomAddressListFilter(SimpleListFilter): diff --git a/orchestra/contrib/lists/migrations/0001_initial.py b/orchestra/contrib/lists/migrations/0001_initial.py deleted file mode 100644 index b6821076..00000000 --- a/orchestra/contrib/lists/migrations/0001_initial.py +++ /dev/null @@ -1,34 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations -from django.conf import settings -import django.db.models.deletion -import orchestra.core.validators - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('domains', '0001_initial'), - ] - - operations = [ - migrations.CreateModel( - name='List', - fields=[ - ('id', models.AutoField(auto_created=True, verbose_name='ID', serialize=False, primary_key=True)), - ('name', models.CharField(max_length=128, validators=[orchestra.core.validators.validate_name], unique=True, verbose_name='name', help_text='Default list address <name>@lists.orchestra.lan')), - ('address_name', models.CharField(max_length=128, validators=[orchestra.core.validators.validate_name], verbose_name='address name', blank=True)), - ('admin_email', models.EmailField(max_length=254, verbose_name='admin email', help_text='Administration email address')), - ('is_active', models.BooleanField(default=True, verbose_name='active', help_text='Designates whether this account should be treated as active. Unselect this instead of deleting accounts.')), - ('account', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='lists', to=settings.AUTH_USER_MODEL, verbose_name='Account')), - ('address_domain', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, null=True, blank=True, to='domains.Domain', verbose_name='address domain')), - ], - ), - migrations.AlterUniqueTogether( - name='list', - unique_together=set([('address_name', 'address_domain')]), - ), - ] diff --git a/orchestra/contrib/lists/migrations/0001_squashed_0004_auto_20210330_1049.py b/orchestra/contrib/lists/migrations/0001_squashed_0004_auto_20210330_1049.py deleted file mode 100644 index b630dd27..00000000 --- a/orchestra/contrib/lists/migrations/0001_squashed_0004_auto_20210330_1049.py +++ /dev/null @@ -1,69 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2021-04-22 11:27 -from __future__ import unicode_literals - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion -import orchestra.core.validators - - -class Migration(migrations.Migration): - - replaces = [('lists', '0001_initial'), ('lists', '0002_auto_20160912_1221'), ('lists', '0003_auto_20160912_1241'), ('lists', '0004_auto_20210330_1049')] - - initial = True - - dependencies = [ - ('domains', '0001_initial'), - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.CreateModel( - name='List', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(help_text='Default list address <name>@lists.orchestra.lan', max_length=128, unique=True, validators=[orchestra.core.validators.validate_name], verbose_name='name')), - ('address_name', models.CharField(blank=True, max_length=128, validators=[orchestra.core.validators.validate_name], verbose_name='address name')), - ('admin_email', models.EmailField(help_text='Administration email address', max_length=254, verbose_name='admin email')), - ('is_active', models.BooleanField(default=True, help_text='Designates whether this account should be treated as active. Unselect this instead of deleting accounts.', verbose_name='active')), - ('account', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='lists', to=settings.AUTH_USER_MODEL, verbose_name='Account')), - ('address_domain', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='domains.Domain', verbose_name='address domain')), - ], - ), - migrations.AlterUniqueTogether( - name='list', - unique_together=set([('address_name', 'address_domain')]), - ), - migrations.AlterField( - model_name='list', - name='address_domain', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='domains.Domain', verbose_name='address domain'), - ), - migrations.AlterField( - model_name='list', - name='address_name', - field=models.CharField(blank=True, max_length=52, validators=[orchestra.core.validators.validate_name], verbose_name='address name'), - ), - migrations.AlterField( - model_name='list', - name='name', - field=models.CharField(help_text='Default list address <name>@grups.pangea.org', max_length=52, unique=True, validators=[orchestra.core.validators.validate_name], verbose_name='name'), - ), - migrations.AlterField( - model_name='list', - name='address_name', - field=models.CharField(blank=True, max_length=64, validators=[orchestra.core.validators.validate_name], verbose_name='address name'), - ), - migrations.AlterField( - model_name='list', - name='name', - field=models.CharField(help_text='Default list address <name>@grups.pangea.org', max_length=64, unique=True, validators=[orchestra.core.validators.validate_name], verbose_name='name'), - ), - migrations.AlterField( - model_name='list', - name='name', - field=models.CharField(help_text='Default list address <name>@lists.orchestra.lan', max_length=64, unique=True, validators=[orchestra.core.validators.validate_name], verbose_name='name'), - ), - ] diff --git a/orchestra/contrib/lists/migrations/0002_auto_20160912_1221.py b/orchestra/contrib/lists/migrations/0002_auto_20160912_1221.py deleted file mode 100644 index 60ec2bf9..00000000 --- a/orchestra/contrib/lists/migrations/0002_auto_20160912_1221.py +++ /dev/null @@ -1,32 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-09-12 10:21 -from __future__ import unicode_literals - -from django.db import migrations, models -import django.db.models.deletion -import orchestra.core.validators - - -class Migration(migrations.Migration): - - dependencies = [ - ('lists', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='list', - name='address_domain', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='domains.Domain', verbose_name='address domain'), - ), - migrations.AlterField( - model_name='list', - name='address_name', - field=models.CharField(blank=True, max_length=52, validators=[orchestra.core.validators.validate_name], verbose_name='address name'), - ), - migrations.AlterField( - model_name='list', - name='name', - field=models.CharField(help_text='Default list address <name>@grups.pangea.org', max_length=52, unique=True, validators=[orchestra.core.validators.validate_name], verbose_name='name'), - ), - ] diff --git a/orchestra/contrib/lists/migrations/0003_auto_20160912_1241.py b/orchestra/contrib/lists/migrations/0003_auto_20160912_1241.py deleted file mode 100644 index 618e8b41..00000000 --- a/orchestra/contrib/lists/migrations/0003_auto_20160912_1241.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-09-12 10:41 -from __future__ import unicode_literals - -from django.db import migrations, models -import orchestra.core.validators - - -class Migration(migrations.Migration): - - dependencies = [ - ('lists', '0002_auto_20160912_1221'), - ] - - operations = [ - migrations.AlterField( - model_name='list', - name='address_name', - field=models.CharField(blank=True, max_length=64, validators=[orchestra.core.validators.validate_name], verbose_name='address name'), - ), - migrations.AlterField( - model_name='list', - name='name', - field=models.CharField(help_text='Default list address <name>@grups.pangea.org', max_length=64, unique=True, validators=[orchestra.core.validators.validate_name], verbose_name='name'), - ), - ] diff --git a/orchestra/contrib/lists/migrations/0004_auto_20210330_1049.py b/orchestra/contrib/lists/migrations/0004_auto_20210330_1049.py deleted file mode 100644 index 94055a3d..00000000 --- a/orchestra/contrib/lists/migrations/0004_auto_20210330_1049.py +++ /dev/null @@ -1,21 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2021-03-30 10:49 -from __future__ import unicode_literals - -from django.db import migrations, models -import orchestra.core.validators - - -class Migration(migrations.Migration): - - dependencies = [ - ('lists', '0003_auto_20160912_1241'), - ] - - operations = [ - migrations.AlterField( - model_name='list', - name='name', - field=models.CharField(help_text='Default list address <name>@lists.orchestra.lan', max_length=64, unique=True, validators=[orchestra.core.validators.validate_name], verbose_name='name'), - ), - ] diff --git a/orchestra/contrib/lists/migrations/__init__.py b/orchestra/contrib/lists/migrations/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/orchestra/contrib/lists/models.py b/orchestra/contrib/lists/models.py index a78580d9..8ac33723 100644 --- a/orchestra/contrib/lists/models.py +++ b/orchestra/contrib/lists/models.py @@ -1,7 +1,7 @@ from django.core.exceptions import ValidationError from django.db import models from django.utils.functional import cached_property -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.core.validators import validate_name diff --git a/orchestra/contrib/lists/serializers.py b/orchestra/contrib/lists/serializers.py index 317e3e77..593612ad 100644 --- a/orchestra/contrib/lists/serializers.py +++ b/orchestra/contrib/lists/serializers.py @@ -1,6 +1,6 @@ from django.core.validators import RegexValidator from django.forms import widgets -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from orchestra.api.serializers import SetPasswordHyperlinkedSerializer, RelatedHyperlinkedModelSerializer diff --git a/orchestra/contrib/lists/settings.py b/orchestra/contrib/lists/settings.py index 147b3d0e..9d5e25ae 100644 --- a/orchestra/contrib/lists/settings.py +++ b/orchestra/contrib/lists/settings.py @@ -21,20 +21,20 @@ LISTS_LIST_URL = Setting('LISTS_LIST_URL', LISTS_MAILMAN_POST_LOG_PATH = Setting('LISTS_MAILMAN_POST_LOG_PATH', - '/var/log/mailman/post' + '/var/log/mailman3/smtp' ) LISTS_MAILMAN_ROOT_DIR = Setting('LISTS_MAILMAN_ROOT_DIR', - '/var/lib/mailman' + '/var/lib/mailman3' ) LISTS_VIRTUAL_ALIAS_PATH = Setting('LISTS_VIRTUAL_ALIAS_PATH', - '/etc/postfix/mailman_virtual_aliases' + '/etc/postfix/mailman3_virtusertable' ) LISTS_VIRTUAL_ALIAS_DOMAINS_PATH = Setting('LISTS_VIRTUAL_ALIAS_DOMAINS_PATH', - '/etc/postfix/mailman_virtual_domains' + '/etc/postfix/mailman3_virtdomains' ) diff --git a/orchestra/contrib/mailboxes/admin.py b/orchestra/contrib/mailboxes/admin.py index 3314b1db..d1094d3f 100644 --- a/orchestra/contrib/mailboxes/admin.py +++ b/orchestra/contrib/mailboxes/admin.py @@ -8,7 +8,7 @@ from django.db.models import F, Count, Value as V from django.db.models.functions import Concat from django.utils.html import format_html, format_html_join from django.utils.safestring import mark_safe -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.admin import ExtendedModelAdmin, ChangePasswordAdminMixin from orchestra.admin.actions import disable, enable diff --git a/orchestra/contrib/mailboxes/backends.py b/orchestra/contrib/mailboxes/backends.py index 59904e02..c15c42fb 100644 --- a/orchestra/contrib/mailboxes/backends.py +++ b/orchestra/contrib/mailboxes/backends.py @@ -4,7 +4,7 @@ import re import textwrap from django.core.exceptions import ObjectDoesNotExist -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.contrib.orchestration import ServiceController from orchestra.contrib.resources import ServiceMonitor @@ -437,15 +437,20 @@ class DovecotMaildirDisk(ServiceMonitor): def prepare(self): super().prepare() current_date = self.current_date.strftime("%Y-%m-%d %H:%M:%S %Z") + # self.append(textwrap.dedent("""\ + # function monitor () { + # awk 'BEGIN { size = 0 } NR > 1 { size += $1 } END { print size }' $1 || echo 0 + # }""")) self.append(textwrap.dedent("""\ function monitor () { - awk 'BEGIN { size = 0 } NR > 1 { size += $1 } END { print size }' $1 || echo 0 + SIZE=$(du -sb $1/Maildir/ 2> /dev/null || echo 0) && echo $SIZE | awk '{print $1}' }""")) def monitor(self, mailbox): context = self.get_context(mailbox) - self.append("echo %(object_id)s $(monitor %(maildir_path)s)" % context) - + # self.append("echo %(object_id)s $(monitor %(maildir_path)s)" % context) + self.append("echo %(object_id)s $(monitor %(home)s)" % context) + def get_context(self, mailbox): context = { 'home': mailbox.get_home(), diff --git a/orchestra/contrib/mailboxes/filters.py b/orchestra/contrib/mailboxes/filters.py index 23c2f163..2c1dd603 100644 --- a/orchestra/contrib/mailboxes/filters.py +++ b/orchestra/contrib/mailboxes/filters.py @@ -1,5 +1,5 @@ from django.contrib.admin import SimpleListFilter -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ class HasMailboxListFilter(SimpleListFilter): diff --git a/orchestra/contrib/mailboxes/forms.py b/orchestra/contrib/mailboxes/forms.py index b4a5372d..522b608e 100644 --- a/orchestra/contrib/mailboxes/forms.py +++ b/orchestra/contrib/mailboxes/forms.py @@ -2,7 +2,7 @@ from django import forms from django.contrib.admin import widgets from django.core.exceptions import ValidationError from django.utils.safestring import mark_safe -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.forms import UserCreationForm, UserChangeForm from orchestra.utils.python import AttrDict diff --git a/orchestra/contrib/mailboxes/migrations/0001_initial.py b/orchestra/contrib/mailboxes/migrations/0001_initial.py deleted file mode 100644 index c2434c15..00000000 --- a/orchestra/contrib/mailboxes/migrations/0001_initial.py +++ /dev/null @@ -1,66 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations -from django.conf import settings -import django.db.models.deletion -import orchestra.contrib.mailboxes.validators -import django.core.validators - - -class Migration(migrations.Migration): - - dependencies = [ - ('domains', '0001_initial'), - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.CreateModel( - name='Address', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(verbose_name='name', validators=[orchestra.contrib.mailboxes.validators.validate_emailname], blank=True, help_text='Address name, left blank for a catch-all address', max_length=64)), - ('forward', models.CharField(verbose_name='forward', validators=[orchestra.contrib.mailboxes.validators.validate_forward], blank=True, help_text='Space separated email addresses or mailboxes', max_length=256)), - ('account', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, related_name='addresses', verbose_name='Account')), - ('domain', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='domains.Domain', related_name='addresses', verbose_name='domain')), - ], - options={ - 'verbose_name_plural': 'addresses', - }, - ), - migrations.CreateModel( - name='Autoresponse', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('subject', models.CharField(verbose_name='subject', max_length=256)), - ('message', models.TextField(verbose_name='message')), - ('enabled', models.BooleanField(verbose_name='enabled', default=False)), - ('address', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='mailboxes.Address', related_name='autoresponse', verbose_name='address')), - ], - ), - migrations.CreateModel( - name='Mailbox', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(verbose_name='name', validators=[django.core.validators.RegexValidator('^[\\w.@+-]+$', 'Enter a valid mailbox name.')], help_text='Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.', max_length=64, unique=True)), - ('password', models.CharField(verbose_name='password', max_length=128)), - ('filtering', models.CharField(choices=[('CUSTOM', 'Custom filtering'), ('REDIRECT', 'Archive spam (X-Spam-Score≥9)'), ('DISABLE', 'Disable'), ('REJECT', 'Reject spam (X-Spam-Score≥9)')], max_length=16, default='REDIRECT')), - ('custom_filtering', models.TextField(verbose_name='filtering', validators=[orchestra.contrib.mailboxes.validators.validate_sieve], blank=True, help_text='Arbitrary email filtering in sieve language. This overrides any automatic junk email filtering')), - ('is_active', models.BooleanField(verbose_name='active', default=True)), - ('account', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, related_name='mailboxes', verbose_name='account')), - ], - options={ - 'verbose_name_plural': 'mailboxes', - }, - ), - migrations.AddField( - model_name='address', - name='mailboxes', - field=models.ManyToManyField(verbose_name='mailboxes', to='mailboxes.Mailbox', blank=True, related_name='addresses'), - ), - migrations.AlterUniqueTogether( - name='address', - unique_together=set([('name', 'domain')]), - ), - ] diff --git a/orchestra/contrib/mailboxes/migrations/0001_squashed_0003_auto_20170528_2011.py b/orchestra/contrib/mailboxes/migrations/0001_squashed_0003_auto_20170528_2011.py deleted file mode 100644 index c66017bf..00000000 --- a/orchestra/contrib/mailboxes/migrations/0001_squashed_0003_auto_20170528_2011.py +++ /dev/null @@ -1,71 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2021-04-22 11:27 -from __future__ import unicode_literals - -from django.conf import settings -import django.core.validators -from django.db import migrations, models -import django.db.models.deletion -import orchestra.contrib.mailboxes.validators - - -class Migration(migrations.Migration): - - replaces = [('mailboxes', '0001_initial'), ('mailboxes', '0002_auto_20160219_1032'), ('mailboxes', '0003_auto_20170528_2011')] - - initial = True - - dependencies = [ - ('domains', '0001_initial'), - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.CreateModel( - name='Address', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(blank=True, help_text='Address name, left blank for a catch-all address', max_length=64, validators=[orchestra.contrib.mailboxes.validators.validate_emailname], verbose_name='name')), - ('forward', models.CharField(blank=True, help_text='Space separated email addresses or mailboxes', max_length=256, validators=[orchestra.contrib.mailboxes.validators.validate_forward], verbose_name='forward')), - ('account', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='addresses', to=settings.AUTH_USER_MODEL, verbose_name='Account')), - ('domain', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='addresses', to='domains.Domain', verbose_name='domain')), - ], - options={ - 'verbose_name_plural': 'addresses', - }, - ), - migrations.CreateModel( - name='Autoresponse', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('subject', models.CharField(max_length=256, verbose_name='subject')), - ('message', models.TextField(verbose_name='message')), - ('enabled', models.BooleanField(default=False, verbose_name='enabled')), - ('address', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='autoresponse', to='mailboxes.Address', verbose_name='address')), - ], - ), - migrations.CreateModel( - name='Mailbox', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(db_index=True, help_text='Required. 32 characters or fewer. Letters, digits and ./-/_ only.', max_length=32, unique=True, validators=[django.core.validators.RegexValidator('^[\\w.-]+$', 'Enter a valid mailbox name.')], verbose_name='name')), - ('password', models.CharField(max_length=128, verbose_name='password')), - ('filtering', models.CharField(choices=[('CUSTOM', 'Custom filtering'), ('DISABLE', 'Disable'), ('REDIRECT', 'Archive spam (Score≥8)'), ('REDIRECT5', 'Archive spam (Score≥5)'), ('REJECT', 'Reject spam (Score≥8)'), ('REJECT5', 'Reject spam (Score≥5)')], default='REDIRECT', max_length=16)), - ('custom_filtering', models.TextField(blank=True, help_text="Arbitrary email filtering in sieve language. This overrides any automatic junk email filtering", validators=[orchestra.contrib.mailboxes.validators.validate_sieve], verbose_name='filtering')), - ('is_active', models.BooleanField(default=True, verbose_name='active')), - ('account', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='mailboxes', to=settings.AUTH_USER_MODEL, verbose_name='account')), - ], - options={ - 'verbose_name_plural': 'mailboxes', - }, - ), - migrations.AddField( - model_name='address', - name='mailboxes', - field=models.ManyToManyField(blank=True, related_name='addresses', to='mailboxes.Mailbox', verbose_name='mailboxes'), - ), - migrations.AlterUniqueTogether( - name='address', - unique_together=set([('name', 'domain')]), - ), - ] diff --git a/orchestra/contrib/mailboxes/migrations/0002_auto_20160219_1032.py b/orchestra/contrib/mailboxes/migrations/0002_auto_20160219_1032.py deleted file mode 100644 index 99b89e53..00000000 --- a/orchestra/contrib/mailboxes/migrations/0002_auto_20160219_1032.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations, models -import django.core.validators - - -class Migration(migrations.Migration): - - dependencies = [ - ('mailboxes', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='mailbox', - name='filtering', - field=models.CharField(max_length=16, choices=[('CUSTOM', 'Custom filtering'), ('DISABLE', 'Disable'), ('REDIRECT', 'Archive spam (Score≥8)'), ('REDIRECT5', 'Archive spam (Score≥5)'), ('REJECT', 'Reject spam (Score≥8)'), ('REJECT5', 'Reject spam (Score≥5)')], default='REDIRECT'), - ), - migrations.AlterField( - model_name='mailbox', - name='name', - field=models.CharField(max_length=64, db_index=True, unique=True, help_text='Required. 32 characters or fewer. Letters, digits and ./-/_ only.', validators=[django.core.validators.RegexValidator('^[\\w.-]+$', 'Enter a valid mailbox name.')], verbose_name='name'), - ), - ] diff --git a/orchestra/contrib/mailboxes/migrations/0003_auto_20170528_2011.py b/orchestra/contrib/mailboxes/migrations/0003_auto_20170528_2011.py deleted file mode 100644 index 2ea0c06b..00000000 --- a/orchestra/contrib/mailboxes/migrations/0003_auto_20170528_2011.py +++ /dev/null @@ -1,27 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-05-28 18:11 -from __future__ import unicode_literals - -import django.core.validators -from django.db import migrations, models -import orchestra.contrib.mailboxes.validators - - -class Migration(migrations.Migration): - - dependencies = [ - ('mailboxes', '0002_auto_20160219_1032'), - ] - - operations = [ - migrations.AlterField( - model_name='mailbox', - name='custom_filtering', - field=models.TextField(blank=True, help_text="Arbitrary email filtering in sieve language. This overrides any automatic junk email filtering", validators=[orchestra.contrib.mailboxes.validators.validate_sieve], verbose_name='filtering'), - ), - migrations.AlterField( - model_name='mailbox', - name='name', - field=models.CharField(db_index=True, help_text='Required. 32 characters or fewer. Letters, digits and ./-/_ only.', max_length=32, unique=True, validators=[django.core.validators.RegexValidator('^[\\w.-]+$', 'Enter a valid mailbox name.')], verbose_name='name'), - ), - ] diff --git a/orchestra/contrib/mailboxes/migrations/__init__.py b/orchestra/contrib/mailboxes/migrations/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/orchestra/contrib/mailboxes/models.py b/orchestra/contrib/mailboxes/models.py index a38078ca..7122b5e1 100644 --- a/orchestra/contrib/mailboxes/models.py +++ b/orchestra/contrib/mailboxes/models.py @@ -6,7 +6,7 @@ from django.contrib.auth.hashers import make_password from django.core.validators import RegexValidator, ValidationError from django.db import models from django.utils.functional import cached_property -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from . import validators, settings diff --git a/orchestra/contrib/mailboxes/settings.py b/orchestra/contrib/mailboxes/settings.py index f8dccc50..c9412754 100644 --- a/orchestra/contrib/mailboxes/settings.py +++ b/orchestra/contrib/mailboxes/settings.py @@ -3,7 +3,7 @@ import textwrap from django.utils.functional import lazy from django.utils.safestring import mark_safe -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.contrib.settings import Setting from orchestra.core.validators import validate_name diff --git a/orchestra/contrib/mailboxes/validators.py b/orchestra/contrib/mailboxes/validators.py index 447a5feb..5a33b16a 100644 --- a/orchestra/contrib/mailboxes/validators.py +++ b/orchestra/contrib/mailboxes/validators.py @@ -3,7 +3,7 @@ import os import re from django.core.validators import ValidationError, EmailValidator -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.utils import paths from orchestra.utils.sys import run diff --git a/orchestra/contrib/mailer/admin.py b/orchestra/contrib/mailer/admin.py index 3e7371d5..9d508c11 100644 --- a/orchestra/contrib/mailer/admin.py +++ b/orchestra/contrib/mailer/admin.py @@ -8,7 +8,7 @@ from django.db.models import Count from django.shortcuts import redirect from django.utils.html import format_html from django.utils.safestring import mark_safe -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.admin import ExtendedModelAdmin from orchestra.admin.utils import admin_link, admin_colored, admin_date, wrap_admin_view @@ -115,7 +115,7 @@ class MessageAdmin(ExtendedModelAdmin): display_to.short_description = _("To") def get_urls(self): - from django.conf.urls import url + from django.urls import re_path as url urls = super().get_urls() info = self.model._meta.app_label, self.model._meta.model_name urls.insert(0, diff --git a/orchestra/contrib/mailer/engine.py b/orchestra/contrib/mailer/engine.py index 27a649ed..898f2041 100644 --- a/orchestra/contrib/mailer/engine.py +++ b/orchestra/contrib/mailer/engine.py @@ -1,3 +1,4 @@ + import smtplib from datetime import timedelta from socket import error as SocketError @@ -5,7 +6,6 @@ from socket import error as SocketError from django.core.mail import get_connection from django.db.models import Q from django.utils import timezone -from django.utils.encoding import smart_str from orchestra.utils.sys import LockFile, OperationLocked @@ -31,7 +31,7 @@ def send_message(message, connection=None, bulk=settings.MAILER_BULK_MESSAGES): return error = None try: - connection.connection.sendmail(message.from_address, [message.to_address], smart_str(message.content)) + connection.connection.sendmail(message.from_address, [message.to_address], message.content.encode()) except (SocketError, smtplib.SMTPSenderRefused, smtplib.SMTPRecipientsRefused, diff --git a/orchestra/contrib/mailer/migrations/0001_initial.py b/orchestra/contrib/mailer/migrations/0001_initial.py deleted file mode 100644 index ca6dcd3b..00000000 --- a/orchestra/contrib/mailer/migrations/0001_initial.py +++ /dev/null @@ -1,39 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -import django.db.models.deletion -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ] - - operations = [ - migrations.CreateModel( - name='Message', - fields=[ - ('id', models.AutoField(auto_created=True, serialize=False, verbose_name='ID', primary_key=True)), - ('state', models.CharField(choices=[('QUEUED', 'Queued'), ('SENT', 'Sent'), ('DEFERRED', 'Deferred'), ('FAILED', 'Failes')], default='QUEUED', verbose_name='State', max_length=16)), - ('priority', models.PositiveIntegerField(choices=[(0, 'Critical (not queued)'), (1, 'High'), (2, 'Normal'), (3, 'Low')], default=2, verbose_name='Priority')), - ('to_address', models.CharField(max_length=256)), - ('from_address', models.CharField(max_length=256)), - ('subject', models.CharField(max_length=256, verbose_name='subject')), - ('content', models.TextField(verbose_name='content')), - ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='created at')), - ('retries', models.PositiveIntegerField(default=0, verbose_name='retries')), - ('last_retry', models.DateTimeField(auto_now=True, verbose_name='last try')), - ], - ), - migrations.CreateModel( - name='SMTPLog', - fields=[ - ('id', models.AutoField(auto_created=True, serialize=False, verbose_name='ID', primary_key=True)), - ('result', models.CharField(choices=[('SUCCESS', 'Success'), ('FAILURE', 'Failure')], default='SUCCESS', max_length=16)), - ('date', models.DateTimeField(auto_now_add=True)), - ('log_message', models.TextField()), - ('message', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='mailer.Message', editable=False, related_name='logs')), - ], - ), - ] diff --git a/orchestra/contrib/mailer/migrations/0001_squashed_0005_auto_20160219_1056.py b/orchestra/contrib/mailer/migrations/0001_squashed_0005_auto_20160219_1056.py deleted file mode 100644 index 576ec469..00000000 --- a/orchestra/contrib/mailer/migrations/0001_squashed_0005_auto_20160219_1056.py +++ /dev/null @@ -1,89 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2021-04-22 11:28 -from __future__ import unicode_literals - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - replaces = [('mailer', '0001_initial'), ('mailer', '0002_auto_20150617_1021'), ('mailer', '0003_auto_20150617_1024'), ('mailer', '0004_auto_20150805_1328'), ('mailer', '0005_auto_20160219_1056')] - - initial = True - - dependencies = [ - ] - - operations = [ - migrations.CreateModel( - name='Message', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('state', models.CharField(choices=[('QUEUED', 'Queued'), ('SENT', 'Sent'), ('DEFERRED', 'Deferred'), ('FAILED', 'Failes')], default='QUEUED', max_length=16, verbose_name='State')), - ('priority', models.PositiveIntegerField(choices=[(0, 'Critical (not queued)'), (1, 'High'), (2, 'Normal'), (3, 'Low')], default=2, verbose_name='Priority')), - ('to_address', models.CharField(max_length=256)), - ('from_address', models.CharField(max_length=256)), - ('subject', models.CharField(max_length=256, verbose_name='subject')), - ('content', models.TextField(verbose_name='content')), - ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='created at')), - ('retries', models.PositiveIntegerField(default=0, verbose_name='retries')), - ('last_retry', models.DateTimeField(auto_now=True, verbose_name='last try')), - ], - ), - migrations.CreateModel( - name='SMTPLog', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('result', models.CharField(choices=[('SUCCESS', 'Success'), ('FAILURE', 'Failure')], default='SUCCESS', max_length=16)), - ('date', models.DateTimeField(auto_now_add=True)), - ('log_message', models.TextField()), - ('message', models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, related_name='logs', to='mailer.Message')), - ], - ), - migrations.RenameField( - model_name='message', - old_name='last_retry', - new_name='last_try', - ), - migrations.AlterField( - model_name='message', - name='last_try', - field=models.DateTimeField(verbose_name='last try'), - ), - migrations.AlterField( - model_name='message', - name='subject', - field=models.TextField(verbose_name='subject'), - ), - migrations.AlterField( - model_name='message', - name='last_try', - field=models.DateTimeField(null=True, verbose_name='last try'), - ), - migrations.AlterField( - model_name='message', - name='state', - field=models.CharField(choices=[('QUEUED', 'Queued'), ('SENT', 'Sent'), ('DEFERRED', 'Deferred'), ('FAILED', 'Failed')], default='QUEUED', max_length=16, verbose_name='State'), - ), - migrations.AlterField( - model_name='message', - name='last_try', - field=models.DateTimeField(db_index=True, null=True, verbose_name='last try'), - ), - migrations.AlterField( - model_name='message', - name='priority', - field=models.PositiveIntegerField(choices=[(0, 'Critical (not queued)'), (1, 'High'), (2, 'Normal'), (3, 'Low')], db_index=True, default=2, verbose_name='Priority'), - ), - migrations.AlterField( - model_name='message', - name='retries', - field=models.PositiveIntegerField(db_index=True, default=0, verbose_name='retries'), - ), - migrations.AlterField( - model_name='message', - name='state', - field=models.CharField(choices=[('QUEUED', 'Queued'), ('SENT', 'Sent'), ('DEFERRED', 'Deferred'), ('FAILED', 'Failed')], db_index=True, default='QUEUED', max_length=16, verbose_name='State'), - ), - ] diff --git a/orchestra/contrib/mailer/migrations/0002_auto_20150617_1021.py b/orchestra/contrib/mailer/migrations/0002_auto_20150617_1021.py deleted file mode 100644 index d0415e27..00000000 --- a/orchestra/contrib/mailer/migrations/0002_auto_20150617_1021.py +++ /dev/null @@ -1,24 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('mailer', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='message', - name='last_retry', - field=models.DateTimeField(verbose_name='last try'), - ), - migrations.AlterField( - model_name='message', - name='subject', - field=models.TextField(verbose_name='subject'), - ), - ] diff --git a/orchestra/contrib/mailer/migrations/0003_auto_20150617_1024.py b/orchestra/contrib/mailer/migrations/0003_auto_20150617_1024.py deleted file mode 100644 index 22bfb79c..00000000 --- a/orchestra/contrib/mailer/migrations/0003_auto_20150617_1024.py +++ /dev/null @@ -1,19 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('mailer', '0002_auto_20150617_1021'), - ] - - operations = [ - migrations.AlterField( - model_name='message', - name='last_retry', - field=models.DateTimeField(null=True, verbose_name='last try'), - ), - ] diff --git a/orchestra/contrib/mailer/migrations/0004_auto_20150805_1328.py b/orchestra/contrib/mailer/migrations/0004_auto_20150805_1328.py deleted file mode 100644 index d224585b..00000000 --- a/orchestra/contrib/mailer/migrations/0004_auto_20150805_1328.py +++ /dev/null @@ -1,24 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('mailer', '0003_auto_20150617_1024'), - ] - - operations = [ - migrations.RenameField( - model_name='message', - old_name='last_retry', - new_name='last_try', - ), - migrations.AlterField( - model_name='message', - name='state', - field=models.CharField(verbose_name='State', max_length=16, choices=[('QUEUED', 'Queued'), ('SENT', 'Sent'), ('DEFERRED', 'Deferred'), ('FAILED', 'Failed')], default='QUEUED'), - ), - ] diff --git a/orchestra/contrib/mailer/migrations/0005_auto_20160219_1056.py b/orchestra/contrib/mailer/migrations/0005_auto_20160219_1056.py deleted file mode 100644 index 8b3eca4b..00000000 --- a/orchestra/contrib/mailer/migrations/0005_auto_20160219_1056.py +++ /dev/null @@ -1,34 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('mailer', '0004_auto_20150805_1328'), - ] - - operations = [ - migrations.AlterField( - model_name='message', - name='last_try', - field=models.DateTimeField(null=True, db_index=True, verbose_name='last try'), - ), - migrations.AlterField( - model_name='message', - name='priority', - field=models.PositiveIntegerField(default=2, choices=[(0, 'Critical (not queued)'), (1, 'High'), (2, 'Normal'), (3, 'Low')], db_index=True, verbose_name='Priority'), - ), - migrations.AlterField( - model_name='message', - name='retries', - field=models.PositiveIntegerField(default=0, db_index=True, verbose_name='retries'), - ), - migrations.AlterField( - model_name='message', - name='state', - field=models.CharField(default='QUEUED', choices=[('QUEUED', 'Queued'), ('SENT', 'Sent'), ('DEFERRED', 'Deferred'), ('FAILED', 'Failed')], db_index=True, max_length=16, verbose_name='State'), - ), - ] diff --git a/orchestra/contrib/mailer/migrations/__init__.py b/orchestra/contrib/mailer/migrations/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/orchestra/contrib/mailer/models.py b/orchestra/contrib/mailer/models.py index f7c61aff..c905768c 100644 --- a/orchestra/contrib/mailer/models.py +++ b/orchestra/contrib/mailer/models.py @@ -1,5 +1,5 @@ from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from . import settings diff --git a/orchestra/contrib/mailer/settings.py b/orchestra/contrib/mailer/settings.py index 0cd6da8a..e040a523 100644 --- a/orchestra/contrib/mailer/settings.py +++ b/orchestra/contrib/mailer/settings.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.contrib.settings import Setting diff --git a/orchestra/contrib/mailer/templates/admin/mailer/message/change_list.html b/orchestra/contrib/mailer/templates/admin/mailer/message/change_list.html index 93f17d12..d39ecb99 100644 --- a/orchestra/contrib/mailer/templates/admin/mailer/message/change_list.html +++ b/orchestra/contrib/mailer/templates/admin/mailer/message/change_list.html @@ -1,5 +1,5 @@ {% extends "admin/change_list.html" %} -{% load i18n admin_urls admin_static admin_list %} +{% load i18n admin_urls static admin_list %} {% block object-tools-items %} diff --git a/orchestra/contrib/miscellaneous/admin.py b/orchestra/contrib/miscellaneous/admin.py index ff4920e6..2fce1981 100644 --- a/orchestra/contrib/miscellaneous/admin.py +++ b/orchestra/contrib/miscellaneous/admin.py @@ -4,7 +4,7 @@ from django.urls import reverse from django.db import models from django.utils.html import format_html from django.utils.safestring import mark_safe -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.admin import ExtendedModelAdmin from orchestra.admin.actions import disable, enable diff --git a/orchestra/contrib/miscellaneous/migrations/0001_initial.py b/orchestra/contrib/miscellaneous/migrations/0001_initial.py deleted file mode 100644 index 53b560e6..00000000 --- a/orchestra/contrib/miscellaneous/migrations/0001_initial.py +++ /dev/null @@ -1,49 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations -import django.db.models.deletion -import orchestra.core.validators -from django.conf import settings -import orchestra.models.fields - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.CreateModel( - name='Miscellaneous', - fields=[ - ('id', models.AutoField(auto_created=True, serialize=False, verbose_name='ID', primary_key=True)), - ('identifier', orchestra.models.fields.NullableCharField(max_length=256, help_text='A unique identifier for this service.', unique=True, null=True, verbose_name='identifier')), - ('description', models.TextField(blank=True, verbose_name='description')), - ('amount', models.PositiveIntegerField(default=1, verbose_name='amount')), - ('is_active', models.BooleanField(default=True, help_text='Designates whether this service should be treated as active. Unselect this instead of deleting services.', verbose_name='active')), - ('account', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='miscellaneous', verbose_name='account', to=settings.AUTH_USER_MODEL)), - ], - options={ - 'verbose_name_plural': 'miscellaneous', - }, - ), - migrations.CreateModel( - name='MiscService', - fields=[ - ('id', models.AutoField(auto_created=True, serialize=False, verbose_name='ID', primary_key=True)), - ('name', models.CharField(max_length=32, help_text='Raw name used for internal referenciation, i.e. service match definition', unique=True, verbose_name='name', validators=[orchestra.core.validators.validate_name])), - ('verbose_name', models.CharField(max_length=256, help_text='Human readable name', blank=True, verbose_name='verbose name')), - ('description', models.TextField(help_text='Optional description', blank=True, verbose_name='description')), - ('has_identifier', models.BooleanField(default=True, help_text='Designates if this service has a unique text field that identifies it or not.', verbose_name='has identifier')), - ('has_amount', models.BooleanField(default=False, help_text='Designates whether this service has amount property or not.', verbose_name='has amount')), - ('is_active', models.BooleanField(default=True, help_text='Whether new instances of this service can be created or not. Unselect this instead of deleting services.', verbose_name='active')), - ], - ), - migrations.AddField( - model_name='miscellaneous', - name='service', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='instances', verbose_name='service', to='miscellaneous.MiscService'), - ), - ] diff --git a/orchestra/contrib/miscellaneous/migrations/0001_squashed_0002_auto_20150723_1252.py b/orchestra/contrib/miscellaneous/migrations/0001_squashed_0002_auto_20150723_1252.py deleted file mode 100644 index e5d5e6d0..00000000 --- a/orchestra/contrib/miscellaneous/migrations/0001_squashed_0002_auto_20150723_1252.py +++ /dev/null @@ -1,59 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2021-04-22 11:28 -from __future__ import unicode_literals - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion -import orchestra.core.validators -import orchestra.models.fields - - -class Migration(migrations.Migration): - - replaces = [('miscellaneous', '0001_initial'), ('miscellaneous', '0002_auto_20150723_1252')] - - initial = True - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.CreateModel( - name='Miscellaneous', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('identifier', orchestra.models.fields.NullableCharField(help_text='A unique identifier for this service.', max_length=256, null=True, unique=True, verbose_name='identifier')), - ('description', models.TextField(blank=True, verbose_name='description')), - ('amount', models.PositiveIntegerField(default=1, verbose_name='amount')), - ('is_active', models.BooleanField(default=True, help_text='Designates whether this service should be treated as active. Unselect this instead of deleting services.', verbose_name='active')), - ('account', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='miscellaneous', to=settings.AUTH_USER_MODEL, verbose_name='account')), - ], - options={ - 'verbose_name_plural': 'miscellaneous', - }, - ), - migrations.CreateModel( - name='MiscService', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(help_text='Raw name used for internal referenciation, i.e. service match definition', max_length=32, unique=True, validators=[orchestra.core.validators.validate_name], verbose_name='name')), - ('verbose_name', models.CharField(blank=True, help_text='Human readable name', max_length=256, verbose_name='verbose name')), - ('description', models.TextField(blank=True, help_text='Optional description', verbose_name='description')), - ('has_identifier', models.BooleanField(default=True, help_text='Designates if this service has a unique text field that identifies it or not.', verbose_name='has identifier')), - ('has_amount', models.BooleanField(default=False, help_text='Designates whether this service has amount property or not.', verbose_name='has amount')), - ('is_active', models.BooleanField(default=True, help_text='Whether new instances of this service can be created or not. Unselect this instead of deleting services.', verbose_name='active')), - ], - ), - migrations.AddField( - model_name='miscellaneous', - name='service', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='instances', to='miscellaneous.MiscService', verbose_name='service'), - ), - migrations.AlterField( - model_name='miscellaneous', - name='identifier', - field=orchestra.models.fields.NullableCharField(db_index=True, help_text='A unique identifier for this service.', max_length=256, null=True, unique=True, verbose_name='identifier'), - ), - ] diff --git a/orchestra/contrib/miscellaneous/migrations/0002_auto_20150723_1252.py b/orchestra/contrib/miscellaneous/migrations/0002_auto_20150723_1252.py deleted file mode 100644 index b7f76231..00000000 --- a/orchestra/contrib/miscellaneous/migrations/0002_auto_20150723_1252.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations -import orchestra.models.fields - - -class Migration(migrations.Migration): - - dependencies = [ - ('miscellaneous', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='miscellaneous', - name='identifier', - field=orchestra.models.fields.NullableCharField(db_index=True, unique=True, help_text='A unique identifier for this service.', null=True, max_length=256, verbose_name='identifier'), - ), - ] diff --git a/orchestra/contrib/miscellaneous/migrations/__init__.py b/orchestra/contrib/miscellaneous/migrations/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/orchestra/contrib/miscellaneous/models.py b/orchestra/contrib/miscellaneous/models.py index e5fe5f0f..2a54983c 100644 --- a/orchestra/contrib/miscellaneous/models.py +++ b/orchestra/contrib/miscellaneous/models.py @@ -1,6 +1,6 @@ from django.db import models from django.utils.functional import cached_property -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.core.validators import validate_name from orchestra.models.fields import NullableCharField diff --git a/orchestra/contrib/orchestration/actions.py b/orchestra/contrib/orchestration/actions.py index 3f8a0b39..042f19ad 100644 --- a/orchestra/contrib/orchestration/actions.py +++ b/orchestra/contrib/orchestration/actions.py @@ -4,7 +4,7 @@ from django.contrib import messages from django.contrib.admin import helpers from django.shortcuts import render from django.utils.safestring import mark_safe -from django.utils.translation import ungettext, ugettext_lazy as _ +from django.utils.translation import ngettext, gettext_lazy as _ from orchestra.admin.utils import get_object_from_url, change_url from orchestra.contrib.orchestration.helpers import message_user diff --git a/orchestra/contrib/orchestration/admin.py b/orchestra/contrib/orchestration/admin.py index 4f5ddc4b..703fba84 100644 --- a/orchestra/contrib/orchestration/admin.py +++ b/orchestra/contrib/orchestration/admin.py @@ -1,7 +1,7 @@ from django.contrib import admin, messages from django.utils.html import escape from django.utils.safestring import mark_safe -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.admin import ExtendedModelAdmin, ChangeViewActionsMixin from orchestra.admin.utils import admin_link, admin_date, admin_colored, display_mono, display_code diff --git a/orchestra/contrib/orchestration/backends.py b/orchestra/contrib/orchestration/backends.py index b2f22267..f1a04fe3 100644 --- a/orchestra/contrib/orchestration/backends.py +++ b/orchestra/contrib/orchestration/backends.py @@ -4,7 +4,7 @@ from functools import partial from django.apps import apps from django.utils import timezone -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra import plugins diff --git a/orchestra/contrib/orchestration/helpers.py b/orchestra/contrib/orchestration/helpers.py index 768e9997..68296ab2 100644 --- a/orchestra/contrib/orchestration/helpers.py +++ b/orchestra/contrib/orchestration/helpers.py @@ -5,7 +5,7 @@ from django.core.mail import mail_admins from django.urls import reverse, NoReverseMatch from django.utils.html import escape from django.utils.safestring import mark_safe -from django.utils.translation import ungettext, ugettext_lazy as _ +from django.utils.translation import ngettext, gettext_lazy as _ from orchestra import settings as orchestra_settings from orchestra.admin.utils import change_url @@ -125,7 +125,7 @@ def get_messages(logs): async_url = get_backend_url(async_ids) async_msg = '' if run_async: - async_msg = ungettext( + async_msg = ngettext( _('{name} is running on the background'), _('{run_async} backends are running on the background'), run_async) @@ -133,7 +133,7 @@ def get_messages(logs): if total == 1: msg = _('{name} has fail to execute') else: - msg = ungettext( + msg = ngettext( _('{errors} out of {total} backends has fail to execute'), _('{errors} out of {total} backends have fail to execute'), errors) @@ -147,13 +147,13 @@ def get_messages(logs): if total == 1: msg = _('{name} has been executed') else: - msg = ungettext( + msg = ngettext( _('{successes} out of {total} backends has been executed'), _('{successes} out of {total} backends have been executed'), successes) msg += ', ' + str(async_msg) else: - msg = ungettext( + msg = ngettext( _('{name} has been executed'), _('{total} backends have been executed'), total) diff --git a/orchestra/contrib/orchestration/migrations/0001_initial.py b/orchestra/contrib/orchestration/migrations/0001_initial.py deleted file mode 100644 index e14d15d9..00000000 --- a/orchestra/contrib/orchestration/migrations/0001_initial.py +++ /dev/null @@ -1,83 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -import django.db.models.deletion -from django.db import models, migrations -import orchestra.models.fields - - -class Migration(migrations.Migration): - - dependencies = [ - ('contenttypes', '0002_remove_content_type_name'), - ] - - operations = [ - migrations.CreateModel( - name='BackendLog', - fields=[ - ('id', models.AutoField(serialize=False, auto_created=True, verbose_name='ID', primary_key=True)), - ('backend', models.CharField(max_length=256, verbose_name='backend')), - ('state', models.CharField(choices=[('RECEIVED', 'RECEIVED'), ('TIMEOUT', 'TIMEOUT'), ('STARTED', 'STARTED'), ('SUCCESS', 'SUCCESS'), ('FAILURE', 'FAILURE'), ('ERROR', 'ERROR'), ('ABORTED', 'ABORTED'), ('REVOKED', 'REVOKED')], default='RECEIVED', max_length=16, verbose_name='state')), - ('script', models.TextField(verbose_name='script')), - ('stdout', models.TextField(verbose_name='stdout')), - ('stderr', models.TextField(verbose_name='stdin')), - ('traceback', models.TextField(verbose_name='traceback')), - ('exit_code', models.IntegerField(verbose_name='exit code', null=True)), - ('task_id', models.CharField(help_text='Celery task ID when used as execution backend', verbose_name='task ID', unique=True, max_length=36, null=True)), - ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='created')), - ('updated_at', models.DateTimeField(auto_now=True, verbose_name='updated')), - ], - options={ - 'get_latest_by': 'id', - }, - ), - migrations.CreateModel( - name='BackendOperation', - fields=[ - ('id', models.AutoField(serialize=False, auto_created=True, verbose_name='ID', primary_key=True)), - ('backend', models.CharField(max_length=256, verbose_name='backend')), - ('action', models.CharField(max_length=64, verbose_name='action')), - ('object_id', models.PositiveIntegerField()), - ('content_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType')), - ('log', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='operations', to='orchestration.BackendLog')), - ], - options={ - 'verbose_name_plural': 'Operations', - 'verbose_name': 'Operation', - }, - ), - migrations.CreateModel( - name='Route', - fields=[ - ('id', models.AutoField(serialize=False, auto_created=True, verbose_name='ID', primary_key=True)), - ('backend', models.CharField(choices=[('Apache2Traffic', '[M] Apache 2 Traffic'), ('DovecotMaildirDisk', '[M] Dovecot Maildir size'), ('Exim4Traffic', '[M] Exim4 traffic'), ('MailmanSubscribers', '[M] Mailman subscribers'), ('MailmanTraffic', '[M] Mailman traffic'), ('MysqlDisk', '[M] MySQL disk'), ('OpenVZTraffic', '[M] OpenVZTraffic'), ('PostfixMailscannerTraffic', '[M] Postfix-Mailscanner traffic'), ('UNIXUserDisk', '[M] UNIX user disk'), ('VsFTPdTraffic', '[M] VsFTPd traffic'), ('Apache2Controller', '[S] Apache 2'), ('BSCWController', '[S] BSCW SaaS'), ('Bind9MasterDomainController', '[S] Bind9 master domain'), ('Bind9SlaveDomainController', '[S] Bind9 slave domain'), ('DokuWikiMuController', '[S] DokuWiki multisite'), ('DovecotPostfixPasswdVirtualUserController', '[S] Dovecot-Postfix virtualuser'), ('DrupalMuController', '[S] Drupal multisite'), ('GitLabSaaSController', '[S] GitLab SaaS'), ('AutoresponseController', '[S] Mail autoresponse'), ('MailmanController', '[S] Mailman'), ('MySQLController', '[S] MySQL database'), ('MySQLUserController', '[S] MySQL user'), ('PHPController', '[S] PHP FPM/FCGID'), ('PostfixAddressController', '[S] Postfix address'), ('uWSGIPythonController', '[S] Python uWSGI'), ('StaticController', '[S] Static'), ('SymbolicLinkController', '[S] Symbolic link webapp'), ('UNIXUserMaildirController', '[S] UNIX maildir user'), ('UNIXUserController', '[S] UNIX user'), ('WebalizerAppController', '[S] Webalizer App'), ('WebalizerController', '[S] Webalizer Content'), ('WordPressController', '[S] Wordpress'), ('WordpressMuController', '[S] Wordpress multisite'), ('PhpListSaaSController', '[S] phpList SaaS')], max_length=256, verbose_name='backend')), - ('match', models.CharField(help_text='Python expression used for selecting the targe host, instance referes to the current object.', default='True', blank=True, max_length=256, verbose_name='match')), - ('is_active', models.BooleanField(default=True, verbose_name='active')), - ], - ), - migrations.CreateModel( - name='Server', - fields=[ - ('id', models.AutoField(serialize=False, auto_created=True, verbose_name='ID', primary_key=True)), - ('name', models.CharField(unique=True, max_length=256, verbose_name='name')), - ('address', orchestra.models.fields.NullableCharField(blank=True, max_length=256, null=True, help_text='IP address or domain name', unique=True, verbose_name='address')), - ('description', models.TextField(blank=True, verbose_name='description')), - ('os', models.CharField(choices=[('LINUX', 'Linux')], default='LINUX', max_length=32, verbose_name='operative system')), - ], - ), - migrations.AddField( - model_name='route', - name='host', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='orchestration.Server', verbose_name='host'), - ), - migrations.AddField( - model_name='backendlog', - name='server', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='execution_logs', to='orchestration.Server', verbose_name='server'), - ), - migrations.AlterUniqueTogether( - name='route', - unique_together=set([('backend', 'host')]), - ), - ] diff --git a/orchestra/contrib/orchestration/migrations/0001_squashed_0009_rename_route_async_run_async.py b/orchestra/contrib/orchestration/migrations/0001_squashed_0009_rename_route_async_run_async.py deleted file mode 100644 index 6e5d1c72..00000000 --- a/orchestra/contrib/orchestration/migrations/0001_squashed_0009_rename_route_async_run_async.py +++ /dev/null @@ -1,149 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2021-04-22 11:27 -from __future__ import unicode_literals - -from django.db import migrations, models -import django.db.models.deletion -import orchestra.core.validators -import orchestra.models.fields - - -class Migration(migrations.Migration): - - replaces = [('orchestration', '0001_initial'), ('orchestration', '0002_auto_20150506_1420'), ('orchestration', '0003_auto_20150512_1512'), ('orchestration', '0004_route_async_actions'), ('orchestration', '0005_auto_20150709_1016'), ('orchestration', '0006_auto_20160219_1110'), ('orchestration', '0007_auto_20170528_2011'), ('orchestration', '0008_auto_20190805_1134'), ('orchestration', '0009_rename_route_async_run_async')] - - initial = True - - dependencies = [ - ('contenttypes', '0002_remove_content_type_name'), - ] - - operations = [ - migrations.CreateModel( - name='BackendLog', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('backend', models.CharField(max_length=256, verbose_name='backend')), - ('state', models.CharField(choices=[('RECEIVED', 'RECEIVED'), ('TIMEOUT', 'TIMEOUT'), ('STARTED', 'STARTED'), ('SUCCESS', 'SUCCESS'), ('FAILURE', 'FAILURE'), ('ERROR', 'ERROR'), ('ABORTED', 'ABORTED'), ('REVOKED', 'REVOKED')], default='RECEIVED', max_length=16, verbose_name='state')), - ('script', models.TextField(verbose_name='script')), - ('stdout', models.TextField(verbose_name='stdout')), - ('stderr', models.TextField(verbose_name='stdin')), - ('traceback', models.TextField(verbose_name='traceback')), - ('exit_code', models.IntegerField(null=True, verbose_name='exit code')), - ('task_id', models.CharField(help_text='Celery task ID when used as execution backend', max_length=36, null=True, unique=True, verbose_name='task ID')), - ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='created')), - ('updated_at', models.DateTimeField(auto_now=True, verbose_name='updated')), - ], - options={ - 'get_latest_by': 'id', - }, - ), - migrations.CreateModel( - name='BackendOperation', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('backend', models.CharField(max_length=256, verbose_name='backend')), - ('action', models.CharField(max_length=64, verbose_name='action')), - ('object_id', models.PositiveIntegerField(null=True)), - ('content_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType')), - ('log', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='operations', to='orchestration.BackendLog')), - ('instance_repr', models.CharField(default='', max_length=256, verbose_name='instance representation')), - ], - options={ - 'verbose_name_plural': 'Operations', - 'verbose_name': 'Operation', - }, - ), - migrations.CreateModel( - name='Route', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('backend', models.CharField(choices=[('Apache2Traffic', '[M] Apache 2 Traffic'), ('DovecotMaildirDisk', '[M] Dovecot Maildir size'), ('Exim4Traffic', '[M] Exim4 traffic'), ('MailmanSubscribers', '[M] Mailman subscribers'), ('MailmanTraffic', '[M] Mailman traffic'), ('MysqlDisk', '[M] MySQL disk'), ('OpenVZTraffic', '[M] OpenVZTraffic'), ('PostfixMailscannerTraffic', '[M] Postfix-Mailscanner traffic'), ('UNIXUserDisk', '[M] UNIX user disk'), ('VsFTPdTraffic', '[M] VsFTPd traffic'), ('Apache2Controller', '[S] Apache 2'), ('BSCWController', '[S] BSCW SaaS'), ('Bind9MasterDomainController', '[S] Bind9 master domain'), ('Bind9SlaveDomainController', '[S] Bind9 slave domain'), ('DokuWikiMuController', '[S] DokuWiki multisite'), ('DovecotPostfixPasswdVirtualUserController', '[S] Dovecot-Postfix virtualuser'), ('DrupalMuController', '[S] Drupal multisite'), ('GitLabSaaSController', '[S] GitLab SaaS'), ('AutoresponseController', '[S] Mail autoresponse'), ('MailmanController', '[S] Mailman'), ('MySQLController', '[S] MySQL database'), ('MySQLUserController', '[S] MySQL user'), ('PHPController', '[S] PHP FPM/FCGID'), ('PostfixAddressController', '[S] Postfix address'), ('uWSGIPythonController', '[S] Python uWSGI'), ('StaticController', '[S] Static'), ('SymbolicLinkController', '[S] Symbolic link webapp'), ('UNIXUserMaildirController', '[S] UNIX maildir user'), ('UNIXUserController', '[S] UNIX user'), ('WebalizerAppController', '[S] Webalizer App'), ('WebalizerController', '[S] Webalizer Content'), ('WordPressController', '[S] Wordpress'), ('WordpressMuController', '[S] Wordpress multisite'), ('PhpListSaaSController', '[S] phpList SaaS')], max_length=256, verbose_name='backend')), - ('match', models.CharField(blank=True, default='True', help_text='Python expression used for selecting the targe host, instance referes to the current object.', max_length=256, verbose_name='match')), - ('is_active', models.BooleanField(default=True, verbose_name='active')), - ], - ), - migrations.CreateModel( - name='Server', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(help_text='Verbose name or hostname of this server.', max_length=256, unique=True, verbose_name='name')), - ('address', orchestra.models.fields.NullableCharField(blank=True, help_text='Optional IP address or domain name. If blank, name field will be used for address resolution.
If the IP address never changes you can set this field and save DNS requests.', max_length=256, null=True, unique=True, validators=[orchestra.core.validators.OrValidator(orchestra.core.validators.validate_ip_address, orchestra.core.validators.validate_hostname)], verbose_name='address')), - ('description', models.TextField(blank=True, verbose_name='description')), - ('os', models.CharField(choices=[('LINUX', 'Linux')], default='LINUX', max_length=32, verbose_name='operative system')), - ], - ), - migrations.AddField( - model_name='route', - name='host', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='orchestration.Server', verbose_name='host'), - ), - migrations.AddField( - model_name='backendlog', - name='server', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='execution_logs', to='orchestration.Server', verbose_name='server'), - ), - migrations.AddField( - model_name='route', - name='run_async', - field=models.BooleanField(default=False, help_text='Whether or not block the request/response cycle waitting this backend to finish its execution. Usually you want slave servers to run asynchronously.'), - ), - migrations.AlterUniqueTogether( - name='route', - unique_together=set([('backend', 'host')]), - ), - migrations.AlterField( - model_name='backendlog', - name='state', - field=models.CharField(choices=[('RECEIVED', 'RECEIVED'), ('TIMEOUT', 'TIMEOUT'), ('STARTED', 'STARTED'), ('SUCCESS', 'SUCCESS'), ('FAILURE', 'FAILURE'), ('ERROR', 'ERROR'), ('ABORTED', 'ABORTED'), ('REVOKED', 'REVOKED'), ('NOTHING', 'NOTHING')], default='RECEIVED', max_length=16, verbose_name='state'), - ), - migrations.AlterField( - model_name='backendlog', - name='stderr', - field=models.TextField(verbose_name='stderr'), - ), - migrations.AlterField( - model_name='route', - name='backend', - field=models.CharField(choices=[('Apache2Traffic', '[M] Apache 2 Traffic'), ('DovecotMaildirDisk', '[M] Dovecot Maildir size'), ('Exim4Traffic', '[M] Exim4 traffic'), ('MailmanSubscribers', '[M] Mailman subscribers'), ('MailmanTraffic', '[M] Mailman traffic'), ('MysqlDisk', '[M] MySQL disk'), ('OpenVZTraffic', '[M] OpenVZTraffic'), ('PostfixMailscannerTraffic', '[M] Postfix-Mailscanner traffic'), ('UNIXUserDisk', '[M] UNIX user disk'), ('VsFTPdTraffic', '[M] VsFTPd traffic'), ('Apache2Controller', '[S] Apache 2'), ('BSCWController', '[S] BSCW SaaS'), ('Bind9MasterDomainController', '[S] Bind9 master domain'), ('Bind9SlaveDomainController', '[S] Bind9 slave domain'), ('DokuWikiMuController', '[S] DokuWiki multisite'), ('DovecotPostfixPasswdVirtualUserController', '[S] Dovecot-Postfix virtualuser'), ('DrupalMuController', '[S] Drupal multisite'), ('GitLabSaaSController', '[S] GitLab SaaS'), ('AutoresponseController', '[S] Mail autoresponse'), ('MailmanController', '[S] Mailman'), ('MailmanVirtualDomainController', '[S] Mailman virtdomain-only'), ('MySQLController', '[S] MySQL database'), ('MySQLUserController', '[S] MySQL user'), ('PHPController', '[S] PHP FPM/FCGID'), ('PostfixAddressController', '[S] Postfix address'), ('PostfixAddressVirtualDomainController', '[S] Postfix address virtdomain-only'), ('uWSGIPythonController', '[S] Python uWSGI'), ('StaticController', '[S] Static'), ('SymbolicLinkController', '[S] Symbolic link webapp'), ('SyncBind9MasterDomainController', '[S] Sync Bind9 master domain'), ('SyncBind9SlaveDomainController', '[S] Sync Bind9 slave domain'), ('UNIXUserMaildirController', '[S] UNIX maildir user'), ('UNIXUserController', '[S] UNIX user'), ('WebalizerAppController', '[S] Webalizer App'), ('WebalizerController', '[S] Webalizer Content'), ('WordPressController', '[S] Wordpress'), ('WordpressMuController', '[S] Wordpress multisite'), ('PhpListSaaSController', '[S] phpList SaaS')], max_length=256, verbose_name='backend'), - ), - migrations.AddField( - model_name='route', - name='async_actions', - field=orchestra.models.fields.MultiSelectField(blank=True, help_text='Specify individual actions to be executed asynchronoulsy.', max_length=256), - ), - migrations.AlterField( - model_name='backendlog', - name='created_at', - field=models.DateTimeField(auto_now_add=True, db_index=True, verbose_name='created'), - ), - migrations.AlterField( - model_name='route', - name='backend', - field=models.CharField(choices=[('Apache2Traffic', '[M] Apache 2 Traffic'), ('ApacheTrafficByName', '[M] ApacheTrafficByName'), ('DokuWikiMuTraffic', '[M] DokuWiki MU Traffic'), ('DovecotMaildirDisk', '[M] Dovecot Maildir size'), ('Exim4Traffic', '[M] Exim4 traffic'), ('MailmanSubscribers', '[M] Mailman subscribers'), ('MailmanTraffic', '[M] Mailman traffic'), ('MysqlDisk', '[M] MySQL disk'), ('OpenVZTraffic', '[M] OpenVZTraffic'), ('PostfixMailscannerTraffic', '[M] Postfix-Mailscanner traffic'), ('UNIXUserDisk', '[M] UNIX user disk'), ('VsFTPdTraffic', '[M] VsFTPd traffic'), ('WordpressMuTraffic', '[M] Wordpress MU Traffic'), ('OwnCloudDiskQuota', '[M] ownCloud SaaS Disk Quota'), ('OwncloudTraffic', '[M] ownCloud SaaS Traffic'), ('PhpListTraffic', '[M] phpList SaaS Traffic'), ('Apache2Controller', '[S] Apache 2'), ('BSCWController', '[S] BSCW SaaS'), ('Bind9MasterDomainController', '[S] Bind9 master domain'), ('Bind9SlaveDomainController', '[S] Bind9 slave domain'), ('DokuWikiMuController', '[S] DokuWiki multisite'), ('DrupalMuController', '[S] Drupal multisite'), ('GitLabSaaSController', '[S] GitLab SaaS'), ('AutoresponseController', '[S] Mail autoresponse'), ('MailScannerSpamRuleController', '[S] MailScanner ruleset'), ('MailmanController', '[S] Mailman'), ('MailmanVirtualDomainController', '[S] Mailman virtdomain-only'), ('MoodleController', '[S] Moodle'), ('MoodleWWWRootController', '[S] Moodle WWWRoot (required)'), ('MoodleMuController', '[S] Moodle multisite'), ('MySQLController', '[S] MySQL database'), ('MySQLUserController', '[S] MySQL user'), ('PHPController', '[S] PHP FPM/FCGID'), ('PangeaProxmoxOVZ', '[S] PangeaProxmoxOVZ'), ('PostfixAddressController', '[S] Postfix address'), ('PostfixAddressVirtualDomainController', '[S] Postfix address virtdomain-only'), ('PostfixRecipientAccessController', '[S] Postfix recipient access'), ('ProxmoxOVZ', '[S] ProxmoxOVZ'), ('uWSGIPythonController', '[S] Python uWSGI'), ('StaticController', '[S] Static'), ('SymbolicLinkController', '[S] Symbolic link webapp'), ('SyncBind9MasterDomainController', '[S] Sync Bind9 master domain'), ('SyncBind9SlaveDomainController', '[S] Sync Bind9 slave domain'), ('UNIXUserMaildirController', '[S] UNIX maildir user'), ('UNIXUserController', '[S] UNIX user'), ('WebalizerAppController', '[S] Webalizer App'), ('WebalizerController', '[S] Webalizer Content'), ('WordPressURLController', '[S] WordPress URL'), ('WordPressController', '[S] Wordpress'), ('WordpressMuController', '[S] Wordpress multisite'), ('OwnCloudController', '[S] ownCloud SaaS'), ('PhpListSaaSController', '[S] phpList SaaS')], max_length=256, verbose_name='backend'), - ), - migrations.AlterIndexTogether( - name='backendoperation', - index_together=set([('content_type', 'object_id')]), - ), - migrations.AlterField( - model_name='route', - name='backend', - field=models.CharField(choices=[('Apache2Traffic', '[M] Apache 2 Traffic'), ('ApacheTrafficByName', '[M] ApacheTrafficByName'), ('DokuWikiMuTraffic', '[M] DokuWiki MU Traffic'), ('DovecotMaildirDisk', '[M] Dovecot Maildir size'), ('Exim4Traffic', '[M] Exim4 traffic'), ('MailmanSubscribers', '[M] Mailman subscribers'), ('MailmanTraffic', '[M] Mailman traffic'), ('MysqlDisk', '[M] MySQL disk'), ('PostfixMailscannerTraffic', '[M] Postfix-Mailscanner traffic'), ('ProxmoxOpenVZTraffic', '[M] ProxmoxOpenVZTraffic'), ('UNIXUserDisk', '[M] UNIX user disk'), ('VsFTPdTraffic', '[M] VsFTPd traffic'), ('WordpressMuTraffic', '[M] Wordpress MU Traffic'), ('NextCloudDiskQuota', '[M] nextCloud SaaS Disk Quota'), ('NextcloudTraffic', '[M] nextCloud SaaS Traffic'), ('OwnCloudDiskQuota', '[M] ownCloud SaaS Disk Quota'), ('OwncloudTraffic', '[M] ownCloud SaaS Traffic'), ('PhpListTraffic', '[M] phpList SaaS Traffic'), ('Apache2Controller', '[S] Apache 2'), ('BSCWController', '[S] BSCW SaaS'), ('Bind9MasterDomainController', '[S] Bind9 master domain'), ('Bind9SlaveDomainController', '[S] Bind9 slave domain'), ('DokuWikiMuController', '[S] DokuWiki multisite'), ('DrupalMuController', '[S] Drupal multisite'), ('GitLabSaaSController', '[S] GitLab SaaS'), ('LetsEncryptController', "[S] Let's encrypt!"), ('LxcController', '[S] LxcController'), ('AutoresponseController', '[S] Mail autoresponse'), ('MailScannerSpamRuleController', '[S] MailScanner ruleset'), ('MailmanController', '[S] Mailman'), ('MailmanVirtualDomainController', '[S] Mailman virtdomain-only'), ('MoodleController', '[S] Moodle'), ('MoodleWWWRootController', '[S] Moodle WWWRoot (required)'), ('MoodleMuController', '[S] Moodle multisite'), ('MySQLController', '[S] MySQL database'), ('MySQLUserController', '[S] MySQL user'), ('PHPController', '[S] PHP FPM/FCGID'), ('PangeaProxmoxOVZ', '[S] PangeaProxmoxOVZ'), ('PostfixAddressController', '[S] Postfix address'), ('PostfixAddressVirtualDomainController', '[S] Postfix address virtdomain-only'), ('PostfixRecipientAccessController', '[S] Postfix recipient access'), ('ProxmoxOVZ', '[S] ProxmoxOVZ'), ('uWSGIPythonController', '[S] Python uWSGI'), ('StaticController', '[S] Static'), ('SymbolicLinkController', '[S] Symbolic link webapp'), ('SyncBind9MasterDomainController', '[S] Sync Bind9 master domain'), ('SyncBind9SlaveDomainController', '[S] Sync Bind9 slave domain'), ('UNIXUserMaildirController', '[S] UNIX maildir user'), ('UNIXUserController', '[S] UNIX user'), ('WebalizerAppController', '[S] Webalizer App'), ('WebalizerController', '[S] Webalizer Content'), ('WordPressForceSSLController', '[S] WordPress Force SSL'), ('WordPressURLController', '[S] WordPress URL'), ('WordPressController', '[S] Wordpress'), ('WordpressMuController', '[S] Wordpress multisite'), ('NextCloudController', '[S] nextCloud SaaS'), ('OwnCloudController', '[S] ownCloud SaaS'), ('PhpListSaaSController', '[S] phpList SaaS')], max_length=256, verbose_name='backend'), - ), - migrations.AlterField( - model_name='route', - name='host', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='routes', to='orchestration.Server', verbose_name='host'), - ), - migrations.AlterField( - model_name='route', - name='backend', - field=models.CharField(choices=[('Apache2Traffic', '[M] Apache 2 Traffic'), ('ApacheTrafficByName', '[M] ApacheTrafficByName'), ('DokuWikiMuTraffic', '[M] DokuWiki MU Traffic'), ('DovecotMaildirDisk', '[M] Dovecot Maildir size'), ('Exim4Traffic', '[M] Exim4 traffic'), ('MailmanSubscribers', '[M] Mailman subscribers'), ('MailmanTraffic', '[M] Mailman traffic'), ('MysqlDisk', '[M] MySQL disk'), ('PostfixMailscannerTraffic', '[M] Postfix-Mailscanner traffic'), ('ProxmoxOpenVZTraffic', '[M] ProxmoxOpenVZTraffic'), ('UNIXUserDisk', '[M] UNIX user disk'), ('VsFTPdTraffic', '[M] VsFTPd traffic'), ('WordpressMuTraffic', '[M] Wordpress MU Traffic'), ('NextCloudDiskQuota', '[M] nextCloud SaaS Disk Quota'), ('NextcloudTraffic', '[M] nextCloud SaaS Traffic'), ('OwnCloudDiskQuota', '[M] ownCloud SaaS Disk Quota'), ('OwncloudTraffic', '[M] ownCloud SaaS Traffic'), ('PhpListTraffic', '[M] phpList SaaS Traffic'), ('Apache2Controller', '[S] Apache 2'), ('BSCWController', '[S] BSCW SaaS'), ('Bind9MasterDomainController', '[S] Bind9 master domain'), ('Bind9SlaveDomainController', '[S] Bind9 slave domain'), ('DokuWikiMuController', '[S] DokuWiki multisite'), ('DrupalMuController', '[S] Drupal multisite'), ('GitLabSaaSController', '[S] GitLab SaaS'), ('LetsEncryptController', "[S] Let's encrypt!"), ('LxcController', '[S] LxcController'), ('AutoresponseController', '[S] Mail autoresponse'), ('MailScannerSpamRuleController', '[S] MailScanner ruleset'), ('MailmanController', '[S] Mailman'), ('MailmanVirtualDomainController', '[S] Mailman virtdomain-only'), ('MoodleController', '[S] Moodle'), ('MoodleWWWRootController', '[S] Moodle WWWRoot (required)'), ('MoodleMuController', '[S] Moodle multisite'), ('MySQLController', '[S] MySQL database'), ('MySQLUserController', '[S] MySQL user'), ('PHPController', '[S] PHP FPM/FCGID'), ('PangeaProxmoxOVZ', '[S] PangeaProxmoxOVZ'), ('PostfixAddressController', '[S] Postfix address'), ('PostfixAddressVirtualDomainController', '[S] Postfix address virtdomain-only'), ('PostfixRecipientAccessController', '[S] Postfix recipient access'), ('ProxmoxOVZ', '[S] ProxmoxOVZ'), ('uWSGIPythonController', '[S] Python uWSGI'), ('RoundcubeIdentityController', '[S] Roundcube Identity Controller'), ('StaticController', '[S] Static'), ('SymbolicLinkController', '[S] Symbolic link webapp'), ('SyncBind9MasterDomainController', '[S] Sync Bind9 master domain'), ('SyncBind9SlaveDomainController', '[S] Sync Bind9 slave domain'), ('UNIXUserMaildirController', '[S] UNIX maildir user'), ('UNIXUserController', '[S] UNIX user'), ('WebalizerAppController', '[S] Webalizer App'), ('WebalizerController', '[S] Webalizer Content'), ('WordPressForceSSLController', '[S] WordPress Force SSL'), ('WordPressURLController', '[S] WordPress URL'), ('WordPressController', '[S] Wordpress'), ('WordpressMuController', '[S] Wordpress multisite'), ('NextCloudController', '[S] nextCloud SaaS'), ('OwnCloudController', '[S] ownCloud SaaS'), ('PhpListSaaSController', '[S] phpList SaaS')], max_length=256, verbose_name='backend'), - ), - migrations.AlterField( - model_name='route', - name='backend', - field=models.CharField(choices=[('Apache2Traffic', '[M] Apache 2 Traffic'), ('ApacheTrafficByName', '[M] ApacheTrafficByName'), ('DokuWikiMuTraffic', '[M] DokuWiki MU Traffic'), ('DovecotMaildirDisk', '[M] Dovecot Maildir size'), ('Exim4Traffic', '[M] Exim4 traffic'), ('MailmanSubscribers', '[M] Mailman subscribers'), ('MailmanTraffic', '[M] Mailman traffic'), ('MysqlDisk', '[M] MySQL disk'), ('PostfixMailscannerTraffic', '[M] Postfix-Mailscanner traffic'), ('ProxmoxOpenVZTraffic', '[M] ProxmoxOpenVZTraffic'), ('UNIXUserDisk', '[M] UNIX user disk'), ('VsFTPdTraffic', '[M] VsFTPd traffic'), ('WordpressMuTraffic', '[M] Wordpress MU Traffic'), ('NextCloudDiskQuota', '[M] nextCloud SaaS Disk Quota'), ('NextcloudTraffic', '[M] nextCloud SaaS Traffic'), ('OwnCloudDiskQuota', '[M] ownCloud SaaS Disk Quota'), ('OwncloudTraffic', '[M] ownCloud SaaS Traffic'), ('PhpListTraffic', '[M] phpList SaaS Traffic'), ('Apache2Controller', '[S] Apache 2'), ('BSCWController', '[S] BSCW SaaS'), ('Bind9MasterDomainController', '[S] Bind9 master domain'), ('Bind9SlaveDomainController', '[S] Bind9 slave domain'), ('DokuWikiMuController', '[S] DokuWiki multisite'), ('DrupalMuController', '[S] Drupal multisite'), ('GitLabSaaSController', '[S] GitLab SaaS'), ('LetsEncryptController', "[S] Let's encrypt!"), ('LxcController', '[S] LxcController'), ('AutoresponseController', '[S] Mail autoresponse'), ('MailmanController', '[S] Mailman'), ('MailmanVirtualDomainController', '[S] Mailman virtdomain-only'), ('MoodleController', '[S] Moodle'), ('MoodleWWWRootController', '[S] Moodle WWWRoot (required)'), ('MoodleMuController', '[S] Moodle multisite'), ('MySQLController', '[S] MySQL database'), ('MySQLUserController', '[S] MySQL user'), ('PHPController', '[S] PHP FPM/FCGID'), ('PostfixAddressController', '[S] Postfix address'), ('PostfixAddressVirtualDomainController', '[S] Postfix address virtdomain-only'), ('ProxmoxOVZ', '[S] ProxmoxOVZ'), ('uWSGIPythonController', '[S] Python uWSGI'), ('RoundcubeIdentityController', '[S] Roundcube Identity Controller'), ('StaticController', '[S] Static'), ('SymbolicLinkController', '[S] Symbolic link webapp'), ('UNIXUserMaildirController', '[S] UNIX maildir user'), ('UNIXUserController', '[S] UNIX user'), ('WebalizerAppController', '[S] Webalizer App'), ('WebalizerController', '[S] Webalizer Content'), ('WordPressForceSSLController', '[S] WordPress Force SSL'), ('WordPressURLController', '[S] WordPress URL'), ('WordPressController', '[S] Wordpress'), ('WordpressMuController', '[S] Wordpress multisite'), ('NextCloudController', '[S] nextCloud SaaS'), ('OwnCloudController', '[S] ownCloud SaaS'), ('PhpListSaaSController', '[S] phpList SaaS')], max_length=256, verbose_name='backend'), - ), - ] diff --git a/orchestra/contrib/orchestration/migrations/0002_auto_20150506_1420.py b/orchestra/contrib/orchestration/migrations/0002_auto_20150506_1420.py deleted file mode 100644 index bc029b79..00000000 --- a/orchestra/contrib/orchestration/migrations/0002_auto_20150506_1420.py +++ /dev/null @@ -1,34 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('orchestration', '0001_initial'), - ] - - operations = [ - migrations.AddField( - model_name='route', - name='async', - field=models.BooleanField(help_text='Whether or not block the request/response cycle waitting this backend to finish its execution.', default=False), - ), - migrations.AlterField( - model_name='backendlog', - name='state', - field=models.CharField(verbose_name='state', choices=[('RECEIVED', 'RECEIVED'), ('TIMEOUT', 'TIMEOUT'), ('STARTED', 'STARTED'), ('SUCCESS', 'SUCCESS'), ('FAILURE', 'FAILURE'), ('ERROR', 'ERROR'), ('ABORTED', 'ABORTED'), ('REVOKED', 'REVOKED'), ('NOTHING', 'NOTHING')], default='RECEIVED', max_length=16), - ), - migrations.AlterField( - model_name='backendlog', - name='stderr', - field=models.TextField(verbose_name='stderr'), - ), - migrations.AlterField( - model_name='route', - name='backend', - field=models.CharField(choices=[('Apache2Traffic', '[M] Apache 2 Traffic'), ('DovecotMaildirDisk', '[M] Dovecot Maildir size'), ('Exim4Traffic', '[M] Exim4 traffic'), ('MailmanSubscribers', '[M] Mailman subscribers'), ('MailmanTraffic', '[M] Mailman traffic'), ('MysqlDisk', '[M] MySQL disk'), ('OpenVZTraffic', '[M] OpenVZTraffic'), ('PostfixMailscannerTraffic', '[M] Postfix-Mailscanner traffic'), ('UNIXUserDisk', '[M] UNIX user disk'), ('VsFTPdTraffic', '[M] VsFTPd traffic'), ('Apache2Controller', '[S] Apache 2'), ('BSCWController', '[S] BSCW SaaS'), ('Bind9MasterDomainController', '[S] Bind9 master domain'), ('Bind9SlaveDomainController', '[S] Bind9 slave domain'), ('DokuWikiMuController', '[S] DokuWiki multisite'), ('DovecotPostfixPasswdVirtualUserController', '[S] Dovecot-Postfix virtualuser'), ('DrupalMuController', '[S] Drupal multisite'), ('GitLabSaaSController', '[S] GitLab SaaS'), ('AutoresponseController', '[S] Mail autoresponse'), ('MailmanController', '[S] Mailman'), ('MailmanVirtualDomainController', '[S] Mailman virtdomain-only'), ('MySQLController', '[S] MySQL database'), ('MySQLUserController', '[S] MySQL user'), ('PHPController', '[S] PHP FPM/FCGID'), ('PostfixAddressController', '[S] Postfix address'), ('PostfixAddressVirtualDomainController', '[S] Postfix address virtdomain-only'), ('uWSGIPythonController', '[S] Python uWSGI'), ('StaticController', '[S] Static'), ('SymbolicLinkController', '[S] Symbolic link webapp'), ('SyncBind9MasterDomainController', '[S] Sync Bind9 master domain'), ('SyncBind9SlaveDomainController', '[S] Sync Bind9 slave domain'), ('UNIXUserMaildirController', '[S] UNIX maildir user'), ('UNIXUserController', '[S] UNIX user'), ('WebalizerAppController', '[S] Webalizer App'), ('WebalizerController', '[S] Webalizer Content'), ('WordPressController', '[S] Wordpress'), ('WordpressMuController', '[S] Wordpress multisite'), ('PhpListSaaSController', '[S] phpList SaaS')], verbose_name='backend', max_length=256), - ), - ] diff --git a/orchestra/contrib/orchestration/migrations/0003_auto_20150512_1512.py b/orchestra/contrib/orchestration/migrations/0003_auto_20150512_1512.py deleted file mode 100644 index 1db9913d..00000000 --- a/orchestra/contrib/orchestration/migrations/0003_auto_20150512_1512.py +++ /dev/null @@ -1,30 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('orchestration', '0002_auto_20150506_1420'), - ] - - operations = [ - migrations.AddField( - model_name='backendoperation', - name='instance_repr', - field=models.CharField(default='', max_length=256, verbose_name='instance representation'), - preserve_default=False, - ), - migrations.AlterField( - model_name='backendoperation', - name='object_id', - field=models.PositiveIntegerField(null=True), - ), - migrations.AlterField( - model_name='route', - name='async', - field=models.BooleanField(default=False, help_text='Whether or not block the request/response cycle waitting this backend to finish its execution. Usually you want slave servers to run asynchronously.'), - ), - ] diff --git a/orchestra/contrib/orchestration/migrations/0004_route_async_actions.py b/orchestra/contrib/orchestration/migrations/0004_route_async_actions.py deleted file mode 100644 index 25349b84..00000000 --- a/orchestra/contrib/orchestration/migrations/0004_route_async_actions.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations -import orchestra.models.fields - - -class Migration(migrations.Migration): - - dependencies = [ - ('orchestration', '0003_auto_20150512_1512'), - ] - - operations = [ - migrations.AddField( - model_name='route', - name='async_actions', - field=orchestra.models.fields.MultiSelectField(blank=True, max_length=256), - ), - ] diff --git a/orchestra/contrib/orchestration/migrations/0005_auto_20150709_1016.py b/orchestra/contrib/orchestration/migrations/0005_auto_20150709_1016.py deleted file mode 100644 index 6ac2af8a..00000000 --- a/orchestra/contrib/orchestration/migrations/0005_auto_20150709_1016.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations -import orchestra.models.fields - - -class Migration(migrations.Migration): - - dependencies = [ - ('orchestration', '0004_route_async_actions'), - ] - - operations = [ - migrations.AlterField( - model_name='backendlog', - name='created_at', - field=models.DateTimeField(db_index=True, verbose_name='created', auto_now_add=True), - ), - migrations.AlterField( - model_name='route', - name='async_actions', - field=orchestra.models.fields.MultiSelectField(blank=True, help_text='Specify individual actions to be executed asynchronoulsy.', max_length=256), - ), - ] diff --git a/orchestra/contrib/orchestration/migrations/0006_auto_20160219_1110.py b/orchestra/contrib/orchestration/migrations/0006_auto_20160219_1110.py deleted file mode 100644 index 80b37905..00000000 --- a/orchestra/contrib/orchestration/migrations/0006_auto_20160219_1110.py +++ /dev/null @@ -1,35 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations, models -import orchestra.core.validators -import orchestra.models.fields - - -class Migration(migrations.Migration): - - dependencies = [ - ('orchestration', '0005_auto_20150709_1016'), - ] - - operations = [ - migrations.AlterField( - model_name='route', - name='backend', - field=models.CharField(choices=[('Apache2Traffic', '[M] Apache 2 Traffic'), ('ApacheTrafficByName', '[M] ApacheTrafficByName'), ('DokuWikiMuTraffic', '[M] DokuWiki MU Traffic'), ('DovecotMaildirDisk', '[M] Dovecot Maildir size'), ('Exim4Traffic', '[M] Exim4 traffic'), ('MailmanSubscribers', '[M] Mailman subscribers'), ('MailmanTraffic', '[M] Mailman traffic'), ('MysqlDisk', '[M] MySQL disk'), ('OpenVZTraffic', '[M] OpenVZTraffic'), ('PostfixMailscannerTraffic', '[M] Postfix-Mailscanner traffic'), ('UNIXUserDisk', '[M] UNIX user disk'), ('VsFTPdTraffic', '[M] VsFTPd traffic'), ('WordpressMuTraffic', '[M] Wordpress MU Traffic'), ('OwnCloudDiskQuota', '[M] ownCloud SaaS Disk Quota'), ('OwncloudTraffic', '[M] ownCloud SaaS Traffic'), ('PhpListTraffic', '[M] phpList SaaS Traffic'), ('Apache2Controller', '[S] Apache 2'), ('BSCWController', '[S] BSCW SaaS'), ('Bind9MasterDomainController', '[S] Bind9 master domain'), ('Bind9SlaveDomainController', '[S] Bind9 slave domain'), ('DokuWikiMuController', '[S] DokuWiki multisite'), ('DrupalMuController', '[S] Drupal multisite'), ('GitLabSaaSController', '[S] GitLab SaaS'), ('AutoresponseController', '[S] Mail autoresponse'), ('MailScannerSpamRuleController', '[S] MailScanner ruleset'), ('MailmanController', '[S] Mailman'), ('MailmanVirtualDomainController', '[S] Mailman virtdomain-only'), ('MoodleController', '[S] Moodle'), ('MoodleWWWRootController', '[S] Moodle WWWRoot (required)'), ('MoodleMuController', '[S] Moodle multisite'), ('MySQLController', '[S] MySQL database'), ('MySQLUserController', '[S] MySQL user'), ('PHPController', '[S] PHP FPM/FCGID'), ('PangeaProxmoxOVZ', '[S] PangeaProxmoxOVZ'), ('PostfixAddressController', '[S] Postfix address'), ('PostfixAddressVirtualDomainController', '[S] Postfix address virtdomain-only'), ('PostfixRecipientAccessController', '[S] Postfix recipient access'), ('ProxmoxOVZ', '[S] ProxmoxOVZ'), ('uWSGIPythonController', '[S] Python uWSGI'), ('StaticController', '[S] Static'), ('SymbolicLinkController', '[S] Symbolic link webapp'), ('SyncBind9MasterDomainController', '[S] Sync Bind9 master domain'), ('SyncBind9SlaveDomainController', '[S] Sync Bind9 slave domain'), ('UNIXUserMaildirController', '[S] UNIX maildir user'), ('UNIXUserController', '[S] UNIX user'), ('WebalizerAppController', '[S] Webalizer App'), ('WebalizerController', '[S] Webalizer Content'), ('WordPressURLController', '[S] WordPress URL'), ('WordPressController', '[S] Wordpress'), ('WordpressMuController', '[S] Wordpress multisite'), ('OwnCloudController', '[S] ownCloud SaaS'), ('PhpListSaaSController', '[S] phpList SaaS')], max_length=256, verbose_name='backend'), - ), - migrations.AlterField( - model_name='server', - name='address', - field=orchestra.models.fields.NullableCharField(help_text='Optional IP address or domain name. If blank, name field will be used for address resolution.
If the IP address never changes you can set this field and save DNS requests.', verbose_name='address', validators=[orchestra.core.validators.OrValidator(orchestra.core.validators.validate_ip_address, orchestra.core.validators.validate_hostname)], blank=True, max_length=256, unique=True, null=True), - ), - migrations.AlterField( - model_name='server', - name='name', - field=models.CharField(help_text='Verbose name or hostname of this server.', max_length=256, verbose_name='name', unique=True), - ), - migrations.AlterIndexTogether( - name='backendoperation', - index_together=set([('content_type', 'object_id')]), - ), - ] diff --git a/orchestra/contrib/orchestration/migrations/0007_auto_20170528_2011.py b/orchestra/contrib/orchestration/migrations/0007_auto_20170528_2011.py deleted file mode 100644 index a38cdaa4..00000000 --- a/orchestra/contrib/orchestration/migrations/0007_auto_20170528_2011.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-05-28 18:11 -from __future__ import unicode_literals - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('orchestration', '0006_auto_20160219_1110'), - ] - - operations = [ - migrations.AlterField( - model_name='route', - name='backend', - field=models.CharField(choices=[('Apache2Traffic', '[M] Apache 2 Traffic'), ('ApacheTrafficByName', '[M] ApacheTrafficByName'), ('DokuWikiMuTraffic', '[M] DokuWiki MU Traffic'), ('DovecotMaildirDisk', '[M] Dovecot Maildir size'), ('Exim4Traffic', '[M] Exim4 traffic'), ('MailmanSubscribers', '[M] Mailman subscribers'), ('MailmanTraffic', '[M] Mailman traffic'), ('MysqlDisk', '[M] MySQL disk'), ('PostfixMailscannerTraffic', '[M] Postfix-Mailscanner traffic'), ('ProxmoxOpenVZTraffic', '[M] ProxmoxOpenVZTraffic'), ('UNIXUserDisk', '[M] UNIX user disk'), ('VsFTPdTraffic', '[M] VsFTPd traffic'), ('WordpressMuTraffic', '[M] Wordpress MU Traffic'), ('NextCloudDiskQuota', '[M] nextCloud SaaS Disk Quota'), ('NextcloudTraffic', '[M] nextCloud SaaS Traffic'), ('OwnCloudDiskQuota', '[M] ownCloud SaaS Disk Quota'), ('OwncloudTraffic', '[M] ownCloud SaaS Traffic'), ('PhpListTraffic', '[M] phpList SaaS Traffic'), ('Apache2Controller', '[S] Apache 2'), ('BSCWController', '[S] BSCW SaaS'), ('Bind9MasterDomainController', '[S] Bind9 master domain'), ('Bind9SlaveDomainController', '[S] Bind9 slave domain'), ('DokuWikiMuController', '[S] DokuWiki multisite'), ('DrupalMuController', '[S] Drupal multisite'), ('GitLabSaaSController', '[S] GitLab SaaS'), ('LetsEncryptController', "[S] Let's encrypt!"), ('LxcController', '[S] LxcController'), ('AutoresponseController', '[S] Mail autoresponse'), ('MailScannerSpamRuleController', '[S] MailScanner ruleset'), ('MailmanController', '[S] Mailman'), ('MailmanVirtualDomainController', '[S] Mailman virtdomain-only'), ('MoodleController', '[S] Moodle'), ('MoodleWWWRootController', '[S] Moodle WWWRoot (required)'), ('MoodleMuController', '[S] Moodle multisite'), ('MySQLController', '[S] MySQL database'), ('MySQLUserController', '[S] MySQL user'), ('PHPController', '[S] PHP FPM/FCGID'), ('PangeaProxmoxOVZ', '[S] PangeaProxmoxOVZ'), ('PostfixAddressController', '[S] Postfix address'), ('PostfixAddressVirtualDomainController', '[S] Postfix address virtdomain-only'), ('PostfixRecipientAccessController', '[S] Postfix recipient access'), ('ProxmoxOVZ', '[S] ProxmoxOVZ'), ('uWSGIPythonController', '[S] Python uWSGI'), ('StaticController', '[S] Static'), ('SymbolicLinkController', '[S] Symbolic link webapp'), ('SyncBind9MasterDomainController', '[S] Sync Bind9 master domain'), ('SyncBind9SlaveDomainController', '[S] Sync Bind9 slave domain'), ('UNIXUserMaildirController', '[S] UNIX maildir user'), ('UNIXUserController', '[S] UNIX user'), ('WebalizerAppController', '[S] Webalizer App'), ('WebalizerController', '[S] Webalizer Content'), ('WordPressForceSSLController', '[S] WordPress Force SSL'), ('WordPressURLController', '[S] WordPress URL'), ('WordPressController', '[S] Wordpress'), ('WordpressMuController', '[S] Wordpress multisite'), ('NextCloudController', '[S] nextCloud SaaS'), ('OwnCloudController', '[S] ownCloud SaaS'), ('PhpListSaaSController', '[S] phpList SaaS')], max_length=256, verbose_name='backend'), - ), - migrations.AlterField( - model_name='route', - name='host', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='routes', to='orchestration.Server', verbose_name='host'), - ), - ] diff --git a/orchestra/contrib/orchestration/migrations/0008_auto_20190805_1134.py b/orchestra/contrib/orchestration/migrations/0008_auto_20190805_1134.py deleted file mode 100644 index 1979ff16..00000000 --- a/orchestra/contrib/orchestration/migrations/0008_auto_20190805_1134.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2019-08-05 09:34 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('orchestration', '0007_auto_20170528_2011'), - ] - - operations = [ - migrations.AlterField( - model_name='route', - name='backend', - field=models.CharField(choices=[('Apache2Traffic', '[M] Apache 2 Traffic'), ('ApacheTrafficByName', '[M] ApacheTrafficByName'), ('DokuWikiMuTraffic', '[M] DokuWiki MU Traffic'), ('DovecotMaildirDisk', '[M] Dovecot Maildir size'), ('Exim4Traffic', '[M] Exim4 traffic'), ('MailmanSubscribers', '[M] Mailman subscribers'), ('MailmanTraffic', '[M] Mailman traffic'), ('MysqlDisk', '[M] MySQL disk'), ('PostfixMailscannerTraffic', '[M] Postfix-Mailscanner traffic'), ('ProxmoxOpenVZTraffic', '[M] ProxmoxOpenVZTraffic'), ('UNIXUserDisk', '[M] UNIX user disk'), ('VsFTPdTraffic', '[M] VsFTPd traffic'), ('WordpressMuTraffic', '[M] Wordpress MU Traffic'), ('NextCloudDiskQuota', '[M] nextCloud SaaS Disk Quota'), ('NextcloudTraffic', '[M] nextCloud SaaS Traffic'), ('OwnCloudDiskQuota', '[M] ownCloud SaaS Disk Quota'), ('OwncloudTraffic', '[M] ownCloud SaaS Traffic'), ('PhpListTraffic', '[M] phpList SaaS Traffic'), ('Apache2Controller', '[S] Apache 2'), ('BSCWController', '[S] BSCW SaaS'), ('Bind9MasterDomainController', '[S] Bind9 master domain'), ('Bind9SlaveDomainController', '[S] Bind9 slave domain'), ('DokuWikiMuController', '[S] DokuWiki multisite'), ('DrupalMuController', '[S] Drupal multisite'), ('GitLabSaaSController', '[S] GitLab SaaS'), ('LetsEncryptController', "[S] Let's encrypt!"), ('LxcController', '[S] LxcController'), ('AutoresponseController', '[S] Mail autoresponse'), ('MailScannerSpamRuleController', '[S] MailScanner ruleset'), ('MailmanController', '[S] Mailman'), ('MailmanVirtualDomainController', '[S] Mailman virtdomain-only'), ('MoodleController', '[S] Moodle'), ('MoodleWWWRootController', '[S] Moodle WWWRoot (required)'), ('MoodleMuController', '[S] Moodle multisite'), ('MySQLController', '[S] MySQL database'), ('MySQLUserController', '[S] MySQL user'), ('PHPController', '[S] PHP FPM/FCGID'), ('PangeaProxmoxOVZ', '[S] PangeaProxmoxOVZ'), ('PostfixAddressController', '[S] Postfix address'), ('PostfixAddressVirtualDomainController', '[S] Postfix address virtdomain-only'), ('PostfixRecipientAccessController', '[S] Postfix recipient access'), ('ProxmoxOVZ', '[S] ProxmoxOVZ'), ('uWSGIPythonController', '[S] Python uWSGI'), ('RoundcubeIdentityController', '[S] Roundcube Identity Controller'), ('StaticController', '[S] Static'), ('SymbolicLinkController', '[S] Symbolic link webapp'), ('SyncBind9MasterDomainController', '[S] Sync Bind9 master domain'), ('SyncBind9SlaveDomainController', '[S] Sync Bind9 slave domain'), ('UNIXUserMaildirController', '[S] UNIX maildir user'), ('UNIXUserController', '[S] UNIX user'), ('WebalizerAppController', '[S] Webalizer App'), ('WebalizerController', '[S] Webalizer Content'), ('WordPressForceSSLController', '[S] WordPress Force SSL'), ('WordPressURLController', '[S] WordPress URL'), ('WordPressController', '[S] Wordpress'), ('WordpressMuController', '[S] Wordpress multisite'), ('NextCloudController', '[S] nextCloud SaaS'), ('OwnCloudController', '[S] ownCloud SaaS'), ('PhpListSaaSController', '[S] phpList SaaS')], max_length=256, verbose_name='backend'), - ), - ] diff --git a/orchestra/contrib/orchestration/migrations/0009_rename_route_async_run_async.py b/orchestra/contrib/orchestration/migrations/0009_rename_route_async_run_async.py deleted file mode 100644 index f70deeeb..00000000 --- a/orchestra/contrib/orchestration/migrations/0009_rename_route_async_run_async.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2021-03-30 10:49 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('orchestration', '0008_auto_20190805_1134'), - ] - - operations = [ - migrations.RenameField( - model_name='route', - old_name='async', - new_name='run_async', - ), - migrations.AlterField( - model_name='route', - name='backend', - field=models.CharField(choices=[('Apache2Traffic', '[M] Apache 2 Traffic'), ('ApacheTrafficByName', '[M] ApacheTrafficByName'), ('DokuWikiMuTraffic', '[M] DokuWiki MU Traffic'), ('DovecotMaildirDisk', '[M] Dovecot Maildir size'), ('Exim4Traffic', '[M] Exim4 traffic'), ('MailmanSubscribers', '[M] Mailman subscribers'), ('MailmanTraffic', '[M] Mailman traffic'), ('MysqlDisk', '[M] MySQL disk'), ('PostfixMailscannerTraffic', '[M] Postfix-Mailscanner traffic'), ('ProxmoxOpenVZTraffic', '[M] ProxmoxOpenVZTraffic'), ('UNIXUserDisk', '[M] UNIX user disk'), ('VsFTPdTraffic', '[M] VsFTPd traffic'), ('WordpressMuTraffic', '[M] Wordpress MU Traffic'), ('NextCloudDiskQuota', '[M] nextCloud SaaS Disk Quota'), ('NextcloudTraffic', '[M] nextCloud SaaS Traffic'), ('OwnCloudDiskQuota', '[M] ownCloud SaaS Disk Quota'), ('OwncloudTraffic', '[M] ownCloud SaaS Traffic'), ('PhpListTraffic', '[M] phpList SaaS Traffic'), ('Apache2Controller', '[S] Apache 2'), ('BSCWController', '[S] BSCW SaaS'), ('Bind9MasterDomainController', '[S] Bind9 master domain'), ('Bind9SlaveDomainController', '[S] Bind9 slave domain'), ('DokuWikiMuController', '[S] DokuWiki multisite'), ('DrupalMuController', '[S] Drupal multisite'), ('GitLabSaaSController', '[S] GitLab SaaS'), ('LetsEncryptController', "[S] Let's encrypt!"), ('LxcController', '[S] LxcController'), ('AutoresponseController', '[S] Mail autoresponse'), ('MailmanController', '[S] Mailman'), ('MailmanVirtualDomainController', '[S] Mailman virtdomain-only'), ('MoodleController', '[S] Moodle'), ('MoodleWWWRootController', '[S] Moodle WWWRoot (required)'), ('MoodleMuController', '[S] Moodle multisite'), ('MySQLController', '[S] MySQL database'), ('MySQLUserController', '[S] MySQL user'), ('PHPController', '[S] PHP FPM/FCGID'), ('PostfixAddressController', '[S] Postfix address'), ('PostfixAddressVirtualDomainController', '[S] Postfix address virtdomain-only'), ('ProxmoxOVZ', '[S] ProxmoxOVZ'), ('uWSGIPythonController', '[S] Python uWSGI'), ('RoundcubeIdentityController', '[S] Roundcube Identity Controller'), ('StaticController', '[S] Static'), ('SymbolicLinkController', '[S] Symbolic link webapp'), ('UNIXUserMaildirController', '[S] UNIX maildir user'), ('UNIXUserController', '[S] UNIX user'), ('WebalizerAppController', '[S] Webalizer App'), ('WebalizerController', '[S] Webalizer Content'), ('WordPressForceSSLController', '[S] WordPress Force SSL'), ('WordPressURLController', '[S] WordPress URL'), ('WordPressController', '[S] Wordpress'), ('WordpressMuController', '[S] Wordpress multisite'), ('NextCloudController', '[S] nextCloud SaaS'), ('OwnCloudController', '[S] ownCloud SaaS'), ('PhpListSaaSController', '[S] phpList SaaS')], max_length=256, verbose_name='backend'), - ), - ] diff --git a/orchestra/contrib/orchestration/migrations/__init__.py b/orchestra/contrib/orchestration/migrations/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/orchestra/contrib/orchestration/models.py b/orchestra/contrib/orchestration/models.py index 14e8db2d..4f8606d8 100644 --- a/orchestra/contrib/orchestration/models.py +++ b/orchestra/contrib/orchestration/models.py @@ -5,10 +5,10 @@ from django.contrib.contenttypes.fields import GenericForeignKey from django.contrib.contenttypes.models import ContentType from django.core.exceptions import ValidationError from django.db import models -from django.utils.encoding import force_text +from django.utils.encoding import force_str from django.utils.functional import cached_property from django.utils.module_loading import autodiscover_modules -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.core.validators import validate_ip_address, validate_hostname, OrValidator from orchestra.models.fields import NullableCharField, MultiSelectField @@ -128,7 +128,7 @@ class BackendOperationQuerySet(models.QuerySet): def create(self, **kwargs): instance = kwargs.get('instance') if instance and 'instance_repr' not in kwargs: - kwargs['instance_repr'] = force_text(instance)[:256] + kwargs['instance_repr'] = force_str(instance)[:256] return super(BackendOperationQuerySet, self).create(**kwargs) @@ -207,7 +207,7 @@ class Route(models.Model): run_async = models.BooleanField(default=False, help_text=_("Whether or not block the request/response cycle waitting this backend to " "finish its execution. Usually you want slave servers to run asynchronously.")) - async_actions = MultiSelectField(max_length=256, blank=True, + async_actions = MultiSelectField(max_length=256, blank=True, choices=[], help_text=_("Specify individual actions to be executed asynchronoulsy.")) # method = models.CharField(_("method"), max_lenght=32, choices=method_choices, # default=MethodBackend.get_default()) diff --git a/orchestra/contrib/orchestration/settings.py b/orchestra/contrib/orchestration/settings.py index d74c5314..fee41c42 100644 --- a/orchestra/contrib/orchestration/settings.py +++ b/orchestra/contrib/orchestration/settings.py @@ -1,6 +1,6 @@ from os import path -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.contrib.settings import Setting diff --git a/orchestra/contrib/orchestration/signals.py b/orchestra/contrib/orchestration/signals.py index ab26858b..a49f493b 100644 --- a/orchestra/contrib/orchestration/signals.py +++ b/orchestra/contrib/orchestration/signals.py @@ -1,14 +1,14 @@ import django.dispatch +pre_action = django.dispatch.Signal() -pre_action = django.dispatch.Signal(providing_args=['backend', 'instance', 'action']) +post_action = django.dispatch.Signal() -post_action = django.dispatch.Signal(providing_args=['backend', 'instance', 'action']) +pre_prepare = django.dispatch.Signal() -pre_prepare = django.dispatch.Signal(providing_args=['backend']) +post_prepare = django.dispatch.Signal() -post_prepare = django.dispatch.Signal(providing_args=['backend']) +pre_commit = django.dispatch.Signal() -pre_commit = django.dispatch.Signal(providing_args=['backend']) +post_commit = django.dispatch.Signal() -post_commit = django.dispatch.Signal(providing_args=['backend']) diff --git a/orchestra/contrib/orders/actions.py b/orchestra/contrib/orders/actions.py index 5a91a3f7..ba2244ec 100644 --- a/orchestra/contrib/orders/actions.py +++ b/orchestra/contrib/orders/actions.py @@ -3,7 +3,7 @@ from django.urls import reverse from django.db import transaction from django.utils import timezone from django.utils.safestring import mark_safe -from django.utils.translation import ungettext, ugettext_lazy as _ +from django.utils.translation import ngettext, gettext_lazy as _ from django.shortcuts import render from orchestra.admin.utils import change_url @@ -95,7 +95,7 @@ class BillSelectedOrders(object): url = reverse('admin:bills_bill_changelist') ids = ','.join([str(b.id) for b in bills]) url += '?id__in=%s' % ids - msg = ungettext( + msg = ngettext( 'One bill has been created.', '{num} bills have been created.', num).format(url=url, num=num) @@ -126,7 +126,7 @@ def mark_as_ignored(modeladmin, request, queryset): order.mark_as_ignored() modeladmin.log_change(request, order, 'Marked as ignored') num = len(queryset) - msg = ungettext( + msg = ngettext( _("Selected order has been marked as ignored."), _("%i selected orders have been marked as ignored.") % num, num) @@ -140,7 +140,7 @@ def mark_as_not_ignored(modeladmin, request, queryset): order.mark_as_not_ignored() modeladmin.log_change(request, order, 'Marked as not ignored') num = len(queryset) - msg = ungettext( + msg = ngettext( _("Selected order has been marked as not ignored."), _("%i selected orders have been marked as not ignored.") % num, num) diff --git a/orchestra/contrib/orders/admin.py b/orchestra/contrib/orders/admin.py index 43838e4f..3c3086b8 100644 --- a/orchestra/contrib/orders/admin.py +++ b/orchestra/contrib/orders/admin.py @@ -6,7 +6,7 @@ from django.db.models import Prefetch from django.utils import timezone from django.utils.html import escape, format_html from django.utils.safestring import mark_safe -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.admin import ExtendedModelAdmin from orchestra.admin.utils import admin_link, admin_date, change_url diff --git a/orchestra/contrib/orders/billing.py b/orchestra/contrib/orders/billing.py index 650f8df5..a6daee33 100644 --- a/orchestra/contrib/orders/billing.py +++ b/orchestra/contrib/orders/billing.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.contrib.bills.models import Invoice, Fee, ProForma diff --git a/orchestra/contrib/orders/filters.py b/orchestra/contrib/orders/filters.py index c0a54332..4693529f 100644 --- a/orchestra/contrib/orders/filters.py +++ b/orchestra/contrib/orders/filters.py @@ -4,8 +4,8 @@ from django.apps import apps from django.contrib.admin import SimpleListFilter from django.db.models import Q, Prefetch, F from django.utils import timezone -from django.utils.encoding import force_text -from django.utils.translation import ugettext_lazy as _ +from django.utils.encoding import force_str +from django.utils.translation import gettext_lazy as _ from . import settings from .models import MetricStorage @@ -118,7 +118,7 @@ class IgnoreOrderListFilter(SimpleListFilter): """ Enable default selection different than All """ for lookup, title in self.lookup_choices: title = title._proxy____args[0] - selected = self.value() == force_text(lookup) + selected = self.value() == force_str(lookup) if not selected and title == "Not ignored" and self.value() is None: selected = True # end of workaround diff --git a/orchestra/contrib/orders/forms.py b/orchestra/contrib/orders/forms.py index 2376e612..0dd9a0ab 100644 --- a/orchestra/contrib/orders/forms.py +++ b/orchestra/contrib/orders/forms.py @@ -2,7 +2,7 @@ from django import forms from django.contrib.admin import widgets from django.utils import timezone from django.utils.safestring import mark_safe -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.admin.forms import AdminFormMixin from orchestra.admin.utils import change_url diff --git a/orchestra/contrib/orders/migrations/0001_initial.py b/orchestra/contrib/orders/migrations/0001_initial.py deleted file mode 100644 index adc37bc1..00000000 --- a/orchestra/contrib/orders/migrations/0001_initial.py +++ /dev/null @@ -1,55 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations -import django.utils.timezone -import django.db.models.deletion -from django.conf import settings - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('services', '__first__'), - ('contenttypes', '0002_remove_content_type_name'), - ] - - operations = [ - migrations.CreateModel( - name='MetricStorage', - fields=[ - ('id', models.AutoField(serialize=False, auto_created=True, verbose_name='ID', primary_key=True)), - ('value', models.DecimalField(decimal_places=2, max_digits=16, verbose_name='value')), - ('created_on', models.DateField(auto_now_add=True, verbose_name='created')), - ('updated_on', models.DateTimeField(verbose_name='updated')), - ], - options={ - 'get_latest_by': 'id', - }, - ), - migrations.CreateModel( - name='Order', - fields=[ - ('id', models.AutoField(serialize=False, auto_created=True, verbose_name='ID', primary_key=True)), - ('object_id', models.PositiveIntegerField(null=True)), - ('registered_on', models.DateField(default=django.utils.timezone.now, verbose_name='registered')), - ('cancelled_on', models.DateField(blank=True, verbose_name='cancelled', null=True)), - ('billed_on', models.DateField(blank=True, verbose_name='billed', null=True)), - ('billed_until', models.DateField(blank=True, verbose_name='billed until', null=True)), - ('ignore', models.BooleanField(default=False, verbose_name='ignore')), - ('description', models.TextField(blank=True, verbose_name='description')), - ('account', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, verbose_name='account', related_name='orders', to=settings.AUTH_USER_MODEL)), - ('content_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType')), - ('service', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, verbose_name='service', related_name='orders', to='services.Service')), - ], - options={ - 'get_latest_by': 'id', - }, - ), - migrations.AddField( - model_name='metricstorage', - name='order', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, verbose_name='order', related_name='metrics', to='orders.Order'), - ), - ] diff --git a/orchestra/contrib/orders/migrations/0001_squashed_0006_auto_20210422_1108.py b/orchestra/contrib/orders/migrations/0001_squashed_0006_auto_20210422_1108.py deleted file mode 100644 index b9091268..00000000 --- a/orchestra/contrib/orders/migrations/0001_squashed_0006_auto_20210422_1108.py +++ /dev/null @@ -1,66 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2021-04-22 11:09 -from __future__ import unicode_literals - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion -import django.utils.timezone - - -class Migration(migrations.Migration): - - replaces = [('orders', '0001_initial'), ('orders', '0002_auto_20150709_1018'), ('orders', '0003_order_content_object_repr'), ('orders', '0004_auto_20150729_0945'), ('orders', '0005_auto_20160219_1107'), ('orders', '0006_auto_20210422_1108')] - - initial = True - - dependencies = [ - ('contenttypes', '0002_remove_content_type_name'), - ('services', '__first__'), - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.CreateModel( - name='MetricStorage', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('value', models.DecimalField(decimal_places=2, max_digits=16, verbose_name='value')), - ('created_on', models.DateField(auto_now_add=True, verbose_name='created')), - ('updated_on', models.DateTimeField(verbose_name='updated')), - ], - options={ - 'get_latest_by': 'id', - }, - ), - migrations.CreateModel( - name='Order', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('object_id', models.PositiveIntegerField(null=True)), - ('registered_on', models.DateField(db_index=True, default=django.utils.timezone.now, verbose_name='registered')), - ('cancelled_on', models.DateField(blank=True, null=True, verbose_name='cancelled')), - ('billed_on', models.DateField(blank=True, null=True, verbose_name='billed')), - ('billed_until', models.DateField(blank=True, null=True, verbose_name='billed until')), - ('ignore', models.BooleanField(default=False, verbose_name='ignore')), - ('description', models.TextField(blank=True, verbose_name='description')), - ('account', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='orders', to=settings.AUTH_USER_MODEL, verbose_name='account')), - ('content_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType')), - ('service', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='orders', to='services.Service', verbose_name='service')), - ('content_object_repr', models.CharField(editable=False, help_text='Used for searches.', max_length=256, verbose_name='content object representation')), - ('billed_metric', models.DecimalField(blank=True, decimal_places=2, max_digits=16, null=True, verbose_name='billed metric')), - ], - options={ - 'get_latest_by': 'id', - }, - ), - migrations.AddField( - model_name='metricstorage', - name='order', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='metrics', to='orders.Order', verbose_name='order'), - ), - migrations.AlterIndexTogether( - name='order', - index_together=set([('content_type', 'object_id')]), - ), - ] diff --git a/orchestra/contrib/orders/migrations/0002_auto_20150709_1018.py b/orchestra/contrib/orders/migrations/0002_auto_20150709_1018.py deleted file mode 100644 index acbe5109..00000000 --- a/orchestra/contrib/orders/migrations/0002_auto_20150709_1018.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations -import django.utils.timezone - - -class Migration(migrations.Migration): - - dependencies = [ - ('orders', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='order', - name='registered_on', - field=models.DateField(db_index=True, default=django.utils.timezone.now, verbose_name='registered'), - ), - ] diff --git a/orchestra/contrib/orders/migrations/0003_order_content_object_repr.py b/orchestra/contrib/orders/migrations/0003_order_content_object_repr.py deleted file mode 100644 index a5368eb1..00000000 --- a/orchestra/contrib/orders/migrations/0003_order_content_object_repr.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('orders', '0002_auto_20150709_1018'), - ] - - operations = [ - migrations.AddField( - model_name='order', - name='content_object_repr', - field=models.CharField(editable=False, default='', verbose_name='content object repr', max_length=256), - preserve_default=False, - ), - ] diff --git a/orchestra/contrib/orders/migrations/0004_auto_20150729_0945.py b/orchestra/contrib/orders/migrations/0004_auto_20150729_0945.py deleted file mode 100644 index 3992a5fa..00000000 --- a/orchestra/contrib/orders/migrations/0004_auto_20150729_0945.py +++ /dev/null @@ -1,24 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('orders', '0003_order_content_object_repr'), - ] - - operations = [ - migrations.AddField( - model_name='order', - name='billed_metric', - field=models.DecimalField(verbose_name='billed metric', max_digits=16, decimal_places=2, null=True), - ), - migrations.AlterField( - model_name='order', - name='content_object_repr', - field=models.CharField(verbose_name='content object representation', max_length=256, editable=False), - ), - ] diff --git a/orchestra/contrib/orders/migrations/0005_auto_20160219_1107.py b/orchestra/contrib/orders/migrations/0005_auto_20160219_1107.py deleted file mode 100644 index da9de840..00000000 --- a/orchestra/contrib/orders/migrations/0005_auto_20160219_1107.py +++ /dev/null @@ -1,28 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('orders', '0004_auto_20150729_0945'), - ] - - operations = [ - migrations.AlterField( - model_name='order', - name='billed_metric', - field=models.DecimalField(decimal_places=2, null=True, verbose_name='billed metric', blank=True, max_digits=16), - ), - migrations.AlterField( - model_name='order', - name='content_object_repr', - field=models.CharField(max_length=256, verbose_name='content object representation', help_text='Used for searches.', editable=False), - ), - migrations.AlterIndexTogether( - name='order', - index_together=set([('content_type', 'object_id')]), - ), - ] diff --git a/orchestra/contrib/orders/migrations/__init__.py b/orchestra/contrib/orders/migrations/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/orchestra/contrib/orders/models.py b/orchestra/contrib/orders/models.py index 69e5fa3b..db6febc8 100644 --- a/orchestra/contrib/orders/models.py +++ b/orchestra/contrib/orders/models.py @@ -9,7 +9,7 @@ from django.contrib.contenttypes.fields import GenericForeignKey from django.contrib.contenttypes.models import ContentType from django.core.exceptions import ValidationError from django.utils import timezone -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.models import queryset from orchestra.utils.python import import_class diff --git a/orchestra/contrib/orders/templates/admin/orders/order/bill_selected_options.html b/orchestra/contrib/orders/templates/admin/orders/order/bill_selected_options.html index 878c116f..6dd023f6 100644 --- a/orchestra/contrib/orders/templates/admin/orders/order/bill_selected_options.html +++ b/orchestra/contrib/orders/templates/admin/orders/order/bill_selected_options.html @@ -1,5 +1,5 @@ {% extends "admin/base_site.html" %} -{% load i18n l10n staticfiles admin_urls utils orders %} +{% load i18n l10n static admin_urls utils orders %} {% block extrastyle %} {{ block.super }} diff --git a/orchestra/contrib/payments/actions.py b/orchestra/contrib/payments/actions.py index d2f5a433..ae531555 100644 --- a/orchestra/contrib/payments/actions.py +++ b/orchestra/contrib/payments/actions.py @@ -7,7 +7,7 @@ from django.db import transaction from django.shortcuts import render, redirect from django.utils.safestring import mark_safe from django.utils.text import capfirst -from django.utils.translation import ungettext, ugettext_lazy as _ +from django.utils.translation import ngettext, gettext_lazy as _ from orchestra.admin.decorators import action_with_confirmation from orchestra.admin.utils import change_url @@ -38,11 +38,11 @@ def process_transactions(modeladmin, request, queryset): opts = modeladmin.model._meta num = len(queryset) context = { - 'title': ungettext( + 'title': ngettext( _("One selected transaction has been processed."), _("%s Selected transactions have been processed.") % num, num), - 'content_message': ungettext( + 'content_message': ngettext( _("The following transaction process has been generated, " "you may want to save it on your computer now."), _("The following %s transaction processes have been generated, " @@ -63,7 +63,7 @@ def mark_as_executed(modeladmin, request, queryset): transaction.mark_as_executed() modeladmin.log_change(request, transaction, _("Executed")) num = len(queryset) - msg = ungettext( + msg = ngettext( _("One selected transaction has been marked as executed."), _("%s selected transactions have been marked as executed.") % num, num) @@ -79,7 +79,7 @@ def mark_as_secured(modeladmin, request, queryset): transaction.mark_as_secured() modeladmin.log_change(request, transaction, _("Secured")) num = len(queryset) - msg = ungettext( + msg = ngettext( _("One selected transaction has been marked as secured."), _("%s selected transactions have been marked as secured.") % num, num) @@ -95,7 +95,7 @@ def mark_as_rejected(modeladmin, request, queryset): transaction.mark_as_rejected() modeladmin.log_change(request, transaction, _("Rejected")) num = len(queryset) - msg = ungettext( + msg = ngettext( _("One selected transaction has been marked as rejected."), _("%s selected transactions have been marked as rejected.") % num, num) @@ -134,7 +134,7 @@ def mark_process_as_executed(modeladmin, request, queryset): process.mark_as_executed() modeladmin.log_change(request, process, _("Executed")) num = len(queryset) - msg = ungettext( + msg = ngettext( _("One selected process has been marked as executed."), _("%s selected processes have been marked as executed.") % num, num) @@ -150,7 +150,7 @@ def abort(modeladmin, request, queryset): process.abort() modeladmin.log_change(request, process, _("Aborted")) num = len(queryset) - msg = ungettext( + msg = ngettext( _("One selected process has been aborted."), _("%s selected processes have been aborted.") % num, num) @@ -166,7 +166,7 @@ def commit(modeladmin, request, queryset): transaction.mark_as_rejected() modeladmin.log_change(request, transaction, _("Rejected")) num = len(queryset) - msg = ungettext( + msg = ngettext( _("One selected transaction has been marked as rejected."), _("%s selected transactions have been marked as rejected.") % num, num) diff --git a/orchestra/contrib/payments/admin.py b/orchestra/contrib/payments/admin.py index 016543ac..e134c2e5 100644 --- a/orchestra/contrib/payments/admin.py +++ b/orchestra/contrib/payments/admin.py @@ -3,7 +3,7 @@ from django.urls import reverse from django.http import HttpResponseRedirect from django.utils.html import format_html from django.utils.safestring import mark_safe -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.admin import ChangeViewActionsMixin, ExtendedModelAdmin from orchestra.admin.utils import admin_colored, admin_link, admin_date diff --git a/orchestra/contrib/payments/helpers.py b/orchestra/contrib/payments/helpers.py index b6645d53..59163a09 100644 --- a/orchestra/contrib/payments/helpers.py +++ b/orchestra/contrib/payments/helpers.py @@ -1,5 +1,5 @@ from django.contrib import messages -from django.utils.translation import ungettext, ugettext_lazy as _ +from django.utils.translation import ngettext, gettext_lazy as _ from .models import Transaction @@ -29,7 +29,7 @@ def post_delete_processes(modeladmin, request, related_transactions): transaction.save(update_fields=('state', 'modified_at')) num += 1 modeladmin.log_change(request, transaction, _("Unprocessed")) - messages.success(request, ungettext( + messages.success(request, ngettext( "One related transaction has been marked as waitting for processing", "%i related transactions have been marked as waitting for processing." % num, num diff --git a/orchestra/contrib/payments/methods/creditcard.py b/orchestra/contrib/payments/methods/creditcard.py index 942b6d30..14e5851c 100644 --- a/orchestra/contrib/payments/methods/creditcard.py +++ b/orchestra/contrib/payments/methods/creditcard.py @@ -1,5 +1,5 @@ from django import forms -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from orchestra.plugins.forms import PluginDataForm diff --git a/orchestra/contrib/payments/methods/sepadirectdebit.py b/orchestra/contrib/payments/methods/sepadirectdebit.py index 78ddd8fe..8ce1bf31 100644 --- a/orchestra/contrib/payments/methods/sepadirectdebit.py +++ b/orchestra/contrib/payments/methods/sepadirectdebit.py @@ -5,7 +5,7 @@ from io import StringIO from django import forms from django.utils import timezone -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django_iban.validators import IBANValidator, IBAN_COUNTRY_CODE_LENGTH from rest_framework import serializers diff --git a/orchestra/contrib/payments/migrations/0001_initial.py b/orchestra/contrib/payments/migrations/0001_initial.py deleted file mode 100644 index d63a7988..00000000 --- a/orchestra/contrib/payments/migrations/0001_initial.py +++ /dev/null @@ -1,64 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -import django.db.models.deletion -from django.db import models, migrations -import jsonfield.fields -from django.conf import settings - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('bills', '0002_auto_20150429_1417'), - ] - - operations = [ - migrations.CreateModel( - name='PaymentSource', - fields=[ - ('id', models.AutoField(verbose_name='ID', auto_created=True, serialize=False, primary_key=True)), - ('method', models.CharField(choices=[('CreditCard', 'Credit card'), ('SEPADirectDebit', 'SEPA Direct Debit')], verbose_name='method', max_length=32)), - ('data', jsonfield.fields.JSONField(verbose_name='data', default={})), - ('is_active', models.BooleanField(verbose_name='active', default=True)), - ('account', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, verbose_name='account', related_name='paymentsources', to=settings.AUTH_USER_MODEL)), - ], - ), - migrations.CreateModel( - name='Transaction', - fields=[ - ('id', models.AutoField(verbose_name='ID', auto_created=True, serialize=False, primary_key=True)), - ('state', models.CharField(choices=[('WAITTING_PROCESSING', 'Waitting processing'), ('WAITTING_EXECUTION', 'Waitting execution'), ('EXECUTED', 'Executed'), ('SECURED', 'Secured'), ('REJECTED', 'Rejected')], verbose_name='state', max_length=32, default='WAITTING_PROCESSING')), - ('amount', models.DecimalField(verbose_name='amount', decimal_places=2, max_digits=12)), - ('currency', models.CharField(max_length=10, default='Eur')), - ('created_at', models.DateTimeField(verbose_name='created', auto_now_add=True)), - ('modified_at', models.DateTimeField(verbose_name='modified', auto_now=True)), - ('bill', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, verbose_name='bill', related_name='transactions', to='bills.Bill')), - ], - ), - migrations.CreateModel( - name='TransactionProcess', - fields=[ - ('id', models.AutoField(verbose_name='ID', auto_created=True, serialize=False, primary_key=True)), - ('data', jsonfield.fields.JSONField(blank=True, verbose_name='data')), - ('file', models.FileField(blank=True, upload_to='', verbose_name='file')), - ('state', models.CharField(choices=[('CREATED', 'Created'), ('EXECUTED', 'Executed'), ('ABORTED', 'Aborted'), ('COMMITED', 'Commited')], verbose_name='state', max_length=16, default='CREATED')), - ('created_at', models.DateTimeField(verbose_name='created', auto_now_add=True)), - ('updated_at', models.DateTimeField(verbose_name='updated', auto_now=True)), - ], - options={ - 'verbose_name_plural': 'Transaction processes', - }, - ), - migrations.AddField( - model_name='transaction', - name='process', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, verbose_name='process', null=True, blank=True, related_name='transactions', to='payments.TransactionProcess'), - ), - migrations.AddField( - model_name='transaction', - name='source', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, verbose_name='source', null=True, blank=True, related_name='transactions', to='payments.PaymentSource'), - ), - ] diff --git a/orchestra/contrib/payments/migrations/0001_squashed_0004_auto_20210330_1049.py b/orchestra/contrib/payments/migrations/0001_squashed_0004_auto_20210330_1049.py deleted file mode 100644 index d4b1b8b8..00000000 --- a/orchestra/contrib/payments/migrations/0001_squashed_0004_auto_20210330_1049.py +++ /dev/null @@ -1,70 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2021-04-22 11:27 -from __future__ import unicode_literals - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion -import jsonfield.fields -import orchestra.models.fields - - -class Migration(migrations.Migration): - - replaces = [('payments', '0001_initial'), ('payments', '0002_auto_20150709_1018'), ('payments', '0003_auto_20170528_2011'), ('payments', '0004_auto_20210330_1049')] - - initial = True - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('bills', '0002_auto_20150429_1417'), - ] - - operations = [ - migrations.CreateModel( - name='PaymentSource', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('method', models.CharField(choices=[('CreditCard', 'Credit card'), ('SEPADirectDebit', 'SEPA Direct Debit')], max_length=32, verbose_name='method')), - ('data', jsonfield.fields.JSONField(default={}, verbose_name='data')), - ('is_active', models.BooleanField(default=True, verbose_name='active')), - ('account', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='paymentsources', to=settings.AUTH_USER_MODEL, verbose_name='account')), - ], - ), - migrations.CreateModel( - name='Transaction', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('state', models.CharField(choices=[('WAITTING_PROCESSING', 'Waitting processing'), ('WAITTING_EXECUTION', 'Waitting execution'), ('EXECUTED', 'Executed'), ('SECURED', 'Secured'), ('REJECTED', 'Rejected')], default='WAITTING_PROCESSING', max_length=32, verbose_name='state')), - ('amount', models.DecimalField(decimal_places=2, max_digits=12, verbose_name='amount')), - ('currency', models.CharField(default='Eur', max_length=10)), - ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='created')), - ('modified_at', models.DateTimeField(auto_now=True, verbose_name='modified')), - ('bill', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='transactions', to='bills.Bill', verbose_name='bill')), - ], - ), - migrations.CreateModel( - name='TransactionProcess', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('data', jsonfield.fields.JSONField(blank=True, verbose_name='data')), - ('file', orchestra.models.fields.PrivateFileField(blank=True, upload_to='', verbose_name='file')), - ('state', models.CharField(choices=[('CREATED', 'Created'), ('EXECUTED', 'Executed'), ('ABORTED', 'Aborted'), ('COMMITED', 'Commited')], default='CREATED', max_length=16, verbose_name='state')), - ('created_at', models.DateTimeField(auto_now_add=True, db_index=True, verbose_name='created')), - ('updated_at', models.DateTimeField(auto_now=True, verbose_name='updated')), - ], - options={ - 'verbose_name_plural': 'Transaction processes', - }, - ), - migrations.AddField( - model_name='transaction', - name='process', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='transactions', to='payments.TransactionProcess', verbose_name='process'), - ), - migrations.AddField( - model_name='transaction', - name='source', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='transactions', to='payments.PaymentSource', verbose_name='source'), - ), - ] diff --git a/orchestra/contrib/payments/migrations/0002_auto_20150709_1018.py b/orchestra/contrib/payments/migrations/0002_auto_20150709_1018.py deleted file mode 100644 index 2cf39a6a..00000000 --- a/orchestra/contrib/payments/migrations/0002_auto_20150709_1018.py +++ /dev/null @@ -1,36 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations -import django.db.models.deletion -import orchestra.models.fields - - -class Migration(migrations.Migration): - - dependencies = [ - ('payments', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='paymentsource', - name='method', - field=models.CharField(max_length=32, verbose_name='method', choices=[('SEPADirectDebit', 'SEPA Direct Debit')]), - ), - migrations.AlterField( - model_name='transaction', - name='process', - field=models.ForeignKey(verbose_name='process', on_delete=django.db.models.deletion.SET_NULL, blank=True, related_name='transactions', to='payments.TransactionProcess', null=True), - ), - migrations.AlterField( - model_name='transactionprocess', - name='created_at', - field=models.DateTimeField(db_index=True, verbose_name='created', auto_now_add=True), - ), - migrations.AlterField( - model_name='transactionprocess', - name='file', - field=orchestra.models.fields.PrivateFileField(blank=True, verbose_name='file', upload_to=''), - ), - ] diff --git a/orchestra/contrib/payments/migrations/0003_auto_20170528_2011.py b/orchestra/contrib/payments/migrations/0003_auto_20170528_2011.py deleted file mode 100644 index 40e8b07f..00000000 --- a/orchestra/contrib/payments/migrations/0003_auto_20170528_2011.py +++ /dev/null @@ -1,21 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-05-28 18:11 -from __future__ import unicode_literals - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('payments', '0002_auto_20150709_1018'), - ] - - operations = [ - migrations.AlterField( - model_name='transaction', - name='source', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='transactions', to='payments.PaymentSource', verbose_name='source'), - ), - ] diff --git a/orchestra/contrib/payments/migrations/0004_auto_20210330_1049.py b/orchestra/contrib/payments/migrations/0004_auto_20210330_1049.py deleted file mode 100644 index 8519ff36..00000000 --- a/orchestra/contrib/payments/migrations/0004_auto_20210330_1049.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2021-03-30 10:49 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('payments', '0003_auto_20170528_2011'), - ] - - operations = [ - migrations.AlterField( - model_name='paymentsource', - name='method', - field=models.CharField(choices=[('CreditCard', 'Credit card'), ('SEPADirectDebit', 'SEPA Direct Debit')], max_length=32, verbose_name='method'), - ), - ] diff --git a/orchestra/contrib/payments/migrations/__init__.py b/orchestra/contrib/payments/migrations/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/orchestra/contrib/payments/models.py b/orchestra/contrib/payments/models.py index 4d7770c8..9617ce40 100644 --- a/orchestra/contrib/payments/models.py +++ b/orchestra/contrib/payments/models.py @@ -1,7 +1,7 @@ from django.core.exceptions import ValidationError from django.db import models from django.utils.functional import cached_property -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from jsonfield import JSONField from orchestra.models.fields import PrivateFileField diff --git a/orchestra/contrib/payments/settings.py b/orchestra/contrib/payments/settings.py index 68d27511..65e5702d 100644 --- a/orchestra/contrib/payments/settings.py +++ b/orchestra/contrib/payments/settings.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.contrib.settings import Setting diff --git a/orchestra/contrib/plans/admin.py b/orchestra/contrib/plans/admin.py index df75ca24..0a9ebacb 100644 --- a/orchestra/contrib/plans/admin.py +++ b/orchestra/contrib/plans/admin.py @@ -2,7 +2,7 @@ from django.contrib import admin from django.urls import reverse from django.db import models from django.utils.html import format_html -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.admin import ExtendedModelAdmin from orchestra.admin.utils import insertattr, admin_link diff --git a/orchestra/contrib/plans/migrations/0001_initial.py b/orchestra/contrib/plans/migrations/0001_initial.py deleted file mode 100644 index b48f70b8..00000000 --- a/orchestra/contrib/plans/migrations/0001_initial.py +++ /dev/null @@ -1,59 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations -import django.db.models.deletion -import orchestra.core.validators -from django.conf import settings - - -class Migration(migrations.Migration): - - dependencies = [ - ('services', '0001_initial'), - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.CreateModel( - name='ContractedPlan', - fields=[ - ('id', models.AutoField(primary_key=True, auto_created=True, serialize=False, verbose_name='ID')), - ('account', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, related_name='plans', verbose_name='account')), - ], - options={ - 'verbose_name_plural': 'plans', - }, - ), - migrations.CreateModel( - name='Plan', - fields=[ - ('id', models.AutoField(primary_key=True, auto_created=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(validators=[orchestra.core.validators.validate_name], verbose_name='name', unique=True, max_length=32)), - ('verbose_name', models.CharField(blank=True, verbose_name='verbose_name', max_length=128)), - ('is_active', models.BooleanField(help_text='Designates whether this account should be treated as active. Unselect this instead of deleting accounts.', verbose_name='active', default=True)), - ('is_default', models.BooleanField(help_text='Designates whether this plan is used by default or not.', verbose_name='default', default=False)), - ('is_combinable', models.BooleanField(help_text='Designates whether this plan can be combined with other plans or not.', verbose_name='combinable', default=True)), - ('allow_multiple', models.BooleanField(help_text='Designates whether this plan allow for multiple contractions.', verbose_name='allow multiple', default=False)), - ], - ), - migrations.CreateModel( - name='Rate', - fields=[ - ('id', models.AutoField(primary_key=True, auto_created=True, serialize=False, verbose_name='ID')), - ('quantity', models.PositiveIntegerField(help_text='See rate algorihm help text.', blank=True, verbose_name='quantity', null=True)), - ('price', models.DecimalField(decimal_places=2, max_digits=12, verbose_name='price')), - ('plan', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='plans.Plan', related_name='rates', verbose_name='plan')), - ('service', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='services.Service', related_name='rates', verbose_name='service')), - ], - ), - migrations.AddField( - model_name='contractedplan', - name='plan', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='plans.Plan', related_name='contracts', verbose_name='plan'), - ), - migrations.AlterUniqueTogether( - name='rate', - unique_together=set([('service', 'plan', 'quantity')]), - ), - ] diff --git a/orchestra/contrib/plans/migrations/0001_squashed_0003_auto_20210422_1108.py b/orchestra/contrib/plans/migrations/0001_squashed_0003_auto_20210422_1108.py deleted file mode 100644 index 292fc0cc..00000000 --- a/orchestra/contrib/plans/migrations/0001_squashed_0003_auto_20210422_1108.py +++ /dev/null @@ -1,74 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2021-04-22 11:09 -from __future__ import unicode_literals - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion -import orchestra.core.validators - - -class Migration(migrations.Migration): - - replaces = [('plans', '0001_initial'), ('plans', '0002_auto_20160114_1713'), ('plans', '0003_auto_20210422_1108')] - - initial = True - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('services', '0001_initial'), - ] - - operations = [ - migrations.CreateModel( - name='ContractedPlan', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('account', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='plans', to=settings.AUTH_USER_MODEL, verbose_name='account')), - ], - options={ - 'verbose_name_plural': 'plans', - }, - ), - migrations.CreateModel( - name='Plan', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=32, unique=True, validators=[orchestra.core.validators.validate_name], verbose_name='name')), - ('verbose_name', models.CharField(blank=True, max_length=128, verbose_name='verbose_name')), - ('is_active', models.BooleanField(default=True, help_text='Designates whether this account should be treated as active. Unselect this instead of deleting accounts.', verbose_name='active')), - ('is_default', models.BooleanField(default=False, help_text='Designates whether this plan is used by default or not.', verbose_name='default')), - ('is_combinable', models.BooleanField(default=True, help_text='Designates whether this plan can be combined with other plans or not.', verbose_name='combinable')), - ('allow_multiple', models.BooleanField(default=False, help_text='Designates whether this plan allow for multiple contractions.', verbose_name='allow multiple')), - ], - ), - migrations.CreateModel( - name='Rate', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('quantity', models.PositiveIntegerField(blank=True, help_text='See rate algorihm help text.', null=True, verbose_name='quantity')), - ('price', models.DecimalField(decimal_places=2, max_digits=12, verbose_name='price')), - ('plan', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='rates', to='plans.Plan', verbose_name='plan')), - ('service', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='rates', to='services.Service', verbose_name='service')), - ], - ), - migrations.AddField( - model_name='contractedplan', - name='plan', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='contracts', to='plans.Plan', verbose_name='plan'), - ), - migrations.AlterUniqueTogether( - name='rate', - unique_together=set([('service', 'plan', 'quantity')]), - ), - migrations.AlterField( - model_name='rate', - name='plan', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='rates', to='plans.Plan', verbose_name='plan'), - ), - migrations.AlterField( - model_name='rate', - name='plan', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='rates', to='plans.Plan', verbose_name='plan'), - ), - ] diff --git a/orchestra/contrib/plans/migrations/0002_auto_20160114_1713.py b/orchestra/contrib/plans/migrations/0002_auto_20160114_1713.py deleted file mode 100644 index 58e2ea14..00000000 --- a/orchestra/contrib/plans/migrations/0002_auto_20160114_1713.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('plans', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='rate', - name='plan', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='rates', to='plans.Plan', blank=True, null=True, verbose_name='plan'), - ), - ] diff --git a/orchestra/contrib/plans/migrations/__init__.py b/orchestra/contrib/plans/migrations/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/orchestra/contrib/plans/models.py b/orchestra/contrib/plans/models.py index 22b698f3..429ecc39 100644 --- a/orchestra/contrib/plans/models.py +++ b/orchestra/contrib/plans/models.py @@ -4,7 +4,7 @@ from django.core.validators import ValidationError from django.db import models from django.db.models import Q from django.utils.functional import cached_property -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.core.validators import validate_name from orchestra.models import queryset diff --git a/orchestra/contrib/plans/ratings.py b/orchestra/contrib/plans/ratings.py index e55c7a27..1c1cd9e3 100644 --- a/orchestra/contrib/plans/ratings.py +++ b/orchestra/contrib/plans/ratings.py @@ -1,6 +1,6 @@ import sys -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.utils.python import AttrDict diff --git a/orchestra/contrib/resources/actions.py b/orchestra/contrib/resources/actions.py index c355da2b..3120213b 100644 --- a/orchestra/contrib/resources/actions.py +++ b/orchestra/contrib/resources/actions.py @@ -1,7 +1,7 @@ from django.urls import reverse from django.shortcuts import redirect, render from django.utils.safestring import mark_safe -from django.utils.translation import ungettext, ugettext_lazy as _ +from django.utils.translation import ngettext, gettext_lazy as _ def run_monitor(modeladmin, request, queryset): @@ -18,7 +18,7 @@ def run_monitor(modeladmin, request, queryset): num = len(queryset) # TODO listfilter by uuid: task.request.id + ?task_id__in=ids link = reverse('admin:djcelery_taskstate_changelist') - msg = ungettext( + msg = ngettext( _("One selected resource has been scheduled for monitoring.") % link, _("%s selected resource have been scheduled for monitoring.") % (num, link), num) diff --git a/orchestra/contrib/resources/admin.py b/orchestra/contrib/resources/admin.py index b965c4ee..53f573ee 100644 --- a/orchestra/contrib/resources/admin.py +++ b/orchestra/contrib/resources/admin.py @@ -1,7 +1,7 @@ from urllib.parse import parse_qs from django.apps import apps -from django.conf.urls import url +from django.urls import re_path as url from django.contrib import admin, messages from django.contrib.contenttypes.admin import GenericTabularInline from django.contrib.contenttypes.forms import BaseGenericInlineFormSet @@ -13,7 +13,7 @@ from django.templatetags.static import static from django.utils.functional import cached_property from django.utils.html import format_html from django.utils.safestring import mark_safe -from django.utils.translation import ungettext, ugettext_lazy as _ +from django.utils.translation import ngettext, gettext_lazy as _ from orchestra.admin import ExtendedModelAdmin from orchestra.admin.utils import insertattr, get_modeladmin, admin_link, admin_date @@ -70,7 +70,7 @@ class ResourceAdmin(ExtendedModelAdmin): if monitor not in backends: not_routed.append(monitor) if not_routed: - messages.warning(request, ungettext( + messages.warning(request, ngettext( _("%(not_routed)s monitor doesn't have any configured route."), _("%(not_routed)s monitors don't have any configured route."), len(not_routed), diff --git a/orchestra/contrib/resources/aggregations.py b/orchestra/contrib/resources/aggregations.py index 13d966cc..f43e7ffd 100644 --- a/orchestra/contrib/resources/aggregations.py +++ b/orchestra/contrib/resources/aggregations.py @@ -3,7 +3,7 @@ import decimal import itertools from django.utils import timezone -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.utils.python import AttrDict diff --git a/orchestra/contrib/resources/backends.py b/orchestra/contrib/resources/backends.py index 2ca21c23..a997df5f 100644 --- a/orchestra/contrib/resources/backends.py +++ b/orchestra/contrib/resources/backends.py @@ -2,7 +2,7 @@ import datetime from django.utils import timezone from django.utils.functional import cached_property -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.contrib.orchestration import ServiceBackend diff --git a/orchestra/contrib/resources/filters.py b/orchestra/contrib/resources/filters.py index 91ea81a3..fe8392cd 100644 --- a/orchestra/contrib/resources/filters.py +++ b/orchestra/contrib/resources/filters.py @@ -1,5 +1,5 @@ from django.contrib.admin import SimpleListFilter -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ class ResourceDataListFilter(SimpleListFilter): diff --git a/orchestra/contrib/resources/forms.py b/orchestra/contrib/resources/forms.py index 3099fc5f..75d5b85a 100644 --- a/orchestra/contrib/resources/forms.py +++ b/orchestra/contrib/resources/forms.py @@ -1,5 +1,5 @@ from django import forms -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.forms import ReadOnlyFormMixin from orchestra.forms.widgets import SpanWidget diff --git a/orchestra/contrib/resources/migrations/0001_initial.py b/orchestra/contrib/resources/migrations/0001_initial.py deleted file mode 100644 index ca718163..00000000 --- a/orchestra/contrib/resources/migrations/0001_initial.py +++ /dev/null @@ -1,76 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations -import django.db.models.deletion -import orchestra.contrib.resources.validators -import orchestra.models.fields -import django.utils.timezone -import orchestra.core.validators - - -class Migration(migrations.Migration): - - dependencies = [ - ('djcelery', '__first__'), - ('contenttypes', '0002_remove_content_type_name'), - ] - - operations = [ - migrations.CreateModel( - name='MonitorData', - fields=[ - ('id', models.AutoField(primary_key=True, auto_created=True, serialize=False, verbose_name='ID')), - ('monitor', models.CharField(choices=[('Apache2Traffic', '[M] Apache 2 Traffic'), ('DovecotMaildirDisk', '[M] Dovecot Maildir size'), ('Exim4Traffic', '[M] Exim4 traffic'), ('MailmanSubscribers', '[M] Mailman subscribers'), ('MailmanTraffic', '[M] Mailman traffic'), ('MysqlDisk', '[M] MySQL disk'), ('OpenVZTraffic', '[M] OpenVZTraffic'), ('PostfixMailscannerTraffic', '[M] Postfix-Mailscanner traffic'), ('UNIXUserDisk', '[M] UNIX user disk'), ('VsFTPdTraffic', '[M] VsFTPd traffic')], max_length=256, verbose_name='monitor')), - ('object_id', models.PositiveIntegerField(verbose_name='object id')), - ('created_at', models.DateTimeField(default=django.utils.timezone.now, verbose_name='created')), - ('value', models.DecimalField(decimal_places=2, max_digits=16, verbose_name='value')), - ('content_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, verbose_name='content type', to='contenttypes.ContentType')), - ], - options={ - 'get_latest_by': 'id', - 'verbose_name_plural': 'monitor data', - }, - ), - migrations.CreateModel( - name='Resource', - fields=[ - ('id', models.AutoField(primary_key=True, auto_created=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(validators=[orchestra.core.validators.validate_name], help_text='Required. 32 characters or fewer. Lowercase letters, digits and hyphen only.', max_length=32, verbose_name='name')), - ('verbose_name', models.CharField(max_length=256, verbose_name='verbose name')), - ('aggregation', models.CharField(choices=[('last-10-days-avg', 'Last 10 days AVG'), ('last', 'Last value'), ('monthly-avg', 'Monthly AVG'), ('monthly-sum', 'Monthly Sum')], help_text='Method used for aggregating this resource monitored data.', max_length=16, default='last-10-days-avg', verbose_name='aggregation')), - ('on_demand', models.BooleanField(help_text='If enabled the resource will not be pre-allocated, but allocated under the application demand', default=False, verbose_name='on demand')), - ('default_allocation', models.PositiveIntegerField(help_text='Default allocation value used when this is not an on demand resource', blank=True, null=True, verbose_name='default allocation')), - ('unit', models.CharField(help_text='The unit in which this resource is represented. For example GB, KB or subscribers', max_length=16, verbose_name='unit')), - ('scale', models.CharField(validators=[orchestra.contrib.resources.validators.validate_scale], help_text='Scale in which this resource monitoring resoults should be prorcessed to match with unit. e.g. 10**9', max_length=32, verbose_name='scale')), - ('disable_trigger', models.BooleanField(help_text='Disables monitors exeeded and recovery triggers', default=False, verbose_name='disable trigger')), - ('monitors', orchestra.models.fields.MultiSelectField(choices=[('Apache2Traffic', '[M] Apache 2 Traffic'), ('DovecotMaildirDisk', '[M] Dovecot Maildir size'), ('Exim4Traffic', '[M] Exim4 traffic'), ('MailmanSubscribers', '[M] Mailman subscribers'), ('MailmanTraffic', '[M] Mailman traffic'), ('MysqlDisk', '[M] MySQL disk'), ('OpenVZTraffic', '[M] OpenVZTraffic'), ('PostfixMailscannerTraffic', '[M] Postfix-Mailscanner traffic'), ('UNIXUserDisk', '[M] UNIX user disk'), ('VsFTPdTraffic', '[M] VsFTPd traffic')], blank=True, help_text='Monitor backends used for monitoring this resource.', max_length=256, verbose_name='monitors')), - ('is_active', models.BooleanField(default=True, verbose_name='active')), - ('content_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, help_text='Model where this resource will be hooked.', to='contenttypes.ContentType')), - ('crontab', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, help_text='Crontab for periodic execution. Leave it empty to disable periodic monitoring', to='djcelery.CrontabSchedule', verbose_name='crontab', blank=True, null=True)), - ], - ), - migrations.CreateModel( - name='ResourceData', - fields=[ - ('id', models.AutoField(primary_key=True, auto_created=True, serialize=False, verbose_name='ID')), - ('object_id', models.PositiveIntegerField(verbose_name='object id')), - ('used', models.DecimalField(decimal_places=3, editable=False, max_digits=16, null=True, verbose_name='used')), - ('updated_at', models.DateTimeField(editable=False, null=True, verbose_name='updated')), - ('allocated', models.DecimalField(decimal_places=2, max_digits=8, blank=True, null=True, verbose_name='allocated')), - ('content_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, verbose_name='content type', to='contenttypes.ContentType')), - ('resource', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='dataset', to='resources.Resource', verbose_name='resource')), - ], - options={ - 'verbose_name_plural': 'resource data', - }, - ), - migrations.AlterUniqueTogether( - name='resourcedata', - unique_together=set([('resource', 'content_type', 'object_id')]), - ), - migrations.AlterUniqueTogether( - name='resource', - unique_together=set([('name', 'content_type'), ('verbose_name', 'content_type')]), - ), - ] diff --git a/orchestra/contrib/resources/migrations/0001_squashed_0011_auto_20170528_2005.py b/orchestra/contrib/resources/migrations/0001_squashed_0011_auto_20170528_2005.py deleted file mode 100644 index b0f8b8e6..00000000 --- a/orchestra/contrib/resources/migrations/0001_squashed_0011_auto_20170528_2005.py +++ /dev/null @@ -1,127 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2021-04-22 11:26 -from __future__ import unicode_literals - -from django.db import migrations, models -import django.db.models.deletion -import django.utils.timezone -import orchestra.contrib.resources.validators -import orchestra.core.validators -import orchestra.models.fields - - -class Migration(migrations.Migration): - - replaces = [('resources', '0001_initial'), ('resources', '0002_auto_20150502_1429'), ('resources', '0003_auto_20150502_1433'), ('resources', '0004_auto_20150503_1559'), ('resources', '0005_auto_20150723_0940'), ('resources', '0006_auto_20150723_1249'), ('resources', '0007_auto_20150723_1251'), ('resources', '0008_monitordata_state'), ('resources', '0009_auto_20150804_1450'), ('resources', '0010_auto_20160219_1108'), ('resources', '0011_auto_20170528_2005')] - - initial = True - - dependencies = [ - ('djcelery', '__first__'), - ('contenttypes', '0002_remove_content_type_name'), - ] - - operations = [ - migrations.CreateModel( - name='MonitorData', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('monitor', models.CharField(choices=[('Apache2Traffic', '[M] Apache 2 Traffic'), ('ApacheTrafficByName', '[M] ApacheTrafficByName'), ('DokuWikiMuTraffic', '[M] DokuWiki MU Traffic'), ('DovecotMaildirDisk', '[M] Dovecot Maildir size'), ('Exim4Traffic', '[M] Exim4 traffic'), ('MailmanSubscribers', '[M] Mailman subscribers'), ('MailmanTraffic', '[M] Mailman traffic'), ('MysqlDisk', '[M] MySQL disk'), ('PostfixMailscannerTraffic', '[M] Postfix-Mailscanner traffic'), ('ProxmoxOpenVZTraffic', '[M] ProxmoxOpenVZTraffic'), ('UNIXUserDisk', '[M] UNIX user disk'), ('VsFTPdTraffic', '[M] VsFTPd traffic'), ('WordpressMuTraffic', '[M] Wordpress MU Traffic'), ('NextCloudDiskQuota', '[M] nextCloud SaaS Disk Quota'), ('NextcloudTraffic', '[M] nextCloud SaaS Traffic'), ('OwnCloudDiskQuota', '[M] ownCloud SaaS Disk Quota'), ('OwncloudTraffic', '[M] ownCloud SaaS Traffic'), ('PhpListTraffic', '[M] phpList SaaS Traffic')], db_index=True, max_length=256, verbose_name='monitor')), - ('object_id', models.PositiveIntegerField(verbose_name='object id')), - ('created_at', models.DateTimeField(db_index=True, default=django.utils.timezone.now, verbose_name='created')), - ('value', models.DecimalField(decimal_places=2, max_digits=16, verbose_name='value')), - ('content_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType', verbose_name='content type')), - ('content_object_repr', models.CharField(default='', editable=False, max_length=256, verbose_name='content object representation')), - ('state', models.DecimalField(decimal_places=2, help_text='Optional field used to store current state needed for diff-based monitoring.', max_digits=16, null=True, verbose_name='state')), - ], - options={ - 'get_latest_by': 'id', - 'verbose_name_plural': 'monitor data', - }, - ), - migrations.CreateModel( - name='Resource', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(help_text='Required. 32 characters or fewer. Lowercase letters, digits and hyphen only.', max_length=32, validators=[orchestra.core.validators.validate_name], verbose_name='name')), - ('verbose_name', models.CharField(max_length=256, verbose_name='verbose name')), - ('aggregation', models.CharField(choices=[('last-10-days-avg', 'Last 10 days AVG'), ('last', 'Last value'), ('monthly-avg', 'Monthly AVG'), ('monthly-sum', 'Monthly Sum')], default='last-10-days-avg', help_text='Method used for aggregating this resource monitored data.', max_length=16, verbose_name='aggregation')), - ('on_demand', models.BooleanField(default=False, help_text='If enabled the resource will not be pre-allocated, but allocated under the application demand', verbose_name='on demand')), - ('default_allocation', models.PositiveIntegerField(blank=True, help_text='Default allocation value used when this is not an on demand resource', null=True, verbose_name='default allocation')), - ('unit', models.CharField(help_text='The unit in which this resource is represented. For example GB, KB or subscribers', max_length=16, verbose_name='unit')), - ('scale', models.CharField(help_text='Scale in which this resource monitoring resoults should be prorcessed to match with unit. e.g. 10**9', max_length=32, validators=[orchestra.contrib.resources.validators.validate_scale], verbose_name='scale')), - ('disable_trigger', models.BooleanField(default=False, help_text='Disables monitors exeeded and recovery triggers', verbose_name='disable trigger')), - ('monitors', orchestra.models.fields.MultiSelectField(blank=True, choices=[('Apache2Traffic', '[M] Apache 2 Traffic'), ('DovecotMaildirDisk', '[M] Dovecot Maildir size'), ('Exim4Traffic', '[M] Exim4 traffic'), ('MailmanSubscribers', '[M] Mailman subscribers'), ('MailmanTraffic', '[M] Mailman traffic'), ('MysqlDisk', '[M] MySQL disk'), ('OpenVZTraffic', '[M] OpenVZTraffic'), ('PostfixMailscannerTraffic', '[M] Postfix-Mailscanner traffic'), ('UNIXUserDisk', '[M] UNIX user disk'), ('VsFTPdTraffic', '[M] VsFTPd traffic')], help_text='Monitor backends used for monitoring this resource.', max_length=256, verbose_name='monitors')), - ('is_active', models.BooleanField(default=True, verbose_name='active')), - ('content_type', models.ForeignKey(help_text='Model where this resource will be hooked.', on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType')), - ('crontab', models.ForeignKey(blank=True, help_text='Crontab for periodic execution. Leave it empty to disable periodic monitoring', null=True, on_delete=django.db.models.deletion.CASCADE, to='djcelery.CrontabSchedule', verbose_name='crontab')), - ], - ), - migrations.CreateModel( - name='ResourceData', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('object_id', models.PositiveIntegerField(verbose_name='object id')), - ('used', models.DecimalField(decimal_places=3, editable=False, max_digits=16, null=True, verbose_name='used')), - ('updated_at', models.DateTimeField(editable=False, null=True, verbose_name='updated')), - ('allocated', models.DecimalField(blank=True, decimal_places=2, max_digits=8, null=True, verbose_name='allocated')), - ('content_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType', verbose_name='content type')), - ('resource', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='dataset', to='resources.Resource', verbose_name='resource')), - ('content_object_repr', models.CharField(default='', editable=False, max_length=256, verbose_name='content object representation')), - ], - options={ - 'verbose_name_plural': 'resource data', - }, - ), - migrations.AlterUniqueTogether( - name='resourcedata', - unique_together=set([('resource', 'content_type', 'object_id')]), - ), - migrations.AlterField( - model_name='resource', - name='disable_trigger', - field=models.BooleanField(default=True, help_text='Disables monitors exeeded and recovery triggers', verbose_name='disable trigger'), - ), - migrations.AlterField( - model_name='resource', - name='monitors', - field=orchestra.models.fields.MultiSelectField(blank=True, choices=[('Apache2Traffic', '[M] Apache 2 Traffic'), ('ApacheTrafficByName', '[M] ApacheTrafficByName'), ('DokuWikiMuTraffic', '[M] DokuWiki MU Traffic'), ('DovecotMaildirDisk', '[M] Dovecot Maildir size'), ('Exim4Traffic', '[M] Exim4 traffic'), ('MailmanSubscribers', '[M] Mailman subscribers'), ('MailmanTraffic', '[M] Mailman traffic'), ('MysqlDisk', '[M] MySQL disk'), ('OpenVZTraffic', '[M] OpenVZTraffic'), ('PostfixMailscannerTraffic', '[M] Postfix-Mailscanner traffic'), ('UNIXUserDisk', '[M] UNIX user disk'), ('VsFTPdTraffic', '[M] VsFTPd traffic'), ('WordpressMuTraffic', '[M] Wordpress MU Traffic'), ('OwnCloudDiskQuota', '[M] ownCloud SaaS Disk Quota'), ('OwncloudTraffic', '[M] ownCloud SaaS Traffic'), ('PhpListTraffic', '[M] phpList SaaS Traffic')], help_text='Monitor backends used for monitoring this resource.', max_length=256, verbose_name='monitors'), - ), - migrations.AlterField( - model_name='resource', - name='crontab', - field=models.ForeignKey(blank=True, help_text='Crontab for periodic execution. Leave it empty to disable periodic monitoring', null=True, on_delete=django.db.models.deletion.SET_NULL, to='djcelery.CrontabSchedule', verbose_name='crontab'), - ), - migrations.AlterField( - model_name='resource', - name='monitors', - field=orchestra.models.fields.MultiSelectField(blank=True, choices=[('Apache2Traffic', '[M] Apache 2 Traffic'), ('ApacheTrafficByName', '[M] ApacheTrafficByName'), ('DokuWikiMuTraffic', '[M] DokuWiki MU Traffic'), ('DovecotMaildirDisk', '[M] Dovecot Maildir size'), ('Exim4Traffic', '[M] Exim4 traffic'), ('MailmanSubscribers', '[M] Mailman subscribers'), ('MailmanTraffic', '[M] Mailman traffic'), ('MysqlDisk', '[M] MySQL disk'), ('PostfixMailscannerTraffic', '[M] Postfix-Mailscanner traffic'), ('ProxmoxOpenVZTraffic', '[M] ProxmoxOpenVZTraffic'), ('UNIXUserDisk', '[M] UNIX user disk'), ('VsFTPdTraffic', '[M] VsFTPd traffic'), ('WordpressMuTraffic', '[M] Wordpress MU Traffic'), ('NextCloudDiskQuota', '[M] nextCloud SaaS Disk Quota'), ('NextcloudTraffic', '[M] nextCloud SaaS Traffic'), ('OwnCloudDiskQuota', '[M] ownCloud SaaS Disk Quota'), ('OwncloudTraffic', '[M] ownCloud SaaS Traffic'), ('PhpListTraffic', '[M] phpList SaaS Traffic')], help_text='Monitor backends used for monitoring this resource.', max_length=256, verbose_name='monitors'), - ), - migrations.AlterUniqueTogether( - name='resource', - unique_together=set([('name', 'content_type'), ('verbose_name', 'content_type')]), - ), - migrations.AlterField( - model_name='resourcedata', - name='object_id', - field=models.PositiveIntegerField(db_index=True, verbose_name='object id'), - ), - migrations.AlterField( - model_name='resourcedata', - name='allocated', - field=models.PositiveIntegerField(blank=True, null=True, verbose_name='allocated'), - ), - migrations.AlterField( - model_name='resourcedata', - name='object_id', - field=models.PositiveIntegerField(verbose_name='object id'), - ), - migrations.AlterIndexTogether( - name='monitordata', - index_together=set([('content_type', 'object_id')]), - ), - migrations.AlterIndexTogether( - name='resourcedata', - index_together=set([('content_type', 'object_id')]), - ), - ] diff --git a/orchestra/contrib/resources/migrations/0002_auto_20150502_1429.py b/orchestra/contrib/resources/migrations/0002_auto_20150502_1429.py deleted file mode 100644 index 83c9b197..00000000 --- a/orchestra/contrib/resources/migrations/0002_auto_20150502_1429.py +++ /dev/null @@ -1,30 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('resources', '0001_initial'), - ] - - operations = [ - migrations.CreateModel( - name='CrontabSchedule', - fields=[ - ('id', models.AutoField(serialize=False, primary_key=True, auto_created=True, verbose_name='ID')), - ('minute', models.CharField(max_length=64, verbose_name='minute', default='*')), - ('hour', models.CharField(max_length=64, verbose_name='hour', default='*')), - ('day_of_week', models.CharField(max_length=64, verbose_name='day of week', default='*')), - ('day_of_month', models.CharField(max_length=64, verbose_name='day of month', default='*')), - ('month_of_year', models.CharField(max_length=64, verbose_name='month of year', default='*')), - ], - options={ - 'verbose_name': 'crontab', - 'ordering': ('month_of_year', 'day_of_month', 'day_of_week', 'hour', 'minute'), - 'verbose_name_plural': 'crontabs', - }, - ), - ] diff --git a/orchestra/contrib/resources/migrations/0003_auto_20150502_1433.py b/orchestra/contrib/resources/migrations/0003_auto_20150502_1433.py deleted file mode 100644 index 7a3f3472..00000000 --- a/orchestra/contrib/resources/migrations/0003_auto_20150502_1433.py +++ /dev/null @@ -1,14 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('resources', '0002_auto_20150502_1429'), - ] - - operations = [ - ] diff --git a/orchestra/contrib/resources/migrations/0004_auto_20150503_1559.py b/orchestra/contrib/resources/migrations/0004_auto_20150503_1559.py deleted file mode 100644 index 7b47a594..00000000 --- a/orchestra/contrib/resources/migrations/0004_auto_20150503_1559.py +++ /dev/null @@ -1,17 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('resources', '0003_auto_20150502_1433'), - ] - - operations = [ - migrations.DeleteModel( - name='CrontabSchedule', - ), - ] diff --git a/orchestra/contrib/resources/migrations/0005_auto_20150723_0940.py b/orchestra/contrib/resources/migrations/0005_auto_20150723_0940.py deleted file mode 100644 index da6f88c0..00000000 --- a/orchestra/contrib/resources/migrations/0005_auto_20150723_0940.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('resources', '0004_auto_20150503_1559'), - ] - - operations = [ - migrations.AddField( - model_name='monitordata', - name='content_object_repr', - field=models.CharField(default='', editable=False, max_length=256, verbose_name='content object representation'), - preserve_default=False, - ), - migrations.AddField( - model_name='resourcedata', - name='content_object_repr', - field=models.CharField(default='', editable=False, max_length=256, verbose_name='content object representation'), - preserve_default=False, - ), - ] diff --git a/orchestra/contrib/resources/migrations/0006_auto_20150723_1249.py b/orchestra/contrib/resources/migrations/0006_auto_20150723_1249.py deleted file mode 100644 index ff1771f4..00000000 --- a/orchestra/contrib/resources/migrations/0006_auto_20150723_1249.py +++ /dev/null @@ -1,30 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations -import django.utils.timezone - - -class Migration(migrations.Migration): - - dependencies = [ - ('resources', '0005_auto_20150723_0940'), - ] - - operations = [ - migrations.AlterField( - model_name='monitordata', - name='created_at', - field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='created', db_index=True), - ), - migrations.AlterField( - model_name='monitordata', - name='monitor', - field=models.CharField(max_length=256, choices=[('Apache2Traffic', '[M] Apache 2 Traffic'), ('DovecotMaildirDisk', '[M] Dovecot Maildir size'), ('Exim4Traffic', '[M] Exim4 traffic'), ('MailmanSubscribers', '[M] Mailman subscribers'), ('MailmanTraffic', '[M] Mailman traffic'), ('MysqlDisk', '[M] MySQL disk'), ('OpenVZTraffic', '[M] OpenVZTraffic'), ('PostfixMailscannerTraffic', '[M] Postfix-Mailscanner traffic'), ('UNIXUserDisk', '[M] UNIX user disk'), ('VsFTPdTraffic', '[M] VsFTPd traffic')], verbose_name='monitor', db_index=True), - ), - migrations.AlterField( - model_name='monitordata', - name='object_id', - field=models.PositiveIntegerField(verbose_name='object id', db_index=True), - ), - ] diff --git a/orchestra/contrib/resources/migrations/0007_auto_20150723_1251.py b/orchestra/contrib/resources/migrations/0007_auto_20150723_1251.py deleted file mode 100644 index 6b082111..00000000 --- a/orchestra/contrib/resources/migrations/0007_auto_20150723_1251.py +++ /dev/null @@ -1,19 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('resources', '0006_auto_20150723_1249'), - ] - - operations = [ - migrations.AlterField( - model_name='resourcedata', - name='object_id', - field=models.PositiveIntegerField(verbose_name='object id', db_index=True), - ), - ] diff --git a/orchestra/contrib/resources/migrations/0008_monitordata_state.py b/orchestra/contrib/resources/migrations/0008_monitordata_state.py deleted file mode 100644 index 65475d4e..00000000 --- a/orchestra/contrib/resources/migrations/0008_monitordata_state.py +++ /dev/null @@ -1,19 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('resources', '0007_auto_20150723_1251'), - ] - - operations = [ - migrations.AddField( - model_name='monitordata', - name='state', - field=models.DecimalField(verbose_name='state', null=True, max_digits=16, help_text='Optional field used to store current state needed for diff-based monitoring.', decimal_places=2), - ), - ] diff --git a/orchestra/contrib/resources/migrations/0009_auto_20150804_1450.py b/orchestra/contrib/resources/migrations/0009_auto_20150804_1450.py deleted file mode 100644 index f93fb2c3..00000000 --- a/orchestra/contrib/resources/migrations/0009_auto_20150804_1450.py +++ /dev/null @@ -1,19 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('resources', '0008_monitordata_state'), - ] - - operations = [ - migrations.AlterField( - model_name='resourcedata', - name='allocated', - field=models.PositiveIntegerField(verbose_name='allocated', null=True, blank=True), - ), - ] diff --git a/orchestra/contrib/resources/migrations/0010_auto_20160219_1108.py b/orchestra/contrib/resources/migrations/0010_auto_20160219_1108.py deleted file mode 100644 index 9d709ea0..00000000 --- a/orchestra/contrib/resources/migrations/0010_auto_20160219_1108.py +++ /dev/null @@ -1,48 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations, models -import orchestra.models.fields - - -class Migration(migrations.Migration): - - dependencies = [ - ('resources', '0009_auto_20150804_1450'), - ] - - operations = [ - migrations.AlterField( - model_name='monitordata', - name='monitor', - field=models.CharField(db_index=True, choices=[('Apache2Traffic', '[M] Apache 2 Traffic'), ('ApacheTrafficByName', '[M] ApacheTrafficByName'), ('DokuWikiMuTraffic', '[M] DokuWiki MU Traffic'), ('DovecotMaildirDisk', '[M] Dovecot Maildir size'), ('Exim4Traffic', '[M] Exim4 traffic'), ('MailmanSubscribers', '[M] Mailman subscribers'), ('MailmanTraffic', '[M] Mailman traffic'), ('MysqlDisk', '[M] MySQL disk'), ('OpenVZTraffic', '[M] OpenVZTraffic'), ('PostfixMailscannerTraffic', '[M] Postfix-Mailscanner traffic'), ('UNIXUserDisk', '[M] UNIX user disk'), ('VsFTPdTraffic', '[M] VsFTPd traffic'), ('WordpressMuTraffic', '[M] Wordpress MU Traffic'), ('OwnCloudDiskQuota', '[M] ownCloud SaaS Disk Quota'), ('OwncloudTraffic', '[M] ownCloud SaaS Traffic'), ('PhpListTraffic', '[M] phpList SaaS Traffic')], verbose_name='monitor', max_length=256), - ), - migrations.AlterField( - model_name='monitordata', - name='object_id', - field=models.PositiveIntegerField(verbose_name='object id'), - ), - migrations.AlterField( - model_name='resource', - name='disable_trigger', - field=models.BooleanField(help_text='Disables monitors exeeded and recovery triggers', verbose_name='disable trigger', default=True), - ), - migrations.AlterField( - model_name='resource', - name='monitors', - field=orchestra.models.fields.MultiSelectField(help_text='Monitor backends used for monitoring this resource.', blank=True, verbose_name='monitors', max_length=256, choices=[('Apache2Traffic', '[M] Apache 2 Traffic'), ('ApacheTrafficByName', '[M] ApacheTrafficByName'), ('DokuWikiMuTraffic', '[M] DokuWiki MU Traffic'), ('DovecotMaildirDisk', '[M] Dovecot Maildir size'), ('Exim4Traffic', '[M] Exim4 traffic'), ('MailmanSubscribers', '[M] Mailman subscribers'), ('MailmanTraffic', '[M] Mailman traffic'), ('MysqlDisk', '[M] MySQL disk'), ('OpenVZTraffic', '[M] OpenVZTraffic'), ('PostfixMailscannerTraffic', '[M] Postfix-Mailscanner traffic'), ('UNIXUserDisk', '[M] UNIX user disk'), ('VsFTPdTraffic', '[M] VsFTPd traffic'), ('WordpressMuTraffic', '[M] Wordpress MU Traffic'), ('OwnCloudDiskQuota', '[M] ownCloud SaaS Disk Quota'), ('OwncloudTraffic', '[M] ownCloud SaaS Traffic'), ('PhpListTraffic', '[M] phpList SaaS Traffic')]), - ), - migrations.AlterField( - model_name='resourcedata', - name='object_id', - field=models.PositiveIntegerField(verbose_name='object id'), - ), - migrations.AlterIndexTogether( - name='monitordata', - index_together=set([('content_type', 'object_id')]), - ), - migrations.AlterIndexTogether( - name='resourcedata', - index_together=set([('content_type', 'object_id')]), - ), - ] diff --git a/orchestra/contrib/resources/migrations/0011_auto_20170528_2005.py b/orchestra/contrib/resources/migrations/0011_auto_20170528_2005.py deleted file mode 100644 index b82b15af..00000000 --- a/orchestra/contrib/resources/migrations/0011_auto_20170528_2005.py +++ /dev/null @@ -1,32 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-05-28 18:05 -from __future__ import unicode_literals - -from django.db import migrations, models -import django.db.models.deletion -import orchestra.models.fields - - -class Migration(migrations.Migration): - - dependencies = [ - ('resources', '0010_auto_20160219_1108'), - ] - - operations = [ - migrations.AlterField( - model_name='monitordata', - name='monitor', - field=models.CharField(choices=[('Apache2Traffic', '[M] Apache 2 Traffic'), ('ApacheTrafficByName', '[M] ApacheTrafficByName'), ('DokuWikiMuTraffic', '[M] DokuWiki MU Traffic'), ('DovecotMaildirDisk', '[M] Dovecot Maildir size'), ('Exim4Traffic', '[M] Exim4 traffic'), ('MailmanSubscribers', '[M] Mailman subscribers'), ('MailmanTraffic', '[M] Mailman traffic'), ('MysqlDisk', '[M] MySQL disk'), ('PostfixMailscannerTraffic', '[M] Postfix-Mailscanner traffic'), ('ProxmoxOpenVZTraffic', '[M] ProxmoxOpenVZTraffic'), ('UNIXUserDisk', '[M] UNIX user disk'), ('VsFTPdTraffic', '[M] VsFTPd traffic'), ('WordpressMuTraffic', '[M] Wordpress MU Traffic'), ('NextCloudDiskQuota', '[M] nextCloud SaaS Disk Quota'), ('NextcloudTraffic', '[M] nextCloud SaaS Traffic'), ('OwnCloudDiskQuota', '[M] ownCloud SaaS Disk Quota'), ('OwncloudTraffic', '[M] ownCloud SaaS Traffic'), ('PhpListTraffic', '[M] phpList SaaS Traffic')], db_index=True, max_length=256, verbose_name='monitor'), - ), - migrations.AlterField( - model_name='resource', - name='crontab', - field=models.ForeignKey(blank=True, help_text='Crontab for periodic execution. Leave it empty to disable periodic monitoring', null=True, on_delete=django.db.models.deletion.SET_NULL, to='djcelery.CrontabSchedule', verbose_name='crontab'), - ), - migrations.AlterField( - model_name='resource', - name='monitors', - field=orchestra.models.fields.MultiSelectField(blank=True, choices=[('Apache2Traffic', '[M] Apache 2 Traffic'), ('ApacheTrafficByName', '[M] ApacheTrafficByName'), ('DokuWikiMuTraffic', '[M] DokuWiki MU Traffic'), ('DovecotMaildirDisk', '[M] Dovecot Maildir size'), ('Exim4Traffic', '[M] Exim4 traffic'), ('MailmanSubscribers', '[M] Mailman subscribers'), ('MailmanTraffic', '[M] Mailman traffic'), ('MysqlDisk', '[M] MySQL disk'), ('PostfixMailscannerTraffic', '[M] Postfix-Mailscanner traffic'), ('ProxmoxOpenVZTraffic', '[M] ProxmoxOpenVZTraffic'), ('UNIXUserDisk', '[M] UNIX user disk'), ('VsFTPdTraffic', '[M] VsFTPd traffic'), ('WordpressMuTraffic', '[M] Wordpress MU Traffic'), ('NextCloudDiskQuota', '[M] nextCloud SaaS Disk Quota'), ('NextcloudTraffic', '[M] nextCloud SaaS Traffic'), ('OwnCloudDiskQuota', '[M] ownCloud SaaS Disk Quota'), ('OwncloudTraffic', '[M] ownCloud SaaS Traffic'), ('PhpListTraffic', '[M] phpList SaaS Traffic')], help_text='Monitor backends used for monitoring this resource.', max_length=256, verbose_name='monitors'), - ), - ] diff --git a/orchestra/contrib/resources/migrations/__init__.py b/orchestra/contrib/resources/migrations/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/orchestra/contrib/resources/models.py b/orchestra/contrib/resources/models.py index 50c1b14a..7b1e0ff9 100644 --- a/orchestra/contrib/resources/models.py +++ b/orchestra/contrib/resources/models.py @@ -4,7 +4,7 @@ from django.apps import apps from django.db import models from django.utils import timezone from django.utils.functional import cached_property -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from djcelery.models import PeriodicTask from orchestra.core import validators diff --git a/orchestra/contrib/resources/validators.py b/orchestra/contrib/resources/validators.py index 606641cc..710fb5f5 100644 --- a/orchestra/contrib/resources/validators.py +++ b/orchestra/contrib/resources/validators.py @@ -1,5 +1,5 @@ from django.core.validators import ValidationError -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ def validate_scale(value): diff --git a/orchestra/contrib/saas/admin.py b/orchestra/contrib/saas/admin.py index cdf5088c..90176d87 100644 --- a/orchestra/contrib/saas/admin.py +++ b/orchestra/contrib/saas/admin.py @@ -1,7 +1,7 @@ from django.contrib import admin from django.core.exceptions import ObjectDoesNotExist from django.utils.safestring import mark_safe -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.admin import ExtendedModelAdmin, ChangePasswordAdminMixin from orchestra.admin.actions import disable, enable diff --git a/orchestra/contrib/saas/backends/bscw.py b/orchestra/contrib/saas/backends/bscw.py index a5fe95be..0d0a1156 100644 --- a/orchestra/contrib/saas/backends/bscw.py +++ b/orchestra/contrib/saas/backends/bscw.py @@ -1,6 +1,6 @@ import textwrap -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.contrib.orchestration import ServiceController, replace diff --git a/orchestra/contrib/saas/backends/dokuwikimu.py b/orchestra/contrib/saas/backends/dokuwikimu.py index 411ca831..21a4d44e 100644 --- a/orchestra/contrib/saas/backends/dokuwikimu.py +++ b/orchestra/contrib/saas/backends/dokuwikimu.py @@ -3,7 +3,7 @@ import os import textwrap from urllib.parse import urlparse -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.contrib.orchestration import ServiceController from orchestra.utils.python import random_ascii diff --git a/orchestra/contrib/saas/backends/drupalmu.py b/orchestra/contrib/saas/backends/drupalmu.py index bfa060cd..944903c9 100644 --- a/orchestra/contrib/saas/backends/drupalmu.py +++ b/orchestra/contrib/saas/backends/drupalmu.py @@ -1,7 +1,7 @@ import os import textwrap -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.contrib.orchestration import ServiceController, replace diff --git a/orchestra/contrib/saas/backends/gitlab.py b/orchestra/contrib/saas/backends/gitlab.py index e015624b..042c82ae 100644 --- a/orchestra/contrib/saas/backends/gitlab.py +++ b/orchestra/contrib/saas/backends/gitlab.py @@ -1,7 +1,7 @@ import json import requests -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.contrib.orchestration import ServiceController diff --git a/orchestra/contrib/saas/backends/moodle.py b/orchestra/contrib/saas/backends/moodle.py index 339462db..d942675e 100644 --- a/orchestra/contrib/saas/backends/moodle.py +++ b/orchestra/contrib/saas/backends/moodle.py @@ -1,7 +1,7 @@ import textwrap from urllib.parse import urlparse -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.contrib.orchestration import ServiceController diff --git a/orchestra/contrib/saas/backends/nextcloud.py b/orchestra/contrib/saas/backends/nextcloud.py index f4302ef6..17df098f 100644 --- a/orchestra/contrib/saas/backends/nextcloud.py +++ b/orchestra/contrib/saas/backends/nextcloud.py @@ -6,7 +6,7 @@ import xml.etree.ElementTree as ET from urllib.parse import urlparse import requests -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.contrib.orchestration import ServiceController from orchestra.contrib.resources import ServiceMonitor @@ -33,7 +33,7 @@ class NextCloudAPIMixin(object): def api_call(self, action, url_path, *args, **kwargs): BASE_URL = settings.SAAS_NEXTCLOUD_API_URL.rstrip('/') url = '/'.join((BASE_URL, url_path)) - response = action(url, headers={'OCS-APIRequest':'true'}, *args, **kwargs) + response = action(url, headers={'OCS-APIRequest':'true'}, verify=False, *args, **kwargs) self.validate_response(response) return response diff --git a/orchestra/contrib/saas/backends/owncloud.py b/orchestra/contrib/saas/backends/owncloud.py index b9544f68..a6496a42 100644 --- a/orchestra/contrib/saas/backends/owncloud.py +++ b/orchestra/contrib/saas/backends/owncloud.py @@ -6,7 +6,7 @@ import xml.etree.ElementTree as ET from urllib.parse import urlparse import requests -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.contrib.orchestration import ServiceController from orchestra.contrib.resources import ServiceMonitor diff --git a/orchestra/contrib/saas/backends/phplist.py b/orchestra/contrib/saas/backends/phplist.py index 43e73220..2b2992e3 100644 --- a/orchestra/contrib/saas/backends/phplist.py +++ b/orchestra/contrib/saas/backends/phplist.py @@ -4,7 +4,7 @@ import sys import textwrap import requests -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.contrib.orchestration import ServiceController from orchestra.contrib.resources import ServiceMonitor diff --git a/orchestra/contrib/saas/backends/wordpressmu.py b/orchestra/contrib/saas/backends/wordpressmu.py index 6dcbf8a9..7a8e75d8 100644 --- a/orchestra/contrib/saas/backends/wordpressmu.py +++ b/orchestra/contrib/saas/backends/wordpressmu.py @@ -6,7 +6,7 @@ from functools import partial from urllib.parse import urlparse import requests -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.contrib.orchestration import ServiceController diff --git a/orchestra/contrib/saas/filters.py b/orchestra/contrib/saas/filters.py index 3bada2b3..51716780 100644 --- a/orchestra/contrib/saas/filters.py +++ b/orchestra/contrib/saas/filters.py @@ -1,5 +1,5 @@ from django.contrib.admin import SimpleListFilter -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ class CustomURLListFilter(SimpleListFilter): diff --git a/orchestra/contrib/saas/forms.py b/orchestra/contrib/saas/forms.py index d7292fd7..a1d9970f 100644 --- a/orchestra/contrib/saas/forms.py +++ b/orchestra/contrib/saas/forms.py @@ -1,7 +1,7 @@ from django import forms from django.core.exceptions import ObjectDoesNotExist from django.core.validators import RegexValidator -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.admin.utils import change_url from orchestra.core import validators diff --git a/orchestra/contrib/saas/migrations/0001_initial.py b/orchestra/contrib/saas/migrations/0001_initial.py deleted file mode 100644 index 94ff9390..00000000 --- a/orchestra/contrib/saas/migrations/0001_initial.py +++ /dev/null @@ -1,39 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations -import django.db.models.deletion -import jsonfield.fields -from django.conf import settings -import orchestra.core.validators - - -class Migration(migrations.Migration): - - dependencies = [ - ('databases', '0001_initial'), - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.CreateModel( - name='SaaS', - fields=[ - ('id', models.AutoField(auto_created=True, verbose_name='ID', primary_key=True, serialize=False)), - ('service', models.CharField(max_length=32, verbose_name='service', choices=[('bscw', 'BSCW'), ('DokuWikiService', 'Dowkuwiki'), ('DrupalService', 'Drupal'), ('gitlab', 'GitLab'), ('MoodleService', 'Moodle'), ('seafile', 'SeaFile'), ('WordPressService', 'WordPress'), ('phplist', 'phpList')])), - ('name', models.CharField(max_length=64, validators=[orchestra.core.validators.validate_username], verbose_name='Name', help_text='Required. 64 characters or fewer. Letters, digits and ./-/_ only.')), - ('is_active', models.BooleanField(help_text='Designates whether this service should be treated as active. ', verbose_name='active', default=True)), - ('data', jsonfield.fields.JSONField(help_text='Extra information dependent of each service.', verbose_name='data', default={})), - ('account', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, verbose_name='account', to=settings.AUTH_USER_MODEL, related_name='saas')), - ('database', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, null=True, blank=True, to='databases.Database')), - ], - options={ - 'verbose_name_plural': 'SaaS', - 'verbose_name': 'SaaS', - }, - ), - migrations.AlterUniqueTogether( - name='saas', - unique_together=set([('name', 'service')]), - ), - ] diff --git a/orchestra/contrib/saas/migrations/0001_squashed_0004_auto_20210422_1108.py b/orchestra/contrib/saas/migrations/0001_squashed_0004_auto_20210422_1108.py deleted file mode 100644 index 419dea27..00000000 --- a/orchestra/contrib/saas/migrations/0001_squashed_0004_auto_20210422_1108.py +++ /dev/null @@ -1,70 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2021-04-22 11:09 -from __future__ import unicode_literals - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion -import jsonfield.fields -import orchestra.core.validators - - -class Migration(migrations.Migration): - - replaces = [('saas', '0001_initial'), ('saas', '0002_auto_20151001_0923'), ('saas', '0003_auto_20170528_2011'), ('saas', '0004_auto_20210422_1108')] - - initial = True - - dependencies = [ - ('databases', '0001_initial'), - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.CreateModel( - name='SaaS', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('service', models.CharField(choices=[('bscw', 'BSCW'), ('DokuWikiService', 'Dowkuwiki'), ('DrupalService', 'Drupal'), ('gitlab', 'GitLab'), ('MoodleService', 'Moodle'), ('seafile', 'SeaFile'), ('WordPressService', 'WordPress'), ('phplist', 'phpList')], max_length=32, verbose_name='service')), - ('name', models.CharField(help_text='Required. 64 characters or fewer. Letters, digits and ./-/_ only.', max_length=64, validators=[orchestra.core.validators.validate_username], verbose_name='Name')), - ('is_active', models.BooleanField(default=True, help_text='Designates whether this service should be treated as active. ', verbose_name='active')), - ('data', jsonfield.fields.JSONField(default={}, help_text='Extra information dependent of each service.', verbose_name='data')), - ('account', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='saas', to=settings.AUTH_USER_MODEL, verbose_name='account')), - ('database', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='databases.Database')), - ('custom_url', models.URLField(blank=True, help_text='Optional and alternative URL for accessing this service instance. A related website will be automatically configured if needed.', verbose_name='custom URL')), - ], - options={ - 'verbose_name_plural': 'SaaS', - 'verbose_name': 'SaaS', - }, - ), - migrations.AlterUniqueTogether( - name='saas', - unique_together=set([('name', 'service')]), - ), - migrations.AlterField( - model_name='saas', - name='service', - field=models.CharField(choices=[('bscw', 'BSCW'), ('dokuwiki', 'Dowkuwiki'), ('drupal', 'Drupal'), ('gitlab', 'GitLab'), ('moodle', 'Moodle'), ('seafile', 'SeaFile'), ('wordpress', 'WordPress'), ('phplist', 'phpList')], max_length=32, verbose_name='service'), - ), - migrations.AlterField( - model_name='saas', - name='custom_url', - field=models.URLField(blank=True, help_text='Optional and alternative URL for accessing this service instance. i.e. https://wiki.mydomain/doku/
A related website will be automatically configured if needed.', verbose_name='custom URL'), - ), - migrations.AlterField( - model_name='saas', - name='name', - field=models.CharField(help_text='Required. 64 characters or fewer. Letters, digits and ./- only.', max_length=64, validators=[orchestra.core.validators.validate_hostname], verbose_name='Name'), - ), - migrations.AlterField( - model_name='saas', - name='service', - field=models.CharField(choices=[('bscw', 'BSCW'), ('dokuwiki', 'Dowkuwiki'), ('drupal', 'Drupal'), ('gitlab', 'GitLab'), ('moodle', 'Moodle'), ('wordpress', 'WordPress'), ('nextcloud', 'nextCloud'), ('owncloud', 'ownCloud'), ('phplist', 'phpList')], max_length=32, verbose_name='service'), - ), - migrations.AlterField( - model_name='saas', - name='database', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='databases.Database'), - ), - ] diff --git a/orchestra/contrib/saas/migrations/0002_auto_20151001_0923.py b/orchestra/contrib/saas/migrations/0002_auto_20151001_0923.py deleted file mode 100644 index e0ec276b..00000000 --- a/orchestra/contrib/saas/migrations/0002_auto_20151001_0923.py +++ /dev/null @@ -1,24 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('saas', '0001_initial'), - ] - - operations = [ - migrations.AddField( - model_name='saas', - name='custom_url', - field=models.URLField(verbose_name='custom URL', blank=True, help_text='Optional and alternative URL for accessing this service instance. A related website will be automatically configured if needed.'), - ), - migrations.AlterField( - model_name='saas', - name='service', - field=models.CharField(choices=[('bscw', 'BSCW'), ('dokuwiki', 'Dowkuwiki'), ('drupal', 'Drupal'), ('gitlab', 'GitLab'), ('moodle', 'Moodle'), ('seafile', 'SeaFile'), ('wordpress', 'WordPress'), ('phplist', 'phpList')], verbose_name='service', max_length=32), - ), - ] diff --git a/orchestra/contrib/saas/migrations/0003_auto_20170528_2011.py b/orchestra/contrib/saas/migrations/0003_auto_20170528_2011.py deleted file mode 100644 index 7e69ec8e..00000000 --- a/orchestra/contrib/saas/migrations/0003_auto_20170528_2011.py +++ /dev/null @@ -1,31 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-05-28 18:11 -from __future__ import unicode_literals - -from django.db import migrations, models -import orchestra.core.validators - - -class Migration(migrations.Migration): - - dependencies = [ - ('saas', '0002_auto_20151001_0923'), - ] - - operations = [ - migrations.AlterField( - model_name='saas', - name='custom_url', - field=models.URLField(blank=True, help_text='Optional and alternative URL for accessing this service instance. i.e. https://wiki.mydomain/doku/
A related website will be automatically configured if needed.', verbose_name='custom URL'), - ), - migrations.AlterField( - model_name='saas', - name='name', - field=models.CharField(help_text='Required. 64 characters or fewer. Letters, digits and ./- only.', max_length=64, validators=[orchestra.core.validators.validate_hostname], verbose_name='Name'), - ), - migrations.AlterField( - model_name='saas', - name='service', - field=models.CharField(choices=[('bscw', 'BSCW'), ('dokuwiki', 'Dowkuwiki'), ('drupal', 'Drupal'), ('gitlab', 'GitLab'), ('moodle', 'Moodle'), ('wordpress', 'WordPress'), ('nextcloud', 'nextCloud'), ('owncloud', 'ownCloud'), ('phplist', 'phpList')], max_length=32, verbose_name='service'), - ), - ] diff --git a/orchestra/contrib/saas/migrations/__init__.py b/orchestra/contrib/saas/migrations/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/orchestra/contrib/saas/models.py b/orchestra/contrib/saas/models.py index c8a31f60..967bf7b8 100644 --- a/orchestra/contrib/saas/models.py +++ b/orchestra/contrib/saas/models.py @@ -1,6 +1,6 @@ from django.db import models from django.utils.functional import cached_property -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from jsonfield import JSONField from orchestra.core import validators diff --git a/orchestra/contrib/saas/serializers.py b/orchestra/contrib/saas/serializers.py index 6992e5f7..a0da1a17 100644 --- a/orchestra/contrib/saas/serializers.py +++ b/orchestra/contrib/saas/serializers.py @@ -1,6 +1,6 @@ from django.forms import widgets from django.core.validators import RegexValidator -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from orchestra.api.serializers import SetPasswordHyperlinkedSerializer diff --git a/orchestra/contrib/saas/services/bscw.py b/orchestra/contrib/saas/services/bscw.py index 1afd119e..7fef1cda 100644 --- a/orchestra/contrib/saas/services/bscw.py +++ b/orchestra/contrib/saas/services/bscw.py @@ -1,5 +1,5 @@ from django import forms -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from .. import settings diff --git a/orchestra/contrib/saas/services/dokuwiki.py b/orchestra/contrib/saas/services/dokuwiki.py index 1235de84..5195f848 100644 --- a/orchestra/contrib/saas/services/dokuwiki.py +++ b/orchestra/contrib/saas/services/dokuwiki.py @@ -1,7 +1,7 @@ from urllib.parse import urlparse from django.core.exceptions import ValidationError -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from .options import SoftwareService from .. import settings diff --git a/orchestra/contrib/saas/services/gitlab.py b/orchestra/contrib/saas/services/gitlab.py index 1586a77f..b8d62cfa 100644 --- a/orchestra/contrib/saas/services/gitlab.py +++ b/orchestra/contrib/saas/services/gitlab.py @@ -1,5 +1,5 @@ from django import forms -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from orchestra.forms import widgets diff --git a/orchestra/contrib/saas/services/helpers.py b/orchestra/contrib/saas/services/helpers.py index a08855fe..0deb36f5 100644 --- a/orchestra/contrib/saas/services/helpers.py +++ b/orchestra/contrib/saas/services/helpers.py @@ -2,7 +2,7 @@ from collections import defaultdict from urllib.parse import urlparse from django.core.exceptions import ValidationError -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.contrib.websites.models import Website, WebsiteDirective, Content from orchestra.contrib.websites.validators import validate_domain_protocol diff --git a/orchestra/contrib/saas/services/moodle.py b/orchestra/contrib/saas/services/moodle.py index a059550b..2b6580e4 100644 --- a/orchestra/contrib/saas/services/moodle.py +++ b/orchestra/contrib/saas/services/moodle.py @@ -1,5 +1,5 @@ from django import forms -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.forms.widgets import SpanWidget diff --git a/orchestra/contrib/saas/services/nextcloud.py b/orchestra/contrib/saas/services/nextcloud.py index 3398f0da..2027352e 100644 --- a/orchestra/contrib/saas/services/nextcloud.py +++ b/orchestra/contrib/saas/services/nextcloud.py @@ -1,5 +1,5 @@ from django import forms -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from .. import settings diff --git a/orchestra/contrib/saas/services/options.py b/orchestra/contrib/saas/services/options.py index 168aecce..37413a89 100644 --- a/orchestra/contrib/saas/services/options.py +++ b/orchestra/contrib/saas/services/options.py @@ -4,7 +4,7 @@ from functools import lru_cache from urllib.parse import urlparse from django.core.exceptions import ValidationError, ObjectDoesNotExist -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra import plugins from orchestra.contrib.databases.models import Database, DatabaseUser diff --git a/orchestra/contrib/saas/services/owncloud.py b/orchestra/contrib/saas/services/owncloud.py index 2f850f07..2a6d1210 100644 --- a/orchestra/contrib/saas/services/owncloud.py +++ b/orchestra/contrib/saas/services/owncloud.py @@ -1,5 +1,5 @@ from django import forms -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from .. import settings diff --git a/orchestra/contrib/saas/services/phplist.py b/orchestra/contrib/saas/services/phplist.py index 7b803f04..9b97fe78 100644 --- a/orchestra/contrib/saas/services/phplist.py +++ b/orchestra/contrib/saas/services/phplist.py @@ -4,7 +4,7 @@ from django.core.exceptions import ValidationError from django.urls import reverse from django.db.models import Q from django.utils.safestring import mark_safe -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.contrib.mailboxes.models import Mailbox from orchestra.forms.widgets import SpanWidget diff --git a/orchestra/contrib/saas/services/seafile.py b/orchestra/contrib/saas/services/seafile.py index 3e7ea594..bc29a42d 100644 --- a/orchestra/contrib/saas/services/seafile.py +++ b/orchestra/contrib/saas/services/seafile.py @@ -1,5 +1,5 @@ from django import forms -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from .. import settings diff --git a/orchestra/contrib/saas/services/wordpress.py b/orchestra/contrib/saas/services/wordpress.py index 1e4d3f39..141bb488 100644 --- a/orchestra/contrib/saas/services/wordpress.py +++ b/orchestra/contrib/saas/services/wordpress.py @@ -1,6 +1,6 @@ from django import forms from django.utils.safestring import mark_safe -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from orchestra.forms import widgets diff --git a/orchestra/contrib/saas/settings.py b/orchestra/contrib/saas/settings.py index af768867..837d1e1c 100644 --- a/orchestra/contrib/saas/settings.py +++ b/orchestra/contrib/saas/settings.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.contrib.settings import Setting from orchestra.core.validators import validate_ip_address diff --git a/orchestra/contrib/saas/validators.py b/orchestra/contrib/saas/validators.py index ed9c7287..ac21bb88 100644 --- a/orchestra/contrib/saas/validators.py +++ b/orchestra/contrib/saas/validators.py @@ -1,5 +1,5 @@ from django.core.exceptions import ValidationError -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.utils.apps import isinstalled diff --git a/orchestra/contrib/services/actions.py b/orchestra/contrib/services/actions.py index 96d38e3d..4e48b2d8 100644 --- a/orchestra/contrib/services/actions.py +++ b/orchestra/contrib/services/actions.py @@ -4,7 +4,7 @@ from django.db import transaction from django.shortcuts import render, redirect from django.template.response import TemplateResponse from django.utils.safestring import mark_safe -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.admin.utils import get_object_from_url diff --git a/orchestra/contrib/services/admin.py b/orchestra/contrib/services/admin.py index ecbe1e2d..2f4b835f 100644 --- a/orchestra/contrib/services/admin.py +++ b/orchestra/contrib/services/admin.py @@ -1,11 +1,11 @@ from django import forms -from django.conf.urls import url +from django.urls import re_path as url from django.contrib import admin from django.urls import reverse from django.template.response import TemplateResponse from django.utils import timezone from django.utils.html import format_html -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.admin import ChangeViewActionsMixin from orchestra.admin.actions import disable, enable diff --git a/orchestra/contrib/services/handlers.py b/orchestra/contrib/services/handlers.py index af2671bb..64ceaf84 100644 --- a/orchestra/contrib/services/handlers.py +++ b/orchestra/contrib/services/handlers.py @@ -8,7 +8,7 @@ from dateutil import relativedelta from django.contrib.contenttypes.models import ContentType from django.core.exceptions import ValidationError from django.utils import timezone, translation -from django.utils.translation import ugettext, ugettext_lazy as _ +from django.utils.translation import gettext, gettext_lazy as _ from orchestra import plugins from orchestra.utils.humanize import text2int @@ -34,11 +34,13 @@ class ServiceHandler(plugins.Plugin, metaclass=plugins.PluginMount): self.service = service def __getattr__(self, attr): + if attr.startswith('__'): + raise AttributeError(f'{self} does not have attribute {attr}') return getattr(self.service, attr) @classmethod def get_choices(cls): - choices = super(ServiceHandler, cls).get_choices() + choices = super().get_choices() return [('', _("Default"))] + choices def validate_content_type(self, service): @@ -75,7 +77,7 @@ class ServiceHandler(plugins.Plugin, metaclass=plugins.PluginMount): return { 'instance': instance, 'obj': instance, - 'ugettext': ugettext, + 'gettext': gettext, 'handler': self, 'service': self.service, instance._meta.model_name: instance, @@ -134,7 +136,7 @@ class ServiceHandler(plugins.Plugin, metaclass=plugins.PluginMount): account = getattr(instance, 'account', instance) with translation.override(account.language): if not self.order_description: - return '%s: %s' % (ugettext(self.description), instance) + return '%s: %s' % (gettext(self.description), instance) return eval(self.order_description, safe_locals) def get_billing_point(self, order, bp=None, **options): diff --git a/orchestra/contrib/services/helpers.py b/orchestra/contrib/services/helpers.py index 2e359d2d..68046597 100644 --- a/orchestra/contrib/services/helpers.py +++ b/orchestra/contrib/services/helpers.py @@ -1,5 +1,5 @@ from django.utils.text import format_lazy -from django.utils.translation import ugettext_lazy +from django.utils.translation import gettext_lazy def get_chunks(porders, ini, end, ix=0): @@ -141,7 +141,7 @@ def get_rate_methods_help_text(rate_class): format_lazy('{}' * 4, *['
  ', method.verbose_name, ': ', method.help_text]) for method in rate_class.get_methods().values() ] - prefix = ugettext_lazy("Algorithm used to interprete the rating table.") + prefix = gettext_lazy("Algorithm used to interprete the rating table.") help_text_items = [prefix] + method_help_texts return format_lazy( '{}' * len(help_text_items), diff --git a/orchestra/contrib/services/migrations/0001_initial.py b/orchestra/contrib/services/migrations/0001_initial.py deleted file mode 100644 index 50f9d1d5..00000000 --- a/orchestra/contrib/services/migrations/0001_initial.py +++ /dev/null @@ -1,39 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('contenttypes', '0002_remove_content_type_name'), - ] - - operations = [ - migrations.CreateModel( - name='Service', - fields=[ - ('id', models.AutoField(primary_key=True, auto_created=True, verbose_name='ID', serialize=False)), - ('description', models.CharField(verbose_name='description', max_length=256, unique=True)), - ('match', models.CharField(blank=True, help_text="Python expression that designates wheter a content_type object is related to this service or not, always evaluates True when left blank. Related instance can be instantiated with instance keyword or content_type.model_name.
 databaseuser.type == 'MYSQL'
 miscellaneous.active and str(miscellaneous.identifier).endswith(('.org', '.net', '.com'))
 contractedplan.plan.name == 'association_fee''
 instance.active", max_length=256, verbose_name='match')), - ('handler_type', models.CharField(blank=True, help_text='Handler used for processing this Service. A handler enables customized behaviour far beyond what options here allow to.', max_length=256, choices=[('', 'Default')], verbose_name='handler')), - ('is_active', models.BooleanField(default=True, verbose_name='active')), - ('ignore_superusers', models.BooleanField(default=True, help_text='Designates whether superuser, staff and friend orders are marked as ignored by default or not.', verbose_name='ignore superuser, staff and friend')), - ('billing_period', models.CharField(default='ANUAL', help_text='Renewal period for recurring invoicing.', max_length=16, choices=[('', 'One time service'), ('MONTHLY', 'Monthly billing'), ('ANUAL', 'Anual billing')], blank=True, verbose_name='billing period')), - ('billing_point', models.CharField(default='ON_FIXED_DATE', help_text='Reference point for calculating the renewal date on recurring invoices', max_length=16, choices=[('ON_REGISTER', 'Registration date'), ('ON_FIXED_DATE', 'Fixed billing date')], verbose_name='billing point')), - ('is_fee', models.BooleanField(default=False, help_text='Designates whether this service should be billed as membership fee or not', verbose_name='fee')), - ('order_description', models.CharField(blank=True, help_text="Python expression used for generating the description for the bill lines of this services.
Defaults to '%s: %s' % (ugettext(handler.description), instance)", max_length=128, verbose_name='Order description')), - ('ignore_period', models.CharField(default='TEN_DAYS', help_text='Period in which orders will be ignored if cancelled. Useful for designating trial periods', max_length=16, choices=[('', 'Never'), ('ONE_DAY', 'One day'), ('TWO_DAYS', 'Two days'), ('TEN_DAYS', 'Ten days'), ('ONE_MONTH', 'One month')], blank=True, verbose_name='ignore period')), - ('metric', models.CharField(blank=True, help_text="Python expression used for obtinging the metric value for the pricing rate computation. Number of orders is used when left blank. Related instance can be instantiated with instance keyword or content_type.model_name.
 max((mailbox.resources.disk.allocated or 0) -1, 0)
 miscellaneous.amount
 max((account.resources.traffic.used or 0) - getattr(account.miscellaneous.filter(is_active=True, service__name='traffic-prepay').last(), 'amount', 0), 0)", max_length=256, verbose_name='metric')), - ('nominal_price', models.DecimalField(verbose_name='nominal price', decimal_places=2, max_digits=12)), - ('tax', models.PositiveIntegerField(default=0, verbose_name='tax', choices=[(0, 'Duty free'), (21, '21%')])), - ('pricing_period', models.CharField(default='BILLING_PERIOD', help_text='Time period that is used for computing the rate metric.', max_length=16, choices=[('', 'Current value'), ('BILLING_PERIOD', 'Same as billing period'), ('MONTHLY', 'Monthly data'), ('ANUAL', 'Anual data')], blank=True, verbose_name='pricing period')), - ('rate_algorithm', models.CharField(default='MATCH_PRICE', help_text='Algorithm used to interprete the rating table.
  Match price: Only the rate with a) inmediate inferior metric and b) lower price is applied. Nominal price will be used when initial block is missing.
  Step price: All rates with a quantity lower than the metric are applied. Nominal price will be used when initial block is missing.', max_length=16, choices=[('MATCH_PRICE', 'Match price'), ('STEP_PRICE', 'Step price')], verbose_name='rate algorithm')), - ('on_cancel', models.CharField(default='DISCOUNT', help_text='Defines the cancellation behaviour of this service.', max_length=16, choices=[('NOTHING', 'Nothing'), ('DISCOUNT', 'Discount'), ('COMPENSATE', 'Compensat'), ('REFUND', 'Refund')], verbose_name='on cancel')), - ('payment_style', models.CharField(default='PREPAY', help_text='Designates whether this service should be paid after consumtion (postpay/on demand) or prepaid.', max_length=16, choices=[('PREPAY', 'Prepay'), ('POSTPAY', 'Postpay (on demand)')], verbose_name='payment style')), - ('content_type', models.ForeignKey(help_text='Content type of the related service objects.', on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType', verbose_name='content type')), - ], - ), - ] diff --git a/orchestra/contrib/services/migrations/0001_squashed_0015_auto_20210330_1049.py b/orchestra/contrib/services/migrations/0001_squashed_0015_auto_20210330_1049.py deleted file mode 100644 index a09be3dd..00000000 --- a/orchestra/contrib/services/migrations/0001_squashed_0015_auto_20210330_1049.py +++ /dev/null @@ -1,45 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2021-04-22 11:26 -from __future__ import unicode_literals - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - replaces = [('services', '0001_initial'), ('services', '0002_auto_20150509_1501'), ('services', '0003_auto_20150917_0942'), ('services', '0004_auto_20160405_1133'), ('services', '0005_auto_20160427_1531'), ('services', '0006_auto_20170528_2005'), ('services', '0007_auto_20170528_2011'), ('services', '0008_auto_20170625_1813'), ('services', '0009_auto_20170625_1840'), ('services', '0010_auto_20170625_1840'), ('services', '0011_auto_20170625_1840'), ('services', '0012_auto_20170625_1841'), ('services', '0013_auto_20190805_1134'), ('services', '0014_auto_20200204_1218'), ('services', '0015_auto_20210330_1049')] - - initial = True - - dependencies = [ - ('contenttypes', '0002_remove_content_type_name'), - ] - - operations = [ - migrations.CreateModel( - name='Service', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('description', models.CharField(max_length=256, unique=True, verbose_name='description')), - ('match', models.CharField(blank=True, help_text="Python expression that designates wheter a content_type object is related to this service or not, always evaluates True when left blank. Related instance can be instantiated with instance keyword or content_type.model_name.
 databaseuser.type == 'MYSQL'
 miscellaneous.active and str(miscellaneous.identifier).endswith(('.org', '.net', '.com'))
 contractedplan.plan.name == 'association_fee''
 instance.active", max_length=256, verbose_name='match')), - ('handler_type', models.CharField(blank=True, choices=[('', 'Default')], help_text='Handler used for processing this Service. A handler enables customized behaviour far beyond what options here allow to.', max_length=256, verbose_name='handler')), - ('is_active', models.BooleanField(default=True, verbose_name='active')), - ('ignore_superusers', models.BooleanField(default=True, help_text='Designates whether superuser, staff and friend orders are marked as ignored by default or not.', verbose_name='ignore superuser, staff and friend')), - ('billing_period', models.CharField(blank=True, choices=[('', 'One time service'), ('MONTHLY', 'Monthly billing'), ('ANUAL', 'Anual billing')], default='ANUAL', help_text='Renewal period for recurring invoicing.', max_length=16, verbose_name='billing period')), - ('billing_point', models.CharField(choices=[('ON_REGISTER', 'Registration date'), ('ON_FIXED_DATE', 'Every January')], default='ON_FIXED_DATE', help_text='Reference point for calculating the renewal date on recurring invoices', max_length=16, verbose_name='billing point')), - ('is_fee', models.BooleanField(default=False, help_text='Designates whether this service should be billed as membership fee or not', verbose_name='fee')), - ('order_description', models.CharField(blank=True, help_text="Python expression used for generating the description for the bill lines of this services.
Defaults to '%s: %s' % (ugettext(handler.description), instance)", max_length=256, verbose_name='Order description')), - ('ignore_period', models.CharField(blank=True, choices=[('', 'Never'), ('ONE_DAY', 'One day'), ('TWO_DAYS', 'Two days'), ('TEN_DAYS', 'Ten days'), ('ONE_MONTH', 'One month')], default='TEN_DAYS', help_text='Period in which orders will be ignored if cancelled. Useful for designating trial periods', max_length=16, verbose_name='ignore period')), - ('metric', models.CharField(blank=True, help_text="Python expression used for obtinging the metric value for the pricing rate computation. Number of orders is used when left blank. Related instance can be instantiated with instance keyword or content_type.model_name.
 max((mailbox.resources.disk.allocated or 0) -1, 0)
 miscellaneous.amount
 max((account.resources.traffic.used or 0) - getattr(account.miscellaneous.filter(is_active=True, service__name='traffic-prepay').last(), 'amount', 0), 0)", max_length=256, verbose_name='metric')), - ('nominal_price', models.DecimalField(decimal_places=2, max_digits=12, verbose_name='nominal price')), - ('tax', models.PositiveIntegerField(choices=[(0, 'Duty free'), (21, '21%')], default=0, verbose_name='tax')), - ('pricing_period', models.CharField(blank=True, choices=[('', 'Current value'), ('BILLING_PERIOD', 'Same as billing period'), ('MONTHLY', 'Monthly data'), ('ANUAL', 'Anual data')], default='BILLING_PERIOD', help_text='Time period that is used for computing the rate metric.', max_length=16, verbose_name='pricing period')), - ('rate_algorithm', models.CharField(choices=[('orchestra.contrib.plans.ratings.step_price', 'Step price'), ('orchestra.contrib.plans.ratings.match_price', 'Match price'), ('orchestra.contrib.plans.ratings.best_price', 'Best price')], default='orchestra.contrib.plans.ratings.step_price', help_text='Algorithm used to interprete the rating table.
  Step price: All rates with a quantity lower or equal than the metric are applied. Nominal price will be used when initial block is missing.
  Match price: Only the rate with a) inmediate inferior metric and b) lower price is applied. Nominal price will be used when initial block is missing.
  Best price: Produces the best possible price given all active rating lines (those with quantity lower or equal to the metric).', max_length=64, verbose_name='rate algorithm')), - ('on_cancel', models.CharField(choices=[('NOTHING', 'Nothing'), ('DISCOUNT', 'Discount'), ('COMPENSATE', 'Compensat'), ('REFUND', 'Refund')], default='DISCOUNT', help_text='Defines the cancellation behaviour of this service.', max_length=16, verbose_name='on cancel')), - ('payment_style', models.CharField(choices=[('PREPAY', 'Prepay'), ('POSTPAY', 'Postpay (on demand)')], default='PREPAY', help_text='Designates whether this service should be paid after consumtion (postpay/on demand) or prepaid.', max_length=16, verbose_name='payment style')), - ('content_type', models.ForeignKey(help_text='Content type of the related service objects.', on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType', verbose_name='content type')), - ('periodic_update', models.BooleanField(default=False, help_text='Whether a periodic update of this service orders should be performed or not. Needed for match definitions that depend on complex model interactions, where content type model save and delete operations are not enought.', verbose_name='periodic update')), - ], - ), - ] diff --git a/orchestra/contrib/services/migrations/0002_auto_20150509_1501.py b/orchestra/contrib/services/migrations/0002_auto_20150509_1501.py deleted file mode 100644 index 26e2d632..00000000 --- a/orchestra/contrib/services/migrations/0002_auto_20150509_1501.py +++ /dev/null @@ -1,24 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('services', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='service', - name='rate_algorithm', - field=models.CharField(choices=[('orchestra.contrib.plans.rating.best_price', 'Best price'), ('orchestra.contrib.plans.rating.step_price', 'Step price'), ('orchestra.contrib.plans.rating.match_price', 'Match price')], help_text='Algorithm used to interprete the rating table.
  Best price: Produces the best possible price given all active rating lines.
  Step price: All rates with a quantity lower than the metric are applied. Nominal price will be used when initial block is missing.
  Match price: Only the rate with a) inmediate inferior metric and b) lower price is applied. Nominal price will be used when initial block is missing.', max_length=64, verbose_name='rate algorithm', default='orchestra.contrib.plans.rating.step_price'), - ), - migrations.AlterField( - model_name='service', - name='tax', - field=models.PositiveIntegerField(choices=[(0, 'Duty free'), (21, '21%')], verbose_name='tax', default=21), - ), - ] diff --git a/orchestra/contrib/services/migrations/0003_auto_20150917_0942.py b/orchestra/contrib/services/migrations/0003_auto_20150917_0942.py deleted file mode 100644 index c9b5f276..00000000 --- a/orchestra/contrib/services/migrations/0003_auto_20150917_0942.py +++ /dev/null @@ -1,34 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('services', '0002_auto_20150509_1501'), - ] - - operations = [ - migrations.AlterField( - model_name='service', - name='billing_point', - field=models.CharField(choices=[('ON_REGISTER', 'Registration date'), ('ON_FIXED_DATE', 'Every April')], help_text='Reference point for calculating the renewal date on recurring invoices', verbose_name='billing point', max_length=16, default='ON_FIXED_DATE'), - ), - migrations.AlterField( - model_name='service', - name='is_fee', - field=models.BooleanField(help_text='Designates whether this service should be billed as membership fee or not', verbose_name='fee', default=False), - ), - migrations.AlterField( - model_name='service', - name='order_description', - field=models.CharField(help_text="Python expression used for generating the description for the bill lines of this services.
Defaults to '%s: %s' % (ugettext(handler.description), instance)", blank=True, max_length=256, verbose_name='Order description'), - ), - migrations.AlterField( - model_name='service', - name='rate_algorithm', - field=models.CharField(choices=[('orchestra.contrib.plans.ratings.step_price', 'Step price'), ('orchestra.contrib.plans.ratings.best_price', 'Best price'), ('orchestra.contrib.plans.ratings.match_price', 'Match price')], help_text='Algorithm used to interprete the rating table.
  Step price: All rates with a quantity lower or equal than the metric are applied. Nominal price will be used when initial block is missing.
  Best price: Produces the best possible price given all active rating lines (those with quantity lower or equal to the metric).
  Match price: Only the rate with a) inmediate inferior metric and b) lower price is applied. Nominal price will be used when initial block is missing.', verbose_name='rate algorithm', max_length=64, default='orchestra.contrib.plans.ratings.step_price'), - ), - ] diff --git a/orchestra/contrib/services/migrations/0004_auto_20160405_1133.py b/orchestra/contrib/services/migrations/0004_auto_20160405_1133.py deleted file mode 100644 index 5820f707..00000000 --- a/orchestra/contrib/services/migrations/0004_auto_20160405_1133.py +++ /dev/null @@ -1,24 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('services', '0003_auto_20150917_0942'), - ] - - operations = [ - migrations.AddField( - model_name='service', - name='periodic_update', - field=models.BooleanField(default=False, verbose_name='periodic update', help_text='Whether a periodic update of this service orders should be performed or not. Needed for match definitions that depend on complex model interactions.'), - ), - migrations.AlterField( - model_name='service', - name='rate_algorithm', - field=models.CharField(choices=[('orchestra.contrib.plans.ratings.match_price', 'Match price'), ('orchestra.contrib.plans.ratings.best_price', 'Best price'), ('orchestra.contrib.plans.ratings.step_price', 'Step price')], verbose_name='rate algorithm', help_text='Algorithm used to interprete the rating table.
  Match price: Only the rate with a) inmediate inferior metric and b) lower price is applied. Nominal price will be used when initial block is missing.
  Best price: Produces the best possible price given all active rating lines (those with quantity lower or equal to the metric).
  Step price: All rates with a quantity lower or equal than the metric are applied. Nominal price will be used when initial block is missing.', default='orchestra.contrib.plans.ratings.step_price', max_length=64), - ), - ] diff --git a/orchestra/contrib/services/migrations/0005_auto_20160427_1531.py b/orchestra/contrib/services/migrations/0005_auto_20160427_1531.py deleted file mode 100644 index da8c6252..00000000 --- a/orchestra/contrib/services/migrations/0005_auto_20160427_1531.py +++ /dev/null @@ -1,24 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('services', '0004_auto_20160405_1133'), - ] - - operations = [ - migrations.AlterField( - model_name='service', - name='periodic_update', - field=models.BooleanField(default=False, verbose_name='periodic update', help_text='Whether a periodic update of this service orders should be performed or not. Needed for match definitions that depend on complex model interactions, where content type model save and delete operations are not enought.'), - ), - migrations.AlterField( - model_name='service', - name='rate_algorithm', - field=models.CharField(default='orchestra.contrib.plans.ratings.step_price', verbose_name='rate algorithm', max_length=64, choices=[('orchestra.contrib.plans.ratings.step_price', 'Step price'), ('orchestra.contrib.plans.ratings.match_price', 'Match price'), ('orchestra.contrib.plans.ratings.best_price', 'Best price')], help_text='Algorithm used to interprete the rating table.
  Step price: All rates with a quantity lower or equal than the metric are applied. Nominal price will be used when initial block is missing.
  Match price: Only the rate with a) inmediate inferior metric and b) lower price is applied. Nominal price will be used when initial block is missing.
  Best price: Produces the best possible price given all active rating lines (those with quantity lower or equal to the metric).'), - ), - ] diff --git a/orchestra/contrib/services/migrations/0006_auto_20170528_2005.py b/orchestra/contrib/services/migrations/0006_auto_20170528_2005.py deleted file mode 100644 index 1f59952b..00000000 --- a/orchestra/contrib/services/migrations/0006_auto_20170528_2005.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-05-28 18:05 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('services', '0005_auto_20160427_1531'), - ] - - operations = [ - migrations.AlterField( - model_name='service', - name='rate_algorithm', - field=models.CharField(choices=[('orchestra.contrib.plans.ratings.best_price', 'Best price'), ('orchestra.contrib.plans.ratings.step_price', 'Step price'), ('orchestra.contrib.plans.ratings.match_price', 'Match price')], default='orchestra.contrib.plans.ratings.step_price', help_text='Algorithm used to interprete the rating table.
  Best price: Produces the best possible price given all active rating lines (those with quantity lower or equal to the metric).
  Step price: All rates with a quantity lower or equal than the metric are applied. Nominal price will be used when initial block is missing.
  Match price: Only the rate with a) inmediate inferior metric and b) lower price is applied. Nominal price will be used when initial block is missing.', max_length=64, verbose_name='rate algorithm'), - ), - ] diff --git a/orchestra/contrib/services/migrations/0007_auto_20170528_2011.py b/orchestra/contrib/services/migrations/0007_auto_20170528_2011.py deleted file mode 100644 index d11e961a..00000000 --- a/orchestra/contrib/services/migrations/0007_auto_20170528_2011.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-05-28 18:11 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('services', '0006_auto_20170528_2005'), - ] - - operations = [ - migrations.AlterField( - model_name='service', - name='rate_algorithm', - field=models.CharField(choices=[('orchestra.contrib.plans.ratings.step_price', 'Step price'), ('orchestra.contrib.plans.ratings.best_price', 'Best price'), ('orchestra.contrib.plans.ratings.match_price', 'Match price')], default='orchestra.contrib.plans.ratings.step_price', help_text='Algorithm used to interprete the rating table.
  Step price: All rates with a quantity lower or equal than the metric are applied. Nominal price will be used when initial block is missing.
  Best price: Produces the best possible price given all active rating lines (those with quantity lower or equal to the metric).
  Match price: Only the rate with a) inmediate inferior metric and b) lower price is applied. Nominal price will be used when initial block is missing.', max_length=64, verbose_name='rate algorithm'), - ), - ] diff --git a/orchestra/contrib/services/migrations/0008_auto_20170625_1813.py b/orchestra/contrib/services/migrations/0008_auto_20170625_1813.py deleted file mode 100644 index a00a05e7..00000000 --- a/orchestra/contrib/services/migrations/0008_auto_20170625_1813.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-06-25 16:13 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('services', '0007_auto_20170528_2011'), - ] - - operations = [ - migrations.AlterField( - model_name='service', - name='rate_algorithm', - field=models.CharField(choices=[('orchestra.contrib.plans.ratings.best_price', 'Best price'), ('orchestra.contrib.plans.ratings.step_price', 'Step price'), ('orchestra.contrib.plans.ratings.match_price', 'Match price')], default='orchestra.contrib.plans.ratings.step_price', help_text='Algorithm used to interprete the rating table.
  Best price: Produces the best possible price given all active rating lines (those with quantity lower or equal to the metric).
  Step price: All rates with a quantity lower or equal than the metric are applied. Nominal price will be used when initial block is missing.
  Match price: Only the rate with a) inmediate inferior metric and b) lower price is applied. Nominal price will be used when initial block is missing.', max_length=64, verbose_name='rate algorithm'), - ), - ] diff --git a/orchestra/contrib/services/migrations/0009_auto_20170625_1840.py b/orchestra/contrib/services/migrations/0009_auto_20170625_1840.py deleted file mode 100644 index 29eb3d52..00000000 --- a/orchestra/contrib/services/migrations/0009_auto_20170625_1840.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-06-25 16:40 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('services', '0008_auto_20170625_1813'), - ] - - operations = [ - migrations.AlterField( - model_name='service', - name='rate_algorithm', - field=models.CharField(choices=[('orchestra.contrib.plans.ratings.match_price', 'Match price'), ('orchestra.contrib.plans.ratings.best_price', 'Best price'), ('orchestra.contrib.plans.ratings.step_price', 'Step price')], default='orchestra.contrib.plans.ratings.step_price', help_text='Algorithm used to interprete the rating table.
  Match price: Only the rate with a) inmediate inferior metric and b) lower price is applied. Nominal price will be used when initial block is missing.
  Best price: Produces the best possible price given all active rating lines (those with quantity lower or equal to the metric).
  Step price: All rates with a quantity lower or equal than the metric are applied. Nominal price will be used when initial block is missing.', max_length=64, verbose_name='rate algorithm'), - ), - ] diff --git a/orchestra/contrib/services/migrations/0010_auto_20170625_1840.py b/orchestra/contrib/services/migrations/0010_auto_20170625_1840.py deleted file mode 100644 index f59f304d..00000000 --- a/orchestra/contrib/services/migrations/0010_auto_20170625_1840.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-06-25 16:40 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('services', '0009_auto_20170625_1840'), - ] - - operations = [ - migrations.AlterField( - model_name='service', - name='rate_algorithm', - field=models.CharField(choices=[('orchestra.contrib.plans.ratings.best_price', 'Best price'), ('orchestra.contrib.plans.ratings.match_price', 'Match price'), ('orchestra.contrib.plans.ratings.step_price', 'Step price')], default='orchestra.contrib.plans.ratings.step_price', help_text='Algorithm used to interprete the rating table.
  Best price: Produces the best possible price given all active rating lines (those with quantity lower or equal to the metric).
  Match price: Only the rate with a) inmediate inferior metric and b) lower price is applied. Nominal price will be used when initial block is missing.
  Step price: All rates with a quantity lower or equal than the metric are applied. Nominal price will be used when initial block is missing.', max_length=64, verbose_name='rate algorithm'), - ), - ] diff --git a/orchestra/contrib/services/migrations/0011_auto_20170625_1840.py b/orchestra/contrib/services/migrations/0011_auto_20170625_1840.py deleted file mode 100644 index 6018a17e..00000000 --- a/orchestra/contrib/services/migrations/0011_auto_20170625_1840.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-06-25 16:40 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('services', '0010_auto_20170625_1840'), - ] - - operations = [ - migrations.AlterField( - model_name='service', - name='rate_algorithm', - field=models.CharField(choices=[('orchestra.contrib.plans.ratings.match_price', 'Match price'), ('orchestra.contrib.plans.ratings.best_price', 'Best price'), ('orchestra.contrib.plans.ratings.step_price', 'Step price')], default='orchestra.contrib.plans.ratings.step_price', help_text='Algorithm used to interprete the rating table.
  Match price: Only the rate with a) inmediate inferior metric and b) lower price is applied. Nominal price will be used when initial block is missing.
  Best price: Produces the best possible price given all active rating lines (those with quantity lower or equal to the metric).
  Step price: All rates with a quantity lower or equal than the metric are applied. Nominal price will be used when initial block is missing.', max_length=64, verbose_name='rate algorithm'), - ), - ] diff --git a/orchestra/contrib/services/migrations/0012_auto_20170625_1841.py b/orchestra/contrib/services/migrations/0012_auto_20170625_1841.py deleted file mode 100644 index e4cd2468..00000000 --- a/orchestra/contrib/services/migrations/0012_auto_20170625_1841.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-06-25 16:41 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('services', '0011_auto_20170625_1840'), - ] - - operations = [ - migrations.AlterField( - model_name='service', - name='rate_algorithm', - field=models.CharField(choices=[('orchestra.contrib.plans.ratings.best_price', 'Best price'), ('orchestra.contrib.plans.ratings.step_price', 'Step price'), ('orchestra.contrib.plans.ratings.match_price', 'Match price')], default='orchestra.contrib.plans.ratings.step_price', help_text='Algorithm used to interprete the rating table.
  Best price: Produces the best possible price given all active rating lines (those with quantity lower or equal to the metric).
  Step price: All rates with a quantity lower or equal than the metric are applied. Nominal price will be used when initial block is missing.
  Match price: Only the rate with a) inmediate inferior metric and b) lower price is applied. Nominal price will be used when initial block is missing.', max_length=64, verbose_name='rate algorithm'), - ), - ] diff --git a/orchestra/contrib/services/migrations/0013_auto_20190805_1134.py b/orchestra/contrib/services/migrations/0013_auto_20190805_1134.py deleted file mode 100644 index e568b4d5..00000000 --- a/orchestra/contrib/services/migrations/0013_auto_20190805_1134.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2019-08-05 09:34 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('services', '0012_auto_20170625_1841'), - ] - - operations = [ - migrations.AlterField( - model_name='service', - name='rate_algorithm', - field=models.CharField(choices=[('orchestra.contrib.plans.ratings.match_price', 'Match price'), ('orchestra.contrib.plans.ratings.best_price', 'Best price'), ('orchestra.contrib.plans.ratings.step_price', 'Step price')], default='orchestra.contrib.plans.ratings.step_price', help_text='Algorithm used to interprete the rating table.
  Match price: Only the rate with a) inmediate inferior metric and b) lower price is applied. Nominal price will be used when initial block is missing.
  Best price: Produces the best possible price given all active rating lines (those with quantity lower or equal to the metric).
  Step price: All rates with a quantity lower or equal than the metric are applied. Nominal price will be used when initial block is missing.', max_length=64, verbose_name='rate algorithm'), - ), - ] diff --git a/orchestra/contrib/services/migrations/0014_auto_20200204_1218.py b/orchestra/contrib/services/migrations/0014_auto_20200204_1218.py deleted file mode 100644 index 057b1955..00000000 --- a/orchestra/contrib/services/migrations/0014_auto_20200204_1218.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2020-02-04 11:18 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('services', '0013_auto_20190805_1134'), - ] - - operations = [ - migrations.AlterField( - model_name='service', - name='rate_algorithm', - field=models.CharField(choices=[('orchestra.contrib.plans.ratings.best_price', 'Best price'), ('orchestra.contrib.plans.ratings.match_price', 'Match price'), ('orchestra.contrib.plans.ratings.step_price', 'Step price')], default='orchestra.contrib.plans.ratings.step_price', help_text='Algorithm used to interprete the rating table.
  Best price: Produces the best possible price given all active rating lines (those with quantity lower or equal to the metric).
  Match price: Only the rate with a) inmediate inferior metric and b) lower price is applied. Nominal price will be used when initial block is missing.
  Step price: All rates with a quantity lower or equal than the metric are applied. Nominal price will be used when initial block is missing.', max_length=64, verbose_name='rate algorithm'), - ), - ] diff --git a/orchestra/contrib/services/migrations/0015_auto_20210330_1049.py b/orchestra/contrib/services/migrations/0015_auto_20210330_1049.py deleted file mode 100644 index c1402f79..00000000 --- a/orchestra/contrib/services/migrations/0015_auto_20210330_1049.py +++ /dev/null @@ -1,30 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2021-03-30 10:49 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('services', '0014_auto_20200204_1218'), - ] - - operations = [ - migrations.AlterField( - model_name='service', - name='billing_point', - field=models.CharField(choices=[('ON_REGISTER', 'Registration date'), ('ON_FIXED_DATE', 'Every January')], default='ON_FIXED_DATE', help_text='Reference point for calculating the renewal date on recurring invoices', max_length=16, verbose_name='billing point'), - ), - migrations.AlterField( - model_name='service', - name='rate_algorithm', - field=models.CharField(choices=[('orchestra.contrib.plans.ratings.step_price', 'Step price'), ('orchestra.contrib.plans.ratings.match_price', 'Match price'), ('orchestra.contrib.plans.ratings.best_price', 'Best price')], default='orchestra.contrib.plans.ratings.step_price', help_text='Algorithm used to interprete the rating table.
  Step price: All rates with a quantity lower or equal than the metric are applied. Nominal price will be used when initial block is missing.
  Match price: Only the rate with a) inmediate inferior metric and b) lower price is applied. Nominal price will be used when initial block is missing.
  Best price: Produces the best possible price given all active rating lines (those with quantity lower or equal to the metric).', max_length=64, verbose_name='rate algorithm'), - ), - migrations.AlterField( - model_name='service', - name='tax', - field=models.PositiveIntegerField(choices=[(0, 'Duty free'), (21, '21%')], default=0, verbose_name='tax'), - ), - ] diff --git a/orchestra/contrib/services/migrations/__init__.py b/orchestra/contrib/services/migrations/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/orchestra/contrib/services/models.py b/orchestra/contrib/services/models.py index 5dffcb48..0dc8bb80 100644 --- a/orchestra/contrib/services/models.py +++ b/orchestra/contrib/services/models.py @@ -7,7 +7,7 @@ from django.db import models from django.apps import apps from django.utils.functional import cached_property from django.utils.module_loading import autodiscover_modules -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.core import caches, validators from orchestra.utils.python import import_class @@ -109,7 +109,7 @@ class Service(models.Model): help_text=_( "Python expression " "used for generating the description for the bill lines of this services.
" - "Defaults to '%s: %s' % (ugettext(handler.description), instance)" + "Defaults to '%s: %s' % (gettext(handler.description), instance)" )) ignore_period = models.CharField(_("ignore period"), max_length=16, blank=True, help_text=_("Period in which orders will be ignored if cancelled. " diff --git a/orchestra/contrib/services/settings.py b/orchestra/contrib/services/settings.py index 4a3f8634..5c783067 100644 --- a/orchestra/contrib/services/settings.py +++ b/orchestra/contrib/services/settings.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.contrib.settings import Setting diff --git a/orchestra/contrib/services/templates/admin/services/service/change_form.html b/orchestra/contrib/services/templates/admin/services/service/change_form.html index 7d966e70..8a32497e 100644 --- a/orchestra/contrib/services/templates/admin/services/service/change_form.html +++ b/orchestra/contrib/services/templates/admin/services/service/change_form.html @@ -1,5 +1,5 @@ {% extends "orchestra/admin/change_form.html" %} -{% load i18n admin_urls admin_static admin_modify utils %} +{% load i18n admin_urls static admin_modify utils %} {% block object-tools %} diff --git a/orchestra/contrib/settings/admin.py b/orchestra/contrib/settings/admin.py index 8761ae04..6cefcb08 100644 --- a/orchestra/contrib/settings/admin.py +++ b/orchestra/contrib/settings/admin.py @@ -1,7 +1,7 @@ from django.contrib import admin, messages -from django.shortcuts import render_to_response +from django.shortcuts import render from django.views import generic -from django.utils.translation import ngettext, ugettext_lazy as _ +from django.utils.translation import ngettext, gettext_lazy as _ from orchestra.contrib.settings import Setting from orchestra.utils import sys @@ -84,7 +84,7 @@ class SettingView(generic.edit.FormView): _("%s changes successfully applied, orchestra is being restarted.") % n, n), } - return render_to_response(self.reload_template_name, context) + return render(None, self.reload_template_name, context) else: messages.success(self.request, _("No changes have been detected.")) return super(SettingView, self).form_valid(form) diff --git a/orchestra/contrib/settings/apps.py b/orchestra/contrib/settings/apps.py index 17fa85c6..d9738ebb 100644 --- a/orchestra/contrib/settings/apps.py +++ b/orchestra/contrib/settings/apps.py @@ -1,7 +1,7 @@ from django.apps import AppConfig from django.core.checks import register, Error from django.core.exceptions import ValidationError -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.core import administration diff --git a/orchestra/contrib/settings/forms.py b/orchestra/contrib/settings/forms.py index 2b339584..164e6545 100644 --- a/orchestra/contrib/settings/forms.py +++ b/orchestra/contrib/settings/forms.py @@ -7,7 +7,7 @@ from django.core.exceptions import ValidationError from django.forms.formsets import formset_factory from django.utils.functional import Promise from django.utils.safestring import mark_safe -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.forms import ReadOnlyFormMixin, widgets from orchestra.utils.python import format_exception diff --git a/orchestra/contrib/settings/parser.py b/orchestra/contrib/settings/parser.py index 4a06fe72..93923258 100644 --- a/orchestra/contrib/settings/parser.py +++ b/orchestra/contrib/settings/parser.py @@ -4,7 +4,7 @@ import json import os import re -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.utils.functional import Promise from orchestra.utils.paths import get_project_dir diff --git a/orchestra/contrib/settings/templates/admin/settings/reload.html b/orchestra/contrib/settings/templates/admin/settings/reload.html index 3c6cd609..7f183077 100644 --- a/orchestra/contrib/settings/templates/admin/settings/reload.html +++ b/orchestra/contrib/settings/templates/admin/settings/reload.html @@ -1,4 +1,4 @@ -{% load staticfiles %} +{% load static %} diff --git a/orchestra/contrib/systemusers/actions.py b/orchestra/contrib/systemusers/actions.py index 80743ea4..1916aa47 100644 --- a/orchestra/contrib/systemusers/actions.py +++ b/orchestra/contrib/systemusers/actions.py @@ -3,7 +3,7 @@ import os from django.contrib import messages, admin from django.core.exceptions import PermissionDenied from django.template.response import TemplateResponse -from django.utils.translation import ungettext, ugettext_lazy as _ +from django.utils.translation import ngettext, gettext_lazy as _ from orchestra.contrib.orchestration import Operation, helpers diff --git a/orchestra/contrib/systemusers/admin.py b/orchestra/contrib/systemusers/admin.py index 59b4c271..64362957 100644 --- a/orchestra/contrib/systemusers/admin.py +++ b/orchestra/contrib/systemusers/admin.py @@ -1,5 +1,5 @@ from django.contrib import admin, messages -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.admin import ExtendedModelAdmin, ChangePasswordAdminMixin from orchestra.admin.actions import disable, enable diff --git a/orchestra/contrib/systemusers/api.py b/orchestra/contrib/systemusers/api.py index 044048e4..b803c810 100644 --- a/orchestra/contrib/systemusers/api.py +++ b/orchestra/contrib/systemusers/api.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import viewsets, exceptions from orchestra.api import router, SetPasswordApiMixin, LogApiMixin diff --git a/orchestra/contrib/systemusers/backends.py b/orchestra/contrib/systemusers/backends.py index 22dde957..fdc38f25 100644 --- a/orchestra/contrib/systemusers/backends.py +++ b/orchestra/contrib/systemusers/backends.py @@ -2,7 +2,7 @@ import fnmatch import os import textwrap -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.contrib.orchestration import ServiceController, replace from orchestra.contrib.resources import ServiceMonitor diff --git a/orchestra/contrib/systemusers/filters.py b/orchestra/contrib/systemusers/filters.py index 8e619a49..7d1d9728 100644 --- a/orchestra/contrib/systemusers/filters.py +++ b/orchestra/contrib/systemusers/filters.py @@ -1,5 +1,5 @@ from django.contrib.admin import SimpleListFilter -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ class IsMainListFilter(SimpleListFilter): diff --git a/orchestra/contrib/systemusers/forms.py b/orchestra/contrib/systemusers/forms.py index eaf1d2f8..f95529bb 100644 --- a/orchestra/contrib/systemusers/forms.py +++ b/orchestra/contrib/systemusers/forms.py @@ -3,7 +3,7 @@ import textwrap from django import forms from django.core.exceptions import ValidationError -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.forms import UserCreationForm, UserChangeForm diff --git a/orchestra/contrib/systemusers/migrations/0001_initial.py b/orchestra/contrib/systemusers/migrations/0001_initial.py deleted file mode 100644 index e15de8e5..00000000 --- a/orchestra/contrib/systemusers/migrations/0001_initial.py +++ /dev/null @@ -1,30 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations -import orchestra.core.validators -from django.conf import settings - - -class Migration(migrations.Migration): - - dependencies = [ -# migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.CreateModel( - name='SystemUser', - fields=[ - ('id', models.AutoField(primary_key=True, serialize=False, auto_created=True, verbose_name='ID')), - ('username', models.CharField(validators=[orchestra.core.validators.validate_username], unique=True, help_text='Required. 64 characters or fewer. Letters, digits and ./-/_ only.', max_length=32, verbose_name='username')), - ('password', models.CharField(max_length=128, verbose_name='password')), - ('home', models.CharField(blank=True, max_length=256, help_text='Starting location when login with this no-shell user.', verbose_name='home')), - ('directory', models.CharField(blank=True, max_length=256, help_text="Optional directory relative to user's home.", verbose_name='directory')), - ('shell', models.CharField(default='/dev/null', max_length=32, choices=[('/dev/null', 'No shell, FTP only'), ('/bin/rssh', 'No shell, SFTP/RSYNC only'), ('/bin/bash', '/bin/bash'), ('/bin/sh', '/bin/sh')], verbose_name='shell')), - ('is_active', models.BooleanField(default=True, help_text='Designates whether this account should be treated as active. Unselect this instead of deleting accounts.', verbose_name='active')), -# ('account', models.ForeignKey(to=settings.AUTH_USER_MODEL, related_name='systemusers', verbose_name='Account')), - ('groups', models.ManyToManyField(to='systemusers.SystemUser', blank=True, help_text='A new group will be created for the user. Which additional groups would you like them to be a member of?')), - ], - ), - ] diff --git a/orchestra/contrib/systemusers/migrations/0002_auto_20150429_1413.py b/orchestra/contrib/systemusers/migrations/0002_auto_20150429_1413.py deleted file mode 100644 index 663a7d9b..00000000 --- a/orchestra/contrib/systemusers/migrations/0002_auto_20150429_1413.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations -import django.db.models.deletion -import orchestra.core.validators -from django.conf import settings - - -class Migration(migrations.Migration): - - dependencies = [ - ('systemusers', '0001_initial'), - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.AddField( - model_name='systemuser', - name='account', - field=models.ForeignKey(related_name='systemusers', to=settings.AUTH_USER_MODEL, default=1, on_delete=django.db.models.deletion.CASCADE, verbose_name='Account'), - preserve_default=False, - ), - ] - diff --git a/orchestra/contrib/systemusers/migrations/0002_auto_20150429_1413_squashed_0004_auto_20210330_1049.py b/orchestra/contrib/systemusers/migrations/0002_auto_20150429_1413_squashed_0004_auto_20210330_1049.py deleted file mode 100644 index b311dca3..00000000 --- a/orchestra/contrib/systemusers/migrations/0002_auto_20150429_1413_squashed_0004_auto_20210330_1049.py +++ /dev/null @@ -1,42 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2021-04-22 11:28 -from __future__ import unicode_literals - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion -import orchestra.core.validators - - -class Migration(migrations.Migration): - - replaces = [('systemusers', '0002_auto_20150429_1413'), ('systemusers', '0003_auto_20170528_2011'), ('systemusers', '0004_auto_20210330_1049')] - - dependencies = [ - ('systemusers', '0001_initial'), - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.AddField( - model_name='systemuser', - name='account', - field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, related_name='systemusers', to=settings.AUTH_USER_MODEL, verbose_name='Account'), - preserve_default=False, - ), - migrations.AlterField( - model_name='systemuser', - name='shell', - field=models.CharField(choices=[('/dev/null', 'No shell, FTP only'), ('/bin/rssh', 'No shell, SFTP/RSYNC only'), ('/usr/bin/git-shell', 'No shell, GIT only'), ('/bin/bash', '/bin/bash')], default='/dev/null', max_length=32, verbose_name='shell'), - ), - migrations.AlterField( - model_name='systemuser', - name='username', - field=models.CharField(help_text='Required. 32 characters or fewer. Letters, digits and ./-/_ only.', max_length=32, unique=True, validators=[orchestra.core.validators.validate_username], verbose_name='username'), - ), - migrations.AlterField( - model_name='systemuser', - name='shell', - field=models.CharField(choices=[('/dev/null', 'No shell, FTP only'), ('/bin/rssh', 'No shell, SFTP/RSYNC only'), ('/bin/bash', '/bin/bash')], default='/dev/null', max_length=32, verbose_name='shell'), - ), - ] diff --git a/orchestra/contrib/systemusers/migrations/0003_auto_20170528_2011.py b/orchestra/contrib/systemusers/migrations/0003_auto_20170528_2011.py deleted file mode 100644 index 0556f593..00000000 --- a/orchestra/contrib/systemusers/migrations/0003_auto_20170528_2011.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-05-28 18:11 -from __future__ import unicode_literals - -from django.db import migrations, models -import orchestra.core.validators - - -class Migration(migrations.Migration): - - dependencies = [ - ('systemusers', '0002_auto_20150429_1413'), - ] - - operations = [ - migrations.AlterField( - model_name='systemuser', - name='shell', - field=models.CharField(choices=[('/dev/null', 'No shell, FTP only'), ('/bin/rssh', 'No shell, SFTP/RSYNC only'), ('/usr/bin/git-shell', 'No shell, GIT only'), ('/bin/bash', '/bin/bash')], default='/dev/null', max_length=32, verbose_name='shell'), - ), - migrations.AlterField( - model_name='systemuser', - name='username', - field=models.CharField(help_text='Required. 32 characters or fewer. Letters, digits and ./-/_ only.', max_length=32, unique=True, validators=[orchestra.core.validators.validate_username], verbose_name='username'), - ), - ] diff --git a/orchestra/contrib/systemusers/migrations/0004_auto_20210330_1049.py b/orchestra/contrib/systemusers/migrations/0004_auto_20210330_1049.py deleted file mode 100644 index d495e8bd..00000000 --- a/orchestra/contrib/systemusers/migrations/0004_auto_20210330_1049.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2021-03-30 10:49 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('systemusers', '0003_auto_20170528_2011'), - ] - - operations = [ - migrations.AlterField( - model_name='systemuser', - name='shell', - field=models.CharField(choices=[('/dev/null', 'No shell, FTP only'), ('/bin/rssh', 'No shell, SFTP/RSYNC only'), ('/bin/bash', '/bin/bash')], default='/dev/null', max_length=32, verbose_name='shell'), - ), - ] diff --git a/orchestra/contrib/systemusers/migrations/__init__.py b/orchestra/contrib/systemusers/migrations/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/orchestra/contrib/systemusers/models.py b/orchestra/contrib/systemusers/models.py index b270bcad..bd6dc048 100644 --- a/orchestra/contrib/systemusers/models.py +++ b/orchestra/contrib/systemusers/models.py @@ -6,7 +6,7 @@ from django.core.exceptions import ValidationError from django.db import models from django.db.models import F from django.utils.functional import cached_property -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.core import validators diff --git a/orchestra/contrib/systemusers/serializers.py b/orchestra/contrib/systemusers/serializers.py index e9cf1257..5083b68e 100644 --- a/orchestra/contrib/systemusers/serializers.py +++ b/orchestra/contrib/systemusers/serializers.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from orchestra.api.serializers import SetPasswordHyperlinkedSerializer, RelatedHyperlinkedModelSerializer diff --git a/orchestra/contrib/systemusers/settings.py b/orchestra/contrib/systemusers/settings.py index 9023b20d..5e931a02 100644 --- a/orchestra/contrib/systemusers/settings.py +++ b/orchestra/contrib/systemusers/settings.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.contrib.settings import Setting diff --git a/orchestra/contrib/systemusers/validators.py b/orchestra/contrib/systemusers/validators.py index fbe4e9a0..cafea1c2 100644 --- a/orchestra/contrib/systemusers/validators.py +++ b/orchestra/contrib/systemusers/validators.py @@ -1,7 +1,7 @@ import os from django.core.exceptions import ValidationError -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.contrib.orchestration import Operation diff --git a/orchestra/contrib/tasks/admin.py b/orchestra/contrib/tasks/admin.py index bd249254..d245a5f6 100644 --- a/orchestra/contrib/tasks/admin.py +++ b/orchestra/contrib/tasks/admin.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from djcelery.admin import PeriodicTaskAdmin from orchestra.admin.utils import admin_date diff --git a/orchestra/contrib/vps/admin.py b/orchestra/contrib/vps/admin.py index b512fd8b..346ddaf9 100644 --- a/orchestra/contrib/vps/admin.py +++ b/orchestra/contrib/vps/admin.py @@ -1,5 +1,5 @@ from django.contrib import admin -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.admin import ExtendedModelAdmin, ChangePasswordAdminMixin from orchestra.contrib.accounts.actions import list_accounts diff --git a/orchestra/contrib/vps/migrations/0001_initial.py b/orchestra/contrib/vps/migrations/0001_initial.py deleted file mode 100644 index aa1e2133..00000000 --- a/orchestra/contrib/vps/migrations/0001_initial.py +++ /dev/null @@ -1,32 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations -import django.db.models.deletion -import orchestra.core.validators -from django.conf import settings - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.CreateModel( - name='VPS', - fields=[ - ('id', models.AutoField(verbose_name='ID', auto_created=True, serialize=False, primary_key=True)), - ('hostname', models.CharField(unique=True, verbose_name='hostname', validators=[orchestra.core.validators.validate_hostname], max_length=256)), - ('type', models.CharField(choices=[('openvz', 'OpenVZ container')], verbose_name='type', default='openvz', max_length=64)), - ('template', models.CharField(choices=[('debian7', 'Debian 7 - Wheezy')], verbose_name='template', default='debian7', max_length=64)), - ('password', models.CharField(verbose_name='password', help_text='root password of this virtual machine', max_length=128)), - ('account', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, verbose_name='Account', related_name='vpss', to=settings.AUTH_USER_MODEL)), - ], - options={ - 'verbose_name': 'VPS', - 'verbose_name_plural': 'VPSs', - }, - ), - ] diff --git a/orchestra/contrib/vps/migrations/0001_squashed_0004_auto_20170528_2005.py b/orchestra/contrib/vps/migrations/0001_squashed_0004_auto_20170528_2005.py deleted file mode 100644 index 1284ea89..00000000 --- a/orchestra/contrib/vps/migrations/0001_squashed_0004_auto_20170528_2005.py +++ /dev/null @@ -1,37 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2021-04-22 11:26 -from __future__ import unicode_literals - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion -import orchestra.core.validators - - -class Migration(migrations.Migration): - - replaces = [('vps', '0001_initial'), ('vps', '0002_auto_20150804_1524'), ('vps', '0003_vps_is_active'), ('vps', '0004_auto_20170528_2005')] - - initial = True - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.CreateModel( - name='VPS', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('hostname', models.CharField(max_length=256, unique=True, validators=[orchestra.core.validators.validate_hostname], verbose_name='hostname')), - ('type', models.CharField(choices=[('openvz', 'OpenVZ container'), ('lxc', 'LXC container')], default='lxc', max_length=64, verbose_name='type')), - ('template', models.CharField(choices=[('debian7', 'Debian 7 - Wheezy'), ('placeholder', 'LXC placeholder')], default='placeholder', help_text='Initial template.', max_length=64, verbose_name='template')), - ('account', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='vpss', to=settings.AUTH_USER_MODEL, verbose_name='Account')), - ('is_active', models.BooleanField(default=True, verbose_name='active')), - ], - options={ - 'verbose_name': 'VPS', - 'verbose_name_plural': 'VPSs', - }, - ), - ] diff --git a/orchestra/contrib/vps/migrations/0002_auto_20150804_1524.py b/orchestra/contrib/vps/migrations/0002_auto_20150804_1524.py deleted file mode 100644 index c3569416..00000000 --- a/orchestra/contrib/vps/migrations/0002_auto_20150804_1524.py +++ /dev/null @@ -1,23 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('vps', '0001_initial'), - ] - - operations = [ - migrations.RemoveField( - model_name='vps', - name='password', - ), - migrations.AlterField( - model_name='vps', - name='template', - field=models.CharField(default='debian7', verbose_name='template', choices=[('debian7', 'Debian 7 - Wheezy')], max_length=64, help_text='Initial template.'), - ), - ] diff --git a/orchestra/contrib/vps/migrations/0003_vps_is_active.py b/orchestra/contrib/vps/migrations/0003_vps_is_active.py deleted file mode 100644 index e9206793..00000000 --- a/orchestra/contrib/vps/migrations/0003_vps_is_active.py +++ /dev/null @@ -1,19 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('vps', '0002_auto_20150804_1524'), - ] - - operations = [ - migrations.AddField( - model_name='vps', - name='is_active', - field=models.BooleanField(default=True, verbose_name='active'), - ), - ] diff --git a/orchestra/contrib/vps/migrations/0004_auto_20170528_2005.py b/orchestra/contrib/vps/migrations/0004_auto_20170528_2005.py deleted file mode 100644 index ff91cc96..00000000 --- a/orchestra/contrib/vps/migrations/0004_auto_20170528_2005.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-05-28 18:05 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('vps', '0003_vps_is_active'), - ] - - operations = [ - migrations.AlterField( - model_name='vps', - name='template', - field=models.CharField(choices=[('debian7', 'Debian 7 - Wheezy'), ('placeholder', 'LXC placeholder')], default='placeholder', help_text='Initial template.', max_length=64, verbose_name='template'), - ), - migrations.AlterField( - model_name='vps', - name='type', - field=models.CharField(choices=[('openvz', 'OpenVZ container'), ('lxc', 'LXC container')], default='lxc', max_length=64, verbose_name='type'), - ), - ] diff --git a/orchestra/contrib/vps/migrations/__init__.py b/orchestra/contrib/vps/migrations/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/orchestra/contrib/vps/models.py b/orchestra/contrib/vps/models.py index fe3c62c9..f5b19f7b 100644 --- a/orchestra/contrib/vps/models.py +++ b/orchestra/contrib/vps/models.py @@ -1,6 +1,6 @@ from django.contrib.auth.hashers import make_password from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.core.validators import validate_hostname diff --git a/orchestra/contrib/webapps/admin.py b/orchestra/contrib/webapps/admin.py index 29247079..d1dc7a18 100644 --- a/orchestra/contrib/webapps/admin.py +++ b/orchestra/contrib/webapps/admin.py @@ -1,9 +1,9 @@ from django import forms from django.contrib import admin from django.urls import reverse -from django.utils.encoding import force_text +from django.utils.encoding import force_str from django.utils.safestring import mark_safe -from django.utils.translation import ugettext, ugettext_lazy as _ +from django.utils.translation import gettext, gettext_lazy as _ from orchestra.admin import ExtendedModelAdmin from orchestra.admin.utils import admin_link, get_modeladmin @@ -24,7 +24,7 @@ class WebAppOptionInline(admin.TabularInline): extra = 1 OPTIONS_HELP_TEXT = { - op.name: force_text(op.help_text) for op in AppOption.get_plugins() + op.name: force_str(op.help_text) for op in AppOption.get_plugins() } class Media: @@ -74,14 +74,15 @@ class WebAppAdmin(SelectPluginAdminMixin, AccountAdminMixin, ExtendedModelAdmin) site_url = content.get_absolute_url() site_link = get_on_site_link(site_url) website = content.website - name = "%s on %s %s" % (website.name, content.path, site_link) + #name = "%s on %s %s" % (website.name, content.path, site_link) + name = "%s on %s" % (website.name, content.path) link = admin_link(display=name)(website) websites.append(link) if not websites: add_url = reverse('admin:websites_website_add') add_url += '?account=%s' % webapp.account_id plus = '+' - websites.append('%s%s' % (add_url, plus, ugettext("Add website"))) + websites.append('%s%s' % (add_url, plus, gettext("Add website"))) return '
'.join(websites) display_websites.short_description = _("web sites") diff --git a/orchestra/contrib/webapps/backends/moodle.py b/orchestra/contrib/webapps/backends/moodle.py index b5d85305..5579e8a4 100644 --- a/orchestra/contrib/webapps/backends/moodle.py +++ b/orchestra/contrib/webapps/backends/moodle.py @@ -1,7 +1,7 @@ import os import textwrap -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.contrib.orchestration import ServiceController, replace diff --git a/orchestra/contrib/webapps/backends/php.py b/orchestra/contrib/webapps/backends/php.py index 360f3eb1..7478fc41 100644 --- a/orchestra/contrib/webapps/backends/php.py +++ b/orchestra/contrib/webapps/backends/php.py @@ -2,8 +2,8 @@ import os import textwrap from collections import OrderedDict -from django.template import Template -from django.utils.translation import ugettext_lazy as _ +from django.template import Template, Context +from django.utils.translation import gettext_lazy as _ from orchestra.contrib.orchestration import ServiceController @@ -245,7 +245,7 @@ class PHPController(WebAppServiceMixin, ServiceController): php_admin_value[{{ name | safe }}] = {{ value | safe }}{% endfor %} """ )) - return fpm_config.render(context) + return fpm_config.render(Context(context)) def get_fcgid_wrapper(self, webapp, context): opt = webapp.type_instance diff --git a/orchestra/contrib/webapps/backends/python.py b/orchestra/contrib/webapps/backends/python.py index fa0b9881..63013d5e 100644 --- a/orchestra/contrib/webapps/backends/python.py +++ b/orchestra/contrib/webapps/backends/python.py @@ -1,7 +1,7 @@ import os import textwrap -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.contrib.orchestration import ServiceController, replace diff --git a/orchestra/contrib/webapps/backends/static.py b/orchestra/contrib/webapps/backends/static.py index f5173190..f424d505 100644 --- a/orchestra/contrib/webapps/backends/static.py +++ b/orchestra/contrib/webapps/backends/static.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.contrib.orchestration import ServiceController diff --git a/orchestra/contrib/webapps/backends/symboliclink.py b/orchestra/contrib/webapps/backends/symboliclink.py index 1b43f0de..2ba3fac2 100644 --- a/orchestra/contrib/webapps/backends/symboliclink.py +++ b/orchestra/contrib/webapps/backends/symboliclink.py @@ -1,6 +1,6 @@ import textwrap -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.contrib.orchestration import ServiceController, replace diff --git a/orchestra/contrib/webapps/backends/webalizer.py b/orchestra/contrib/webapps/backends/webalizer.py index d715e983..c9d35560 100644 --- a/orchestra/contrib/webapps/backends/webalizer.py +++ b/orchestra/contrib/webapps/backends/webalizer.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.contrib.orchestration import ServiceController diff --git a/orchestra/contrib/webapps/backends/wordpress.py b/orchestra/contrib/webapps/backends/wordpress.py index cbb1641a..819be388 100644 --- a/orchestra/contrib/webapps/backends/wordpress.py +++ b/orchestra/contrib/webapps/backends/wordpress.py @@ -1,7 +1,7 @@ import os import textwrap -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.contrib.orchestration import ServiceController, replace diff --git a/orchestra/contrib/webapps/filters.py b/orchestra/contrib/webapps/filters.py index a79cd228..794217bf 100644 --- a/orchestra/contrib/webapps/filters.py +++ b/orchestra/contrib/webapps/filters.py @@ -1,5 +1,5 @@ from django.contrib.admin import SimpleListFilter -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from .types import AppType diff --git a/orchestra/contrib/webapps/migrations/0001_initial.py b/orchestra/contrib/webapps/migrations/0001_initial.py deleted file mode 100644 index 54a329d5..00000000 --- a/orchestra/contrib/webapps/migrations/0001_initial.py +++ /dev/null @@ -1,53 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations -import django.db.models.deletion -import orchestra.core.validators -import jsonfield.fields -from django.conf import settings - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.CreateModel( - name='WebApp', - fields=[ - ('id', models.AutoField(verbose_name='ID', auto_created=True, serialize=False, primary_key=True)), - ('name', models.CharField(verbose_name='name', validators=[orchestra.core.validators.validate_name], help_text='The app will be installed in %(home)s/webapps/%(app_name)s', max_length=128)), - ('type', models.CharField(verbose_name='type', max_length=32, choices=[('php', 'PHP'), ('python', 'Python'), ('static', 'Static'), ('symbolic-link', 'Symbolic link'), ('webalizer', 'Webalizer'), ('wordpress-php', 'WordPress')])), - ('data', jsonfield.fields.JSONField(verbose_name='data', blank=True, help_text='Extra information dependent of each service.', default={})), - ('account', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, verbose_name='Account', related_name='webapps', to=settings.AUTH_USER_MODEL)), - ], - options={ - 'verbose_name': 'Web App', - 'verbose_name_plural': 'Web Apps', - }, - ), - migrations.CreateModel( - name='WebAppOption', - fields=[ - ('id', models.AutoField(verbose_name='ID', auto_created=True, serialize=False, primary_key=True)), - ('name', models.CharField(verbose_name='name', max_length=128, choices=[(None, '-------'), ('FileSystem', [('public-root', 'Public root')]), ('Process', [('timeout', 'Process timeout'), ('processes', 'Number of processes')]), ('PHP', [('enable_functions', 'Enable functions'), ('allow_url_include', 'Allow URL include'), ('allow_url_fopen', 'Allow URL fopen'), ('auto_append_file', 'Auto append file'), ('auto_prepend_file', 'Auto prepend file'), ('date.timezone', 'date.timezone'), ('default_socket_timeout', 'Default socket timeout'), ('display_errors', 'Display errors'), ('extension', 'Extension'), ('magic_quotes_gpc', 'Magic quotes GPC'), ('magic_quotes_runtime', 'Magic quotes runtime'), ('magic_quotes_sybase', 'Magic quotes sybase'), ('max_input_time', 'Max input time'), ('max_input_vars', 'Max input vars'), ('memory_limit', 'Memory limit'), ('mysql.connect_timeout', 'Mysql connect timeout'), ('output_buffering', 'Output buffering'), ('register_globals', 'Register globals'), ('post_max_size', 'Post max size'), ('sendmail_path', 'Sendmail path'), ('session.bug_compat_warn', 'Session bug compat warning'), ('session.auto_start', 'Session auto start'), ('safe_mode', 'Safe mode'), ('suhosin.post.max_vars', 'Suhosin POST max vars'), ('suhosin.get.max_vars', 'Suhosin GET max vars'), ('suhosin.request.max_vars', 'Suhosin request max vars'), ('suhosin.session.encrypt', 'Suhosin session encrypt'), ('suhosin.simulation', 'Suhosin simulation'), ('suhosin.executor.include.whitelist', 'Suhosin executor include whitelist'), ('upload_max_filesize', 'Upload max filesize'), ('zend_extension', 'Zend extension')])])), - ('value', models.CharField(verbose_name='value', max_length=256)), - ('webapp', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, verbose_name='Web application', related_name='options', to='webapps.WebApp')), - ], - options={ - 'verbose_name': 'option', - 'verbose_name_plural': 'options', - }, - ), - migrations.AlterUniqueTogether( - name='webappoption', - unique_together=set([('webapp', 'name')]), - ), - migrations.AlterUniqueTogether( - name='webapp', - unique_together=set([('name', 'account')]), - ), - ] diff --git a/orchestra/contrib/webapps/migrations/0001_squashed_0006_auto_20210330_1049.py b/orchestra/contrib/webapps/migrations/0001_squashed_0006_auto_20210330_1049.py deleted file mode 100644 index 0074262c..00000000 --- a/orchestra/contrib/webapps/migrations/0001_squashed_0006_auto_20210330_1049.py +++ /dev/null @@ -1,80 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2021-04-22 11:25 -from __future__ import unicode_literals - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion -import jsonfield.fields -import orchestra.core.validators - - -class Migration(migrations.Migration): - - replaces = [('webapps', '0001_initial'), ('webapps', '0002_auto_20170528_2011'), ('webapps', '0003_webapp_target_server'), ('webapps', '0004_webapp_comments'), ('webapps', '0005_auto_20200204_1218'), ('webapps', '0006_auto_20210330_1049')] - - initial = True - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('orchestration', '0007_auto_20170528_2011'), - ] - - operations = [ - migrations.CreateModel( - name='WebApp', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(help_text='The app will be installed in %(home)s/webapps/%(app_name)s', max_length=128, validators=[orchestra.core.validators.validate_name], verbose_name='name')), - ('type', models.CharField(choices=[('php', 'PHP'), ('python', 'Python'), ('static', 'Static'), ('symbolic-link', 'Symbolic link'), ('webalizer', 'Webalizer'), ('wordpress-php', 'WordPress')], max_length=32, verbose_name='type')), - ('data', jsonfield.fields.JSONField(blank=True, default={}, help_text='Extra information dependent of each service.', verbose_name='data')), - ('account', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='webapps', to=settings.AUTH_USER_MODEL, verbose_name='Account')), - ], - options={ - 'verbose_name': 'Web App', - 'verbose_name_plural': 'Web Apps', - }, - ), - migrations.CreateModel( - name='WebAppOption', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(choices=[(None, '-------'), ('FileSystem', [('public-root', 'Public root')]), ('Process', [('timeout', 'Process timeout'), ('processes', 'Number of processes')]), ('PHP', [('enable_functions', 'Enable functions'), ('allow_url_include', 'Allow URL include'), ('allow_url_fopen', 'Allow URL fopen'), ('auto_append_file', 'Auto append file'), ('auto_prepend_file', 'Auto prepend file'), ('date.timezone', 'date.timezone'), ('default_socket_timeout', 'Default socket timeout'), ('display_errors', 'Display errors'), ('extension', 'Extension'), ('magic_quotes_gpc', 'Magic quotes GPC'), ('magic_quotes_runtime', 'Magic quotes runtime'), ('magic_quotes_sybase', 'Magic quotes sybase'), ('max_input_time', 'Max input time'), ('max_input_vars', 'Max input vars'), ('memory_limit', 'Memory limit'), ('mysql.connect_timeout', 'Mysql connect timeout'), ('output_buffering', 'Output buffering'), ('register_globals', 'Register globals'), ('post_max_size', 'Post max size'), ('sendmail_path', 'Sendmail path'), ('session.bug_compat_warn', 'Session bug compat warning'), ('session.auto_start', 'Session auto start'), ('safe_mode', 'Safe mode'), ('suhosin.post.max_vars', 'Suhosin POST max vars'), ('suhosin.get.max_vars', 'Suhosin GET max vars'), ('suhosin.request.max_vars', 'Suhosin request max vars'), ('suhosin.session.encrypt', 'Suhosin session encrypt'), ('suhosin.simulation', 'Suhosin simulation'), ('suhosin.executor.include.whitelist', 'Suhosin executor include whitelist'), ('upload_max_filesize', 'Upload max filesize'), ('zend_extension', 'Zend extension')])], max_length=128, verbose_name='name')), - ('value', models.CharField(max_length=256, verbose_name='value')), - ('webapp', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='options', to='webapps.WebApp', verbose_name='Web application')), - ], - options={ - 'verbose_name': 'option', - 'verbose_name_plural': 'options', - }, - ), - migrations.AlterUniqueTogether( - name='webappoption', - unique_together=set([('webapp', 'name')]), - ), - migrations.AlterField( - model_name='webapp', - name='type', - field=models.CharField(choices=[('moodle-php', 'Moodle'), ('php', 'PHP'), ('python', 'Python'), ('static', 'Static'), ('symbolic-link', 'Symbolic link'), ('webalizer', 'Webalizer'), ('wordpress-php', 'WordPress')], max_length=32, verbose_name='type'), - ), - migrations.AddField( - model_name='webapp', - name='target_server', - field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, related_name='webapps', to='orchestration.Server', verbose_name='Target Server'), - preserve_default=False, - ), - migrations.AddField( - model_name='webapp', - name='comments', - field=models.TextField(blank=True, default=''), - ), - migrations.AlterUniqueTogether( - name='webapp', - unique_together=set([('name', 'account')]), - ), - migrations.AlterField( - model_name='webappoption', - name='name', - field=models.CharField(choices=[(None, '-------'), ('FileSystem', [('public-root', 'Public root')]), ('Process', [('timeout', 'Process timeout'), ('processes', 'Number of processes')]), ('PHP', [('enable_functions', 'Enable functions'), ('disable_functions', 'Disable functions'), ('allow_url_include', 'Allow URL include'), ('allow_url_fopen', 'Allow URL fopen'), ('auto_append_file', 'Auto append file'), ('auto_prepend_file', 'Auto prepend file'), ('date.timezone', 'date.timezone'), ('default_socket_timeout', 'Default socket timeout'), ('display_errors', 'Display errors'), ('extension', 'Extension'), ('include_path', 'Include path'), ('magic_quotes_gpc', 'Magic quotes GPC'), ('magic_quotes_runtime', 'Magic quotes runtime'), ('magic_quotes_sybase', 'Magic quotes sybase'), ('max_input_time', 'Max input time'), ('max_input_vars', 'Max input vars'), ('memory_limit', 'Memory limit'), ('mysql.connect_timeout', 'Mysql connect timeout'), ('output_buffering', 'Output buffering'), ('register_globals', 'Register globals'), ('post_max_size', 'Post max size'), ('sendmail_path', 'Sendmail path'), ('session.bug_compat_warn', 'Session bug compat warning'), ('session.auto_start', 'Session auto start'), ('safe_mode', 'Safe mode'), ('suhosin.post.max_vars', 'Suhosin POST max vars'), ('suhosin.get.max_vars', 'Suhosin GET max vars'), ('suhosin.request.max_vars', 'Suhosin request max vars'), ('suhosin.session.encrypt', 'Suhosin session encrypt'), ('suhosin.simulation', 'Suhosin simulation'), ('suhosin.executor.include.whitelist', 'Suhosin executor include whitelist'), ('upload_max_filesize', 'Upload max filesize'), ('upload_tmp_dir', 'Upload tmp dir'), ('zend_extension', 'Zend extension')])], max_length=128, verbose_name='name'), - ), - ] diff --git a/orchestra/contrib/webapps/migrations/0002_auto_20170528_2011.py b/orchestra/contrib/webapps/migrations/0002_auto_20170528_2011.py deleted file mode 100644 index 18300cad..00000000 --- a/orchestra/contrib/webapps/migrations/0002_auto_20170528_2011.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-05-28 18:11 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('webapps', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='webapp', - name='type', - field=models.CharField(choices=[('moodle-php', 'Moodle'), ('php', 'PHP'), ('python', 'Python'), ('static', 'Static'), ('symbolic-link', 'Symbolic link'), ('webalizer', 'Webalizer'), ('wordpress-php', 'WordPress')], max_length=32, verbose_name='type'), - ), - migrations.AlterField( - model_name='webappoption', - name='name', - field=models.CharField(choices=[(None, '-------'), ('FileSystem', [('public-root', 'Public root')]), ('Process', [('timeout', 'Process timeout'), ('processes', 'Number of processes')]), ('PHP', [('enable_functions', 'Enable functions'), ('disable_functions', 'Disable functions'), ('allow_url_include', 'Allow URL include'), ('allow_url_fopen', 'Allow URL fopen'), ('auto_append_file', 'Auto append file'), ('auto_prepend_file', 'Auto prepend file'), ('date.timezone', 'date.timezone'), ('default_socket_timeout', 'Default socket timeout'), ('display_errors', 'Display errors'), ('extension', 'Extension'), ('include_path', 'Include path'), ('magic_quotes_gpc', 'Magic quotes GPC'), ('magic_quotes_runtime', 'Magic quotes runtime'), ('magic_quotes_sybase', 'Magic quotes sybase'), ('max_input_time', 'Max input time'), ('max_input_vars', 'Max input vars'), ('memory_limit', 'Memory limit'), ('mysql.connect_timeout', 'Mysql connect timeout'), ('output_buffering', 'Output buffering'), ('register_globals', 'Register globals'), ('post_max_size', 'Post max size'), ('sendmail_path', 'Sendmail path'), ('session.bug_compat_warn', 'Session bug compat warning'), ('session.auto_start', 'Session auto start'), ('safe_mode', 'Safe mode'), ('suhosin.post.max_vars', 'Suhosin POST max vars'), ('suhosin.get.max_vars', 'Suhosin GET max vars'), ('suhosin.request.max_vars', 'Suhosin request max vars'), ('suhosin.session.encrypt', 'Suhosin session encrypt'), ('suhosin.simulation', 'Suhosin simulation'), ('suhosin.executor.include.whitelist', 'Suhosin executor include whitelist'), ('upload_max_filesize', 'Upload max filesize'), ('upload_tmp_dir', 'Upload tmp dir'), ('zend_extension', 'Zend extension')])], max_length=128, verbose_name='name'), - ), - ] diff --git a/orchestra/contrib/webapps/migrations/0003_webapp_target_server.py b/orchestra/contrib/webapps/migrations/0003_webapp_target_server.py deleted file mode 100644 index 4bddb317..00000000 --- a/orchestra/contrib/webapps/migrations/0003_webapp_target_server.py +++ /dev/null @@ -1,23 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-07-04 08:49 -from __future__ import unicode_literals - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('orchestration', '0007_auto_20170528_2011'), - ('webapps', '0002_auto_20170528_2011'), - ] - - operations = [ - migrations.AddField( - model_name='webapp', - name='target_server', - field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, related_name='webapps', to='orchestration.Server', verbose_name='Target Server'), - preserve_default=False, - ), - ] diff --git a/orchestra/contrib/webapps/migrations/0004_webapp_comments.py b/orchestra/contrib/webapps/migrations/0004_webapp_comments.py deleted file mode 100644 index 25ad65d7..00000000 --- a/orchestra/contrib/webapps/migrations/0004_webapp_comments.py +++ /dev/null @@ -1,21 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2020-02-04 11:17 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('webapps', '0003_webapp_target_server'), - ] - - operations = [ - migrations.AddField( - model_name='webapp', - name='comments', - field=models.TextField(default=''), - preserve_default=False, - ), - ] diff --git a/orchestra/contrib/webapps/migrations/0005_auto_20200204_1218.py b/orchestra/contrib/webapps/migrations/0005_auto_20200204_1218.py deleted file mode 100644 index 80b315f7..00000000 --- a/orchestra/contrib/webapps/migrations/0005_auto_20200204_1218.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2020-02-04 11:18 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('webapps', '0004_webapp_comments'), - ] - - operations = [ - migrations.AlterField( - model_name='webapp', - name='comments', - field=models.TextField(default=''), - ), - ] diff --git a/orchestra/contrib/webapps/migrations/0006_auto_20210330_1049.py b/orchestra/contrib/webapps/migrations/0006_auto_20210330_1049.py deleted file mode 100644 index 1c27407d..00000000 --- a/orchestra/contrib/webapps/migrations/0006_auto_20210330_1049.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2021-03-30 10:49 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('webapps', '0005_auto_20200204_1218'), - ] - - operations = [ - migrations.AlterField( - model_name='webapp', - name='comments', - field=models.TextField(blank=True, default=''), - ), - ] diff --git a/orchestra/contrib/webapps/migrations/__init__.py b/orchestra/contrib/webapps/migrations/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/orchestra/contrib/webapps/models.py b/orchestra/contrib/webapps/models.py index 42b3a227..21f07979 100644 --- a/orchestra/contrib/webapps/models.py +++ b/orchestra/contrib/webapps/models.py @@ -3,7 +3,7 @@ from collections import OrderedDict from django.db import models from django.utils.functional import cached_property -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from jsonfield import JSONField from orchestra.core import validators diff --git a/orchestra/contrib/webapps/options.py b/orchestra/contrib/webapps/options.py index dad0ec87..66a9a373 100644 --- a/orchestra/contrib/webapps/options.py +++ b/orchestra/contrib/webapps/options.py @@ -3,7 +3,7 @@ import re from functools import lru_cache from django.core.exceptions import ValidationError -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra import plugins from orchestra.utils.python import import_class @@ -204,6 +204,10 @@ class PHPIncludePath(PHPAppOption): verbose_name = _("Include path") regex = r'^[^ ]+$' +class PHPOpenBasedir(PHPAppOption): + name = 'open_basedir' + verbose_name = _("Open basedir") + regex = r'^[^ ]+$' class PHPMagicQuotesGPC(PHPAppOption): name = 'magic_quotes_gpc' diff --git a/orchestra/contrib/webapps/settings.py b/orchestra/contrib/webapps/settings.py index 625de96f..19471c59 100644 --- a/orchestra/contrib/webapps/settings.py +++ b/orchestra/contrib/webapps/settings.py @@ -235,6 +235,7 @@ WEBAPPS_ENABLED_OPTIONS = Setting('WEBAPPS_ENABLED_OPTIONS', ( 'orchestra.contrib.webapps.options.PHPDisplayErrors', 'orchestra.contrib.webapps.options.PHPExtension', 'orchestra.contrib.webapps.options.PHPIncludePath', + 'orchestra.contrib.webapps.options.PHPOpenBasedir', 'orchestra.contrib.webapps.options.PHPMagicQuotesGPC', 'orchestra.contrib.webapps.options.PHPMagicQuotesRuntime', 'orchestra.contrib.webapps.options.PHPMaginQuotesSybase', diff --git a/orchestra/contrib/webapps/types/__init__.py b/orchestra/contrib/webapps/types/__init__.py index 33020d32..eb1b7d18 100644 --- a/orchestra/contrib/webapps/types/__init__.py +++ b/orchestra/contrib/webapps/types/__init__.py @@ -3,7 +3,7 @@ import os from functools import lru_cache from django.core.exceptions import ValidationError -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra import plugins from orchestra.plugins.forms import PluginDataForm diff --git a/orchestra/contrib/webapps/types/cms.py b/orchestra/contrib/webapps/types/cms.py index 0343ce15..03524d74 100644 --- a/orchestra/contrib/webapps/types/cms.py +++ b/orchestra/contrib/webapps/types/cms.py @@ -2,7 +2,7 @@ from django import forms from django.core.exceptions import ValidationError from django.urls import reverse from django.utils.safestring import mark_safe -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from orchestra.contrib.databases.models import Database, DatabaseUser diff --git a/orchestra/contrib/webapps/types/misc.py b/orchestra/contrib/webapps/types/misc.py index f3837fd6..1619bbf3 100644 --- a/orchestra/contrib/webapps/types/misc.py +++ b/orchestra/contrib/webapps/types/misc.py @@ -1,7 +1,7 @@ import os from django import forms -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from ..options import AppOption diff --git a/orchestra/contrib/webapps/types/moodle.py b/orchestra/contrib/webapps/types/moodle.py index 54921dd6..aef8bbce 100644 --- a/orchestra/contrib/webapps/types/moodle.py +++ b/orchestra/contrib/webapps/types/moodle.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from .cms import CMSApp diff --git a/orchestra/contrib/webapps/types/php.py b/orchestra/contrib/webapps/types/php.py index 8c1e6522..accdb0a8 100644 --- a/orchestra/contrib/webapps/types/php.py +++ b/orchestra/contrib/webapps/types/php.py @@ -2,7 +2,7 @@ import os from collections import OrderedDict from django import forms -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from orchestra.plugins.forms import PluginDataForm diff --git a/orchestra/contrib/webapps/types/python.py b/orchestra/contrib/webapps/types/python.py index ec9984e4..22ff0297 100644 --- a/orchestra/contrib/webapps/types/python.py +++ b/orchestra/contrib/webapps/types/python.py @@ -1,7 +1,7 @@ import re from django import forms -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from orchestra.plugins.forms import PluginDataForm diff --git a/orchestra/contrib/webapps/types/wordpress.py b/orchestra/contrib/webapps/types/wordpress.py index 0d02ff8f..926f7acc 100644 --- a/orchestra/contrib/webapps/types/wordpress.py +++ b/orchestra/contrib/webapps/types/wordpress.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from .cms import CMSApp diff --git a/orchestra/contrib/websites/admin.py b/orchestra/contrib/websites/admin.py index a6a68c55..581796d6 100644 --- a/orchestra/contrib/websites/admin.py +++ b/orchestra/contrib/websites/admin.py @@ -2,10 +2,10 @@ from django import forms from django.contrib import admin from django.urls import resolve from django.db.models import Q -from django.utils.encoding import force_text +from django.utils.encoding import force_str from django.utils.html import format_html from django.utils.safestring import mark_safe -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.admin import ExtendedModelAdmin from orchestra.admin.actions import disable, enable @@ -28,7 +28,7 @@ class WebsiteDirectiveInline(admin.TabularInline): extra = 1 DIRECTIVES_HELP_TEXT = { - op.name: force_text(op.help_text) for op in SiteDirective.get_plugins() + op.name: force_str(op.help_text) for op in SiteDirective.get_plugins() } def formfield_for_dbfield(self, db_field, **kwargs): @@ -121,9 +121,8 @@ class WebsiteAdmin(SelectAccountAdminMixin, ExtendedModelAdmin): Q(websites__protocol=Website.HTTP) & Q(websites__protocol=Website.HTTPS) ) ) - args = resolve(kwargs['request'].path).args - if args: - object_id = args[0] + object_id = kwargs['request'].resolver_match.kwargs.get('object_id') + if object_id: qset = Q(qset & ~Q(websites__pk=object_id)) formfield.queryset = formfield.queryset.exclude(qset) return formfield diff --git a/orchestra/contrib/websites/backends/apache.py b/orchestra/contrib/websites/backends/apache.py index ad664eea..40aafdee 100644 --- a/orchestra/contrib/websites/backends/apache.py +++ b/orchestra/contrib/websites/backends/apache.py @@ -2,8 +2,8 @@ import os import re import textwrap -from django.template import Template -from django.utils.translation import ugettext_lazy as _ +from django.template import Template, Context +from django.utils.translation import gettext_lazy as _ from orchestra.contrib.orchestration import ServiceController from orchestra.contrib.resources import ServiceMonitor @@ -78,7 +78,7 @@ class Apache2Controller(ServiceController): {{ line | safe }}{% endfor %} """) - ).render(context) + ).render(Context(context)) def render_redirect_https(self, context): context['port'] = self.HTTP_PORT @@ -96,7 +96,7 @@ class Apache2Controller(ServiceController): RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} """) - ).render(context) + ).render(Context(context)) def save(self, site): context = self.get_context(site) diff --git a/orchestra/contrib/websites/backends/webalizer.py b/orchestra/contrib/websites/backends/webalizer.py index 63401cec..093aa6bd 100644 --- a/orchestra/contrib/websites/backends/webalizer.py +++ b/orchestra/contrib/websites/backends/webalizer.py @@ -1,7 +1,7 @@ import os import textwrap -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.contrib.orchestration import ServiceController diff --git a/orchestra/contrib/websites/directives.py b/orchestra/contrib/websites/directives.py index 190f1adc..6192d164 100644 --- a/orchestra/contrib/websites/directives.py +++ b/orchestra/contrib/websites/directives.py @@ -3,7 +3,7 @@ from collections import defaultdict from functools import lru_cache from django.core.exceptions import ValidationError -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra import plugins from orchestra.utils.python import import_class @@ -83,7 +83,7 @@ class SiteDirective(plugins.Plugin, metaclass=plugins.PluginMount): if value is not None: if self.unique_value and value in values.get(self.name, []): errors['value'].append(ValidationError( - _("This value is already used by other %s.") % force_text(self.get_verbose_name()) + _("This value is already used by other %s.") % force_str(self.get_verbose_name()) )) values[self.name].append(value) if errors: diff --git a/orchestra/contrib/websites/filters.py b/orchestra/contrib/websites/filters.py index 5fb19f44..11016195 100644 --- a/orchestra/contrib/websites/filters.py +++ b/orchestra/contrib/websites/filters.py @@ -1,5 +1,5 @@ from django.contrib.admin import SimpleListFilter -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ class HasWebAppsListFilter(SimpleListFilter): diff --git a/orchestra/contrib/websites/migrations/0001_initial.py b/orchestra/contrib/websites/migrations/0001_initial.py deleted file mode 100644 index f58a4210..00000000 --- a/orchestra/contrib/websites/migrations/0001_initial.py +++ /dev/null @@ -1,61 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations -from django.conf import settings -import django.db.models.deletion -import orchestra.core.validators - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('domains', '0001_initial'), - ('webapps', '0001_initial'), - ] - - operations = [ - migrations.CreateModel( - name='Content', - fields=[ - ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True, serialize=False)), - ('path', models.CharField(validators=[orchestra.core.validators.validate_url_path], verbose_name='path', max_length=256, blank=True)), - ('webapp', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, verbose_name='web application', to='webapps.WebApp')), - ], - ), - migrations.CreateModel( - name='Website', - fields=[ - ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True, serialize=False)), - ('name', models.CharField(validators=[orchestra.core.validators.validate_name], verbose_name='name', max_length=128)), - ('protocol', models.CharField(verbose_name='protocol', default='http', choices=[('http', 'HTTP'), ('https', 'HTTPS'), ('http/https', 'HTTP and HTTPS'), ('https-only', 'HTTPS only')], help_text='Select the protocol(s) for this website
HTTPS only performs a redirection from http to https.', max_length=16)), - ('is_active', models.BooleanField(verbose_name='active', default=True)), - ('account', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='websites', verbose_name='Account', to=settings.AUTH_USER_MODEL)), - ('contents', models.ManyToManyField(through='websites.Content', to='webapps.WebApp')), - ('domains', models.ManyToManyField(verbose_name='domains', related_name='websites', to='domains.Domain')), - ], - ), - migrations.CreateModel( - name='WebsiteDirective', - fields=[ - ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True, serialize=False)), - ('name', models.CharField(verbose_name='name', choices=[(None, '-------'), ('SSL', [('ssl-ca', 'SSL CA'), ('ssl-cert', 'SSL cert'), ('ssl-key', 'SSL key')]), ('HTTPD', [('redirect', 'Redirection'), ('proxy', 'Proxy'), ('error-document', 'ErrorDocumentRoot')]), ('ModSecurity', [('sec-rule-remove', 'SecRuleRemoveById'), ('sec-engine', 'SecRuleEngine Off')]), ('SaaS', [('wordpress-saas', 'WordPress SaaS'), ('dokuwiki-saas', 'DokuWiki SaaS'), ('drupal-saas', 'Drupdal SaaS')])], max_length=128)), - ('value', models.CharField(verbose_name='value', max_length=256)), - ('website', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='directives', verbose_name='web site', to='websites.Website')), - ], - ), - migrations.AddField( - model_name='content', - name='website', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, verbose_name='web site', to='websites.Website'), - ), - migrations.AlterUniqueTogether( - name='website', - unique_together=set([('name', 'account')]), - ), - migrations.AlterUniqueTogether( - name='content', - unique_together=set([('website', 'path')]), - ), - ] diff --git a/orchestra/contrib/websites/migrations/0001_squashed_0017_auto_20210330_1049.py b/orchestra/contrib/websites/migrations/0001_squashed_0017_auto_20210330_1049.py deleted file mode 100644 index e6847bc4..00000000 --- a/orchestra/contrib/websites/migrations/0001_squashed_0017_auto_20210330_1049.py +++ /dev/null @@ -1,83 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2021-04-22 11:25 -from __future__ import unicode_literals - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion -import orchestra.core.validators - - -class Migration(migrations.Migration): - - replaces = [('websites', '0001_initial'), ('websites', '0002_auto_20160219_1036'), ('websites', '0003_auto_20170528_2011'), ('websites', '0004_auto_20170625_1813'), ('websites', '0005_auto_20170625_1840'), ('websites', '0006_auto_20170625_1840'), ('websites', '0007_auto_20170625_1840'), ('websites', '0008_auto_20170625_1841'), ('websites', '0009_auto_20170625_2206'), ('websites', '0010_auto_20170625_2214'), ('websites', '0011_auto_20170704_1117'), ('websites', '0012_auto_20190805_1134'), ('websites', '0013_auto_20200204_1217'), ('websites', '0014_auto_20200204_1218'), ('websites', '0015_auto_20200204_1219'), ('websites', '0016_auto_20200204_1221'), ('websites', '0017_auto_20210330_1049')] - - initial = True - - dependencies = [ - ('domains', '0001_initial'), - ('webapps', '0001_initial'), - ('orchestration', '0007_auto_20170528_2011'), - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.CreateModel( - name='Content', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('path', models.CharField(blank=True, max_length=256, validators=[orchestra.core.validators.validate_url_path], verbose_name='path')), - ('webapp', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='webapps.WebApp', verbose_name='web application')), - ], - ), - migrations.CreateModel( - name='Website', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=128, validators=[orchestra.core.validators.validate_name], verbose_name='name')), - ('protocol', models.CharField(choices=[('http', 'HTTP'), ('https', 'HTTPS'), ('http/https', 'HTTP and HTTPS'), ('https-only', 'HTTPS only')], default='http', help_text='Select the protocol(s) for this website
HTTPS only performs a redirection from http to https.', max_length=16, verbose_name='protocol')), - ('is_active', models.BooleanField(default=True, verbose_name='active')), - ('account', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='websites', to=settings.AUTH_USER_MODEL, verbose_name='Account')), - ('contents', models.ManyToManyField(through='websites.Content', to='webapps.WebApp')), - ('domains', models.ManyToManyField(related_name='websites', to='domains.Domain', verbose_name='domains')), - ], - ), - migrations.CreateModel( - name='WebsiteDirective', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(choices=[(None, '-------'), ('HTTPD', [('redirect', 'Redirection'), ('proxy', 'Proxy'), ('error-document', 'ErrorDocumentRoot')]), ('SSL', [('ssl-ca', 'SSL CA'), ('ssl-cert', 'SSL cert'), ('ssl-key', 'SSL key')]), ('ModSecurity', [('sec-rule-remove', 'SecRuleRemoveById'), ('sec-engine', 'SecRuleEngine Off')]), ('SaaS', [('wordpress-saas', 'WordPress SaaS'), ('dokuwiki-saas', 'DokuWiki SaaS'), ('drupal-saas', 'Drupdal SaaS'), ('moodle-saas', 'Moodle SaaS')])], db_index=True, max_length=128, verbose_name='name')), - ('value', models.CharField(blank=True, max_length=256, verbose_name='value')), - ('website', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='directives', to='websites.Website', verbose_name='web site')), - ], - ), - migrations.AddField( - model_name='content', - name='website', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='websites.Website', verbose_name='web site'), - ), - migrations.AlterField( - model_name='website', - name='domains', - field=models.ManyToManyField(blank=True, related_name='websites', to='domains.Domain', verbose_name='domains'), - ), - migrations.AddField( - model_name='website', - name='target_server', - field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, related_name='websites', to='orchestration.Server', verbose_name='Target Server'), - preserve_default=False, - ), - migrations.AddField( - model_name='website', - name='comments', - field=models.TextField(blank=True, default=''), - ), - migrations.AlterUniqueTogether( - name='website', - unique_together=set([('name', 'account')]), - ), - migrations.AlterUniqueTogether( - name='content', - unique_together=set([('website', 'path')]), - ), - ] diff --git a/orchestra/contrib/websites/migrations/0002_auto_20160219_1036.py b/orchestra/contrib/websites/migrations/0002_auto_20160219_1036.py deleted file mode 100644 index 7b9af1e8..00000000 --- a/orchestra/contrib/websites/migrations/0002_auto_20160219_1036.py +++ /dev/null @@ -1,24 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('websites', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='website', - name='domains', - field=models.ManyToManyField(to='domains.Domain', related_name='websites', verbose_name='domains', blank=True), - ), - migrations.AlterField( - model_name='websitedirective', - name='name', - field=models.CharField(choices=[(None, '-------'), ('HTTPD', [('redirect', 'Redirection'), ('proxy', 'Proxy'), ('error-document', 'ErrorDocumentRoot')]), ('SaaS', [('wordpress-saas', 'WordPress SaaS'), ('dokuwiki-saas', 'DokuWiki SaaS'), ('drupal-saas', 'Drupdal SaaS'), ('moodle-saas', 'Moodle SaaS')]), ('ModSecurity', [('sec-rule-remove', 'SecRuleRemoveById'), ('sec-engine', 'SecRuleEngine Off')]), ('SSL', [('ssl-ca', 'SSL CA'), ('ssl-cert', 'SSL cert'), ('ssl-key', 'SSL key')])], db_index=True, verbose_name='name', max_length=128), - ), - ] diff --git a/orchestra/contrib/websites/migrations/0003_auto_20170528_2011.py b/orchestra/contrib/websites/migrations/0003_auto_20170528_2011.py deleted file mode 100644 index c68a97a3..00000000 --- a/orchestra/contrib/websites/migrations/0003_auto_20170528_2011.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-05-28 18:11 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('websites', '0002_auto_20160219_1036'), - ] - - operations = [ - migrations.AlterField( - model_name='websitedirective', - name='name', - field=models.CharField(choices=[(None, '-------'), ('SaaS', [('wordpress-saas', 'WordPress SaaS'), ('dokuwiki-saas', 'DokuWiki SaaS'), ('drupal-saas', 'Drupdal SaaS'), ('moodle-saas', 'Moodle SaaS')]), ('ModSecurity', [('sec-rule-remove', 'SecRuleRemoveById'), ('sec-engine', 'SecRuleEngine Off')]), ('SSL', [('ssl-ca', 'SSL CA'), ('ssl-cert', 'SSL cert'), ('ssl-key', 'SSL key')]), ('HTTPD', [('redirect', 'Redirection'), ('proxy', 'Proxy'), ('error-document', 'ErrorDocumentRoot')])], db_index=True, max_length=128, verbose_name='name'), - ), - migrations.AlterField( - model_name='websitedirective', - name='value', - field=models.CharField(blank=True, max_length=256, verbose_name='value'), - ), - ] diff --git a/orchestra/contrib/websites/migrations/0004_auto_20170625_1813.py b/orchestra/contrib/websites/migrations/0004_auto_20170625_1813.py deleted file mode 100644 index da38bc89..00000000 --- a/orchestra/contrib/websites/migrations/0004_auto_20170625_1813.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-06-25 16:13 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('websites', '0003_auto_20170528_2011'), - ] - - operations = [ - migrations.AlterField( - model_name='websitedirective', - name='name', - field=models.CharField(choices=[(None, '-------'), ('ModSecurity', [('sec-rule-remove', 'SecRuleRemoveById'), ('sec-engine', 'SecRuleEngine Off')]), ('HTTPD', [('redirect', 'Redirection'), ('proxy', 'Proxy'), ('error-document', 'ErrorDocumentRoot')]), ('SSL', [('ssl-ca', 'SSL CA'), ('ssl-cert', 'SSL cert'), ('ssl-key', 'SSL key')]), ('SaaS', [('wordpress-saas', 'WordPress SaaS'), ('dokuwiki-saas', 'DokuWiki SaaS'), ('drupal-saas', 'Drupdal SaaS'), ('moodle-saas', 'Moodle SaaS')])], db_index=True, max_length=128, verbose_name='name'), - ), - ] diff --git a/orchestra/contrib/websites/migrations/0005_auto_20170625_1840.py b/orchestra/contrib/websites/migrations/0005_auto_20170625_1840.py deleted file mode 100644 index 1608a3cc..00000000 --- a/orchestra/contrib/websites/migrations/0005_auto_20170625_1840.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-06-25 16:40 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('websites', '0004_auto_20170625_1813'), - ] - - operations = [ - migrations.AlterField( - model_name='websitedirective', - name='name', - field=models.CharField(choices=[(None, '-------'), ('SSL', [('ssl-ca', 'SSL CA'), ('ssl-cert', 'SSL cert'), ('ssl-key', 'SSL key')]), ('ModSecurity', [('sec-rule-remove', 'SecRuleRemoveById'), ('sec-engine', 'SecRuleEngine Off')]), ('SaaS', [('wordpress-saas', 'WordPress SaaS'), ('dokuwiki-saas', 'DokuWiki SaaS'), ('drupal-saas', 'Drupdal SaaS'), ('moodle-saas', 'Moodle SaaS')]), ('HTTPD', [('redirect', 'Redirection'), ('proxy', 'Proxy'), ('error-document', 'ErrorDocumentRoot')])], db_index=True, max_length=128, verbose_name='name'), - ), - ] diff --git a/orchestra/contrib/websites/migrations/0006_auto_20170625_1840.py b/orchestra/contrib/websites/migrations/0006_auto_20170625_1840.py deleted file mode 100644 index d000b14c..00000000 --- a/orchestra/contrib/websites/migrations/0006_auto_20170625_1840.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-06-25 16:40 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('websites', '0005_auto_20170625_1840'), - ] - - operations = [ - migrations.AlterField( - model_name='websitedirective', - name='name', - field=models.CharField(choices=[(None, '-------'), ('SSL', [('ssl-ca', 'SSL CA'), ('ssl-cert', 'SSL cert'), ('ssl-key', 'SSL key')]), ('HTTPD', [('redirect', 'Redirection'), ('proxy', 'Proxy'), ('error-document', 'ErrorDocumentRoot')]), ('ModSecurity', [('sec-rule-remove', 'SecRuleRemoveById'), ('sec-engine', 'SecRuleEngine Off')]), ('SaaS', [('wordpress-saas', 'WordPress SaaS'), ('dokuwiki-saas', 'DokuWiki SaaS'), ('drupal-saas', 'Drupdal SaaS'), ('moodle-saas', 'Moodle SaaS')])], db_index=True, max_length=128, verbose_name='name'), - ), - ] diff --git a/orchestra/contrib/websites/migrations/0007_auto_20170625_1840.py b/orchestra/contrib/websites/migrations/0007_auto_20170625_1840.py deleted file mode 100644 index 3ac79977..00000000 --- a/orchestra/contrib/websites/migrations/0007_auto_20170625_1840.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-06-25 16:40 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('websites', '0006_auto_20170625_1840'), - ] - - operations = [ - migrations.AlterField( - model_name='websitedirective', - name='name', - field=models.CharField(choices=[(None, '-------'), ('SaaS', [('wordpress-saas', 'WordPress SaaS'), ('dokuwiki-saas', 'DokuWiki SaaS'), ('drupal-saas', 'Drupdal SaaS'), ('moodle-saas', 'Moodle SaaS')]), ('ModSecurity', [('sec-rule-remove', 'SecRuleRemoveById'), ('sec-engine', 'SecRuleEngine Off')]), ('HTTPD', [('redirect', 'Redirection'), ('proxy', 'Proxy'), ('error-document', 'ErrorDocumentRoot')]), ('SSL', [('ssl-ca', 'SSL CA'), ('ssl-cert', 'SSL cert'), ('ssl-key', 'SSL key')])], db_index=True, max_length=128, verbose_name='name'), - ), - ] diff --git a/orchestra/contrib/websites/migrations/0008_auto_20170625_1841.py b/orchestra/contrib/websites/migrations/0008_auto_20170625_1841.py deleted file mode 100644 index 55d02cca..00000000 --- a/orchestra/contrib/websites/migrations/0008_auto_20170625_1841.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-06-25 16:41 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('websites', '0007_auto_20170625_1840'), - ] - - operations = [ - migrations.AlterField( - model_name='websitedirective', - name='name', - field=models.CharField(choices=[(None, '-------'), ('ModSecurity', [('sec-rule-remove', 'SecRuleRemoveById'), ('sec-engine', 'SecRuleEngine Off')]), ('SSL', [('ssl-ca', 'SSL CA'), ('ssl-cert', 'SSL cert'), ('ssl-key', 'SSL key')]), ('HTTPD', [('redirect', 'Redirection'), ('proxy', 'Proxy'), ('error-document', 'ErrorDocumentRoot')]), ('SaaS', [('wordpress-saas', 'WordPress SaaS'), ('dokuwiki-saas', 'DokuWiki SaaS'), ('drupal-saas', 'Drupdal SaaS'), ('moodle-saas', 'Moodle SaaS')])], db_index=True, max_length=128, verbose_name='name'), - ), - ] diff --git a/orchestra/contrib/websites/migrations/0009_auto_20170625_2206.py b/orchestra/contrib/websites/migrations/0009_auto_20170625_2206.py deleted file mode 100644 index c2ca54c5..00000000 --- a/orchestra/contrib/websites/migrations/0009_auto_20170625_2206.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-06-25 20:06 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('websites', '0008_auto_20170625_1841'), - ] - - operations = [ - migrations.AlterField( - model_name='websitedirective', - name='name', - field=models.CharField(choices=[(None, '-------'), ('HTTPD', [('redirect', 'Redirection'), ('proxy', 'Proxy'), ('error-document', 'ErrorDocumentRoot')]), ('SaaS', [('wordpress-saas', 'WordPress SaaS'), ('dokuwiki-saas', 'DokuWiki SaaS'), ('drupal-saas', 'Drupdal SaaS'), ('moodle-saas', 'Moodle SaaS')]), ('SSL', [('ssl-ca', 'SSL CA'), ('ssl-cert', 'SSL cert'), ('ssl-key', 'SSL key')]), ('ModSecurity', [('sec-rule-remove', 'SecRuleRemoveById'), ('sec-engine', 'SecRuleEngine Off')])], db_index=True, max_length=128, verbose_name='name'), - ), - ] diff --git a/orchestra/contrib/websites/migrations/0010_auto_20170625_2214.py b/orchestra/contrib/websites/migrations/0010_auto_20170625_2214.py deleted file mode 100644 index de44350b..00000000 --- a/orchestra/contrib/websites/migrations/0010_auto_20170625_2214.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-06-25 20:14 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('websites', '0009_auto_20170625_2206'), - ] - - operations = [ - migrations.AlterField( - model_name='websitedirective', - name='name', - field=models.CharField(choices=[(None, '-------'), ('HTTPD', [('redirect', 'Redirection'), ('proxy', 'Proxy'), ('error-document', 'ErrorDocumentRoot')]), ('SSL', [('ssl-ca', 'SSL CA'), ('ssl-cert', 'SSL cert'), ('ssl-key', 'SSL key')]), ('ModSecurity', [('sec-rule-remove', 'SecRuleRemoveById'), ('sec-engine', 'SecRuleEngine Off')]), ('SaaS', [('wordpress-saas', 'WordPress SaaS'), ('dokuwiki-saas', 'DokuWiki SaaS'), ('drupal-saas', 'Drupdal SaaS'), ('moodle-saas', 'Moodle SaaS')])], db_index=True, max_length=128, verbose_name='name'), - ), - ] diff --git a/orchestra/contrib/websites/migrations/0011_auto_20170704_1117.py b/orchestra/contrib/websites/migrations/0011_auto_20170704_1117.py deleted file mode 100644 index 00c33a02..00000000 --- a/orchestra/contrib/websites/migrations/0011_auto_20170704_1117.py +++ /dev/null @@ -1,28 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-07-04 09:17 -from __future__ import unicode_literals - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('orchestration', '0007_auto_20170528_2011'), - ('websites', '0010_auto_20170625_2214'), - ] - - operations = [ - migrations.AddField( - model_name='website', - name='target_server', - field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, related_name='websites', to='orchestration.Server', verbose_name='Target Server'), - preserve_default=False, - ), - migrations.AlterField( - model_name='websitedirective', - name='name', - field=models.CharField(choices=[(None, '-------'), ('ModSecurity', [('sec-rule-remove', 'SecRuleRemoveById'), ('sec-engine', 'SecRuleEngine Off')]), ('SaaS', [('wordpress-saas', 'WordPress SaaS'), ('dokuwiki-saas', 'DokuWiki SaaS'), ('drupal-saas', 'Drupdal SaaS'), ('moodle-saas', 'Moodle SaaS')]), ('HTTPD', [('redirect', 'Redirection'), ('proxy', 'Proxy'), ('error-document', 'ErrorDocumentRoot')]), ('SSL', [('ssl-ca', 'SSL CA'), ('ssl-cert', 'SSL cert'), ('ssl-key', 'SSL key')])], db_index=True, max_length=128, verbose_name='name'), - ), - ] diff --git a/orchestra/contrib/websites/migrations/0012_auto_20190805_1134.py b/orchestra/contrib/websites/migrations/0012_auto_20190805_1134.py deleted file mode 100644 index 906d9fb2..00000000 --- a/orchestra/contrib/websites/migrations/0012_auto_20190805_1134.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2019-08-05 09:34 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('websites', '0011_auto_20170704_1117'), - ] - - operations = [ - migrations.AlterField( - model_name='websitedirective', - name='name', - field=models.CharField(choices=[(None, '-------'), ('ModSecurity', [('sec-rule-remove', 'SecRuleRemoveById'), ('sec-engine', 'SecRuleEngine Off')]), ('SSL', [('ssl-ca', 'SSL CA'), ('ssl-cert', 'SSL cert'), ('ssl-key', 'SSL key')]), ('SaaS', [('wordpress-saas', 'WordPress SaaS'), ('dokuwiki-saas', 'DokuWiki SaaS'), ('drupal-saas', 'Drupdal SaaS'), ('moodle-saas', 'Moodle SaaS')]), ('HTTPD', [('redirect', 'Redirection'), ('proxy', 'Proxy'), ('error-document', 'ErrorDocumentRoot')])], db_index=True, max_length=128, verbose_name='name'), - ), - ] diff --git a/orchestra/contrib/websites/migrations/0013_auto_20200204_1217.py b/orchestra/contrib/websites/migrations/0013_auto_20200204_1217.py deleted file mode 100644 index 3d11cbd4..00000000 --- a/orchestra/contrib/websites/migrations/0013_auto_20200204_1217.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2020-02-04 11:17 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('websites', '0012_auto_20190805_1134'), - ] - - operations = [ - migrations.AddField( - model_name='website', - name='comments', - field=models.TextField(default=''), - preserve_default=False, - ), - migrations.AlterField( - model_name='websitedirective', - name='name', - field=models.CharField(choices=[(None, '-------'), ('HTTPD', [('redirect', 'Redirection'), ('proxy', 'Proxy'), ('error-document', 'ErrorDocumentRoot')]), ('SSL', [('ssl-ca', 'SSL CA'), ('ssl-cert', 'SSL cert'), ('ssl-key', 'SSL key')]), ('SaaS', [('wordpress-saas', 'WordPress SaaS'), ('dokuwiki-saas', 'DokuWiki SaaS'), ('drupal-saas', 'Drupdal SaaS'), ('moodle-saas', 'Moodle SaaS')]), ('ModSecurity', [('sec-rule-remove', 'SecRuleRemoveById'), ('sec-engine', 'SecRuleEngine Off')])], db_index=True, max_length=128, verbose_name='name'), - ), - ] diff --git a/orchestra/contrib/websites/migrations/0014_auto_20200204_1218.py b/orchestra/contrib/websites/migrations/0014_auto_20200204_1218.py deleted file mode 100644 index c5c38f05..00000000 --- a/orchestra/contrib/websites/migrations/0014_auto_20200204_1218.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2020-02-04 11:18 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('websites', '0013_auto_20200204_1217'), - ] - - operations = [ - migrations.AlterField( - model_name='website', - name='comments', - field=models.TextField(default=''), - ), - migrations.AlterField( - model_name='websitedirective', - name='name', - field=models.CharField(choices=[(None, '-------'), ('HTTPD', [('redirect', 'Redirection'), ('proxy', 'Proxy'), ('error-document', 'ErrorDocumentRoot')]), ('SSL', [('ssl-ca', 'SSL CA'), ('ssl-cert', 'SSL cert'), ('ssl-key', 'SSL key')]), ('ModSecurity', [('sec-rule-remove', 'SecRuleRemoveById'), ('sec-engine', 'SecRuleEngine Off')]), ('SaaS', [('wordpress-saas', 'WordPress SaaS'), ('dokuwiki-saas', 'DokuWiki SaaS'), ('drupal-saas', 'Drupdal SaaS'), ('moodle-saas', 'Moodle SaaS')])], db_index=True, max_length=128, verbose_name='name'), - ), - ] diff --git a/orchestra/contrib/websites/migrations/0015_auto_20200204_1219.py b/orchestra/contrib/websites/migrations/0015_auto_20200204_1219.py deleted file mode 100644 index b254561c..00000000 --- a/orchestra/contrib/websites/migrations/0015_auto_20200204_1219.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2020-02-04 11:19 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('websites', '0014_auto_20200204_1218'), - ] - - operations = [ - migrations.AlterField( - model_name='websitedirective', - name='name', - field=models.CharField(choices=[(None, '-------'), ('HTTPD', [('redirect', 'Redirection'), ('proxy', 'Proxy'), ('error-document', 'ErrorDocumentRoot')]), ('SaaS', [('wordpress-saas', 'WordPress SaaS'), ('dokuwiki-saas', 'DokuWiki SaaS'), ('drupal-saas', 'Drupdal SaaS'), ('moodle-saas', 'Moodle SaaS')]), ('ModSecurity', [('sec-rule-remove', 'SecRuleRemoveById'), ('sec-engine', 'SecRuleEngine Off')]), ('SSL', [('ssl-ca', 'SSL CA'), ('ssl-cert', 'SSL cert'), ('ssl-key', 'SSL key')])], db_index=True, max_length=128, verbose_name='name'), - ), - ] diff --git a/orchestra/contrib/websites/migrations/0016_auto_20200204_1221.py b/orchestra/contrib/websites/migrations/0016_auto_20200204_1221.py deleted file mode 100644 index 14113534..00000000 --- a/orchestra/contrib/websites/migrations/0016_auto_20200204_1221.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2020-02-04 11:21 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('websites', '0015_auto_20200204_1219'), - ] - - operations = [ - migrations.AlterField( - model_name='websitedirective', - name='name', - field=models.CharField(choices=[(None, '-------'), ('SSL', [('ssl-ca', 'SSL CA'), ('ssl-cert', 'SSL cert'), ('ssl-key', 'SSL key')]), ('ModSecurity', [('sec-rule-remove', 'SecRuleRemoveById'), ('sec-engine', 'SecRuleEngine Off')]), ('SaaS', [('wordpress-saas', 'WordPress SaaS'), ('dokuwiki-saas', 'DokuWiki SaaS'), ('drupal-saas', 'Drupdal SaaS'), ('moodle-saas', 'Moodle SaaS')]), ('HTTPD', [('redirect', 'Redirection'), ('proxy', 'Proxy'), ('error-document', 'ErrorDocumentRoot')])], db_index=True, max_length=128, verbose_name='name'), - ), - ] diff --git a/orchestra/contrib/websites/migrations/0017_auto_20210330_1049.py b/orchestra/contrib/websites/migrations/0017_auto_20210330_1049.py deleted file mode 100644 index cfb047e6..00000000 --- a/orchestra/contrib/websites/migrations/0017_auto_20210330_1049.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2021-03-30 10:49 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('websites', '0016_auto_20200204_1221'), - ] - - operations = [ - migrations.AlterField( - model_name='website', - name='comments', - field=models.TextField(blank=True, default=''), - ), - migrations.AlterField( - model_name='websitedirective', - name='name', - field=models.CharField(choices=[(None, '-------'), ('HTTPD', [('redirect', 'Redirection'), ('proxy', 'Proxy'), ('error-document', 'ErrorDocumentRoot')]), ('SSL', [('ssl-ca', 'SSL CA'), ('ssl-cert', 'SSL cert'), ('ssl-key', 'SSL key')]), ('ModSecurity', [('sec-rule-remove', 'SecRuleRemoveById'), ('sec-engine', 'SecRuleEngine Off')]), ('SaaS', [('wordpress-saas', 'WordPress SaaS'), ('dokuwiki-saas', 'DokuWiki SaaS'), ('drupal-saas', 'Drupdal SaaS'), ('moodle-saas', 'Moodle SaaS')])], db_index=True, max_length=128, verbose_name='name'), - ), - ] diff --git a/orchestra/contrib/websites/migrations/__init__.py b/orchestra/contrib/websites/migrations/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/orchestra/contrib/websites/models.py b/orchestra/contrib/websites/models.py index f71d1a1f..b9f00bbd 100644 --- a/orchestra/contrib/websites/models.py +++ b/orchestra/contrib/websites/models.py @@ -3,7 +3,7 @@ from collections import OrderedDict from django.db import models from django.utils.functional import cached_property -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.core import validators from orchestra.utils.functional import cached diff --git a/orchestra/contrib/websites/settings.py b/orchestra/contrib/websites/settings.py index 362d4ea4..147828f1 100644 --- a/orchestra/contrib/websites/settings.py +++ b/orchestra/contrib/websites/settings.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.contrib.settings import Setting from orchestra.core.validators import validate_ip_address diff --git a/orchestra/contrib/websites/validators.py b/orchestra/contrib/websites/validators.py index 144cc52a..348a1cf0 100644 --- a/orchestra/contrib/websites/validators.py +++ b/orchestra/contrib/websites/validators.py @@ -1,6 +1,6 @@ from django.core.exceptions import ValidationError from django.db.models import Q -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from .models import Website diff --git a/orchestra/core/validators.py b/orchestra/core/validators.py index ef4a2730..f6e1fccd 100644 --- a/orchestra/core/validators.py +++ b/orchestra/core/validators.py @@ -6,7 +6,7 @@ import phonenumbers from django.core import validators from django.core.exceptions import ValidationError from django.utils.deconstruct import deconstructible -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from ..utils.python import import_class diff --git a/orchestra/forms/options.py b/orchestra/forms/options.py index 4b3fbf40..5dfda313 100644 --- a/orchestra/forms/options.py +++ b/orchestra/forms/options.py @@ -1,6 +1,6 @@ from django import forms from django.contrib.auth import forms as auth_forms -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.utils.python import random_ascii diff --git a/orchestra/forms/widgets.py b/orchestra/forms/widgets.py index 74a0fd29..84e0f1ef 100644 --- a/orchestra/forms/widgets.py +++ b/orchestra/forms/widgets.py @@ -4,7 +4,7 @@ import textwrap from django import forms from django.utils.safestring import mark_safe -from django.contrib.admin.templatetags.admin_static import static +from django.templatetags.static import static class SpanWidget(forms.Widget): diff --git a/orchestra/models/fields.py b/orchestra/models/fields.py index 81ab5796..12b31007 100644 --- a/orchestra/models/fields.py +++ b/orchestra/models/fields.py @@ -35,7 +35,7 @@ class MultiSelectField(models.CharField): return value return [] - def from_db_value(self, value, expression, connection, context): + def from_db_value(self, value, expression, connection): if value: if isinstance(value, str): return value.split(',') diff --git a/orchestra/plugins/admin.py b/orchestra/plugins/admin.py index 9f245876..4183ced8 100644 --- a/orchestra/plugins/admin.py +++ b/orchestra/plugins/admin.py @@ -1,9 +1,9 @@ import re -from django.conf.urls import url +from django.urls import re_path as url from django.contrib.admin.utils import unquote from django.shortcuts import render, redirect -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.admin.utils import wrap_admin_view @@ -46,7 +46,7 @@ class SelectPluginAdminMixin(object): opts = self.model._meta info = opts.app_label, opts.model_name select_urls = [ - url("select-plugin/$", + url("add/select-plugin/$", wrap_admin_view(self, self.select_plugin_view), name='%s_%s_select_plugin' % info), ] diff --git a/orchestra/plugins/forms.py b/orchestra/plugins/forms.py index 0394f742..d788f369 100644 --- a/orchestra/plugins/forms.py +++ b/orchestra/plugins/forms.py @@ -1,5 +1,5 @@ from django import forms -from django.utils.encoding import force_text +from django.utils.encoding import force_str from orchestra.admin.utils import admin_link from orchestra.forms.widgets import SpanWidget @@ -10,7 +10,7 @@ class PluginForm(forms.ModelForm): super().__init__(*args, **kwargs) if self.plugin_field in self.fields: value = self.plugin.get_name() - display = '%s change' % force_text(self.plugin.verbose_name) + display = '%s change' % force_str(self.plugin.verbose_name) self.fields[self.plugin_field].widget = SpanWidget(original=value, display=display) help_text = self.fields[self.plugin_field].help_text self.fields[self.plugin_field].help_text = getattr(self.plugin, 'help_text', help_text) diff --git a/orchestra/plugins/options.py b/orchestra/plugins/options.py index 581c94de..c79d94c3 100644 --- a/orchestra/plugins/options.py +++ b/orchestra/plugins/options.py @@ -38,7 +38,7 @@ class Plugin(object): @classmethod def get_verbose_name(cls): - # don't evaluate p.verbose_name ugettext_lazy + # don't evaluate p.verbose_name gettext_lazy verbose = getattr(cls.verbose_name, '_proxy____args', [cls.verbose_name]) if verbose[0]: return cls.verbose_name diff --git a/orchestra/settings.py b/orchestra/settings.py index 9dd45566..86c39ca8 100644 --- a/orchestra/settings.py +++ b/orchestra/settings.py @@ -1,5 +1,5 @@ from django.core.validators import validate_email -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.contrib.settings import Setting diff --git a/orchestra/static/orchestra/icons/taskstate.png b/orchestra/static/orchestra/icons/taskstate.png old mode 100755 new mode 100644 diff --git a/orchestra/templates/admin/base.html b/orchestra/templates/admin/base.html index 076a3973..475cf750 100644 --- a/orchestra/templates/admin/base.html +++ b/orchestra/templates/admin/base.html @@ -1,4 +1,4 @@ -{% load theming_tags staticfiles %} +{% load theming_tags static %} diff --git a/orchestra/templates/admin/login.html b/orchestra/templates/admin/login.html index 1131e658..598251bd 100644 --- a/orchestra/templates/admin/login.html +++ b/orchestra/templates/admin/login.html @@ -1,5 +1,5 @@ {% extends "admin/base_site.html" %} -{% load i18n admin_static utils %} +{% load i18n static utils %} {% block extrastyle %} {{ block.super }} diff --git a/orchestra/templates/admin/orchestra/menu.html b/orchestra/templates/admin/orchestra/menu.html index 8cf8effa..c6d0960c 100644 --- a/orchestra/templates/admin/orchestra/menu.html +++ b/orchestra/templates/admin/orchestra/menu.html @@ -1,4 +1,4 @@ -{% load i18n admin_tools_menu_tags staticfiles %} +{% load i18n admin_tools_menu_tags static %} {% if menu.children %} diff --git a/orchestra/templates/admin/plugins/select_plugin.html b/orchestra/templates/admin/plugins/select_plugin.html index e425b75b..1eaba4fc 100644 --- a/orchestra/templates/admin/plugins/select_plugin.html +++ b/orchestra/templates/admin/plugins/select_plugin.html @@ -1,5 +1,5 @@ {% extends "admin/orchestra/generic_confirmation.html" %} -{% load i18n l10n staticfiles admin_urls admin_tools_dashboard_tags %} +{% load i18n l10n static admin_urls admin_tools_dashboard_tags %} {% block extrastyle %} {{ block.super }} diff --git a/orchestra/templates/rest_framework/api.html b/orchestra/templates/rest_framework/api.html index f070bc05..fadbb653 100644 --- a/orchestra/templates/rest_framework/api.html +++ b/orchestra/templates/rest_framework/api.html @@ -1,5 +1,5 @@ {% extends "rest_framework/base.html" %} -{% load rest_framework utils staticfiles %} +{% load rest_framework utils static %} {% block meta %} {{ block.super }} diff --git a/orchestra/utils/html.py b/orchestra/utils/html.py index c8741542..5719a6fa 100644 --- a/orchestra/utils/html.py +++ b/orchestra/utils/html.py @@ -2,7 +2,7 @@ import textwrap from django.templatetags.static import static from django.utils.html import format_html -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from orchestra.utils.sys import run @@ -19,7 +19,8 @@ def html_to_pdf(html, pagination=False): } cmd = textwrap.dedent("""\ PATH=$PATH:/usr/local/bin/ - xvfb-run -a -s "-screen 0 2480x3508x16" wkhtmltopdf -q \\ + xvfb-run -a -s "-screen 0 2480x3508x16" wkhtmltopdf -q \\ + --enable-local-file-access \\ --use-xserver \\ %(pagination)s \\ --margin-bottom 22 \\ diff --git a/orchestra/utils/humanize.py b/orchestra/utils/humanize.py index d905b883..4cee3466 100644 --- a/orchestra/utils/humanize.py +++ b/orchestra/utils/humanize.py @@ -1,13 +1,13 @@ from datetime import datetime from django.utils import timezone -from django.utils.translation import ungettext, ugettext as _ +from django.utils.translation import ngettext, gettext as _ def verbose_time(n, units, ago='ago'): if n >= 5: return _("{n} {units} {ago}").format(n=int(n), units=units, ago=ago) - return ungettext( + return ngettext( _("{n:.1f} {s_units} {ago}"), _("{n:.1f} {units} {ago}"), n ).format(n=n, units=units, s_units=units[:-1], ago=ago) @@ -22,7 +22,7 @@ OLDER_CHUNKS = ( def _un(singular__plural, n=None): singular, plural = singular__plural - return ungettext(singular, plural, n) + return ngettext(singular, plural, n) def naturaldatetime(date, show_seconds=False): diff --git a/orchestra/utils/sys.py b/orchestra/utils/sys.py index fc732343..bfb82674 100644 --- a/orchestra/utils/sys.py +++ b/orchestra/utils/sys.py @@ -111,7 +111,8 @@ def runiterator(command, display=False, stdin=b''): if state.exit_code != None: p.stdout.close() p.stderr.close() - raise StopIteration + return + # raise StopIteration def join(iterator, display=False, silent=False, valid_codes=(0,)): @@ -165,6 +166,11 @@ def sshrun(addr, command, *args, executable='bash', persist=False, options=None, 'stricthostkeychecking': 'no', 'BatchMode': 'yes', 'EscapeChar': 'none', + # Send keep alives to prevent stale or broken connections when no data is being sent + # default tcp timeout: 900 seconds + 'ServerAliveInterval': '300', + # Max number of consecutive keep alives without response + 'ServerAliveCountMax': '2', } if persist: base_options.update({ diff --git a/requirements.txt b/requirements.txt index 13ed05bb..14d5ce5e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -18,6 +18,6 @@ requests phonenumbers==8.12.27 django-countries django-localflavor==3.1 -amqp<2.0,>=1.4.9 +amqp anyjson pytz diff --git a/scripts/containers/create.sh b/scripts/containers/create.sh old mode 100755 new mode 100644 diff --git a/scripts/containers/deploy-dev.sh b/scripts/containers/deploy-dev.sh old mode 100755 new mode 100644