-
-
Notifications
You must be signed in to change notification settings - Fork 630
Expand file tree
/
Copy pathsponsor.py
More file actions
40 lines (30 loc) · 1.17 KB
/
sponsor.py
File metadata and controls
40 lines (30 loc) · 1.17 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
"""OWASP sponsors GraphQL mutations."""
import logging
import strawberry
from django.db import IntegrityError
from django.utils import timezone
from apps.common.utils import slugify
from apps.owasp.api.internal.nodes.sponsor import CreateSponsorInput, SponsorNode
from apps.owasp.models import Sponsor
logger = logging.getLogger(__name__)
SPONSOR_EXISTS_ERROR = "A sponsor with this name already exists."
@strawberry.type
class SponsorMutation:
"""GraphQL mutations related to sponsor."""
@strawberry.mutation
def create_sponsor(self, input_data: CreateSponsorInput) -> SponsorNode:
"""Create a new sponsor."""
try:
sponsor = Sponsor.objects.create(
key=slugify(input_data.name),
sort_name=input_data.name,
name=input_data.name,
contact_email=input_data.contact_email,
message=input_data.message,
url=input_data.url,
created_at=timezone.now(),
)
except IntegrityError as err:
raise ValueError(SPONSOR_EXISTS_ERROR) from err
logger.info("Sponsor created successfully")
return sponsor