Skip to content

Commit a6092fe

Browse files
committed
Add BoD entity support
1 parent 70d24d5 commit a6092fe

File tree

6 files changed

+98
-1
lines changed

6 files changed

+98
-1
lines changed
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
"""Board of Directors admin configuration."""
2+
3+
from django.contrib import admin
4+
5+
from apps.owasp.models.board_of_directors import BoardOfDirectors
6+
7+
8+
class BoardOfDirectorsAdmin(admin.ModelAdmin):
9+
"""Admin for Snapshot model."""
10+
11+
list_filter = ("year",)
12+
ordering = ("-year",)
13+
search_fields = ("year",)
14+
15+
16+
admin.site.register(BoardOfDirectors, BoardOfDirectorsAdmin)
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# Generated by Django 5.2.5 on 2025-09-03 15:46
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
dependencies = [
8+
("owasp", "0048_entitymember"),
9+
]
10+
11+
operations = [
12+
migrations.CreateModel(
13+
name="BoardOfDirectors",
14+
fields=[
15+
(
16+
"id",
17+
models.BigAutoField(
18+
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
19+
),
20+
),
21+
("created_at", models.DateTimeField(auto_now_add=True)),
22+
("updated_at", models.DateTimeField(auto_now=True)),
23+
("year", models.PositiveSmallIntegerField(unique=True)),
24+
],
25+
options={
26+
"verbose_name_plural": "Board of Directors",
27+
"db_table": "owasp_board_of_directors",
28+
},
29+
),
30+
]
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Generated by Django 5.2.5 on 2025-09-03 16:11
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
dependencies = [
8+
("owasp", "0049_boardofdirectors"),
9+
]
10+
11+
operations = [
12+
migrations.AlterField(
13+
model_name="entitymember",
14+
name="role",
15+
field=models.CharField(
16+
choices=[("candidate", "Candidate"), ("leader", "Leader"), ("member", "Member")],
17+
default="leader",
18+
max_length=9,
19+
),
20+
),
21+
]
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,11 @@
1+
from .board_of_directors import BoardOfDirectors
2+
from .chapter import Chapter
3+
from .committee import Committee
4+
from .entity_member import EntityMember
5+
from .event import Event
6+
from .post import Post
17
from .project import Project
8+
from .project_health_metrics import ProjectHealthMetrics
9+
from .project_health_requirements import ProjectHealthRequirements
10+
from .snapshot import Snapshot
11+
from .sponsor import Sponsor
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
"""OWASP app Board of Directors models."""
2+
3+
from django.db import models
4+
5+
6+
class BoardOfDirectors(models.Model):
7+
"""Model representing OWASP Board of Directors."""
8+
9+
class Meta:
10+
db_table = "owasp_board_of_directors"
11+
verbose_name_plural = "Board of Directors"
12+
13+
created_at = models.DateTimeField(auto_now_add=True)
14+
updated_at = models.DateTimeField(auto_now=True)
15+
year = models.PositiveSmallIntegerField(unique=True)
16+
17+
def __str__(self):
18+
"""Return a string representation of the Board of Directors."""
19+
return f"OWASP {self.year} Board of Directors"

backend/apps/owasp/models/entity_member.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ class EntityMember(models.Model):
1111
"""EntityMember model."""
1212

1313
class Role(models.TextChoices):
14+
CANDIDATE = "candidate", "Candidate"
1415
LEADER = "leader", "Leader"
1516
MEMBER = "member", "Member"
1617

@@ -56,7 +57,7 @@ class Meta:
5657
help_text="Display order/priority of members",
5758
)
5859
role = models.CharField(
59-
max_length=6,
60+
max_length=9,
6061
choices=Role.choices,
6162
default=Role.LEADER,
6263
)

0 commit comments

Comments
 (0)