Skip to content

Commit

Permalink
Changes related to testing of TGT (#35)
Browse files Browse the repository at this point in the history
* Fixing title for royalty calculation view

* New no society and no IPI fix.

* cleaning up CWR generation a bit

* missing migration

* fixed migration

* missing migration

* missing migration

* bugfix - mismatching config var names
  • Loading branch information
matijakolaric committed Jan 27, 2021
1 parent c22bc26 commit 224abb4
Show file tree
Hide file tree
Showing 10 changed files with 243 additions and 170 deletions.
8 changes: 5 additions & 3 deletions dmp_project/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -150,11 +150,13 @@

# Shares transferred to the original publisher, default to 50%/100%/100%
PUBLISHING_AGREEMENT_PUBLISHER_PR = Decimal(
os.getenv('PUBLISHER_AGREEMENT_PR', '0.5'))
os.getenv(
'PUBLISHING_AGREEMENT_PUBLISHER_PR',
os.getenv('PUBLISHER_AGREEMENT_PR', '0.5')))
PUBLISHING_AGREEMENT_PUBLISHER_MR = Decimal(
os.getenv('PUBLISHER_AGREEMENT_PR', '1.0'))
os.getenv('PUBLISHING_AGREEMENT_PUBLISHER_MR', '1.0'))
PUBLISHING_AGREEMENT_PUBLISHER_SR = Decimal(
os.getenv('PUBLISHER_AGREEMENT_PR', '1.0'))
os.getenv('PUBLISHING_AGREEMENT_PUBLISHER_SR', '1.0'))

CSRF_COOKIE_SECURE = not DEBUG
SESSION_COOKIE_SECURE = not DEBUG
Expand Down
18 changes: 13 additions & 5 deletions docs/manual_writer.rst
Original file line number Diff line number Diff line change
Expand Up @@ -60,13 +60,21 @@ For writers who are controlled (whose works are published by you), more data is
than for those who are not. This column shows if data is sufficient for the writer to be
marked as controlled.

Controlled writers without affiliation
------------------------------------------
Controlled writers without affiliation and/or IPI name number
-------------------------------------------------------------

In very rare cases, writers choose not to affiliate with any society
and even get an IPI name number. And consequently not getting paid.

If a writer chooses not to become an affiliate of any society,
you can enter ``00000000000`` in the ``IPI name#`` field. This has to be
re-entered on *every* save.
If you control such a writer, you can still enter them. If they don't
have an IPI name number, you can enter ``00000000000``. If they are not
affiliated with any performance rights society, there is a ``NO SOCIETY``
option at the bottom of the list.

This has to be manually re-entered on *every* save of the writer form.
It is a feature, not a bug. In almost all cases, both IPI name number
and PR affiliations should be entered for controlled writers. Entering
edge case exceptions should not be simple.

Other writers
------------------------------------------
Expand Down
18 changes: 16 additions & 2 deletions music_publisher/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -1121,8 +1121,17 @@ def get_labels_for_csv(self, works):
labels.append('Writer {} First'.format(i))
labels.append('Writer {} IPI'.format(i))
labels.append('Writer {} PRO'.format(i))
if settings.PUBLISHING_AGREEMENT_PUBLISHER_MR != Decimal(1):
labels.append('Writer {} MRO'.format(i))
if settings.PUBLISHING_AGREEMENT_PUBLISHER_SR != Decimal(1):
labels.append('Writer {} SRO'.format(i))
labels.append('Writer {} Role'.format(i))
labels.append('Writer {} Share'.format(i))
labels.append('Writer {} Manuscript Share'.format(i))
labels.append('Writer {} PR Share'.format(i))
if settings.PUBLISHING_AGREEMENT_PUBLISHER_MR != Decimal(1):
labels.append('Writer {} MR Share'.format(i))
if settings.PUBLISHING_AGREEMENT_PUBLISHER_SR != Decimal(1):
labels.append('Writer {} SR Share'.format(i))
labels.append('Writer {} Controlled'.format(i))
labels.append('Writer {} SAAN'.format(i))
for i in range(artist_max):
Expand Down Expand Up @@ -1169,7 +1178,12 @@ def write(self, value):
if role:
row['Writer {} Role'.format(i)] = '{} - {}'.format(
role['code'], role['name'])
row['Writer {} Share'.format(i)] = wiw.get('relative_share')
row['Writer {} Manuscript Share'.format(i)] = wiw.get('relative_share')
row['Writer {} PR Share'.format(i)] = Decimal(wiw.get('relative_share')) * (1 - settings.PUBLISHING_AGREEMENT_PUBLISHER_PR)
if settings.PUBLISHING_AGREEMENT_PUBLISHER_MR != Decimal(1):
row['Writer {} MR Share'.format(i)] = Decimal(wiw.get('relative_share')) * (1 - settings.PUBLISHING_AGREEMENT_PUBLISHER_MR)
if settings.PUBLISHING_AGREEMENT_PUBLISHER_SR != Decimal(1):
row['Writer {} SR Share'.format(i)] = Decimal(wiw.get('relative_share')) * (1 - settings.PUBLISHING_AGREEMENT_PUBLISHER_SR)
for aff in w.get('affiliations', []):
if aff['affiliation_type']['code'] == 'PR':
pro = aff['organization']
Expand Down
15 changes: 8 additions & 7 deletions music_publisher/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ class Meta:
pr_society = models.CharField(
'Performance rights society', max_length=3, blank=True, null=True,
validators=(CWRFieldValidator('pr_society'),),
choices=settings.SOCIETIES)
choices=settings.SOCIETIES + [('99', 'NO SOCIETY')])
mr_society = models.CharField(
'Mechanical rights society', max_length=3, blank=True, null=True,
validators=(CWRFieldValidator('pr_society'),),
Expand Down Expand Up @@ -107,7 +107,8 @@ class Meta:
'IPI base #', max_length=15, blank=True, null=True,
validators=(CWRFieldValidator('ipi_base'),))

