name='CommunityAuthSite',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
- ('name', models.CharField(help_text=b"Note that the value in this field is shown on the login page, so make sure it's user-friendly!", max_length=100)),
+ ('name', models.CharField(help_text="Note that the value in this field is shown on the login page, so make sure it's user-friendly!", max_length=100)),
('redirecturl', models.URLField()),
- ('cryptkey', models.CharField(help_text=b'Use tools/communityauth/generate_cryptkey.py to create a key', max_length=100)),
+ ('cryptkey', models.CharField(help_text='Use tools/communityauth/generate_cryptkey.py to create a key', max_length=100)),
('comment', models.TextField(blank=True)),
- ('cooloff_hours', models.IntegerField(default=0, help_text=b'Number of hours a user must have existed in the systems before allowed to log in to this site')),
+ ('cooloff_hours', models.IntegerField(default=0, help_text='Number of hours a user must have existed in the systems before allowed to log in to this site')),
],
),
migrations.CreateModel(
name='CommunityAuthOrg',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('orgname', models.CharField(help_text=b'Name of the organisation', max_length=100)),
+ ('orgname', models.CharField(help_text='Name of the organisation', max_length=100)),
('require_consent', models.BooleanField(default=True)),
],
),
('firstname', models.CharField(max_length=100)),
('email', models.EmailField(max_length=254)),
('company', models.CharField(max_length=100, null=True, blank=True)),
- ('companyurl', models.URLField(max_length=100, null=True, verbose_name=b'Company URL', blank=True)),
+ ('companyurl', models.URLField(max_length=100, null=True, verbose_name='Company URL', blank=True)),
('location', models.CharField(max_length=100, null=True, blank=True)),
('contribution', models.TextField(null=True, blank=True)),
],
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('internalname', models.CharField(unique=True, max_length=32)),
('url', models.URLField()),
- ('purgepattern', models.CharField(help_text=b"NOTE! Pattern will be automatically anchored with ^ at the beginning, but you must lead with a slash in most cases - and don't forget to include the trailing $ in most cases", max_length=512, blank=True)),
+ ('purgepattern', models.CharField(help_text="NOTE! Pattern will be automatically anchored with ^ at the beginning, but you must lead with a slash in most cases - and don't forget to include the trailing $ in most cases", max_length=512, blank=True)),
],
),
migrations.CreateModel(
name='UserProfile',
fields=[
('user', models.OneToOneField(primary_key=True, serialize=False, to=settings.AUTH_USER_MODEL)),
- ('sshkey', models.TextField(help_text=b'Paste one or more public keys in OpenSSH format, one per line.', verbose_name=b'SSH key', blank=True, validators=[pgweb.core.models.validate_sshkey])),
+ ('sshkey', models.TextField(help_text='Paste one or more public keys in OpenSSH format, one per line.', verbose_name='SSH key', blank=True, validators=[pgweb.core.models.validate_sshkey])),
('lastmodified', models.DateTimeField(auto_now=True)),
],
),
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('tree', models.DecimalField(unique=True, max_digits=3, decimal_places=1)),
- ('latestminor', models.IntegerField(default=0, help_text=b"For testing versions, latestminor means latest beta/rc number. For other releases, it's the latest minor release number in the tree.")),
+ ('latestminor', models.IntegerField(default=0, help_text="For testing versions, latestminor means latest beta/rc number. For other releases, it's the latest minor release number in the tree.")),
('reldate', models.DateField()),
('relnotes', models.CharField(max_length=32)),
('current', models.BooleanField(default=False)),
('supported', models.BooleanField(default=True)),
- ('testing', models.IntegerField(default=0, help_text=b'Testing level of this release. latestminor indicates beta/rc number', choices=[(0, b'Release'), (1, b'Release candidate'), (2, b'Beta'), (3, b'Alpha')])),
- ('docsloaded', models.DateTimeField(help_text=b'The timestamp of the latest docs load. Used to control indexing and info on developer docs.', null=True, blank=True)),
- ('firstreldate', models.DateField(help_text=b'The date of the .0 release in this tree')),
- ('eoldate', models.DateField(help_text=b'The final release date for this tree')),
+ ('testing', models.IntegerField(default=0, help_text='Testing level of this release. latestminor indicates beta/rc number', choices=[(0, 'Release'), (1, 'Release candidate'), (2, 'Beta'), (3, 'Alpha')])),
+ ('docsloaded', models.DateTimeField(help_text='The timestamp of the latest docs load. Used to control indexing and info on developer docs.', null=True, blank=True)),
+ ('firstreldate', models.DateField(help_text='The date of the .0 release in this tree')),
+ ('eoldate', models.DateField(help_text='The final release date for this tree')),
],
options={
'ordering': ('-tree',),
migrations.AddField(
model_name='organisation',
name='orgtype',
- field=models.ForeignKey(verbose_name=b'Organisation type', to='core.OrganisationType'),
+ field=models.ForeignKey(verbose_name='Organisation type', to='core.OrganisationType'),
),
]
('file', models.CharField(max_length=64)),
('title', models.CharField(max_length=256, null=True, blank=True)),
('content', models.TextField(null=True, blank=True)),
- ('version', models.ForeignKey(to='core.Version', db_column=b'version', to_field=b'tree')),
+ ('version', models.ForeignKey(to='core.Version', db_column='version', to_field='tree')),
],
options={
'db_table': 'docs',
('mirror_created', models.DateTimeField(auto_now_add=True)),
('mirror_last_rsync', models.DateTimeField(default=datetime.datetime(1970, 1, 1, 0, 0))),
('mirror_index', models.IntegerField()),
- ('host_addr', models.GenericIPAddressField(default=b'0.0.0.0', null=True)),
+ ('host_addr', models.GenericIPAddressField(default='0.0.0.0', null=True)),
('host_path', models.CharField(max_length=100, null=True)),
('host_sponsor', models.CharField(max_length=100, null=True)),
('host_contact', models.CharField(max_length=100, null=True)),
('price', models.CharField(max_length=200, blank=True)),
('lastconfirmed', models.DateTimeField(auto_now_add=True)),
('category', models.ForeignKey(to='downloads.Category')),
- ('licencetype', models.ForeignKey(verbose_name=b'Licence type', to='downloads.LicenceType')),
- ('org', models.ForeignKey(db_column=b'publisher_id', verbose_name=b'Organisation', to='core.Organisation')),
+ ('licencetype', models.ForeignKey(verbose_name='Licence type', to='downloads.LicenceType')),
+ ('org', models.ForeignKey(db_column='publisher_id', verbose_name='Organisation', to='core.Organisation')),
],
options={
'ordering': ('name',),
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('textid', models.CharField(max_length=100)),
('version', models.CharField(max_length=20)),
- ('platform', models.CharField(max_length=20, choices=[(b'windows', b'Windows (32-bit)'), (b'windows-x64', b'Windows (64-bit)'), (b'osx', b'Mac OS X'), (b'linux', b'Linux (32-bit)'), (b'linux-x64', b'Linux (64-bit)')])),
- ('secondaryplatform', models.CharField(blank=True, max_length=20, choices=[(b'', b'None'), (b'windows', b'Windows (32-bit)'), (b'windows-x64', b'Windows (64-bit)'), (b'osx', b'Mac OS X'), (b'linux', b'Linux (32-bit)'), (b'linux-x64', b'Linux (64-bit)')])),
+ ('platform', models.CharField(max_length=20, choices=[('windows', 'Windows (32-bit)'), ('windows-x64', 'Windows (64-bit)'), ('osx', 'Mac OS X'), ('linux', 'Linux (32-bit)'), ('linux-x64', 'Linux (64-bit)')])),
+ ('secondaryplatform', models.CharField(blank=True, max_length=20, choices=[('', 'None'), ('windows', 'Windows (32-bit)'), ('windows-x64', 'Windows (64-bit)'), ('osx', 'Mac OS X'), ('linux', 'Linux (32-bit)'), ('linux-x64', 'Linux (64-bit)')])),
('name', models.CharField(max_length=500)),
('active', models.BooleanField(default=True)),
('description', models.TextField()),
('category', models.CharField(max_length=100)),
('pgversion', models.CharField(max_length=5, blank=True)),
('edbversion', models.CharField(max_length=5, blank=True)),
- ('format', models.CharField(max_length=5, choices=[(b'bin', b'Linux .bin'), (b'app', b'Mac .app'), (b'pkg', b'Mac .pkg'), (b'mpkg', b'Mac .mpkg'), (b'exe', b'Windows .exe'), (b'msi', b'Windows .msi')])),
+ ('format', models.CharField(max_length=5, choices=[('bin', 'Linux .bin'), ('app', 'Mac .app'), ('pkg', 'Mac .pkg'), ('mpkg', 'Mac .mpkg'), ('exe', 'Windows .exe'), ('msi', 'Windows .msi')])),
('installoptions', models.CharField(max_length=500, blank=True)),
('upgradeoptions', models.CharField(max_length=500, blank=True)),
('checksum', models.CharField(max_length=32)),
('mirrorpath', models.CharField(max_length=500, blank=True)),
('alturl', models.URLField(max_length=500, blank=True)),
- ('txtdependencies', models.CharField(help_text=b'Comma separated list of text dependencies, no spaces!', max_length=1000, verbose_name=b'Dependencies', blank=True)),
+ ('txtdependencies', models.CharField(help_text='Comma separated list of text dependencies, no spaces!', max_length=1000, verbose_name='Dependencies', blank=True)),
('versionkey', models.CharField(max_length=500)),
('manifesturl', models.URLField(max_length=500, blank=True)),
],
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('approved', models.BooleanField(default=False)),
('title', models.CharField(max_length=100)),
- ('isonline', models.BooleanField(default=False, verbose_name=b'Online event')),
+ ('isonline', models.BooleanField(default=False, verbose_name='Online event')),
('city', models.CharField(max_length=50, blank=True)),
('state', models.CharField(max_length=50, blank=True)),
('training', models.BooleanField(default=False)),
- ('startdate', models.DateField(verbose_name=b'Start date')),
- ('enddate', models.DateField(verbose_name=b'End date')),
- ('summary', models.TextField(help_text=b'A short introduction (shown on the events listing page)')),
- ('details', models.TextField(help_text=b'Complete event description')),
+ ('startdate', models.DateField(verbose_name='Start date')),
+ ('enddate', models.DateField(verbose_name='End date')),
+ ('summary', models.TextField(help_text='A short introduction (shown on the events listing page)')),
+ ('details', models.TextField(help_text='Complete event description')),
('country', models.ForeignKey(blank=True, to='core.Country', null=True)),
- ('language', models.ForeignKey(default=b'eng', blank=True, to='core.Language', help_text=b'Primary language for event. When multiple languages, specify this in the event description', null=True)),
- ('org', models.ForeignKey(verbose_name=b'Organisation', to='core.Organisation', help_text=b'If no organisations are listed, please check the <a href="/account/orglist/">organisation list</a> and contact the organisation manager or <a href="mailto:webmaster@postgresql.org">webmaster@postgresql.org</a> if none are listed.')),
+ ('language', models.ForeignKey(default='eng', blank=True, to='core.Language', help_text='Primary language for event. When multiple languages, specify this in the event description', null=True)),
+ ('org', models.ForeignKey(verbose_name='Organisation', to='core.Organisation', help_text='If no organisations are listed, please check the <a href="/account/orglist/">organisation list</a> and contact the organisation manager or <a href="mailto:webmaster@postgresql.org">webmaster@postgresql.org</a> if none are listed.')),
],
options={
'ordering': ('-startdate', '-enddate'),
migrations.AddField(
model_name='event',
name='badged',
- field=models.BooleanField(default=False, help_text=b'Choose "Community event" if this is a community recognized event following the <a href="/community/recognition/#conferences" target="_blank">community event guidelines</a>.', verbose_name=b'Community event'),
+ field=models.BooleanField(default=False, help_text='Choose "Community event" if this is a community recognized event following the <a href="/community/recognition/#conferences" target="_blank">community event guidelines</a>.', verbose_name='Community event'),
),
migrations.AddField(
model_name='event',
name='description_for_badged',
- field=models.TextField(help_text=b'DEPRECRATED: This was used in the beginning of community events to collect additional information.', null=True, blank=True, verbose_name=b'Description for community event'),
+ field=models.TextField(help_text='DEPRECRATED: This was used in the beginning of community events to collect additional information.', null=True, blank=True, verbose_name='Description for community event'),
),
]
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('featurename', models.CharField(max_length=100)),
('featuredescription', models.TextField(blank=True)),
- ('v74', models.IntegerField(default=0, verbose_name=b'7.4', choices=[(0, b'No'), (1, b'Yes'), (2, b'Obsolete'), (3, b'?')])),
- ('v80', models.IntegerField(default=0, verbose_name=b'8.0', choices=[(0, b'No'), (1, b'Yes'), (2, b'Obsolete'), (3, b'?')])),
- ('v81', models.IntegerField(default=0, verbose_name=b'8.1', choices=[(0, b'No'), (1, b'Yes'), (2, b'Obsolete'), (3, b'?')])),
- ('v82', models.IntegerField(default=0, verbose_name=b'8.2', choices=[(0, b'No'), (1, b'Yes'), (2, b'Obsolete'), (3, b'?')])),
- ('v83', models.IntegerField(default=0, verbose_name=b'8.3', choices=[(0, b'No'), (1, b'Yes'), (2, b'Obsolete'), (3, b'?')])),
- ('v84', models.IntegerField(default=0, verbose_name=b'8.4', choices=[(0, b'No'), (1, b'Yes'), (2, b'Obsolete'), (3, b'?')])),
- ('v90', models.IntegerField(default=0, verbose_name=b'9.0', choices=[(0, b'No'), (1, b'Yes'), (2, b'Obsolete'), (3, b'?')])),
- ('v91', models.IntegerField(default=0, verbose_name=b'9.1', choices=[(0, b'No'), (1, b'Yes'), (2, b'Obsolete'), (3, b'?')])),
- ('v92', models.IntegerField(default=0, verbose_name=b'9.2', choices=[(0, b'No'), (1, b'Yes'), (2, b'Obsolete'), (3, b'?')])),
- ('v93', models.IntegerField(default=0, verbose_name=b'9.3', choices=[(0, b'No'), (1, b'Yes'), (2, b'Obsolete'), (3, b'?')])),
- ('v94', models.IntegerField(default=0, verbose_name=b'9.4', choices=[(0, b'No'), (1, b'Yes'), (2, b'Obsolete'), (3, b'?')])),
- ('v95', models.IntegerField(default=0, verbose_name=b'9.5', choices=[(0, b'No'), (1, b'Yes'), (2, b'Obsolete'), (3, b'?')])),
+ ('v74', models.IntegerField(default=0, verbose_name='7.4', choices=[(0, 'No'), (1, 'Yes'), (2, 'Obsolete'), (3, '?')])),
+ ('v80', models.IntegerField(default=0, verbose_name='8.0', choices=[(0, 'No'), (1, 'Yes'), (2, 'Obsolete'), (3, '?')])),
+ ('v81', models.IntegerField(default=0, verbose_name='8.1', choices=[(0, 'No'), (1, 'Yes'), (2, 'Obsolete'), (3, '?')])),
+ ('v82', models.IntegerField(default=0, verbose_name='8.2', choices=[(0, 'No'), (1, 'Yes'), (2, 'Obsolete'), (3, '?')])),
+ ('v83', models.IntegerField(default=0, verbose_name='8.3', choices=[(0, 'No'), (1, 'Yes'), (2, 'Obsolete'), (3, '?')])),
+ ('v84', models.IntegerField(default=0, verbose_name='8.4', choices=[(0, 'No'), (1, 'Yes'), (2, 'Obsolete'), (3, '?')])),
+ ('v90', models.IntegerField(default=0, verbose_name='9.0', choices=[(0, 'No'), (1, 'Yes'), (2, 'Obsolete'), (3, '?')])),
+ ('v91', models.IntegerField(default=0, verbose_name='9.1', choices=[(0, 'No'), (1, 'Yes'), (2, 'Obsolete'), (3, '?')])),
+ ('v92', models.IntegerField(default=0, verbose_name='9.2', choices=[(0, 'No'), (1, 'Yes'), (2, 'Obsolete'), (3, '?')])),
+ ('v93', models.IntegerField(default=0, verbose_name='9.3', choices=[(0, 'No'), (1, 'Yes'), (2, 'Obsolete'), (3, '?')])),
+ ('v94', models.IntegerField(default=0, verbose_name='9.4', choices=[(0, 'No'), (1, 'Yes'), (2, 'Obsolete'), (3, '?')])),
+ ('v95', models.IntegerField(default=0, verbose_name='9.5', choices=[(0, 'No'), (1, 'Yes'), (2, 'Obsolete'), (3, '?')])),
],
),
migrations.CreateModel(
migrations.AddField(
model_name='feature',
name='v96',
- field=models.IntegerField(default=0, verbose_name=b'9.6', choices=[(0, b'No'), (1, b'Yes'), (2, b'Obsolete'), (3, b'?')]),
+ field=models.IntegerField(default=0, verbose_name='9.6', choices=[(0, 'No'), (1, 'Yes'), (2, 'Obsolete'), (3, '?')]),
),
migrations.RunSQL("UPDATE featurematrix_feature SET v96=v95 WHERE NOT v96=v95"),
]
migrations.AddField(
model_name='feature',
name='v10',
- field=models.IntegerField(default=0, verbose_name=b'10', choices=[(0, b'No'), (1, b'Yes'), (2, b'Obsolete'), (3, b'?')]),
+ field=models.IntegerField(default=0, verbose_name='10', choices=[(0, 'No'), (1, 'Yes'), (2, 'Obsolete'), (3, '?')]),
),
migrations.RunSQL("UPDATE featurematrix_feature SET v10=v96 WHERE NOT v10=v96"),
]
migrations.AddField(
model_name='feature',
name='v11',
- field=models.IntegerField(choices=[(0, b'No'), (1, b'Yes'), (2, b'Obsolete'), (3, b'?')], default=0, verbose_name=b'11'),
+ field=models.IntegerField(choices=[(0, 'No'), (1, 'Yes'), (2, 'Obsolete'), (3, '?')], default=0, verbose_name='11'),
),
migrations.RunSQL("UPDATE featurematrix_feature SET v11=v10 WHERE NOT v11=v10"),
]
('date', models.DateField(default=datetime.date.today)),
('title', models.CharField(max_length=200)),
('content', models.TextField()),
- ('org', models.ForeignKey(verbose_name=b'Organisation', to='core.Organisation', help_text=b'If no organisations are listed, please check the <a href="/account/orglist/">organisation list</a> and contact the organisation manager or <a href="mailto:webmaster@postgresql.org">webmaster@postgresql.org</a> if none are listed.')),
+ ('org', models.ForeignKey(verbose_name='Organisation', to='core.Organisation', help_text='If no organisations are listed, please check the <a href="/account/orglist/">organisation list</a> and contact the organisation manager or <a href="mailto:webmaster@postgresql.org">webmaster@postgresql.org</a> if none are listed.')),
],
options={
'ordering': ('-date',),
migrations.AddField(
model_name='newsarticle',
name='tags',
- field=models.ManyToManyField(help_text=b'Hover mouse over tags to view full description', to='news.NewsTag'),
+ field=models.ManyToManyField(help_text='Hover mouse over tags to view full description', to='news.NewsTag'),
),
]
('description', models.TextField()),
('employees', models.CharField(max_length=32, null=True, blank=True)),
('locations', models.CharField(max_length=128, null=True, blank=True)),
- ('region_africa', models.BooleanField(default=False, verbose_name=b'Africa')),
- ('region_asia', models.BooleanField(default=False, verbose_name=b'Asia')),
- ('region_europe', models.BooleanField(default=False, verbose_name=b'Europe')),
- ('region_northamerica', models.BooleanField(default=False, verbose_name=b'North America')),
- ('region_oceania', models.BooleanField(default=False, verbose_name=b'Oceania')),
- ('region_southamerica', models.BooleanField(default=False, verbose_name=b'South America')),
+ ('region_africa', models.BooleanField(default=False, verbose_name='Africa')),
+ ('region_asia', models.BooleanField(default=False, verbose_name='Asia')),
+ ('region_europe', models.BooleanField(default=False, verbose_name='Europe')),
+ ('region_northamerica', models.BooleanField(default=False, verbose_name='North America')),
+ ('region_oceania', models.BooleanField(default=False, verbose_name='Oceania')),
+ ('region_southamerica', models.BooleanField(default=False, verbose_name='South America')),
('hours', models.CharField(max_length=128, null=True, blank=True)),
('languages', models.CharField(max_length=128, null=True, blank=True)),
- ('customerexample', models.TextField(null=True, verbose_name=b'Customer Example', blank=True)),
+ ('customerexample', models.TextField(null=True, verbose_name='Customer Example', blank=True)),
('experience', models.TextField(null=True, blank=True)),
('contact', models.TextField(null=True, blank=True)),
- ('url', models.URLField(max_length=128, null=True, verbose_name=b'URL', blank=True)),
+ ('url', models.URLField(max_length=128, null=True, verbose_name='URL', blank=True)),
('provides_support', models.BooleanField(default=False)),
('provides_hosting', models.BooleanField(default=False)),
- ('interfaces', models.CharField(max_length=512, null=True, verbose_name=b'Interfaces (for hosting)', blank=True)),
- ('org', models.OneToOneField(db_column=b'organisation_id', to='core.Organisation', help_text=b'If no organisations are listed, please check the <a href="/account/orglist/">organisation list</a> and contact the organisation manager or <a href="mailto:webmaster@postgresql.org">webmaster@postgresql.org</a> if none are listed.', verbose_name=b'organisation')),
+ ('interfaces', models.CharField(max_length=512, null=True, verbose_name='Interfaces (for hosting)', blank=True)),
+ ('org', models.OneToOneField(db_column='organisation_id', to='core.Organisation', help_text='If no organisations are listed, please check the <a href="/account/orglist/">organisation list</a> and contact the organisation manager or <a href="mailto:webmaster@postgresql.org">webmaster@postgresql.org</a> if none are listed.', verbose_name='organisation')),
],
options={
'ordering': ('org__name',),
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('approved', models.BooleanField(default=False)),
- ('locale', models.CharField(help_text=b"Locale where the PUG meets, e.g. 'New York City'", max_length=255)),
- ('title', models.CharField(help_text=b"Title/Name of the PUG, e.g. 'NYC PostgreSQL User Group'", max_length=255)),
+ ('locale', models.CharField(help_text="Locale where the PUG meets, e.g. 'New York City'", max_length=255)),
+ ('title', models.CharField(help_text="Title/Name of the PUG, e.g. 'NYC PostgreSQL User Group'", max_length=255)),
('website_url', models.TextField(null=True, blank=True)),
('mailing_list_url', models.TextField(null=True, blank=True)),
('country', models.ForeignKey(to='core.Country')),
- ('org', models.ForeignKey(blank=True, to='core.Organisation', help_text=b'Organisation that manages the PUG and its contents', null=True)),
+ ('org', models.ForeignKey(blank=True, to='core.Organisation', help_text='Organisation that manages the PUG and its contents', null=True)),
],
),
]
('cvenumber', models.IntegerField(db_index=True)),
('detailslink', models.URLField(blank=True)),
('description', models.TextField()),
- ('component', models.CharField(help_text=b'If multiple components, choose the most critical one', max_length=32, choices=[(b'core server', b'Core server product'), (b'client', b'Client library or application only'), (b'contrib module', b'Contrib module only'), (b'client contrib module', b'Client contrib module only'), (b'packaging', b'Packaging, e.g. installers or RPM'), (b'other', b'Other')])),
- ('vector_av', models.CharField(blank=True, max_length=1, verbose_name=b'Attack Vector', choices=[('N', 'Network'), ('A', 'Adjacent'), ('L', 'Local'), ('P', 'Physical')])),
- ('vector_ac', models.CharField(blank=True, max_length=1, verbose_name=b'Attack Complexity', choices=[('L', 'Low'), ('H', 'High')])),
- ('vector_pr', models.CharField(blank=True, max_length=1, verbose_name=b'Privileges Required', choices=[('N', 'None'), ('L', 'Low'), ('H', 'High')])),
- ('vector_ui', models.CharField(blank=True, max_length=1, verbose_name=b'User Interaction', choices=[('N', 'None'), ('R', 'Required')])),
- ('vector_s', models.CharField(blank=True, max_length=1, verbose_name=b'Scope', choices=[('C', 'Changed'), ('U', 'Unchanged')])),
- ('vector_c', models.CharField(blank=True, max_length=1, verbose_name=b'Confidentiality Impact', choices=[('H', 'High'), ('L', 'Low'), ('N', 'None')])),
- ('vector_i', models.CharField(blank=True, max_length=1, verbose_name=b'Integrity Impact', choices=[('H', 'High'), ('L', 'Low'), ('N', 'None')])),
- ('vector_a', models.CharField(blank=True, max_length=1, verbose_name=b'Availability Impact', choices=[('H', 'High'), ('L', 'Low'), ('N', 'None')])),
- ('legacyscore', models.CharField(blank=True, max_length=1, verbose_name=b'Legacy score', choices=[(b'A', b'A'), (b'B', b'B'), (b'C', b'C'), (b'D', b'D')])),
+ ('component', models.CharField(help_text='If multiple components, choose the most critical one', max_length=32, choices=[('core server', 'Core server product'), ('client', 'Client library or application only'), ('contrib module', 'Contrib module only'), ('client contrib module', 'Client contrib module only'), ('packaging', 'Packaging, e.g. installers or RPM'), ('other', 'Other')])),
+ ('vector_av', models.CharField(blank=True, max_length=1, verbose_name='Attack Vector', choices=[('N', 'Network'), ('A', 'Adjacent'), ('L', 'Local'), ('P', 'Physical')])),
+ ('vector_ac', models.CharField(blank=True, max_length=1, verbose_name='Attack Complexity', choices=[('L', 'Low'), ('H', 'High')])),
+ ('vector_pr', models.CharField(blank=True, max_length=1, verbose_name='Privileges Required', choices=[('N', 'None'), ('L', 'Low'), ('H', 'High')])),
+ ('vector_ui', models.CharField(blank=True, max_length=1, verbose_name='User Interaction', choices=[('N', 'None'), ('R', 'Required')])),
+ ('vector_s', models.CharField(blank=True, max_length=1, verbose_name='Scope', choices=[('C', 'Changed'), ('U', 'Unchanged')])),
+ ('vector_c', models.CharField(blank=True, max_length=1, verbose_name='Confidentiality Impact', choices=[('H', 'High'), ('L', 'Low'), ('N', 'None')])),
+ ('vector_i', models.CharField(blank=True, max_length=1, verbose_name='Integrity Impact', choices=[('H', 'High'), ('L', 'Low'), ('N', 'None')])),
+ ('vector_a', models.CharField(blank=True, max_length=1, verbose_name='Availability Impact', choices=[('H', 'High'), ('L', 'Low'), ('N', 'None')])),
+ ('legacyscore', models.CharField(blank=True, max_length=1, verbose_name='Legacy score', choices=[('A', 'A'), ('B', 'B'), ('C', 'C'), ('D', 'D')])),
('newspost', models.ForeignKey(blank=True, to='news.NewsArticle', null=True)),
],
options={