From 25fbc6a0885e165befe86be6e0b32c783bcddcbf Mon Sep 17 00:00:00 2001 From: Marc Aymerich Date: Fri, 9 Jun 2017 08:26:40 +0000 Subject: [PATCH 1/6] switched container engine to lxc --- orchestra/contrib/vps/backends.py | 19 +++++++++++++++++++ orchestra/contrib/vps/settings.py | 6 ++++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/orchestra/contrib/vps/backends.py b/orchestra/contrib/vps/backends.py index 2ead22c3..8b817b40 100644 --- a/orchestra/contrib/vps/backends.py +++ b/orchestra/contrib/vps/backends.py @@ -133,3 +133,22 @@ class ProxmoxOpenVZTraffic(ServiceMonitor): 'object_id': vps.id, 'hostname': vps.hostname, } + + +class LxcController(ServiceController): + model = 'vps.VPS' + + RESOURCES = ( + ('memory', 'mem'), + ('disk', 'disk'), + ('vcpu', 'vcpu') + ) + + def prepare(self): + super(LxcController, self).prepare() + + def save(self, vps): + # TODO create the container + pass + + diff --git a/orchestra/contrib/vps/settings.py b/orchestra/contrib/vps/settings.py index 5e65fe34..ec0e2a1a 100644 --- a/orchestra/contrib/vps/settings.py +++ b/orchestra/contrib/vps/settings.py @@ -4,13 +4,14 @@ from orchestra.contrib.settings import Setting VPS_TYPES = Setting('VPS_TYPES', ( ('openvz', 'OpenVZ container'), + ('lxc', 'LXC container') ), validators=[Setting.validate_choices] ) VPS_DEFAULT_TYPE = Setting('VPS_DEFAULT_TYPE', - 'openvz', + 'lxc', choices=VPS_TYPES ) @@ -18,13 +19,14 @@ VPS_DEFAULT_TYPE = Setting('VPS_DEFAULT_TYPE', VPS_TEMPLATES = Setting('VPS_TEMPLATES', ( ('debian7', 'Debian 7 - Wheezy'), + ('placeholder', 'LXC placeholder') ), validators=[Setting.validate_choices] ) VPS_DEFAULT_TEMPLATE = Setting('VPS_DEFAULT_TEMPLATE', - 'debian7', + 'placeholder', choices=VPS_TEMPLATES ) From 0c1b4c7f4a6ddae9445424b4668818efc7d79785 Mon Sep 17 00:00:00 2001 From: Marc Aymerich Date: Fri, 9 Jun 2017 08:28:44 +0000 Subject: [PATCH 2/6] Added nextcloud support --- orchestra/contrib/saas/backends/nextcloud.py | 175 +++++++++++++++++++ orchestra/contrib/saas/services/nextcloud.py | 13 ++ orchestra/contrib/saas/settings.py | 18 ++ 3 files changed, 206 insertions(+) create mode 100644 orchestra/contrib/saas/backends/nextcloud.py create mode 100644 orchestra/contrib/saas/services/nextcloud.py diff --git a/orchestra/contrib/saas/backends/nextcloud.py b/orchestra/contrib/saas/backends/nextcloud.py new file mode 100644 index 00000000..f4302ef6 --- /dev/null +++ b/orchestra/contrib/saas/backends/nextcloud.py @@ -0,0 +1,175 @@ +import re +import sys +import textwrap +import time +import xml.etree.ElementTree as ET +from urllib.parse import urlparse + +import requests +from django.utils.translation import ugettext_lazy as _ + +from orchestra.contrib.orchestration import ServiceController +from orchestra.contrib.resources import ServiceMonitor + +from . import ApacheTrafficByName +from .. import settings + + +class NextCloudAPIMixin(object): + def validate_response(self, response): + request = response.request + context = (request.method, response.url, request.body, response.status_code) + sys.stderr.write("%s %s '%s' HTTP %s\n" % context) + if response.status_code != requests.codes.ok: + raise RuntimeError("%s %s '%s' HTTP %s" % context) + root = ET.fromstring(response.text) + statuscode = root.find("./meta/statuscode").text + if statuscode != '100': + message = root.find("./meta/status").text + request = response.request + context = (request.method, response.url, request.body, statuscode, message) + raise RuntimeError("%s %s '%s' ERROR %s, %s" % context) + + 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) + self.validate_response(response) + return response + + def api_get(self, url_path, *args, **kwargs): + return self.api_call(requests.get, url_path, *args, **kwargs) + + def api_post(self, url_path, *args, **kwargs): + return self.api_call(requests.post, url_path, *args, **kwargs) + + def api_put(self, url_path, *args, **kwargs): + return self.api_call(requests.put, url_path, *args, **kwargs) + + def api_delete(self, url_path, *args, **kwargs): + return self.api_call(requests.delete, url_path, *args, **kwargs) + + def create(self, saas): + data = { + 'userid': saas.name, + 'password': saas.password + } + self.api_post('users', data) + + def update(self, saas): + """ + key: email|quota|display|password + value: el valor a modificar. + Si es un email, tornarà un error si la direcció no te la "@" + Si es una quota, sembla que algo per l'estil "5G", "100M", etc. funciona. Quota 0 = infinit + "display" es el display name, no crec que el fem servir, és cosmetic + """ + data = { + 'key': 'password', + 'value': saas.password, + } + self.api_put('users/%s' % saas.name, data) + + def get_user(self, saas): + """ + { + 'displayname' + 'email' + 'quota' => + { + 'free' (en Bytes) + 'relative' (en tant per cent sense signe %, e.g. 68.17) + 'total' (en Bytes) + 'used' (en Bytes) + } + } + """ + response = self.api_get('users/%s' % saas.name) + root = ET.fromstring(response.text) + ret = {} + for data in root.find('./data'): + ret[data.tag] = data.text + ret['quota'] = {} + for data in root.find('.data/quota'): + ret['quota'][data.tag] = data.text + return ret + + +class NextCloudController(NextCloudAPIMixin, ServiceController): + """ + Creates a wordpress site on a WordPress MultiSite installation. + + You should point it to the database server + """ + verbose_name = _("nextCloud SaaS") + model = 'saas.SaaS' + default_route_match = "saas.service == 'nextcloud'" + doc_settings = (settings, + ('SAAS_NEXTCLOUD_API_URL',) + ) + + def update_or_create(self, saas, server): + try: + self.api_get('users/%s' % saas.name) + except RuntimeError: + if getattr(saas, 'password'): + self.create(saas) + else: + raise + else: + if getattr(saas, 'password'): + self.update(saas) + + def remove(self, saas, server): + self.api_delete('users/%s' % saas.name) + + def save(self, saas): + # TODO disable user https://github.com/owncloud/core/issues/12601 + self.append(self.update_or_create, saas) + + def delete(self, saas): + self.append(self.remove, saas) + + +class NextcloudTraffic(ApacheTrafficByName): + __doc__ = ApacheTrafficByName.__doc__ + verbose_name = _("nextCloud SaaS Traffic") + default_route_match = "saas.service == 'nextcloud'" + doc_settings = (settings, + ('SAAS_TRAFFIC_IGNORE_HOSTS', 'SAAS_NEXTCLOUD_LOG_PATH') + ) + log_path = settings.SAAS_NEXTCLOUD_LOG_PATH + + +class NextCloudDiskQuota(NextCloudAPIMixin, ServiceMonitor): + model = 'saas.SaaS' + verbose_name = _("nextCloud SaaS Disk Quota") + default_route_match = "saas.service == 'nextcloud'" + resource = ServiceMonitor.DISK + delete_old_equal_values = True + + def monitor(self, user): + context = self.get_context(user) + self.append("echo %(object_id)s $(monitor %(base_home)s)" % context) + + def get_context(self, user): + context = { + 'object_id': user.pk, + 'base_home': user.get_base_home(), + } + return replace(context, "'", '"') + + def get_quota(self, saas, server): + try: + user = self.get_user(saas) + except requests.exceptions.ConnectionError: + time.sleep(2) + user = self.get_user(saas) + context = { + 'object_id': saas.pk, + 'used': int(user['quota'].get('used', 0)), + } + sys.stdout.write('%(object_id)i %(used)i\n' % context) + + def monitor(self, saas): + self.append(self.get_quota, saas) diff --git a/orchestra/contrib/saas/services/nextcloud.py b/orchestra/contrib/saas/services/nextcloud.py new file mode 100644 index 00000000..3398f0da --- /dev/null +++ b/orchestra/contrib/saas/services/nextcloud.py @@ -0,0 +1,13 @@ +from django import forms +from django.utils.translation import ugettext_lazy as _ +from rest_framework import serializers + +from .. import settings +from .options import SoftwareService + + +class NextCloudService(SoftwareService): + name = 'nextcloud' + verbose_name = "nextCloud" + icon = 'orchestra/icons/apps/nextCloud.png' + site_domain = settings.SAAS_NEXTCLOUD_DOMAIN diff --git a/orchestra/contrib/saas/settings.py b/orchestra/contrib/saas/settings.py index a15a6bd9..af768867 100644 --- a/orchestra/contrib/saas/settings.py +++ b/orchestra/contrib/saas/settings.py @@ -18,6 +18,7 @@ SAAS_ENABLED_SERVICES = Setting('SAAS_ENABLED_SERVICES', 'orchestra.contrib.saas.services.dokuwiki.DokuWikiService', 'orchestra.contrib.saas.services.drupal.DrupalService', 'orchestra.contrib.saas.services.owncloud.OwnCloudService', + 'orchestra.contrib.saas.services.nextcloud.NextCloudService', # 'orchestra.contrib.saas.services.seafile.SeaFileService', ), # lazy loading @@ -235,6 +236,23 @@ SAAS_OWNCLOUD_LOG_PATH = Setting('SAAS_OWNCLOUD_LOG_PATH', ) +# nextCloud +SAAS_NEXTCLOUD_DOMAIN = Setting('SAAS_NEXTCLOUD_DOMAIN', + 'nextcloud.{}'.format(ORCHESTRA_BASE_DOMAIN), + help_text="Uses ORCHESTRA_BASE_DOMAIN by default.", +) + +SAAS_NEXTCLOUD_API_URL = Setting('SAAS_NEXTCLOUD_API_URL', + 'https://admin:secret@nextcloud.{}/ocs/v1.php/cloud'.format(ORCHESTRA_BASE_DOMAIN), +) + +SAAS_NEXTCLOUD_LOG_PATH = Setting('SAAS_NEXTCLOUD_LOG_PATH', + '', + help_text=_('Filesystem path for the webserver access logs.
' + 'LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Host}i\"" host'), +) + + # BSCW SAAS_BSCW_DOMAIN = Setting('SAAS_BSCW_DOMAIN', From a1f73d883a42e2db322f7aea1610643c930fa27d Mon Sep 17 00:00:00 2001 From: Marc Aymerich Date: Wed, 5 Jul 2017 13:55:13 +0000 Subject: [PATCH 3/6] Added support for multiple webservers --- orchestra/contrib/webapps/models.py | 2 ++ orchestra/contrib/webapps/settings.py | 1 + orchestra/contrib/websites/admin.py | 2 +- orchestra/contrib/websites/backends/apache.py | 6 ++++-- orchestra/contrib/websites/models.py | 2 ++ 5 files changed, 10 insertions(+), 3 deletions(-) diff --git a/orchestra/contrib/webapps/models.py b/orchestra/contrib/webapps/models.py index 48e21511..d3fd7121 100644 --- a/orchestra/contrib/webapps/models.py +++ b/orchestra/contrib/webapps/models.py @@ -23,6 +23,8 @@ class WebApp(models.Model): related_name='webapps') data = JSONField(_("data"), blank=True, default={}, help_text=_("Extra information dependent of each service.")) + target_server = models.ForeignKey('orchestration.Server', verbose_name=_("Target Server"), + related_name='webapps') # CMS webapps usually need a database and dbuser, with these virtual fields we tell the ORM to delete them databases = VirtualDatabaseRelation('databases.Database') diff --git a/orchestra/contrib/webapps/settings.py b/orchestra/contrib/webapps/settings.py index b8614dc2..625de96f 100644 --- a/orchestra/contrib/webapps/settings.py +++ b/orchestra/contrib/webapps/settings.py @@ -99,6 +99,7 @@ WEBAPPS_PHP_VERSIONS = Setting('WEBAPPS_PHP_VERSIONS', ( ('5.3-cgi', 'PHP 5.3 FCGID'), ('5.2-cgi', 'PHP 5.2 FCGID'), ('4-cgi', 'PHP 4 FCGID'), + ('7-fpm', 'PHP 7 FPM') ), help_text="Execution modle choose by ending -fpm or -cgi.", validators=[Setting.validate_choices] diff --git a/orchestra/contrib/websites/admin.py b/orchestra/contrib/websites/admin.py index fed31707..5b0dd106 100644 --- a/orchestra/contrib/websites/admin.py +++ b/orchestra/contrib/websites/admin.py @@ -69,7 +69,7 @@ class WebsiteAdmin(SelectAccountAdminMixin, ExtendedModelAdmin): fieldsets = ( (None, { 'classes': ('extrapretty',), - 'fields': ('account_link', 'name', 'protocol', 'domains', 'is_active'), + 'fields': ('account_link', 'name', 'protocol', 'target_server', 'domains', 'is_active'), }), ) form = WebsiteAdminForm diff --git a/orchestra/contrib/websites/backends/apache.py b/orchestra/contrib/websites/backends/apache.py index 90e9d8be..9d42f7f9 100644 --- a/orchestra/contrib/websites/backends/apache.py +++ b/orchestra/contrib/websites/backends/apache.py @@ -58,7 +58,8 @@ class Apache2Controller(ServiceController): context.update({ 'port': self.HTTPS_PORT if ssl else self.HTTP_PORT, 'vhost_set_fcgid': False, - 'server_alias_lines': ' \\\n '.join(context['server_alias']) + 'server_alias_lines': ' \\\n '.join(context['server_alias']), + 'suexec_needed': site.target_server == 'web.pangea.lan' }) context['extra_conf'] = self.get_extra_conf(site, context, ssl) return Template(textwrap.dedent("""\ @@ -71,7 +72,8 @@ class Apache2Controller(ServiceController): CustomLog {{ access_log }} common{% endif %}\ {% if error_log %} ErrorLog {{ error_log }}{% endif %} - SuexecUserGroup {{ user }} {{ group }}\ + {% if suexec_needed %} + SuexecUserGroup {{ user }} {{ group }}{% endif %}\ {% for line in extra_conf.splitlines %} {{ line | safe }}{% endfor %} diff --git a/orchestra/contrib/websites/models.py b/orchestra/contrib/websites/models.py index 6492bbd3..593f4e4e 100644 --- a/orchestra/contrib/websites/models.py +++ b/orchestra/contrib/websites/models.py @@ -34,6 +34,8 @@ class Website(models.Model): domains = models.ManyToManyField(settings.WEBSITES_DOMAIN_MODEL, blank=True, related_name='websites', verbose_name=_("domains")) contents = models.ManyToManyField('webapps.WebApp', through='websites.Content') + target_server = models.ForeignKey('orchestration.Server', verbose_name=_("Target Server"), + related_name='websites') is_active = models.BooleanField(_("active"), default=True) class Meta: From 6fadf0c631b5acfbb7dad181918d363764400432 Mon Sep 17 00:00:00 2001 From: Marc Aymerich Date: Wed, 5 Jul 2017 17:52:37 +0000 Subject: [PATCH 4/6] PHP support for sockets (vs TCP) improved --- orchestra/contrib/webapps/backends/php.py | 2 +- orchestra/contrib/websites/backends/apache.py | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/orchestra/contrib/webapps/backends/php.py b/orchestra/contrib/webapps/backends/php.py index 88395db9..ef549325 100644 --- a/orchestra/contrib/webapps/backends/php.py +++ b/orchestra/contrib/webapps/backends/php.py @@ -205,7 +205,7 @@ class PHPController(WebAppServiceMixin, ServiceController): context['fpm_listen'] = webapp.type_instance.FPM_LISTEN % context fpm_config = Template(textwrap.dedent("""\ ;; {{ banner }} - [{{ user }}] + [{{ user }}-{{app_id}}] user = {{ user }} group = {{ group }} diff --git a/orchestra/contrib/websites/backends/apache.py b/orchestra/contrib/websites/backends/apache.py index 9d42f7f9..c6a11092 100644 --- a/orchestra/contrib/websites/backends/apache.py +++ b/orchestra/contrib/websites/backends/apache.py @@ -227,15 +227,16 @@ class Apache2Controller(ServiceController): target = 'fcgi://%(socket)s%(app_path)s/$1' else: # UNIX socket - target = 'unix:%(socket)s|fcgi://127.0.0.1%(app_path)s/' - if context['location']: - # FIXME unix sockets do not support $1 - target = 'unix:%(socket)s|fcgi://127.0.0.1%(app_path)s/$1' + target = 'unix:%(socket)s|fcgi://127.0.0.1/' context.update({ 'app_path': os.path.normpath(app_path), 'socket': socket, }) - directives = "ProxyPassMatch ^%(location)s/(.*\.php(/.*)?)$ {target}\n".format(target=target) % context + directives = textwrap.dedent(""" + + SetHandler "proxy:unix:{socket}|fcgi://127.0.0.1" + + """).format(socket=socket) directives += self.get_location_filesystem_map(context) return [ (context['location'], directives), From ea9c398de43cdd273e3f547aa6e8d8796edb3c9d Mon Sep 17 00:00:00 2001 From: Marc Aymerich Date: Fri, 7 Jul 2017 09:30:35 +0000 Subject: [PATCH 5/6] Disabled database hostname validator to allow for % host --- orchestra/contrib/databases/settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/orchestra/contrib/databases/settings.py b/orchestra/contrib/databases/settings.py index 24dcfa68..473c48a8 100644 --- a/orchestra/contrib/databases/settings.py +++ b/orchestra/contrib/databases/settings.py @@ -20,7 +20,7 @@ DATABASES_DEFAULT_TYPE = Setting('DATABASES_DEFAULT_TYPE', DATABASES_DEFAULT_HOST = Setting('DATABASES_DEFAULT_HOST', 'localhost', - validators=[validate_hostname], +# validators=[validate_hostname], ) From 43d8c9471b94cf4d5833dcb0f2070ee4e4a7c5ee Mon Sep 17 00:00:00 2001 From: Santiago Lamora Date: Wed, 13 Jan 2021 16:41:36 +0100 Subject: [PATCH 6/6] Latest Pangea source code deployed to production. --- orchestra/api/actions.py | 2 +- orchestra/api/serializers.py | 2 +- .../migrations/0002_auto_20170528_2005.py | 38 ++ orchestra/contrib/accounts/models.py | 26 +- orchestra/contrib/accounts/serializers.py | 2 +- orchestra/contrib/bills/admin.py | 3 +- .../bills/locale/ca/LC_MESSAGES/django.mo | Bin 7618 -> 7410 bytes .../bills/locale/ca/LC_MESSAGES/django.po | 404 ++++++++++-------- .../bills/locale/es/LC_MESSAGES/django.mo | Bin 4980 -> 4980 bytes .../bills/locale/es/LC_MESSAGES/django.po | 394 +++++++++-------- .../migrations/0007_auto_20170528_2011.py | 39 ++ .../migrations/0008_auto_20170625_1813.py | 20 + .../migrations/0009_auto_20170625_1840.py | 20 + .../migrations/0010_auto_20170625_1840.py | 20 + .../migrations/0011_auto_20170625_1840.py | 20 + .../migrations/0012_auto_20170625_1841.py | 20 + .../migrations/0013_auto_20190805_1134.py | 20 + .../migrations/0014_auto_20200204_1217.py | 34 ++ .../migrations/0015_auto_20200204_1218.py | 20 + orchestra/contrib/bills/models.py | 7 + orchestra/contrib/bills/settings.py | 3 + .../bills/templates/bills/microspective.css | 14 + .../bills/templates/bills/microspective.html | 6 + .../migrations/0002_auto_20170528_2011.py | 20 + .../migrations/0003_auto_20170625_1813.py | 20 + .../migrations/0004_auto_20170625_1840.py | 20 + .../migrations/0005_auto_20170625_1840.py | 20 + .../migrations/0006_auto_20170625_1840.py | 20 + .../migrations/0007_auto_20170625_1841.py | 20 + .../migrations/0008_auto_20190805_1134.py | 20 + .../migrations/0009_auto_20200204_1217.py | 20 + .../migrations/0010_auto_20200204_1218.py | 20 + orchestra/contrib/databases/admin.py | 10 +- .../migrations/0002_auto_20170528_2005.py | 25 ++ .../migrations/0003_database_comments.py | 20 + orchestra/contrib/databases/models.py | 1 + orchestra/contrib/domains/admin.py | 2 +- orchestra/contrib/domains/backends.py | 4 +- orchestra/contrib/domains/forms.py | 2 +- .../migrations/0006_auto_20170528_2011.py | 31 ++ .../migrations/0007_auto_20190805_1134.py | 20 + .../0008_domain_dns2136_address_match_list.py | 20 + .../migrations/0009_auto_20200204_1217.py | 20 + orchestra/contrib/domains/models.py | 7 +- orchestra/contrib/domains/settings.py | 3 + orchestra/contrib/domains/validators.py | 2 +- .../migrations/0004_auto_20170528_2011.py | 32 ++ orchestra/contrib/lists/api.py | 2 +- orchestra/contrib/lists/backends.py | 99 +---- orchestra/contrib/lists/serializers.py | 2 +- orchestra/contrib/mailboxes/backends.py | 8 + .../migrations/0003_auto_20170528_2011.py | 27 ++ orchestra/contrib/orchestration/backends.py | 5 + .../migrations/0007_auto_20170528_2011.py | 26 ++ .../migrations/0008_auto_20190805_1134.py | 20 + orchestra/contrib/payments/actions.py | 1 + .../payments/methods/sepadirectdebit.py | 4 +- .../migrations/0003_auto_20170528_2011.py | 21 + .../migrations/0011_auto_20170528_2005.py | 32 ++ .../migrations/0003_auto_20170528_2011.py | 31 ++ orchestra/contrib/saas/models.py | 2 +- orchestra/contrib/saas/services/helpers.py | 8 +- .../migrations/0006_auto_20170528_2005.py | 20 + .../migrations/0007_auto_20170528_2011.py | 20 + .../migrations/0008_auto_20170625_1813.py | 20 + .../migrations/0009_auto_20170625_1840.py | 20 + .../migrations/0010_auto_20170625_1840.py | 20 + .../migrations/0011_auto_20170625_1840.py | 20 + .../migrations/0012_auto_20170625_1841.py | 20 + .../migrations/0013_auto_20190805_1134.py | 20 + .../migrations/0014_auto_20200204_1218.py | 20 + orchestra/contrib/systemusers/backends.py | 11 +- .../migrations/0003_auto_20170528_2011.py | 26 ++ orchestra/contrib/systemusers/models.py | 2 +- .../vps/migrations/0004_auto_20170528_2005.py | 25 ++ orchestra/contrib/webapps/backends/php.py | 41 +- .../migrations/0002_auto_20170528_2011.py | 25 ++ .../migrations/0003_webapp_target_server.py | 23 + .../migrations/0004_webapp_comments.py | 21 + .../migrations/0005_auto_20200204_1218.py | 20 + orchestra/contrib/webapps/models.py | 1 + orchestra/contrib/webapps/options.py | 4 +- orchestra/contrib/webapps/serializers.py | 2 +- orchestra/contrib/webapps/signals.py | 7 +- orchestra/contrib/websites/admin.py | 2 +- orchestra/contrib/websites/backends/apache.py | 13 +- .../migrations/0003_auto_20170528_2011.py | 25 ++ .../migrations/0004_auto_20170625_1813.py | 20 + .../migrations/0005_auto_20170625_1840.py | 20 + .../migrations/0006_auto_20170625_1840.py | 20 + .../migrations/0007_auto_20170625_1840.py | 20 + .../migrations/0008_auto_20170625_1841.py | 20 + .../migrations/0009_auto_20170625_2206.py | 20 + .../migrations/0010_auto_20170625_2214.py | 20 + .../migrations/0011_auto_20170704_1117.py | 28 ++ .../migrations/0012_auto_20190805_1134.py | 20 + .../migrations/0013_auto_20200204_1217.py | 26 ++ .../migrations/0014_auto_20200204_1218.py | 25 ++ .../migrations/0015_auto_20200204_1219.py | 20 + .../migrations/0016_auto_20200204_1221.py | 20 + orchestra/contrib/websites/models.py | 1 + 101 files changed, 2021 insertions(+), 468 deletions(-) create mode 100644 orchestra/contrib/accounts/migrations/0002_auto_20170528_2005.py create mode 100644 orchestra/contrib/bills/migrations/0007_auto_20170528_2011.py create mode 100644 orchestra/contrib/bills/migrations/0008_auto_20170625_1813.py create mode 100644 orchestra/contrib/bills/migrations/0009_auto_20170625_1840.py create mode 100644 orchestra/contrib/bills/migrations/0010_auto_20170625_1840.py create mode 100644 orchestra/contrib/bills/migrations/0011_auto_20170625_1840.py create mode 100644 orchestra/contrib/bills/migrations/0012_auto_20170625_1841.py create mode 100644 orchestra/contrib/bills/migrations/0013_auto_20190805_1134.py create mode 100644 orchestra/contrib/bills/migrations/0014_auto_20200204_1217.py create mode 100644 orchestra/contrib/bills/migrations/0015_auto_20200204_1218.py create mode 100644 orchestra/contrib/contacts/migrations/0002_auto_20170528_2011.py create mode 100644 orchestra/contrib/contacts/migrations/0003_auto_20170625_1813.py create mode 100644 orchestra/contrib/contacts/migrations/0004_auto_20170625_1840.py create mode 100644 orchestra/contrib/contacts/migrations/0005_auto_20170625_1840.py create mode 100644 orchestra/contrib/contacts/migrations/0006_auto_20170625_1840.py create mode 100644 orchestra/contrib/contacts/migrations/0007_auto_20170625_1841.py create mode 100644 orchestra/contrib/contacts/migrations/0008_auto_20190805_1134.py create mode 100644 orchestra/contrib/contacts/migrations/0009_auto_20200204_1217.py create mode 100644 orchestra/contrib/contacts/migrations/0010_auto_20200204_1218.py create mode 100644 orchestra/contrib/databases/migrations/0002_auto_20170528_2005.py create mode 100644 orchestra/contrib/databases/migrations/0003_database_comments.py create mode 100644 orchestra/contrib/domains/migrations/0006_auto_20170528_2011.py create mode 100644 orchestra/contrib/domains/migrations/0007_auto_20190805_1134.py create mode 100644 orchestra/contrib/domains/migrations/0008_domain_dns2136_address_match_list.py create mode 100644 orchestra/contrib/domains/migrations/0009_auto_20200204_1217.py create mode 100644 orchestra/contrib/issues/migrations/0004_auto_20170528_2011.py create mode 100644 orchestra/contrib/mailboxes/migrations/0003_auto_20170528_2011.py create mode 100644 orchestra/contrib/orchestration/migrations/0007_auto_20170528_2011.py create mode 100644 orchestra/contrib/orchestration/migrations/0008_auto_20190805_1134.py create mode 100644 orchestra/contrib/payments/migrations/0003_auto_20170528_2011.py create mode 100644 orchestra/contrib/resources/migrations/0011_auto_20170528_2005.py create mode 100644 orchestra/contrib/saas/migrations/0003_auto_20170528_2011.py create mode 100644 orchestra/contrib/services/migrations/0006_auto_20170528_2005.py create mode 100644 orchestra/contrib/services/migrations/0007_auto_20170528_2011.py create mode 100644 orchestra/contrib/services/migrations/0008_auto_20170625_1813.py create mode 100644 orchestra/contrib/services/migrations/0009_auto_20170625_1840.py create mode 100644 orchestra/contrib/services/migrations/0010_auto_20170625_1840.py create mode 100644 orchestra/contrib/services/migrations/0011_auto_20170625_1840.py create mode 100644 orchestra/contrib/services/migrations/0012_auto_20170625_1841.py create mode 100644 orchestra/contrib/services/migrations/0013_auto_20190805_1134.py create mode 100644 orchestra/contrib/services/migrations/0014_auto_20200204_1218.py create mode 100644 orchestra/contrib/systemusers/migrations/0003_auto_20170528_2011.py create mode 100644 orchestra/contrib/vps/migrations/0004_auto_20170528_2005.py create mode 100644 orchestra/contrib/webapps/migrations/0002_auto_20170528_2011.py create mode 100644 orchestra/contrib/webapps/migrations/0003_webapp_target_server.py create mode 100644 orchestra/contrib/webapps/migrations/0004_webapp_comments.py create mode 100644 orchestra/contrib/webapps/migrations/0005_auto_20200204_1218.py create mode 100644 orchestra/contrib/websites/migrations/0003_auto_20170528_2011.py create mode 100644 orchestra/contrib/websites/migrations/0004_auto_20170625_1813.py create mode 100644 orchestra/contrib/websites/migrations/0005_auto_20170625_1840.py create mode 100644 orchestra/contrib/websites/migrations/0006_auto_20170625_1840.py create mode 100644 orchestra/contrib/websites/migrations/0007_auto_20170625_1840.py create mode 100644 orchestra/contrib/websites/migrations/0008_auto_20170625_1841.py create mode 100644 orchestra/contrib/websites/migrations/0009_auto_20170625_2206.py create mode 100644 orchestra/contrib/websites/migrations/0010_auto_20170625_2214.py create mode 100644 orchestra/contrib/websites/migrations/0011_auto_20170704_1117.py create mode 100644 orchestra/contrib/websites/migrations/0012_auto_20190805_1134.py create mode 100644 orchestra/contrib/websites/migrations/0013_auto_20200204_1217.py create mode 100644 orchestra/contrib/websites/migrations/0014_auto_20200204_1218.py create mode 100644 orchestra/contrib/websites/migrations/0015_auto_20200204_1219.py create mode 100644 orchestra/contrib/websites/migrations/0016_auto_20200204_1221.py diff --git a/orchestra/api/actions.py b/orchestra/api/actions.py index 246e40ff..8e2c3531 100644 --- a/orchestra/api/actions.py +++ b/orchestra/api/actions.py @@ -9,7 +9,7 @@ class SetPasswordApiMixin(object): @detail_route(methods=['post'], serializer_class=SetPasswordSerializer) def set_password(self, request, pk): obj = self.get_object() - data = request.DATA + data = request.data if isinstance(data, str): data = { 'password': data diff --git a/orchestra/api/serializers.py b/orchestra/api/serializers.py index 28598b9f..1fd1bb8c 100644 --- a/orchestra/api/serializers.py +++ b/orchestra/api/serializers.py @@ -98,7 +98,7 @@ class SetPasswordHyperlinkedSerializer(HyperlinkedModelSerializer): pass else: password = attrs.pop('password', None) - attrs = super(SetPasswordSerializer, self).validate() + attrs = super().validate(attrs) if password is not None: attrs['password'] = password return attrs diff --git a/orchestra/contrib/accounts/migrations/0002_auto_20170528_2005.py b/orchestra/contrib/accounts/migrations/0002_auto_20170528_2005.py new file mode 100644 index 00000000..68142a2b --- /dev/null +++ b/orchestra/contrib/accounts/migrations/0002_auto_20170528_2005.py @@ -0,0 +1,38 @@ +# -*- 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/models.py b/orchestra/contrib/accounts/models.py index de5214f7..52d77525 100644 --- a/orchestra/contrib/accounts/models.py +++ b/orchestra/contrib/accounts/models.py @@ -9,7 +9,7 @@ from django.utils.translation import ugettext_lazy as _ #from orchestra.contrib.orchestration.middlewares import OperationsMiddleware #from orchestra.contrib.orchestration import Operation -from orchestra.core import services +from orchestra import core from orchestra.models.utils import has_db_field from orchestra.utils.mail import send_email_template @@ -98,7 +98,7 @@ class Account(auth.AbstractBaseUser): ] for rel in related_fields: source = getattr(rel, 'related_model', rel.model) - if source in services and hasattr(source, 'active'): + if source in core.services and hasattr(source, 'active'): for obj in getattr(self, rel.get_accessor_name()).all(): yield obj @@ -141,12 +141,25 @@ class Account(auth.AbstractBaseUser): backend returns True. Thus, a user who has permission from a single auth backend is assumed to have permission in general. If an object is provided, permissions for this specific object are checked. + applabel.action_modelname """ + if not self.is_active: + return False # Active superusers have all permissions. - if self.is_active and self.is_superuser: + if self.is_superuser: return True - # Otherwise we need to check the backends. - return auth._user_has_perm(self, perm, obj) + app, action_model = perm.split('.') + action, model = action_model.split('_', 1) + service_apps = set(model._meta.app_label for model in core.services.get().keys()) + accounting_apps = set(model._meta.app_label for model in core.accounts.get().keys()) + import inspect + if ((app in service_apps or (action == 'view' and app in accounting_apps))): + # class-level permissions + if inspect.isclass(obj): + return True + elif obj and getattr(obj, 'account', None) == self: + return True + def has_perms(self, perm_list, obj=None): """ @@ -167,8 +180,7 @@ class Account(auth.AbstractBaseUser): # Active superusers have all permissions. if self.is_active and self.is_superuser: return True - return auth._user_has_module_perms(self, app_label) - + def get_related_passwords(self, db_field=False): related = [ self.main_systemuser, diff --git a/orchestra/contrib/accounts/serializers.py b/orchestra/contrib/accounts/serializers.py index 37edfdf8..9f05b167 100644 --- a/orchestra/contrib/accounts/serializers.py +++ b/orchestra/contrib/accounts/serializers.py @@ -7,7 +7,7 @@ class AccountSerializer(serializers.HyperlinkedModelSerializer): class Meta: model = Account fields = ( - 'url', 'id', 'username', 'type', 'language', 'short_name', 'full_name', 'date_joined', + 'url', 'id', 'username', 'type', 'language', 'short_name', 'full_name', 'date_joined', 'last_login', 'is_active' ) diff --git a/orchestra/contrib/bills/admin.py b/orchestra/contrib/bills/admin.py index 16980240..befd2235 100644 --- a/orchestra/contrib/bills/admin.py +++ b/orchestra/contrib/bills/admin.py @@ -20,7 +20,7 @@ from orchestra.forms.widgets import paddingCheckboxSelectMultiple from . import settings, actions from .filters import (BillTypeListFilter, HasBillContactListFilter, TotalListFilter, PaymentStateListFilter, AmendedListFilter) -from .models import (Bill, Invoice, AmendmentInvoice, Fee, AmendmentFee, ProForma, BillLine, +from .models import (Bill, Invoice, AmendmentInvoice, AbonoInvoice, Fee, AmendmentFee, ProForma, BillLine, BillSubline, BillContact) @@ -461,6 +461,7 @@ class BillAdmin(BillAdminMixin, ExtendedModelAdmin): admin.site.register(Bill, BillAdmin) admin.site.register(Invoice, BillAdmin) admin.site.register(AmendmentInvoice, BillAdmin) +admin.site.register(AbonoInvoice, BillAdmin) admin.site.register(Fee, BillAdmin) admin.site.register(AmendmentFee, BillAdmin) admin.site.register(ProForma, BillAdmin) diff --git a/orchestra/contrib/bills/locale/ca/LC_MESSAGES/django.mo b/orchestra/contrib/bills/locale/ca/LC_MESSAGES/django.mo index 943758b54fd324ee247b379a5bb2965dbf43c73b..19d238d4991694405e519bda04e0880288cbde21 100644 GIT binary patch delta 2317 zcmY+_eN2^Q7{~ETKsiT1k5C$c9uNV8j&MjxR3u3Z64c{MfM$siDOinG{o!oSdKq(W z&LwlsKinE?%k}by9sjWD#Ifb7)v)zG8!of8YUEa{t<8Fqp3gMXg->VkK`9BF{f4DDig~lm*5YTFkGVN!H5kQu+>FgQ zgm>Y`-oAnBX_x1kHDW)~Phe-LWOLzXR7bav94wm0U|8nHaUSg^)O`sI;mf!Hk9d0o zXVQKL>B`Qc`oHAgUqN!Q@l-o7yXIfq#QA(NiAo@APP*d|X3;Le#aNE&u+`my>aYuS zUoU3he$)&dz!D5llllf0;9EGz_;!Jc-XJzNop}ptfQ_gQw|TqE-Gi)#?Q@@V51|qt zLOp*3HQ;fK;wfB;A7BOEz(6;IBk8G(pr)?SjiM4LM|E6kX*q*ZTJ@sDazu z1ZoMoQT_Cx5+CsP3lY{|7Y=ekYxx?ggQM;V)PSc^Q+x(B;5k%67mz<24Qn#HjQmthC$`$JfWW4Io_ zcT3s9wY2-(lc*Q_2-n~^D&br<+#(DjUa3L)uuZ7**^A121hwnm^Y&HL3|vD^IA0r>+2% z*aB2Xi!p}PxB|P~W2hJV5Ov=ts06-nzmtq_*QsbtesX{D8z$X9QE&VYYN~Ie63r}1 z?~xo-dl9m)tO9l4O4N%qp%QLGC9vJU--&@T>!G4G>-R5SL_P2l@@I$n&;W0`@1hbu z=k4>TjxVE@>I!Pgzee>x>HdvMXbP2JxR~|Vz!CoQ=t41Spfc2h)$Ve)5jD^Tw;eU$ zR#ZQG@l|{VIbErfqEk~wJV|JodI**7)Mril80g6CBy^Pa5cd;1h<;)zp>hxL)NmrZ zprf6d7GyiIpLmGS)>UC`?6FkMjNf%z?)4^jGd}KhrQAGxHoG#omzqx5bg865YX2+y zXg%_uE1Iai#71I(*iEQt^Xp{R5xaWJkDtX7bB9Z_h{$Mb>3R8e;Lf gSY2&NJicm0eRXX-`AvS;tmG?&^D>gBi^?^ zyT8o;xHNRy6TQuG1c`KF%V_7+@K+4~IO@kb_Y*eY2Us5OTm@c150;H{E)VPQCJbRE z?!!s=ht)mTI9E-*5zBD^=_lk)P>7`=En%diOe6LDtLBOOh^iJZtlB`_D&aWO_?J!WAes>4Uj$50*i zqORMDsrUkB<1UQCW2hNBj$Zr`V;J9!OL8s+J@_!rKn=Vd^(4Dd1MWi&aM0>Q=9kFo zxTEGN^9R&}TteOd8){XrU?xTF7Ipp05jYt)7854XuK>_a8;JnH(FQ3>p{ z`fk(!dr{X7q7pe|?Vp)nq3%D1x_>xCK{uSmUc7*-M>)5SEc&T`&&D{2>n1q20E^gJ zN^m_E;M16kAEM6xjFYj5om`D|=2pz7K5WLb!88M*QVL}hDp47S@LJq#zJm1WK0>{> z$5EN5@^b5K@S^Hfs2Ny-n#tv;0eq;XZAUHD8r1b0kR=MaCn-#$VE{Gd`;murU!bPy zTgyo5!VITab-HB!)%K85PA z4|T%;YD!-<-!ONf2H0!9XYB{fA=Hz9j#`4lsDzKA_RdMGUqtOccbS4NjN=DD2_&I1 zpNvW%8+CpbDzO68T9#OQ4eI(@q$}5i8nDNF6qWGfR_{gi+n3J#YYm^HK~w)aYJdag zr>KOEpb{8H4SdGx=TQUwin{MlGnx&fdID;oiDo)#yew2dg&Fs=(}+dH^%0K^vY*htH>erIndEQf?JJuSy^bJZXuQse&PW_ zhkknW#?B?~BeX}gKd&BlQz#~~uQu>y%85(ptf8)LtA)|AoVb;!BJ=_;BDA}LLJ&7p9DuM^qEqO*(EMYKdk2JK{2%ODL5SI`|s6Rgu!j2k&|-YrE7F zi>=NAyL+tMh&K`qM5eWg3SwqBW9;HFCAGewZYWxx#9N2w?>WThHzqXO;mExocwwGc?\n" "Language-Team: LANGUAGE \n" @@ -18,33 +18,33 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: actions.py:31 +#: actions.py:33 msgid "View" msgstr "Vista" -#: actions.py:42 +#: actions.py:45 msgid "Selected bills should be in open state" msgstr "Les factures seleccionades han d'estar en estat obert" -#: actions.py:57 +#: actions.py:60 msgid "Selected bills have been closed" msgstr "Les factures seleccionades han estat tancades" -#: actions.py:70 +#: actions.py:73 #, python-format msgid "One related transaction has been created" msgstr "S'ha creat una transacció" -#: actions.py:71 +#: actions.py:74 #, python-format msgid "%(num)i related transactions have been created" msgstr "S'han creat les %(num)i següents transaccions" -#: actions.py:77 +#: actions.py:80 msgid "Are you sure about closing the following bills?" msgstr "Estàs a punt de tancar les següents factures, estàs segur?" -#: actions.py:78 +#: actions.py:81 msgid "" "Once a bill is closed it can not be further modified.