_can_be_controlled = models.BooleanField(editable=False, default=False)
_can_be_controlled = models.BooleanField(
verbose_name='Can be controlled', editable=False, default=False)

def clean_fields(self, *args, **kwargs):
"""
Expand Down Expand Up @@ -162,13 +163,13 @@ class Meta:
def clean(self):
"""Clean the data and validate."""

self._can_be_controlled = (
bool(self.ipi_name) & bool(self.pr_society))
if self.ipi_name == '00000000000':
self._can_be_controlled = True
self.ipi_name = None
else:
self._can_be_controlled = (
bool(self.ipi_name) &
bool(self.pr_society))
if self.pr_society == '99':
self.pr_society = None

d = {}
if not self.generally_controlled:
if self.saan:
Expand Down
9 changes: 5 additions & 4 deletions music_publisher/data_import.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,8 @@ class DataImporter(object):
ARTIST_FIELDS = [
'last', 'first', 'isni']
WRITER_FIELDS = [
'last', 'first', 'ipi', 'pro', 'role', 'share', 'controlled', 'saan']
'last', 'first', 'ipi', 'pro', 'role', 'share', 'manuscript_share',
'pr_share', 'mr_share', 'sr_share', 'controlled', 'saan']

def __init__(self, filelike, user=None):
self.user = user
Expand All @@ -61,7 +62,6 @@ def get_clean_key(value, tup, name):
if key.upper() in [t[0].strip() for t in tup]:
return key
else:
print(key, [t[0] for t in tup])
raise ValueError(
'Unknown value: "{}" for "{}".'.format(value, name))

Expand All @@ -81,7 +81,7 @@ def process_writer_value(self, key, key_elements, value):
value = value.ljust(2)
elif key_elements[2] == 'pro':
value = self.get_clean_key(value, settings.SOCIETIES, 'society')
elif key_elements[2] == 'share':
elif key_elements[2] in ['share', 'manuscript_share']:
if isinstance(value, str) and value[-1] == '%':
value = Decimal(value[0:-1])
else:
Expand Down Expand Up @@ -297,7 +297,8 @@ def process_row(self, row):
saan = None
wiw = WriterInWork(
writer=writer, work=work,
relative_share=w_dict.get('share'),
relative_share=(
w_dict.get('manuscript_share') or w_dict.get('share')),
capacity=w_dict.get('role'),
controlled=w_dict.get('controlled'),
saan=saan)
Expand Down
24 changes: 24 additions & 0 deletions music_publisher/migrations/0003_auto_20210127_1231.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Generated by Django 3.1.5 on 2021-01-27 12:31

from django.db import migrations, models
import music_publisher.validators


class Migration(migrations.Migration):

dependencies = [
('music_publisher', '0002_auto_20210104_1155'),
]

operations = [
migrations.AlterField(
model_name='writer',
name='_can_be_controlled',
field=models.BooleanField(default=False, editable=False, verbose_name='Can be controlled'),
),
migrations.AlterField(
model_name='writer',
name='pr_society',
field=models.CharField(blank=True, choices=[('226', 'AACIMH (HONDURAS)'), ('253', 'AAS (AZERBAIJAN)'), ('217', 'ABRAC (BRAZIL)'), ('201', 'ABRAMUS (BRAZIL)'), ('288', 'ABYROY (KAZAKHSTAN)'), ('107', 'ACAM (COSTA RICA)'), ('210', 'ACCESS COPYRIGHT (CANADA)'), ('306', 'ACCS (TRINIDAD AND TOBAGO)'), ('103', 'ACDAM (CUBA)'), ('76', 'ACEMLA (PUERTO RICO)'), ('260', 'ACS (UNITED KINGDOM)'), ('1', 'ACUM (ISRAEL)'), ('148', 'ADAGP (FRANCE)'), ('230', 'ADAVIS (CUBA)'), ('2', 'ADDAF (BRAZIL)'), ('250', 'AEI-GUATEMALA (GUATEMALA)'), ('3', 'AEPI (GREECE)'), ('4', 'AGADU (URUGUAY)'), ('289', 'AIPA (SLOVENIA)'), ('122', 'AKKA-LAA (LATVIA)'), ('5', 'AKM (AUSTRIA)'), ('127', 'ALBAUTOR (ALBANIA)'), ('54', 'ALCS (UNITED KINGDOM)'), ('30', 'AMAR (BRAZIL)'), ('12', 'AMCOS (AUSTRALIA)'), ('162', 'AMPAL (AUSTRALIA)'), ('17', 'AMRA (UNITED STATES)'), ('273', 'AMUS (BOSNIA AND HERZEGOVINA)'), ('218', 'ANACIM (BRAZIL)'), ('15', 'APA (PARAGUAY)'), ('7', 'APDAYC (PERU)'), ('163', 'APG-Japan (JAPAN)'), ('8', 'APRA (AUSTRALIA)'), ('164', 'APSAV (PERU)'), ('14', 'ARGENTORES (ARGENTINA)'), ('209', 'ARMAUTHOR NGO (ARMENIA)'), ('320', 'ARMONIA (FRANCE)'), ('149', 'ARS (UNITED STATES)'), ('236', 'ARTEGESTION (ECUADOR)'), ('9', 'ARTISJUS (HUNGARY)'), ('10', 'ASCAP (UNITED STATES)'), ('251', 'ASDACS (AUSTRALIA)'), ('219', 'ASSIM (BRAZIL)'), ('281', 'ATHINA- SADA - S.A.D.A. (GREECE)'), ('220', 'ATIDA (BRAZIL)'), ('141', 'ATN (CHILE)'), ('11', 'AUSTRO-MECHANA (AUME) (AUSTRIA)'), ('275', 'AUTODIAHIRISI (GREECE)'), ('166', 'AUTORARTE (VENEZUELA)'), ('231', 'AUTVIS (BRAZIL)'), ('203', 'AWGACS (AUSTRALIA)'), ('290', 'AZDG (AZERBAIJAN)'), ('202', 'AsDAC (MOLDOVA, REPUBLIC OF)'), ('274', 'AuPO CINEMA (UKRAINE)'), ('45', 'BBDA (BURKINA FASO)'), ('47', 'BCDA (CONGO)'), ('18', 'BGDA (GUINEA)'), ('132', 'BILD-KUNST (GERMANY)'), ('157', 'BILDRECHT GmbH (AUSTRIA)'), ('19', 'BMDA (MOROCCO)'), ('21', 'BMI (UNITED STATES)'), ('125', 'BNDA (NIGER)'), ('151', 'BONO (NORWAY)'), ('238', 'BSCAP (BELIZE)'), ('37', 'BUBEDRA (BENIN)'), ('6', 'BUCADA (CENTRAL AFRICAN REPUBLIC)'), ('23', 'BUMA (NETHERLANDS)'), ('16', 'BUMDA (MALI)'), ('24', "BURIDA (COTE D'IVOIRE)"), ('130', 'BUTODRA (TOGO)'), ('266', 'BeAT (BRUNEI DARUSSALAM)'), ('152', 'Bildupphovsrätt (Visual Copyright Society) (SWEDEN)'), ('168', 'CA (AUSTRALIA)'), ('283', 'CAPASSO (SOUTH AFRICA)'), ('264', 'CARCC (CANADA)'), ('26', 'CASH (HONG KONG)'), ('777', 'CELAS (GERMANY/UK)'), ('108', 'CHA (TAIWAN, CHINESE TAIPEI)'), ('316', 'CIS-Net AVI (FRANCE)'), ('312', 'CISAC (FRANCE)'), ('239', 'CMC (CAMEROON)'), ('88', 'CMRRA (CANADA)'), ('252', 'COLCCMA (TAIWAN, CHINESE TAIPEI)'), ('106', 'COMPASS (SINGAPORE)'), ('169', 'COSCAP (BARBADOS)'), ('124', 'COSOMA (MALAWI)'), ('268', 'COSON (NIGERIA)'), ('223', 'COSOTA (TANZANIA, UNITED REPUBLIC OF)'), ('284', 'COSOZA (ZANZIBAR)'), ('96', 'COTT (TRINIDAD AND TOBAGO)'), ('170', 'CPSN (NEPAL)'), ('171', 'CREAIMAGEN (CHILE)'), ('212', 'CSCS (CANADA)'), ('315', 'CSI (FRANCE)'), ('175', 'CopyRo (ROMANIA)'), ('248', 'DAC (ARGENTINA)'), ('296', 'DACIN-SARA (ROMANIA)'), ('153', 'DACS (UNITED KINGDOM)'), ('142', 'DALRO (SOUTH AFRICA)'), ('240', 'DAMA (SPAIN)'), ('276', 'DASC (COLOMBIA)'), ('293', 'DBCA (BRAZIL)'), ('172', 'DGA (UNITED STATES)'), ('271', 'DHFR (CROATIA)'), ('31', 'DILIA (CZECH REPUBLIC)'), ('173', 'DIRECTORES (MEXICO)'), ('145', 'DIRECTORS UK (UNITED KINGDOM)'), ('310', 'DIVA (HONG KONG)'), ('213', 'DRCC (CANADA)'), ('116', 'EAU (ESTONIA)'), ('308', 'ECAD (BRAZIL)'), ('214', 'ECCO (SAINT LUCIA)'), ('322', 'EVA (BELGIUM)'), ('147', 'FILMAUTOR (BULGARIA)'), ('174', 'FILMJUS (HUNGARY)'), ('32', 'FILSCAP (PHILIPPINES)'), ('222', 'FONOPERU (PERU)'), ('313', 'FastTrack DCN (FRANCE)'), ('261', 'GAI Uz (UZBEKISTAN)'), ('204', 'GCA (former SSA) (GEORGIA)'), ('297', 'GEDAR (BRAZIL)'), ('35', 'GEMA (GERMANY)'), ('635', 'GEMA-US (Additional CIS-Net Node)'), ('301', 'GESAC (BELGIUM)'), ('232', 'GESTOR (CZECH REPUBLIC)'), ('285', 'GHAMRO (GHANA)'), ('778', 'GMR ()'), ('144', 'HAA (CROATIA)'), ('111', 'HDS-ZAMP (CROATIA)'), ('34', 'HFA (UNITED STATES)'), ('154', 'HUNGART (HUNGARY)'), ('319', 'ICE Services AB (SWEDEN)'), ('229', 'ICG (UNITED STATES)'), ('314', 'IDA (FRANCE)'), ('128', 'IMRO (IRELAND)'), ('317', 'INTL-REP (FRANCE)'), ('36', 'IPRS (INDIA)'), ('247', 'IVARO (IRELAND)'), ('176', 'JACAP (JAMAICA)'), ('270', 'JASPAR (JAPAN)'), ('38', 'JASRAC (JAPAN)'), ('109', 'KCI (INDONESIA)'), ('40', 'KODA (DENMARK)'), ('118', 'KOMCA (KOREA, REPUBLIC OF)'), ('138', 'KOPIOSTO (FINLAND)'), ('287', 'KORRA (KOREA)'), ('178', 'KOSA (KOREA, REPUBLIC OF)'), ('179', 'KUVASTO (FINLAND)'), ('177', 'KazAK (KAZAKSTAN)'), ('215', 'Kyrgyzpatent (KYRGYZSTAN)'), ('110', 'LATGA-A (LITHUANIA)'), ('302', 'LATINAUTOR (URUGUAY)'), ('120', 'LIRA (NETHERLANDS)'), ('28', 'LITA (SLOVAKIA)'), ('41', 'LITERAR-MECHANA (AUSTRIA)'), ('309', 'LatinNet (SPAIN)'), ('265', 'MACA (MACAU)'), ('104', 'MACP (MALAYSIA)'), ('105', 'MASA (RMS) (MAURITIUS)'), ('44', 'MCPS (UNITED KINGDOM)'), ('311', 'MCPS-PRS Alliance (UNITED KINGDOM)'), ('119', 'MCSC (CHINA)'), ('43', 'MCSK (KENYA)'), ('22', 'MCSN (NIGERIA)'), ('126', 'MCT (THAILAND)'), ('117', 'MESAM (TURKEY)'), ('307', 'MIS@ASIA (SINGAPORE)'), ('272', 'MOSCAP (MONGOLIA)'), ('258', 'MRCSN (NEPAL)'), ('200', 'MSG (TURKEY)'), ('39', 'MUSICAUTOR (BULGARIA)'), ('707', 'MusicMark (USA)'), ('161', 'MÜST (TAIWAN, CHINESE TAIPEI)'), ('102', 'NASCAM (NAMIBIA)'), ('48', 'NCB (DENMARK)'), ('160', 'NCIP (BELARUS)'), ('241', 'NICAUTOR (NICARAGUA)'), ('181', 'NMPA (UNITED STATES)'), ('303', 'NORD-DOC (SWEDEN)'), ('286', 'ODDA (DJIBOUTI)'), ('291', 'OFA (SERBIA)'), ('33', 'OMDA (MADAGASCAR)'), ('49', 'ONDA (ALGERIA)'), ('298', 'OOA-S (CZECH REPUBLIC)'), ('50', 'OSA (CZECH REPUBLIC)'), ('82', 'OTPDA (TUNISIA)'), ('888', 'PAECOL (Additional CIS-Net Node)'), ('249', 'PAM CG (MONTENEGRO)'), ('182', 'PAPPRI (INDONESIA)'), ('256', 'PICTORIGHT (NETHERLANDS)'), ('51', 'PROLITTERIS (SWITZERLAND)'), ('52', 'PRS (UNITED KINGDOM)'), ('321', 'PUBLISHERS ()'), ('779', 'Polaris Nordic (SCANDINAVIA)'), ('94', 'RAO (RUSSIAN FEDERATION)'), ('294', 'REDES (COLOMBIA)'), ('228', 'ROMS (RUSSIAN FEDERATION)'), ('277', 'RSAU (RWANDA)'), ('278', 'RUR (RUSSIA)'), ('55', 'SABAM (BELGIUM)'), ('221', 'SABEM (BRAZIL)'), ('56', 'SACD (FRANCE)'), ('58', 'SACEM (FRANCE)'), ('758', 'SACEM-LIBAN (Additional CIS-Net Node)'), ('658', 'SACEM-US (Additional CIS-Net Node)'), ('233', 'SACEMLUXEMBOURG (LUXEMBOURG)'), ('235', 'SACENC (FRANCE)'), ('57', 'SACERAU (EGYPT)'), ('242', 'SACIM (EL SALVADOR)'), ('183', 'SACK (KOREA, REPUBLIC OF)'), ('59', 'SACM (MEXICO)'), ('263', 'SACS (SEYCHELLES)'), ('60', 'SACVEN (VENEZUELA)'), ('131', 'SADA (GREECE)'), ('61', 'SADAIC (ARGENTINA)'), ('62', 'SADEMBRA (BRAZIL)'), ('135', 'SADH (GREECE)'), ('243', 'SADIA (ANGOLA)'), ('295', 'SAGCRYT (MEXICO)'), ('225', 'SAIF (FRANCE)'), ('63', 'SAMRO (SOUTH AFRICA)'), ('280', 'SANASTO (FINLAND)'), ('184', 'SARTEC (CANADA)'), ('244', 'SASUR (SURINAME)'), ('257', 'SAVA (ARGENTINA)'), ('65', 'SAYCE (ECUADOR)'), ('84', 'SAYCO (COLOMBIA)'), ('112', 'SAZAS (SLOVENIA)'), ('66', 'SBACEM (BRAZIL)'), ('67', 'SBAT (BRAZIL)'), ('73', 'SCAM (FRANCE)'), ('29', 'SCD (CHILE)'), ('299', 'SCM-COOPERATIVA (CAPE VERDE)'), ('279', 'SDADV (ANDORRA)'), ('259', 'SDCSI (IRELAND)'), ('68', 'SDRM (FRANCE)'), ('71', 'SESAC Inc. (UNITED STATES)'), ('245', 'SETEM (TURKEY)'), ('192', 'SFF (SWEDEN)'), ('199', 'SFP-ZAPA (POLAND)'), ('208', 'SGA (GUINEA-BISSAU)'), ('227', 'SGACEDOM (DOMINICAN REPUBLIC)'), ('72', 'SGAE (SPAIN)'), ('672', 'SGAE-NY (Additional CIS-Net Node)'), ('186', 'SGDL (FRANCE)'), ('318', 'SGS ()'), ('74', 'SIAE (ITALY)'), ('86', 'SICAM (BRAZIL)'), ('262', 'SINEBIR (TURKEY)'), ('134', 'SLPRS (SRI LANKA)'), ('187', 'SNAC (FRANCE)'), ('129', 'SOBODAYCOM (BOLIVIA)'), ('101', 'SOCAN (CANADA)'), ('254', 'SOCILADRA (CAMEROON)'), ('189', 'SOCINPRO (BRAZIL)'), ('25', 'SODAV (SENEGAL)'), ('20', 'SODRAC (CANADA)'), ('137', 'SOFAM (BELGIUM)'), ('70', 'SOGEM (MEXICO)'), ('64', 'SOKOJ (SERBIA AND MONTENEGRO)'), ('155', 'SOMAAP (MEXICO)'), ('224', 'SOMAS (MOZAMBIQUE)'), ('304', 'SONGCODE (UNITED STATES)'), ('190', 'SOPE (GREECE)'), ('85', 'SOZA (SLOVAKIA)'), ('69', 'SPA (PORTUGAL)'), ('146', 'SPAC (PANAMA)'), ('87', 'SPACEM (FRANCE)'), ('191', 'SPACQ (CANADA)'), ('216', 'SQN (BOSNIA AND HERZEGOVINA)'), ('91', 'SSA (SWITZERLAND)'), ('77', 'STEF (ICELAND)'), ('78', 'STEMRA (NETHERLANDS)'), ('79', 'STIM (SWEDEN)'), ('80', 'SUISA (SWITZERLAND)'), ('75', 'SUISSIMAGE (SWITZERLAND)'), ('775', 'Solar EMI (GERMANY/UK)'), ('776', 'Solar Sony (GERMANY/UK)'), ('237', 'TALI (ISRAEL)'), ('143', 'TEATERAUTOR (BULGARIA)'), ('89', 'TEOSTO (FINLAND)'), ('90', 'TONO (NORWAY)'), ('207', "The Author's Registry Inc. (UNITED STATES)"), ('193', 'The Society of Authors (SOA) (UNITED KINGDOM)'), ('140', 'UACRR (UKRAINE)'), ('93', 'UBC (BRAZIL)'), ('115', 'UCMR-ADA (ROMANIA)'), ('194', 'UFFICIO GIURIDICO (HOLY SEE (VATICAN CITY STATE))'), ('206', 'UFW (FINLAND)'), ('282', 'UNAC-SA (ANGOLA)'), ('780', 'UNISON (Spain)'), ('267', 'UPRAVIS (RUSSIAN FEDERATION)'), ('234', 'UPRS (UGANDA)'), ('156', 'VAGA (UNITED STATES)'), ('246', 'VCPMC (VIET NAM)'), ('121', 'VDFS (AUSTRIA)'), ('158', 'VEGAP (SPAIN)'), ('195', 'VEVAM (NETHERLANDS)'), ('95', 'VG WORT (GERMANY)'), ('159', 'VISCOPY (AUSTRALIA)'), ('139', 'VISDA (DENMARK)'), ('269', 'WAMI (INDONESIA)'), ('196', 'WGA (UNITED STATES)'), ('197', 'WGJ (JAPAN)'), ('300', 'WID Centre (UNITED STATES)'), ('97', 'ZAIKS (POLAND)'), ('133', 'ZAMCOPS (ZAMBIA)'), ('136', 'ZAMP - Macédoine (MACEDONIA)'), ('198', 'ZAMP Association of Slovenia (SLOVENIA)'), ('98', 'ZIMURA (ZIMBABWE)'), ('292', 'ZPAP (POLAND)'), ('99', 'NO SOCIETY')], max_length=3, null=True, validators=[music_publisher.validators.CWRFieldValidator('pr_society')], verbose_name='Performance rights society'),
),
]
Loading

0 comments on commit 224abb4

Please sign in to comment.