refactor(directory): ♻ revise License permission schema

This commit is contained in:
Collin M. Barrett 2020-08-27 20:38:56 -05:00
parent 378f8dec59
commit c052e05dba
5 changed files with 158 additions and 103 deletions

View file

@ -2,303 +2,347 @@
{
"id": 1,
"name": "CC BY-NC-ND 4.0",
"permissiveAdaptation": false,
"permissiveCommercial": false,
"permitsCommercialUse": false,
"permitsDistribution": false,
"permitsModification": false,
"url": "https://creativecommons.org/licenses/by-nc-nd/4.0/"
},
{
"id": 2,
"name": "The MIT License",
"permissiveAdaptation": true,
"permissiveCommercial": true,
"permitsCommercialUse": true,
"permitsDistribution": false,
"permitsModification": true,
"url": "https://opensource.org/licenses/MIT"
},
{
"id": 3,
"name": "Restricted",
"permissiveAdaptation": false,
"permissiveCommercial": false
"permitsCommercialUse": false,
"permitsDistribution": false,
"permitsModification": false
},
{
"id": 4,
"name": "GPLv3",
"permissiveAdaptation": true,
"permissiveCommercial": true,
"permitsCommercialUse": true,
"permitsDistribution": false,
"permitsModification": true,
"url": "https://www.gnu.org/licenses/gpl-3.0.en.html"
},
{
"id": 5,
"name": "All Rights Reserved",
"permissiveAdaptation": false,
"permissiveCommercial": false,
"permitsCommercialUse": false,
"permitsDistribution": false,
"permitsModification": false,
"url": "https://en.wikipedia.org/wiki/All_rights_reserved"
},
{
"id": 6,
"name": "CC BY-NC-SA 3.0",
"permissiveAdaptation": true,
"permissiveCommercial": false,
"permitsCommercialUse": false,
"permitsDistribution": false,
"permitsModification": true,
"url": "https://creativecommons.org/licenses/by-nc-sa/3.0/"
},
{
"id": 7,
"name": "Permissive",
"permissiveAdaptation": true,
"permissiveCommercial": true
"permitsCommercialUse": true,
"permitsDistribution": false,
"permitsModification": true
},
{
"id": 8,
"name": "CC BY-SA 4.0",
"permissiveAdaptation": true,
"permissiveCommercial": true,
"permitsCommercialUse": true,
"permitsDistribution": false,
"permitsModification": true,
"url": "https://creativecommons.org/licenses/by-sa/4.0/"
},
{
"id": 9,
"name": "CC BY-NC-SA 4.0",
"permissiveAdaptation": true,
"permissiveCommercial": false,
"permitsCommercialUse": false,
"permitsDistribution": false,
"permitsModification": true,
"url": "https://creativecommons.org/licenses/by-nc-sa/4.0/"
},
{
"id": 10,
"name": "BSD-3-Clause",
"permissiveAdaptation": true,
"permissiveCommercial": true,
"permitsCommercialUse": true,
"permitsDistribution": false,
"permitsModification": true,
"url": "https://opensource.org/licenses/BSD-3-Clause"
},
{
"id": 11,
"name": "The Unlicense",
"permissiveAdaptation": true,
"permissiveCommercial": true,
"permitsCommercialUse": true,
"permitsDistribution": false,
"permitsModification": true,
"url": "https://unlicense.org/"
},
{
"id": 12,
"name": "CC BY-SA 3.0",
"permissiveAdaptation": true,
"permissiveCommercial": true,
"permitsCommercialUse": true,
"permitsDistribution": false,
"permitsModification": true,
"url": "https://creativecommons.org/licenses/by-sa/3.0/"
},
{
"id": 13,
"name": "CC BY-NC 4.0",
"permissiveAdaptation": true,
"permissiveCommercial": false,
"permitsCommercialUse": false,
"permitsDistribution": false,
"permitsModification": true,
"url": "https://creativecommons.org/licenses/by-nc/4.0/"
},
{
"id": 14,
"name": "WTFPL",
"permissiveAdaptation": true,
"permissiveCommercial": true,
"permitsCommercialUse": true,
"permitsDistribution": false,
"permitsModification": true,
"url": "http://www.wtfpl.net/"
},
{
"id": 15,
"name": "CC BY-ND 4.0",
"permissiveAdaptation": false,
"permissiveCommercial": true,
"permitsCommercialUse": true,
"permitsDistribution": false,
"permitsModification": false,
"url": "https://creativecommons.org/licenses/by-nd/4.0/"
},
{
"id": 16,
"name": "CC BY 3.0",
"permissiveAdaptation": true,
"permissiveCommercial": true,
"permitsCommercialUse": true,
"permitsDistribution": false,
"permitsModification": true,
"url": "https://creativecommons.org/licenses/by/3.0/"
},
{
"id": 17,
"name": "ISC",
"permissiveAdaptation": true,
"permissiveCommercial": true,
"permitsCommercialUse": true,
"permitsDistribution": false,
"permitsModification": true,
"url": "https://opensource.org/licenses/ISC"
},
{
"id": 18,
"name": "Apache 2.0",
"permissiveAdaptation": true,
"permissiveCommercial": true,
"permitsCommercialUse": true,
"permitsDistribution": false,
"permitsModification": true,
"url": "https://www.apache.org/licenses/LICENSE-2.0"
},
{
"id": 19,
"name": "GPLv2",
"permissiveAdaptation": true,
"permissiveCommercial": true,
"permitsCommercialUse": true,
"permitsDistribution": false,
"permitsModification": true,
"url": "https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
},
{
"id": 20,
"name": "Public Domain",
"permissiveAdaptation": true,
"permissiveCommercial": true
"permitsCommercialUse": true,
"permitsDistribution": false,
"permitsModification": true
},
{
"id": 21,
"name": "OSINT",
"permissiveAdaptation": true,
"permissiveCommercial": true,
"permitsCommercialUse": true,
"permitsDistribution": false,
"permitsModification": true,
"url": "https://osint.bambenekconsulting.com/license.txt"
},
{
"id": 22,
"name": "GoogleHosts",
"permissiveAdaptation": false,
"permissiveCommercial": false,
"permitsCommercialUse": false,
"permitsDistribution": false,
"permitsModification": false,
"url": "https://raw.githubusercontent.com/googlehosts/hosts/master/LICENSE"
},
{
"id": 23,
"name": "\"Don't Be A Dick\" Public License",
"permissiveAdaptation": true,
"permissiveCommercial": true,
"permitsCommercialUse": true,
"permitsDistribution": false,
"permitsModification": true,
"url": "https://dbad-license.org/"
},
{
"id": 24,
"name": "CC BY 4.0",
"permissiveAdaptation": true,
"permissiveCommercial": true,
"permitsCommercialUse": true,
"permitsDistribution": false,
"permitsModification": true,
"url": "https://creativecommons.org/licenses/by/4.0/"
},
{
"id": 25,
"name": "CC BY-NC-SA 2.5",
"permissiveAdaptation": true,
"permissiveCommercial": false,
"permitsCommercialUse": false,
"permitsDistribution": false,
"permitsModification": true,
"url": "https://creativecommons.org/licenses/by-nc-sa/2.5/"
},
{
"id": 26,
"name": "CC BY-NC-ND 3.0",
"permissiveAdaptation": false,
"permissiveCommercial": false,
"permitsCommercialUse": false,
"permitsDistribution": false,
"permitsModification": false,
"url": "https://creativecommons.org/licenses/by-nc-nd/3.0/"
},
{
"id": 27,
"name": "BSD-2-Clause",
"permissiveAdaptation": true,
"permissiveCommercial": true,
"permitsCommercialUse": true,
"permitsDistribution": false,
"permitsModification": true,
"url": "https://opensource.org/licenses/BSD-2-Clause"
},
{
"id": 28,
"name": "CC0 1.0 Universal",
"permissiveAdaptation": true,
"permissiveCommercial": true,
"permitsCommercialUse": true,
"permitsDistribution": false,
"permitsModification": true,
"url": "https://creativecommons.org/publicdomain/zero/1.0/"
},
{
"id": 29,
"name": "The Beer-Ware License",
"permissiveAdaptation": true,
"permissiveCommercial": true,
"permitsCommercialUse": true,
"permitsDistribution": false,
"permitsModification": true,
"url": "https://spdx.org/licenses/Beerware.html"
},
{
"id": 30,
"name": "CC BY-SA 2.1 JP",
"permissiveAdaptation": true,
"permissiveCommercial": true,
"permitsCommercialUse": true,
"permitsDistribution": false,
"permitsModification": true,
"url": "https://creativecommons.org/licenses/by-sa/2.1/jp/deed.en"
},
{
"id": 31,
"name": "CC BY-NC 3.0",
"permissiveAdaptation": true,
"permissiveCommercial": false,
"permitsCommercialUse": false,
"permitsDistribution": false,
"permitsModification": true,
"url": "https://creativecommons.org/licenses/by-nc/3.0/"
},
{
"id": 32,
"name": "Permissive non-commercial",
"permissiveAdaptation": true,
"permissiveCommercial": false
"permitsCommercialUse": false,
"permitsDistribution": false,
"permitsModification": true
},
{
"id": 33,
"name": "Mozilla Public License v2.0",
"permissiveAdaptation": true,
"permissiveCommercial": true,
"permitsCommercialUse": true,
"permitsDistribution": false,
"permitsModification": true,
"url": "https://www.mozilla.org/MPL/2.0/"
},
{
"id": 34,
"name": "Lesser GPL v3",
"permissiveAdaptation": true,
"permissiveCommercial": true,
"permitsCommercialUse": true,
"permitsDistribution": false,
"permitsModification": true,
"url": "https://www.gnu.org/licenses/lgpl-3.0.en.html"
},
{
"id": 35,
"name": "Dandelicence",
"permissiveAdaptation": true,
"permissiveCommercial": true,
"permitsCommercialUse": true,
"permitsDistribution": false,
"permitsModification": true,
"url": "https://github.com/DandelionSprout/Dandelicence/blob/master/DandelicenceNewestVersion.md"
},
{
"id": 36,
"name": "CC BY-ND 3.0",
"permissiveAdaptation": false,
"permissiveCommercial": true,
"permitsCommercialUse": true,
"permitsDistribution": false,
"permitsModification": false,
"url": "https://creativecommons.org/licenses/by-nd/3.0/"
},
{
"id": 37,
"name": "Lesser GPL v2.1",
"permissiveAdaptation": true,
"permissiveCommercial": true,
"permitsCommercialUse": true,
"permitsDistribution": false,
"permitsModification": true,
"url": "https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html"
},
{
"id": 38,
"name": "Generic copyfree",
"permissiveAdaptation": true,
"permissiveCommercial": true
"permitsCommercialUse": true,
"permitsDistribution": false,
"permitsModification": true
},
{
"id": 39,
"name": "Generic copyleft",
"permissiveAdaptation": true,
"permissiveCommercial": true
"permitsCommercialUse": true,
"permitsDistribution": false,
"permitsModification": true
},
{
"id": 40,
"name": "McRae General Public License",
"permissiveAdaptation": true,
"permissiveCommercial": false,
"permitsCommercialUse": false,
"permitsDistribution": false,
"permitsModification": true,
"url": "https://pgl.yoyo.org/license/"
},
{
"id": 41,
"name": "AGPLv1",
"permissiveAdaptation": true,
"permissiveCommercial": true,
"permitsCommercialUse": true,
"permitsDistribution": false,
"permitsModification": true,
"url": "https://directory.fsf.org/wiki/License:AGPL-1.0"
},
{
"id": 42,
"name": "AGPLv2",
"permissiveAdaptation": true,
"permissiveCommercial": true,
"permitsCommercialUse": true,
"permitsDistribution": false,
"permitsModification": true,
"url": "https://www.vicidial.com/?page_id=260"
},
{
"id": 43,
"name": "AGPLv3",
"permissiveAdaptation": true,
"permissiveCommercial": true,
"permitsCommercialUse": true,
"permitsDistribution": false,
"permitsModification": true,
"url": "https://www.gnu.org/licenses/agpl-3.0.html"
},
{
"id": 44,
"name": "CPAL-1.0",
"permissiveAdaptation": true,
"permissiveCommercial": true,
"permitsCommercialUse": true,
"permitsDistribution": false,
"permitsModification": true,
"url": "https://opensource.org/licenses/CPAL-1.0"
}
]