Please select a " "payment source for the selected bills" @@ -52,174 +52,205 @@ msgstr "" "Una vegada la factura estigui tancada no podrà ser modificada.

Si us " "plau selecciona un mètode de pagament per les factures seleccionades" -#: actions.py:91 +#: actions.py:97 msgid "Close" msgstr "Tanca" -#: actions.py:109 +#: actions.py:115 msgid "One bill has been sent." msgstr "S'ha creat una factura" -#: actions.py:110 +#: actions.py:116 #, python-format msgid "%i bills have been sent." msgstr "S'han enviat %i factures." -#: actions.py:117 +#: actions.py:123 msgid "Resend" msgstr "Reenviat" -#: actions.py:137 +#: actions.py:146 msgid "Download" msgstr "Descarrega" -#: actions.py:153 +#: actions.py:162 msgid "C.S.D." msgstr "" -#: actions.py:155 +#: actions.py:164 msgid "Close, send and download bills in one shot." msgstr "" -#: actions.py:216 +#: actions.py:225 #, python-format msgid "%(norders)s orders and %(nlines)s lines undoed." msgstr "%(norders)s ordres i %(nlines)s línies desfetes." -#: actions.py:235 +#: actions.py:244 msgid "Lines moved" msgstr "Línies mogudes" -#: actions.py:248 +#: actions.py:257 msgid "Selected bills should be in closed state" msgstr "Les factures seleccionades han d'estar en estat obert" -#: actions.py:265 +#: actions.py:259 +#, python-format +msgid "%s can not be amended." +msgstr "" + +#: actions.py:279 #, python-format msgid "%(type)s of %(related_type)s %(number)s and creation date %(date)s" msgstr "%(type)s de %(related_type)s %(number)s amb data de creació %(date)s" -#: actions.py:272 +#: actions.py:286 #, python-format msgid "%(related_type)s %(number)s subtotal for tax %(tax)s%%" msgstr "%(related_type)s %(number)s subtotal %(tax)s%%" -#: actions.py:288 +#: actions.py:303 #, python-format msgid "One amendment bill have been generated." msgstr "S'ha creat una transacció" -#: actions.py:289 +#: actions.py:304 #, python-format msgid "%(num)i amendment bills have been generated." msgstr "S'han creat les %(num)i següents transaccions" -#: actions.py:292 +#: actions.py:307 msgid "Amend" msgstr "" -#: admin.py:58 admin.py:103 admin.py:140 forms.py:11 +#: admin.py:80 admin.py:126 admin.py:180 forms.py:11 #: templates/admin/bills/bill/report.html:43 #: templates/admin/bills/bill/report.html:70 msgid "Total" msgstr "Total" -#: admin.py:89 +#: admin.py:112 msgid "Description" msgstr "Descripció" -#: admin.py:97 +#: admin.py:120 msgid "Subtotal" msgstr "Subtotal" -#: admin.py:130 +#: admin.py:146 +#, fuzzy +#| msgid "Total" +msgid "Totals" +msgstr "Total" + +#: admin.py:150 +msgid "Order" +msgstr "" + +#: admin.py:169 msgid "Is open" msgstr "És oberta" -#: admin.py:135 -msgid "Subline" +#: admin.py:175 +#, fuzzy +#| msgid "Subline" +msgid "Sublines" msgstr "Sublínia" -#: admin.py:167 +#: admin.py:221 msgid "No bills selected." msgstr "No hi ha factures seleccionades" -#: admin.py:174 -#, python-format -msgid "Manage %s bill lines." +#: admin.py:229 +#, fuzzy, python-format +#| msgid "Manage %s bill lines." +msgid "Manage %s bill lines" msgstr "Gestiona %s línies de factura." -#: admin.py:176 +#: admin.py:231 msgid "Bill not in open state." msgstr "La factura no està en estat obert" -#: admin.py:179 +#: admin.py:234 msgid "Not all bills are in open state." msgstr "No totes les factures estan en estat obert" -#: admin.py:180 -msgid "Manage bill lines of multiple bills." +#: admin.py:235 +#, fuzzy +#| msgid "Manage bill lines of multiple bills." +msgid "Manage bill lines of multiple bills" msgstr "Gestiona línies de factura de multiples factures." -#: admin.py:204 -msgid "Dates" +#: admin.py:250 +#, python-format +msgid "Subtotal %s%% VAT %s &%s;" msgstr "" -#: admin.py:209 -msgid "Raw" -msgstr "Raw" +#: admin.py:251 +#, python-format +msgid "Taxes %s%% VAT %s &%s;" +msgstr "" -#: admin.py:235 models.py:73 -msgid "Created" -msgstr "Creada" +#: admin.py:255 admin.py:381 filters.py:46 +#: templates/bills/microspective.html:123 +msgid "total" +msgstr "total" -#: admin.py:236 -#, fuzzy -#| msgid "Close" -msgid "Closed" -msgstr "Tanca" +#: admin.py:275 +msgid "This bill has been amended, this value may not be valid." +msgstr "" -#: admin.py:237 -#, fuzzy -#| msgid "updated on" -msgid "Updated" -msgstr "actualitzada el" +#: admin.py:280 +msgid "Payment" +msgstr "Pagament" -#: admin.py:246 +#: admin.py:304 #, fuzzy #| msgid "amended line" msgid "Amends" msgstr "línia rectificada" -#: admin.py:252 +#: admin.py:330 +msgid "Dates" +msgstr "" + +#: admin.py:335 +msgid "Raw" +msgstr "Raw" + +#: admin.py:358 models.py:75 +msgid "Created" +msgstr "Creada" + +#: admin.py:359 +#, fuzzy +#| msgid "Close" +msgid "Closed" +msgstr "Tanca" + +#: admin.py:360 +#, fuzzy +#| msgid "updated on" +msgid "Updated" +msgstr "actualitzada el" + +#: admin.py:375 msgid "lines" msgstr "línies" -#: admin.py:257 filters.py:46 templates/bills/microspective.html:118 -msgid "total" -msgstr "total" - -#: admin.py:265 models.py:104 models.py:460 +#: admin.py:389 models.py:108 models.py:501 msgid "type" msgstr "tipus" -#: admin.py:282 -msgid "This bill has been amended, this value may not be valid." -msgstr "" - -#: admin.py:287 -msgid "Payment" -msgstr "Pagament" - #: filters.py:21 msgid "All" msgstr "Tot" -#: filters.py:22 models.py:88 +#: filters.py:22 models.py:91 msgid "Invoice" msgstr "Factura" -#: filters.py:23 models.py:90 +#: filters.py:23 models.py:93 msgid "Fee" msgstr "Quota de soci" @@ -231,65 +262,67 @@ msgstr "Pro-forma" msgid "Amendment fee" msgstr "Rectificació de quota de soci" -#: filters.py:26 models.py:89 +#: filters.py:26 models.py:92 msgid "Amendment invoice" msgstr "Factura rectificativa" -#: filters.py:68 +#: filters.py:71 msgid "has bill contact" msgstr "té contacte de facturació" -#: filters.py:73 +#: filters.py:76 msgid "Yes" msgstr "Si" -#: filters.py:74 +#: filters.py:77 msgid "No" msgstr "No" -#: filters.py:85 +#: filters.py:88 msgid "payment state" msgstr "Pagament" -#: filters.py:90 models.py:72 +#: filters.py:93 models.py:74 msgid "Open" msgstr "" -#: filters.py:91 models.py:76 +#: filters.py:94 models.py:78 msgid "Paid" msgstr "Pagat" -#: filters.py:92 +#: filters.py:95 msgid "Pending" msgstr "Pendent" -#: filters.py:93 models.py:79 +#: filters.py:96 models.py:81 msgid "Bad debt" msgstr "Incobrable" -#: filters.py:135 +#: filters.py:138 #, fuzzy #| msgid "amended line" msgid "amended" msgstr "línia rectificada" -#: filters.py:140 +#: filters.py:143 #, fuzzy #| msgid "Due date" msgid "Closed amends" msgstr "Data de pagament" -#: filters.py:141 -msgid "Open or closed amends" -msgstr "" - -#: filters.py:142 +#: filters.py:144 #, fuzzy -#| msgid "closed on" -msgid "No closed amends" -msgstr "tancat el" +#| msgid "Due date" +msgid "Open amends" +msgstr "Data de pagament" -#: filters.py:143 +#: filters.py:145 +#, fuzzy +#| msgid "amended line" +msgid "Any amends" +msgstr "línia rectificada" + +#: filters.py:146 msgid "No amends" msgstr "" @@ -309,7 +342,7 @@ msgstr "Tipus" msgid "Source" msgstr "Font" -#: helpers.py:10 +#: helpers.py:14 msgid "" "{relation} account \"{account}\" does not have a declared invoice contact. " "You should provide one" @@ -317,213 +350,235 @@ msgstr "" "{relation} compte \"{account}\" no te un contacte de facturació. Hauries de " "proporcionar un" -#: helpers.py:17 +#: helpers.py:21 msgid "Related" msgstr "Relacionat" -#: helpers.py:24 +#: helpers.py:28 msgid "Main" msgstr "Principal" -#: models.py:24 models.py:100 +#: models.py:26 models.py:104 msgid "account" msgstr "compte" -#: models.py:26 +#: models.py:28 msgid "name" msgstr "nom" -#: models.py:27 +#: models.py:29 msgid "Account full name will be used when left blank." msgstr "S'emprarà el nom complet del compte quan es deixi en blanc." -#: models.py:28 +#: models.py:30 msgid "address" msgstr "adreça" -#: models.py:29 +#: models.py:31 msgid "city" msgstr "ciutat" -#: models.py:31 +#: models.py:33 msgid "zip code" msgstr "codi postal" -#: models.py:32 +#: models.py:34 msgid "Enter a valid zipcode." msgstr "Introdueix un codi postal vàlid." -#: models.py:33 +#: models.py:35 msgid "country" msgstr "país" -#: models.py:36 templates/admin/bills/bill/report.html:65 +#: models.py:38 templates/admin/bills/bill/report.html:65 msgid "VAT number" msgstr "NIF" -#: models.py:74 +#: models.py:76 msgid "Processed" msgstr "" -#: models.py:75 +#: models.py:77 #, fuzzy #| msgid "amended line" msgid "Amended" msgstr "línia rectificada" -#: models.py:77 +#: models.py:79 msgid "Incomplete" msgstr "" -#: models.py:78 +#: models.py:80 msgid "Executed" msgstr "" -#: models.py:91 +#: models.py:94 msgid "Amendment Fee" msgstr "Rectificació de quota de soci" -#: models.py:92 +#: models.py:95 +#, fuzzy +#| msgid "Invoice" +msgid "Abono Invoice" +msgstr "Abonament" + +#: models.py:96 msgid "Pro forma" msgstr "Pro forma" -#: models.py:99 +#: models.py:103 msgid "number" msgstr "número" -#: models.py:102 +#: models.py:106 #, fuzzy #| msgid "amended line" msgid "amend of" msgstr "línia rectificada" -#: models.py:105 +#: models.py:109 msgid "created on" msgstr "creat el" -#: models.py:106 +#: models.py:110 msgid "closed on" msgstr "tancat el" -#: models.py:107 +#: models.py:111 msgid "open" msgstr "obert" -#: models.py:108 +#: models.py:112 msgid "sent" msgstr "enviat" -#: models.py:109 +#: models.py:113 msgid "due on" msgstr "es deu" -#: models.py:110 +#: models.py:114 msgid "updated on" msgstr "actualitzada el" -#: models.py:112 +#: models.py:116 msgid "comments" msgstr "comentaris" -#: models.py:113 +#: models.py:117 msgid "HTML" msgstr "HTML" -#: models.py:194 +#: models.py:200 #, python-format msgid "Type %s is not an amendment." msgstr "" -#: models.py:196 +#: models.py:202 msgid "Amend of related account doesn't match bill account." msgstr "" -#: models.py:198 +#: models.py:204 #, fuzzy #| msgid "Bill not in open state." msgid "Related invoice is in open state." msgstr "La factura no està en estat obert" -#: models.py:200 +#: models.py:206 msgid "Related invoice is an amendment." msgstr "" -#: models.py:392 +#: models.py:419 msgid "bill" msgstr "factura" -#: models.py:393 models.py:458 templates/bills/microspective.html:73 +#: models.py:420 models.py:499 templates/bills/microspective.html:75 msgid "description" msgstr "descripció" -#: models.py:394 +#: models.py:421 msgid "rate" msgstr "tarifa" -#: models.py:395 +#: models.py:422 msgid "quantity" msgstr "quantitat" -#: models.py:397 +#: models.py:424 #, fuzzy #| msgid "quantity" msgid "Verbose quantity" msgstr "quantitat" -#: models.py:398 templates/admin/bills/bill/report.html:47 -#: templates/bills/microspective.html:77 -#: templates/bills/microspective.html:111 +#: models.py:425 templates/admin/bills/bill/report.html:47 +#: templates/bills/microspective.html:79 +#: templates/bills/microspective.html:116 msgid "subtotal" msgstr "subtotal" -#: models.py:399 +#: models.py:426 msgid "tax" msgstr "impostos" -#: models.py:400 +#: models.py:427 msgid "start" msgstr "iniciar" -#: models.py:401 +#: models.py:428 msgid "end" msgstr "finalitzar" -#: models.py:403 +#: models.py:431 msgid "Informative link back to the order" msgstr "Enllaç informatiu de l'ordre" -#: models.py:404 +#: models.py:432 msgid "order billed" msgstr "ordre facturada" -#: models.py:405 +#: models.py:433 msgid "order billed until" msgstr "ordre facturada fins a" -#: models.py:406 +#: models.py:434 msgid "created" msgstr "creada" -#: models.py:408 +#: models.py:436 msgid "amended line" msgstr "línia rectificada" -#: models.py:451 +#: models.py:492 msgid "Volume" msgstr "Volum" -#: models.py:452 +#: models.py:493 msgid "Compensation" msgstr "Compensació" -#: models.py:453 +#: models.py:494 msgid "Other" msgstr "Altre" -#: models.py:457 +#: models.py:498 msgid "bill line" msgstr "línia de factura" +#: templates/admin/bills/bill/change_list.html:9 +#, fuzzy +#| msgid "lines" +msgid "Lines" +msgstr "línies" + +#: templates/admin/bills/bill/change_list.html:15 +#, fuzzy +#| msgid "bill" +msgid "Add bill" +msgstr "factura" + +#: templates/admin/bills/bill/close_send_download_bills.html:57 +msgid "Yes, I'm sure" +msgstr "" + #: templates/admin/bills/bill/report.html:42 msgid "Summary" msgstr "" @@ -531,19 +586,19 @@ msgstr "" #: templates/admin/bills/bill/report.html:47 #: templates/admin/bills/bill/report.html:51 #: templates/admin/bills/bill/report.html:69 -#: templates/bills/microspective.html:111 -#: templates/bills/microspective.html:114 +#: templates/bills/microspective.html:116 +#: templates/bills/microspective.html:119 msgid "VAT" msgstr "IVA" #: templates/admin/bills/bill/report.html:51 -#: templates/bills/microspective.html:114 +#: templates/bills/microspective.html:119 msgid "taxes" msgstr "impostos" #: templates/admin/bills/bill/report.html:56 #: templates/admin/bills/billline/report.html:60 -#: templates/bills/microspective.html:53 +#: templates/bills/microspective.html:54 msgid "TOTAL" msgstr "TOTAL" @@ -561,8 +616,20 @@ msgstr "Data de pagament" msgid "Base" msgstr "" +#: templates/admin/bills/billline/change_list.html:6 +msgid "Home" +msgstr "" + +#: templates/admin/bills/billline/change_list.html:8 +msgid "Bills" +msgstr "" + +#: templates/admin/bills/billline/change_list.html:9 +msgid "Multiple bills" +msgstr "" + #: templates/admin/bills/billline/report.html:42 -msgid "Services" +msgid "Service" msgstr "" #: templates/admin/bills/billline/report.html:43 @@ -587,27 +654,21 @@ msgstr "quantitat" msgid "Profit" msgstr "" -#: templates/admin/bills/change_list.html:9 -#, fuzzy -#| msgid "bill" -msgid "Add bill" -msgstr "factura" - -#: templates/bills/microspective-fee.html:107 +#: templates/bills/microspective-fee.html:115 msgid "Due date" msgstr "Data de pagament" -#: templates/bills/microspective-fee.html:108 +#: templates/bills/microspective-fee.html:116 #, python-format msgid "On %(bank_account)s" msgstr "Al %(bank_account)s" -#: templates/bills/microspective-fee.html:114 +#: templates/bills/microspective-fee.html:122 #, python-format msgid "From %(ini)s to %(end)s" msgstr "De %(ini)s a %(end)s" -#: templates/bills/microspective-fee.html:121 +#: templates/bills/microspective-fee.html:144 msgid "" "\n" "With your membership you are supporting ...\n" @@ -615,36 +676,36 @@ msgstr "" "\n" "Amb la teva quota de soci estàs donant suport ...\n" -#: templates/bills/microspective.html:49 +#: templates/bills/microspective.html:50 msgid "DUE DATE" msgstr "VENCIMENT" -#: templates/bills/microspective.html:57 +#: templates/bills/microspective.html:58 #, python-format msgid "%(bill_type)s DATE" msgstr "DATA %(bill_type)s" -#: templates/bills/microspective.html:74 +#: templates/bills/microspective.html:76 msgid "period" msgstr "període" -#: templates/bills/microspective.html:75 +#: templates/bills/microspective.html:77 msgid "hrs/qty" msgstr "hrs/qnt" -#: templates/bills/microspective.html:76 +#: templates/bills/microspective.html:78 msgid "rate/price" msgstr "tarifa/preu" -#: templates/bills/microspective.html:131 +#: templates/bills/microspective.html:137 msgid "COMMENTS" msgstr "COMENTARIS" -#: templates/bills/microspective.html:138 +#: templates/bills/microspective.html:145 msgid "PAYMENT" msgstr "PAGAMENT" -#: templates/bills/microspective.html:142 +#: templates/bills/microspective.html:149 #, python-format msgid "" "\n" @@ -658,11 +719,11 @@ msgstr "" "Pots pagar aquesta %(type)s per transferència bancaria.
Inclou el " "teu nom i el número de %(type)s. El nostre compte bancari és" -#: templates/bills/microspective.html:151 +#: templates/bills/microspective.html:160 msgid "QUESTIONS" msgstr "PREGUNTES" -#: templates/bills/microspective.html:152 +#: templates/bills/microspective.html:161 #, python-format msgid "" "\n" @@ -679,5 +740,10 @@ msgstr "" "ràpidament possible.\n" " " +#, fuzzy +#~| msgid "closed on" +#~ msgid "No closed amends" +#~ msgstr "tancat el" + #~ msgid "positive price" #~ msgstr "preu positiu" diff --git a/orchestra/contrib/bills/locale/es/LC_MESSAGES/django.mo b/orchestra/contrib/bills/locale/es/LC_MESSAGES/django.mo index 6340463ce5c04b09a1dc25e9e5f324c9bc58146b..135b964303db3ec6e4c1be5253930c588194e5bb 100644 GIT binary patch delta 49 zcmeyO_C;-jIFEp(uAz~xk%5Atp_Qqbwt?Yhb)G;*#?sA|yp2qZ&Xa%h?`L%0yjx%= F698Sn4yphE delta 49 zcmeyO_C;-jIFEp-u7NoaDHs}985(FC7;IMO31no<-(1Pt$ix^p`8WT5#=yxc~qF diff --git a/orchestra/contrib/bills/locale/es/LC_MESSAGES/django.po b/orchestra/contrib/bills/locale/es/LC_MESSAGES/django.po index ecb896c2..dad1e5a2 100644 --- a/orchestra/contrib/bills/locale/es/LC_MESSAGES/django.po +++ b/orchestra/contrib/bills/locale/es/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-10-29 10:51+0000\n" +"POT-Creation-Date: 2019-12-20 11:56+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,33 +18,33 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: actions.py:31 +#: actions.py:33 msgid "View" msgstr "Vista" -#: actions.py:42 +#: actions.py:45 msgid "Selected bills should be in open state" msgstr "Las facturas seleccionadas están en estado abierto" -#: actions.py:57 +#: actions.py:60 msgid "Selected bills have been closed" msgstr "Las facturas seleccionadas han sido cerradas" -#: actions.py:70 +#: actions.py:73 #, python-format msgid "One related transaction has been created" msgstr "Se ha creado una transacción" -#: actions.py:71 +#: actions.py:74 #, python-format msgid "%(num)i related transactions have been created" msgstr "Se han creado %(num)i transacciones" -#: actions.py:77 +#: actions.py:80 msgid "Are you sure about closing the following bills?" msgstr "Estás a punto de cerrar las sigüientes facturas. ¿Estás seguro?" -#: actions.py:78 +#: actions.py:81 msgid "" "Once a bill is closed it can not be further modified.

