Skip to content

Commit 72b6b8b

Browse files
authored
Relate sponsorship benefits with legal clauses (#1695)
1 parent 30a94fc commit 72b6b8b

File tree

3 files changed

+118
-0
lines changed

3 files changed

+118
-0
lines changed

sponsors/admin.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
Sponsorship,
1616
SponsorContact,
1717
SponsorBenefit,
18+
LegalClause,
1819
)
1920
from sponsors import use_cases
2021
from sponsors.forms import SponsorshipReviewAdminForm
@@ -65,6 +66,7 @@ class SponsorshipBenefitAdmin(OrderedModelAdmin):
6566
"internal_value",
6667
"capacity",
6768
"soft_capacity",
69+
"legal_clauses",
6870
"conflicts",
6971
)
7072
},
@@ -316,3 +318,8 @@ def approve_sponsorship_view(self, request, pk):
316318
return render(
317319
request, "sponsors/admin/approve_application.html", context=context
318320
)
321+
322+
323+
@admin.register(LegalClause)
324+
class LegalClauseModelAdmin(OrderedModelAdmin):
325+
list_display = ["internal_name"]
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
# Generated by Django 2.0.13 on 2020-12-01 16:59
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
("sponsors", "0017_sponsorbenefit_added_by_user"),
10+
]
11+
12+
operations = [
13+
migrations.CreateModel(
14+
name="LegalClause",
15+
fields=[
16+
(
17+
"id",
18+
models.AutoField(
19+
auto_created=True,
20+
primary_key=True,
21+
serialize=False,
22+
verbose_name="ID",
23+
),
24+
),
25+
(
26+
"order",
27+
models.PositiveIntegerField(
28+
db_index=True, editable=False, verbose_name="order"
29+
),
30+
),
31+
(
32+
"internal_name",
33+
models.CharField(
34+
help_text="Friendly name used internally by PSF to reference this clause",
35+
max_length=1024,
36+
verbose_name="Internal Name",
37+
),
38+
),
39+
(
40+
"clause",
41+
models.TextField(
42+
help_text="Legal clause text to be added to statement of work",
43+
verbose_name="Clause",
44+
),
45+
),
46+
(
47+
"notes",
48+
models.TextField(
49+
blank=True,
50+
default="",
51+
help_text="PSF staff notes",
52+
verbose_name="Notes",
53+
),
54+
),
55+
],
56+
options={
57+
"ordering": ("order",),
58+
"abstract": False,
59+
},
60+
),
61+
migrations.AlterField(
62+
model_name="sponsorshipbenefit",
63+
name="package_only",
64+
field=models.BooleanField(
65+
default=False,
66+
help_text="If a benefit is only available via a sponsorship package, select this option.",
67+
verbose_name="Sponsor Package Only Benefit",
68+
),
69+
),
70+
migrations.AddField(
71+
model_name="sponsorshipbenefit",
72+
name="legal_clauses",
73+
field=models.ManyToManyField(
74+
blank=True,
75+
help_text="Legal clauses to be displayed in the statement of work",
76+
related_name="benefits",
77+
to="sponsors.LegalClause",
78+
verbose_name="Legal Clauses",
79+
),
80+
),
81+
]

sponsors/models.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,13 @@ class SponsorshipBenefit(OrderedModel):
123123
)
124124

125125
# Internal
126+
legal_clauses = models.ManyToManyField(
127+
"LegalClause",
128+
related_name="benefits",
129+
verbose_name="Legal Clauses",
130+
help_text="Legal clauses to be displayed in the statement of work",
131+
blank=True,
132+
)
126133
internal_description = models.TextField(
127134
null=True,
128135
blank=True,
@@ -438,3 +445,26 @@ def verified_emails(self, initial_emails=None):
438445

439446
def __str__(self):
440447
return f"{self.name}"
448+
449+
450+
class LegalClause(OrderedModel):
451+
internal_name = models.CharField(
452+
max_length=1024,
453+
verbose_name="Internal Name",
454+
help_text="Friendly name used internally by PSF to reference this clause",
455+
blank=False,
456+
)
457+
clause = models.TextField(
458+
verbose_name="Clause",
459+
help_text="Legal clause text to be added to statement of work",
460+
blank=False,
461+
)
462+
notes = models.TextField(
463+
verbose_name="Notes", help_text="PSF staff notes", blank=True, default=""
464+
)
465+
466+
def __str__(self):
467+
return f"Clause: {self.internal_name}"
468+
469+
class Meta(OrderedModel.Meta):
470+
pass

0 commit comments

Comments
 (0)