View file

@ -10,7 +10,7 @@
namespace FilterLists.Directory.Infrastructure.Migrations.Migrations
{
[DbContext(typeof(QueryDbContext))]
[Migration("20200828005349_Initial")]
[Migration("20200828014014_Initial")]
partial class Initial
{
protected override void BuildTargetModel(ModelBuilder modelBuilder)
@ -217,13 +217,19 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder)
.HasColumnType("integer")
.HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
b.Property<string>("GitHubKey")
.HasColumnType("text");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text");
b.Property<bool>("PermitsCommercialUse")
.HasColumnType("boolean");
b.Property<bool>("PermitsDistribution")
.HasColumnType("boolean");
b.Property<bool>("PermitsModification")
.HasColumnType("boolean");
b.Property<string>("Url")
.HasColumnType("text");

View file

@ -26,8 +26,10 @@ protected override void Up(MigrationBuilder migrationBuilder)
Id = table.Column<int>(nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
Name = table.Column<string>(nullable: false),
GitHubKey = table.Column<string>(nullable: true),
Url = table.Column<string>(nullable: true)
Url = table.Column<string>(nullable: true),
PermitsModification = table.Column<bool>(nullable: false),
PermitsDistribution = table.Column<bool>(nullable: false),
PermitsCommercialUse = table.Column<bool>(nullable: false)
},
constraints: table =>
{

View file

@ -215,13 +215,19 @@ protected override void BuildModel(ModelBuilder modelBuilder)
.HasColumnType("integer")
.HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
b.Property<string>("GitHubKey")
.HasColumnType("text");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text");
b.Property<bool>("PermitsCommercialUse")
.HasColumnType("boolean");
b.Property<bool>("PermitsDistribution")
.HasColumnType("boolean");
b.Property<bool>("PermitsModification")
.HasColumnType("boolean");
b.Property<string>("Url")
.HasColumnType("text");

View file

@ -9,14 +9,11 @@ public class License
{
public int Id { get; set; }
public string Name { get; set; } = null!;
// TODO: add to seed data
public string? GitHubKey { get; set; }
public Uri? Url { get; set; }
public bool PermitsModification { get; set; }
public bool PermitsDistribution { get; set; }
public bool PermitsCommercialUse { get; set; }
public IReadOnlyCollection<FilterList> FilterLists { get; private set; } = new HashSet<FilterList>();
// TODO: rm or capture permissiveX from seed data
}
internal class LicenseTypeConfiguration : IEntityTypeConfiguration<License>