Please select a " "payment source for the selected bills" @@ -52,174 +52,199 @@ msgstr "" "Una vez cerrada la factura ya no se podrá modificar.

Por favor " "seleciona un metodo de pago para las facturas seleccionadas" -#: actions.py:91 +#: actions.py:97 msgid "Close" msgstr "Cerrar" -#: actions.py:109 +#: actions.py:115 msgid "One bill has been sent." msgstr "Se ha enviado una factura" -#: actions.py:110 +#: actions.py:116 #, python-format msgid "%i bills have been sent." msgstr "" -#: actions.py:117 +#: actions.py:123 msgid "Resend" msgstr "" -#: actions.py:137 +#: actions.py:146 msgid "Download" msgstr "Descarga" -#: actions.py:153 +#: actions.py:162 msgid "C.S.D." msgstr "" -#: actions.py:155 +#: actions.py:164 msgid "Close, send and download bills in one shot." msgstr "" -#: actions.py:216 +#: actions.py:225 #, python-format msgid "%(norders)s orders and %(nlines)s lines undoed." msgstr "" -#: actions.py:235 +#: actions.py:244 msgid "Lines moved" msgstr "" -#: actions.py:248 +#: actions.py:257 msgid "Selected bills should be in closed state" msgstr "Las facturas seleccionadas están en estado abierto" -#: actions.py:265 +#: actions.py:259 +#, python-format +msgid "%s can not be amended." +msgstr "" + +#: actions.py:279 #, python-format msgid "%(type)s of %(related_type)s %(number)s and creation date %(date)s" msgstr "%(type)s de %(related_type)s %(number)s con fecha de creación %(date)s" -#: actions.py:272 +#: actions.py:286 #, python-format msgid "%(related_type)s %(number)s subtotal for tax %(tax)s%%" msgstr "%(related_type)s %(number)s subtotal %(tax)s%%" -#: actions.py:288 +#: actions.py:303 #, python-format msgid "One amendment bill have been generated." msgstr "Se ha creado una transacción" -#: actions.py:289 +#: actions.py:304 #, python-format msgid "%(num)i amendment bills have been generated." msgstr "Se han creado %(num)i transacciones" -#: actions.py:292 +#: actions.py:307 msgid "Amend" msgstr "" -#: admin.py:58 admin.py:103 admin.py:140 forms.py:11 +#: admin.py:80 admin.py:126 admin.py:180 forms.py:11 #: templates/admin/bills/bill/report.html:43 #: templates/admin/bills/bill/report.html:70 msgid "Total" msgstr "" -#: admin.py:89 +#: admin.py:112 msgid "Description" msgstr "" -#: admin.py:97 +#: admin.py:120 msgid "Subtotal" msgstr "" -#: admin.py:130 +#: admin.py:146 +msgid "Totals" +msgstr "" + +#: admin.py:150 +msgid "Order" +msgstr "" + +#: admin.py:169 msgid "Is open" msgstr "" -#: admin.py:135 -msgid "Subline" +#: admin.py:175 +msgid "Sublines" msgstr "" -#: admin.py:167 +#: admin.py:221 msgid "No bills selected." msgstr "" -#: admin.py:174 -#, python-format -msgid "Manage %s bill lines." -msgstr "" +#: admin.py:229 +#, fuzzy, python-format +#| msgid "bill line" +msgid "Manage %s bill lines" +msgstr "linea de factura" -#: admin.py:176 +#: admin.py:231 msgid "Bill not in open state." msgstr "" -#: admin.py:179 +#: admin.py:234 msgid "Not all bills are in open state." msgstr "" -#: admin.py:180 -msgid "Manage bill lines of multiple bills." +#: admin.py:235 +msgid "Manage bill lines of multiple bills" msgstr "" -#: admin.py:204 -msgid "Dates" +#: admin.py:250 +#, python-format +msgid "Subtotal %s%% VAT %s &%s;" msgstr "" -#: admin.py:209 -msgid "Raw" +#: admin.py:251 +#, python-format +msgid "Taxes %s%% VAT %s &%s;" msgstr "" -#: admin.py:235 models.py:73 -msgid "Created" +#: admin.py:255 admin.py:381 filters.py:46 +#: templates/bills/microspective.html:123 +msgid "total" msgstr "" -#: admin.py:236 -#, fuzzy -#| msgid "Close" -msgid "Closed" -msgstr "Cerrar" +#: admin.py:275 +msgid "This bill has been amended, this value may not be valid." +msgstr "" -#: admin.py:237 -#, fuzzy -#| msgid "updated on" -msgid "Updated" -msgstr "actualizada en" +#: admin.py:280 +msgid "Payment" +msgstr "Pago" -#: admin.py:246 +#: admin.py:304 #, fuzzy #| msgid "Amended" msgid "Amends" msgstr "Quota rectificativa" -#: admin.py:252 +#: admin.py:330 +msgid "Dates" +msgstr "" + +#: admin.py:335 +msgid "Raw" +msgstr "" + +#: admin.py:358 models.py:75 +msgid "Created" +msgstr "" + +#: admin.py:359 +#, fuzzy +#| msgid "Close" +msgid "Closed" +msgstr "Cerrar" + +#: admin.py:360 +#, fuzzy +#| msgid "updated on" +msgid "Updated" +msgstr "actualizada en" + +#: admin.py:375 msgid "lines" msgstr "" -#: admin.py:257 filters.py:46 templates/bills/microspective.html:118 -msgid "total" -msgstr "" - -#: admin.py:265 models.py:104 models.py:460 +#: admin.py:389 models.py:108 models.py:501 msgid "type" msgstr "" -#: admin.py:282 -msgid "This bill has been amended, this value may not be valid." -msgstr "" - -#: admin.py:287 -msgid "Payment" -msgstr "Pago" - #: filters.py:21 msgid "All" msgstr "" -#: filters.py:22 models.py:88 +#: filters.py:22 models.py:91 msgid "Invoice" msgstr "Factura" -#: filters.py:23 models.py:90 +#: filters.py:23 models.py:93 msgid "Fee" msgstr "Cuota de socio" @@ -231,65 +256,67 @@ msgstr "" msgid "Amendment fee" msgstr "Cuota rectificativa" -#: filters.py:26 models.py:89 +#: filters.py:26 models.py:92 msgid "Amendment invoice" msgstr "Factura rectificativa" -#: filters.py:68 +#: filters.py:71 msgid "has bill contact" msgstr "" -#: filters.py:73 +#: filters.py:76 msgid "Yes" msgstr "" -#: filters.py:74 +#: filters.py:77 msgid "No" msgstr "" -#: filters.py:85 +#: filters.py:88 msgid "payment state" msgstr "Pago" -#: filters.py:90 models.py:72 +#: filters.py:93 models.py:74 msgid "Open" msgstr "" -#: filters.py:91 models.py:76 +#: filters.py:94 models.py:78 msgid "Paid" msgstr "" -#: filters.py:92 +#: filters.py:95 msgid "Pending" msgstr "" -#: filters.py:93 models.py:79 +#: filters.py:96 models.py:81 msgid "Bad debt" msgstr "" -#: filters.py:135 +#: filters.py:138 #, fuzzy #| msgid "Amended" msgid "amended" msgstr "Quota rectificativa" -#: filters.py:140 +#: filters.py:143 #, fuzzy #| msgid "Due date" msgid "Closed amends" msgstr "Fecha de pago" -#: filters.py:141 -msgid "Open or closed amends" -msgstr "" - -#: filters.py:142 +#: filters.py:144 #, fuzzy -#| msgid "closed on" -msgid "No closed amends" -msgstr "cerrada en" +#| msgid "Due date" +msgid "Open amends" +msgstr "Fecha de pago" -#: filters.py:143 +#: filters.py:145 +#, fuzzy +#| msgid "Amended" +msgid "Any amends" +msgstr "Quota rectificativa" + +#: filters.py:146 msgid "No amends" msgstr "" @@ -309,213 +336,233 @@ msgstr "" msgid "Source" msgstr "" -#: helpers.py:10 +#: helpers.py:14 msgid "" "{relation} account \"{account}\" does not have a declared invoice contact. " "You should provide one" msgstr "" -#: helpers.py:17 +#: helpers.py:21 msgid "Related" msgstr "" -#: helpers.py:24 +#: helpers.py:28 msgid "Main" msgstr "" -#: models.py:24 models.py:100 +#: models.py:26 models.py:104 msgid "account" msgstr "" -#: models.py:26 +#: models.py:28 msgid "name" msgstr "" -#: models.py:27 +#: models.py:29 msgid "Account full name will be used when left blank." msgstr "" -#: models.py:28 +#: models.py:30 msgid "address" msgstr "" -#: models.py:29 +#: models.py:31 msgid "city" msgstr "" -#: models.py:31 +#: models.py:33 msgid "zip code" msgstr "" -#: models.py:32 +#: models.py:34 msgid "Enter a valid zipcode." msgstr "" -#: models.py:33 +#: models.py:35 msgid "country" msgstr "" -#: models.py:36 templates/admin/bills/bill/report.html:65 +#: models.py:38 templates/admin/bills/bill/report.html:65 msgid "VAT number" msgstr "" -#: models.py:74 +#: models.py:76 msgid "Processed" msgstr "" -#: models.py:75 +#: models.py:77 msgid "Amended" msgstr "Quota rectificativa" -#: models.py:77 +#: models.py:79 msgid "Incomplete" msgstr "" -#: models.py:78 +#: models.py:80 msgid "Executed" msgstr "" -#: models.py:91 +#: models.py:94 msgid "Amendment Fee" msgstr "" -#: models.py:92 +#: models.py:95 +#, fuzzy +#| msgid "Invoice" +msgid "Abono Invoice" +msgstr "Abono" + +#: models.py:96 msgid "Pro forma" msgstr "" -#: models.py:99 +#: models.py:103 msgid "number" msgstr "número" -#: models.py:102 +#: models.py:106 msgid "amend of" msgstr "rectificación de" -#: models.py:105 +#: models.py:109 msgid "created on" msgstr "creado en" -#: models.py:106 +#: models.py:110 msgid "closed on" msgstr "cerrada en" -#: models.py:107 +#: models.py:111 msgid "open" msgstr "abierta" -#: models.py:108 +#: models.py:112 msgid "sent" msgstr "enviada" -#: models.py:109 +#: models.py:113 msgid "due on" msgstr "vencimiento" -#: models.py:110 +#: models.py:114 msgid "updated on" msgstr "actualizada en" -#: models.py:112 +#: models.py:116 msgid "comments" msgstr "comentarios" -#: models.py:113 +#: models.py:117 msgid "HTML" msgstr "HTML" -#: models.py:194 +#: models.py:200 #, python-format msgid "Type %s is not an amendment." msgstr "" -#: models.py:196 +#: models.py:202 msgid "Amend of related account doesn't match bill account." msgstr "" -#: models.py:198 +#: models.py:204 #, fuzzy #| msgid "Selected bills should be in open state" msgid "Related invoice is in open state." msgstr "Las facturas seleccionadas están en estado abierto" -#: models.py:200 +#: models.py:206 msgid "Related invoice is an amendment." msgstr "" -#: models.py:392 +#: models.py:419 msgid "bill" msgstr "factura" -#: models.py:393 models.py:458 templates/bills/microspective.html:73 +#: models.py:420 models.py:499 templates/bills/microspective.html:75 msgid "description" msgstr "descripción" -#: models.py:394 +#: models.py:421 msgid "rate" msgstr "tarifa" -#: models.py:395 +#: models.py:422 msgid "quantity" msgstr "cantidad" -#: models.py:397 +#: models.py:424 msgid "Verbose quantity" msgstr "Cantidad" -#: models.py:398 templates/admin/bills/bill/report.html:47 -#: templates/bills/microspective.html:77 -#: templates/bills/microspective.html:111 +#: models.py:425 templates/admin/bills/bill/report.html:47 +#: templates/bills/microspective.html:79 +#: templates/bills/microspective.html:116 msgid "subtotal" msgstr "subtotal" -#: models.py:399 +#: models.py:426 msgid "tax" msgstr "impuesto" -#: models.py:400 +#: models.py:427 msgid "start" msgstr "inicio" -#: models.py:401 +#: models.py:428 msgid "end" msgstr "fín" -#: models.py:403 +#: models.py:431 msgid "Informative link back to the order" msgstr "" -#: models.py:404 +#: models.py:432 msgid "order billed" msgstr "" -#: models.py:405 +#: models.py:433 msgid "order billed until" msgstr "" -#: models.py:406 +#: models.py:434 msgid "created" msgstr "creado" -#: models.py:408 +#: models.py:436 msgid "amended line" msgstr "linea rectificativa" -#: models.py:451 +#: models.py:492 msgid "Volume" msgstr "Volumen" -#: models.py:452 +#: models.py:493 msgid "Compensation" msgstr "Compensación" -#: models.py:453 +#: models.py:494 msgid "Other" msgstr "Otro" -#: models.py:457 +#: models.py:498 msgid "bill line" msgstr "linea de factura" +#: templates/admin/bills/bill/change_list.html:9 +msgid "Lines" +msgstr "" + +#: templates/admin/bills/bill/change_list.html:15 +#, fuzzy +#| msgid "bill" +msgid "Add bill" +msgstr "factura" + +#: templates/admin/bills/bill/close_send_download_bills.html:57 +msgid "Yes, I'm sure" +msgstr "" + #: templates/admin/bills/bill/report.html:42 msgid "Summary" msgstr "" @@ -523,19 +570,19 @@ msgstr "" #: templates/admin/bills/bill/report.html:47 #: templates/admin/bills/bill/report.html:51 #: templates/admin/bills/bill/report.html:69 -#: templates/bills/microspective.html:111 -#: templates/bills/microspective.html:114 +#: templates/bills/microspective.html:116 +#: templates/bills/microspective.html:119 msgid "VAT" msgstr "IVA" #: templates/admin/bills/bill/report.html:51 -#: templates/bills/microspective.html:114 +#: templates/bills/microspective.html:119 msgid "taxes" msgstr "impuestos" #: templates/admin/bills/bill/report.html:56 #: templates/admin/bills/billline/report.html:60 -#: templates/bills/microspective.html:53 +#: templates/bills/microspective.html:54 msgid "TOTAL" msgstr "TOTAL" @@ -553,8 +600,20 @@ msgstr "Fecha de pago" msgid "Base" msgstr "Base" +#: templates/admin/bills/billline/change_list.html:6 +msgid "Home" +msgstr "" + +#: templates/admin/bills/billline/change_list.html:8 +msgid "Bills" +msgstr "" + +#: templates/admin/bills/billline/change_list.html:9 +msgid "Multiple bills" +msgstr "" + #: templates/admin/bills/billline/report.html:42 -msgid "Services" +msgid "Service" msgstr "" #: templates/admin/bills/billline/report.html:43 @@ -579,62 +638,56 @@ msgstr "cantidad" msgid "Profit" msgstr "" -#: templates/admin/bills/change_list.html:9 -#, fuzzy -#| msgid "bill" -msgid "Add bill" -msgstr "factura" - -#: templates/bills/microspective-fee.html:107 +#: templates/bills/microspective-fee.html:115 msgid "Due date" msgstr "Fecha de pago" -#: templates/bills/microspective-fee.html:108 +#: templates/bills/microspective-fee.html:116 #, python-format msgid "On %(bank_account)s" msgstr "En %(bank_account)s" -#: templates/bills/microspective-fee.html:114 +#: templates/bills/microspective-fee.html:122 #, python-format msgid "From %(ini)s to %(end)s" msgstr "Desde %(ini)s hasta %(end)s" -#: templates/bills/microspective-fee.html:121 +#: templates/bills/microspective-fee.html:144 msgid "" "\n" "With your membership you are supporting ...\n" msgstr "" -#: templates/bills/microspective.html:49 +#: templates/bills/microspective.html:50 msgid "DUE DATE" msgstr "VENCIMIENTO" -#: templates/bills/microspective.html:57 +#: templates/bills/microspective.html:58 #, python-format msgid "%(bill_type)s DATE" msgstr "FECHA %(bill_type)s" -#: templates/bills/microspective.html:74 +#: templates/bills/microspective.html:76 msgid "period" msgstr "periodo" -#: templates/bills/microspective.html:75 +#: templates/bills/microspective.html:77 msgid "hrs/qty" msgstr "hrs/cant" -#: templates/bills/microspective.html:76 +#: templates/bills/microspective.html:78 msgid "rate/price" msgstr "tarifa/precio" -#: templates/bills/microspective.html:131 +#: templates/bills/microspective.html:137 msgid "COMMENTS" msgstr "COMENTARIOS" -#: templates/bills/microspective.html:138 +#: templates/bills/microspective.html:145 msgid "PAYMENT" msgstr "PAGO" -#: templates/bills/microspective.html:142 +#: templates/bills/microspective.html:149 #, python-format msgid "" "\n" @@ -648,11 +701,11 @@ msgstr "" "Puedes pagar esta %(type)s por transferencia bancaria.
Incluye tu " "nombre y el número de %(type)s. Nuestra cuenta bancaria es" -#: templates/bills/microspective.html:151 +#: templates/bills/microspective.html:160 msgid "QUESTIONS" msgstr "PREGUNTAS" -#: templates/bills/microspective.html:152 +#: templates/bills/microspective.html:161 #, python-format msgid "" "\n" @@ -668,3 +721,8 @@ msgstr "" " contacta con nosotros en %(email)s. Te responderemos lo más " "rapidamente posible.\n" " " + +#, fuzzy +#~| msgid "closed on" +#~ msgid "No closed amends" +#~ msgstr "cerrada en" diff --git a/orchestra/contrib/bills/migrations/0007_auto_20170528_2011.py b/orchestra/contrib/bills/migrations/0007_auto_20170528_2011.py new file mode 100644 index 00000000..0e073586 --- /dev/null +++ b/orchestra/contrib/bills/migrations/0007_auto_20170528_2011.py @@ -0,0 +1,39 @@ +# -*- 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 new file mode 100644 index 00000000..512e9c67 --- /dev/null +++ b/orchestra/contrib/bills/migrations/0008_auto_20170625_1813.py @@ -0,0 +1,20 @@ +# -*- 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 new file mode 100644 index 00000000..36879af3 --- /dev/null +++ b/orchestra/contrib/bills/migrations/0009_auto_20170625_1840.py @@ -0,0 +1,20 @@ +# -*- 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 new file mode 100644 index 00000000..9cd7db42 --- /dev/null +++ b/orchestra/contrib/bills/migrations/0010_auto_20170625_1840.py @@ -0,0 +1,20 @@ +# -*- 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 new file mode 100644 index 00000000..e7fea51f --- /dev/null +++ b/orchestra/contrib/bills/migrations/0011_auto_20170625_1840.py @@ -0,0 +1,20 @@ +# -*- 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 new file mode 100644 index 00000000..28d7dab2 --- /dev/null +++ b/orchestra/contrib/bills/migrations/0012_auto_20170625_1841.py @@ -0,0 +1,20 @@ +# -*- 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 new file mode 100644 index 00000000..aabeb934 --- /dev/null +++ b/orchestra/contrib/bills/migrations/0013_auto_20190805_1134.py @@ -0,0 +1,20 @@ +# -*- 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 new file mode 100644 index 00000000..79f4d87e --- /dev/null +++ b/orchestra/contrib/bills/migrations/0014_auto_20200204_1217.py @@ -0,0 +1,34 @@ +# -*- 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 new file mode 100644 index 00000000..58df422d --- /dev/null +++ b/orchestra/contrib/bills/migrations/0015_auto_20200204_1218.py @@ -0,0 +1,20 @@ +# -*- 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/models.py b/orchestra/contrib/bills/models.py index 02f0b386..eb90776f 100644 --- a/orchestra/contrib/bills/models.py +++ b/orchestra/contrib/bills/models.py @@ -86,11 +86,13 @@ class Bill(models.Model): FEE = 'FEE' AMENDMENTFEE = 'AMENDMENTFEE' PROFORMA = 'PROFORMA' + ABONOINVOICE = 'ABONOINVOICE' TYPES = ( (INVOICE, _("Invoice")), (AMENDMENTINVOICE, _("Amendment invoice")), (FEE, _("Fee")), (AMENDMENTFEE, _("Amendment Fee")), + (ABONOINVOICE, _("Abono Invoice")), (PROFORMA, _("Pro forma")), ) AMEND_MAP = { @@ -392,6 +394,11 @@ class AmendmentInvoice(Bill): proxy = True +class AbonoInvoice(Bill): + class Meta: + proxy = True + + class Fee(Bill): class Meta: proxy = True diff --git a/orchestra/contrib/bills/settings.py b/orchestra/contrib/bills/settings.py index cf880098..93e15da7 100644 --- a/orchestra/contrib/bills/settings.py +++ b/orchestra/contrib/bills/settings.py @@ -18,6 +18,9 @@ BILLS_AMENDMENT_INVOICE_NUMBER_PREFIX = Setting('BILLS_AMENDMENT_INVOICE_NUMBER_ 'A' ) +BILLS_ABONOINVOICE_NUMBER_PREFIX = Setting('BILLS_ABONOINVOICE_NUMBER_PREFIX', + 'AB' +) BILLS_FEE_NUMBER_PREFIX = Setting('BILLS_FEE_NUMBER_PREFIX', 'F' diff --git a/orchestra/contrib/bills/templates/bills/microspective.css b/orchestra/contrib/bills/templates/bills/microspective.css index 7e6730cf..6513d650 100644 --- a/orchestra/contrib/bills/templates/bills/microspective.css +++ b/orchestra/contrib/bills/templates/bills/microspective.css @@ -282,3 +282,17 @@ a:hover { #questions { margin-bottom: 0px; } + + +#watermark { + color: #d0d0d0; + font-size: 100pt; + -webkit-transform: rotate(-45deg); + -moz-transform: rotate(-45deg); + position: absolute; + width: 100%; + height: 100%; + margin: 0; + z-index: -1; + max-width: 593px; +} \ No newline at end of file diff --git a/orchestra/contrib/bills/templates/bills/microspective.html b/orchestra/contrib/bills/templates/bills/microspective.html index 6992d456..e4422bfa 100644 --- a/orchestra/contrib/bills/templates/bills/microspective.html +++ b/orchestra/contrib/bills/templates/bills/microspective.html @@ -12,6 +12,12 @@ {% block body %}

+{% if bill.is_open %} + +
+

ESBORRANY - DRAFT - BORRADOR

+
+{% endif %} {% block header %}