feat(events): expand admin event management APIs
This commit is contained in:
@@ -138,6 +138,7 @@ class EventListSchema(Schema):
|
||||
class EventCreateSchema(Schema):
|
||||
"""Payload for creating events via the API."""
|
||||
title: str
|
||||
slug: Optional[str] = None
|
||||
description: str
|
||||
event_type: str
|
||||
address: Optional[str] = None
|
||||
@@ -150,11 +151,13 @@ class EventCreateSchema(Schema):
|
||||
capacity: Optional[int] = None
|
||||
price: Optional[float] = None
|
||||
status: str = "draft"
|
||||
registration_success_markdown: Optional[str] = None
|
||||
gallery_image_ids: Optional[List[int]] = []
|
||||
|
||||
class EventUpdateSchema(Schema):
|
||||
"""Payload for updating events via the API."""
|
||||
title: Optional[str] = None
|
||||
slug: Optional[str] = None
|
||||
description: Optional[str] = None
|
||||
event_type: Optional[str] = None
|
||||
address: Optional[str] = None
|
||||
@@ -167,6 +170,7 @@ class EventUpdateSchema(Schema):
|
||||
capacity: Optional[int] = None
|
||||
price: Optional[float] = None
|
||||
status: Optional[str] = None
|
||||
registration_success_markdown: Optional[str] = None
|
||||
gallery_image_ids: Optional[List[int]] = None
|
||||
|
||||
class RegistrationSchema(ModelSchema):
|
||||
@@ -199,12 +203,56 @@ class AdminUserSchema(Schema):
|
||||
first_name: str
|
||||
last_name: str
|
||||
email: str
|
||||
mobile: Optional[str] = None
|
||||
profile_picture: Optional[str] = None
|
||||
profile_picture_thumbnail_url: Optional[str] = None
|
||||
profile_picture_preview_url: Optional[str] = None
|
||||
university: Optional[str] = None
|
||||
major: Optional[str] = None
|
||||
student_id: Optional[str] = None
|
||||
year_of_study: Optional[int] = None
|
||||
|
||||
@staticmethod
|
||||
def resolve_profile_picture(obj, context):
|
||||
image = getattr(obj, "profile_picture", None)
|
||||
if not getattr(image, "name", None):
|
||||
return None
|
||||
request = context["request"]
|
||||
return request.build_absolute_uri(image.url) if hasattr(image, "url") else None
|
||||
|
||||
@staticmethod
|
||||
def resolve_profile_picture_thumbnail_url(obj, context):
|
||||
image = getattr(obj, "profile_picture", None)
|
||||
if not getattr(image, "name", None):
|
||||
return None
|
||||
request = context["request"]
|
||||
url = derivative_url(image, THUMBNAIL_VARIANT)
|
||||
return request.build_absolute_uri(url) if url else None
|
||||
|
||||
@staticmethod
|
||||
def resolve_profile_picture_preview_url(obj, context):
|
||||
image = getattr(obj, "profile_picture", None)
|
||||
if not getattr(image, "name", None):
|
||||
return None
|
||||
request = context["request"]
|
||||
url = derivative_url(image, PREVIEW_VARIANT)
|
||||
return request.build_absolute_uri(url) if url else None
|
||||
|
||||
@staticmethod
|
||||
def resolve_university(obj):
|
||||
return obj.get_university_display()
|
||||
|
||||
@staticmethod
|
||||
def resolve_major(obj):
|
||||
return obj.get_major_display()
|
||||
|
||||
|
||||
class PaymentAdminSchema(Schema):
|
||||
id: int
|
||||
authority: Optional[str]
|
||||
ref_id: Optional[str]
|
||||
card_pan: Optional[str]
|
||||
card_hash: Optional[str]
|
||||
status: int
|
||||
status_label: str
|
||||
base_amount: int
|
||||
@@ -241,7 +289,7 @@ class EventAdminDetailSchema(EventSchema):
|
||||
|
||||
@staticmethod
|
||||
def resolve_registrations(obj):
|
||||
return obj.registrations.select_related("user").prefetch_related(
|
||||
return obj.registrations.select_related("user", "user__university", "user__major").prefetch_related(
|
||||
"payments__discount_code"
|
||||
).order_by("-registered_at")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user