Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • andretol/greg
1 result
Show changes
Commits on Source (4)
......@@ -6,4 +6,4 @@ from greg.models import Sponsor
class SponsorSerializer(serializers.ModelSerializer):
class Meta:
model = Sponsor
fields = ["id", "feide_id"]
fields = ["id", "feide_id", "first_name", "last_name"]
from drf_spectacular.utils import extend_schema, OpenApiParameter
from rest_framework import mixins
from rest_framework.viewsets import ReadOnlyModelViewSet, GenericViewSet
from rest_framework.viewsets import GenericViewSet, ModelViewSet
from greg.api.pagination import PrimaryKeyCursorPagination
from greg.api.serializers import PersonSerializer
......@@ -8,7 +8,7 @@ from greg.api.serializers.sponsor import SponsorSerializer
from greg.models import Sponsor, Person
class SponsorViewSet(ReadOnlyModelViewSet):
class SponsorViewSet(ModelViewSet):
"""Sponsor API"""
queryset = Sponsor.objects.all().order_by("id")
......
# Generated by Django 3.2.5 on 2021-08-17 08:34
# Generated by Django 3.2.5 on 2021-08-19 12:47
import datetime
import dirtyfields.dirtyfields
......@@ -119,6 +119,8 @@ class Migration(migrations.Migration):
('created', models.DateTimeField(auto_now_add=True)),
('updated', models.DateTimeField(auto_now=True)),
('feide_id', models.CharField(max_length=256)),
('first_name', models.CharField(max_length=256)),
('last_name', models.CharField(max_length=256)),
],
bases=(dirtyfields.dirtyfields.DirtyFieldsMixin, models.Model),
),
......
......@@ -261,6 +261,9 @@ class Sponsor(BaseModel):
"""
feide_id = models.CharField(max_length=256)
first_name = models.CharField(max_length=256)
last_name = models.CharField(max_length=256)
units = models.ManyToManyField(
"OrganizationalUnit",
through="SponsorOrganizationalUnit",
......@@ -268,8 +271,12 @@ class Sponsor(BaseModel):
)
def __repr__(self):
return "{}(id={!r}, feide_id={!r})".format(
self.__class__.__name__, self.pk, self.feide_id
return "{}(id={!r}, feide_id={!r}, first_name={!r}, last_name={!r})".format(
self.__class__.__name__,
self.pk,
self.feide_id,
self.first_name,
self.last_name,
)
class Meta:
......@@ -316,3 +323,8 @@ class ScheduleTask(models.Model):
name = models.CharField(max_length=32)
last_completed = models.DateTimeField(null=True)
def __repr__(self):
return "{}(id={!r}, name={!r}, last_completed={!r})".format(
self.__class__.__name__, self.pk, self.name, self.last_completed
)
import pytest
from rest_framework import status
from rest_framework.reverse import reverse
@pytest.mark.django_db
def test_add_sponsor(client):
data = {
"feide_id": "sponsor@example.org",
"first_name": "Test",
"last_name": "Sponsor",
}
post_response = client.post(reverse("sponsor-list"), data=data)
assert post_response.status_code == status.HTTP_201_CREATED
response_data = post_response.json()
list_response = client.get(
reverse("sponsor-detail", kwargs={"id": response_data["id"]})
)
list_response_data = list_response.json()
assert list_response_data["feide_id"] == data["feide_id"]
assert list_response_data["first_name"] == data["first_name"]
assert list_response_data["last_name"] == data["last_name"]
@pytest.mark.django_db
def test_sponsor_guest_list(client, sponsor_guy, person_foo_role):
url = reverse("sponsor_guests-list", kwargs={"sponsor_id": sponsor_guy.id})
......
......@@ -53,7 +53,9 @@ def person_bar() -> Person:
@pytest.fixture
def sponsor_guy() -> Sponsor:
return Sponsor.objects.create(feide_id="guy@example.org")
return Sponsor.objects.create(
feide_id="guy@example.org", first_name="Sponsor", last_name="Guy"
)
@pytest.fixture
......