init
This commit is contained in:
86
backend/events/resources.py
Normal file
86
backend/events/resources.py
Normal file
@@ -0,0 +1,86 @@
|
||||
from import_export import resources, fields
|
||||
from import_export.widgets import ForeignKeyWidget, ManyToManyWidget
|
||||
|
||||
from events.models import Event, Registration
|
||||
from users.models import User
|
||||
from gallery.models import Gallery
|
||||
from payments.models import DiscountCode
|
||||
|
||||
class EventResource(resources.ModelResource):
|
||||
gallery_images = fields.Field(
|
||||
column_name='gallery_images',
|
||||
attribute='gallery_images',
|
||||
widget=ManyToManyWidget(Gallery, field='title', separator='|')
|
||||
)
|
||||
|
||||
class Meta:
|
||||
model = Event
|
||||
fields = (
|
||||
'id', 'title', 'slug', 'description', 'start_time', 'end_time',
|
||||
'event_type', 'address', 'location', 'online_link', 'status',
|
||||
'capacity', 'price', 'registration_start_date', 'registration_end_date',
|
||||
'featured_image', 'gallery_images', 'created_at', 'updated_at',
|
||||
'is_deleted', 'deleted_at'
|
||||
)
|
||||
export_order = fields
|
||||
|
||||
class RegistrationResource(resources.ModelResource):
|
||||
"""Export registrations with user attributes and shortened ticket identifiers."""
|
||||
|
||||
event = fields.Field(
|
||||
column_name='event',
|
||||
attribute='event',
|
||||
widget=ForeignKeyWidget(Event, 'title')
|
||||
)
|
||||
user_username = fields.Field(
|
||||
column_name='user_username',
|
||||
attribute='user',
|
||||
widget=ForeignKeyWidget(User, 'username')
|
||||
)
|
||||
user_email = fields.Field(
|
||||
column_name='user_email',
|
||||
attribute='user',
|
||||
widget=ForeignKeyWidget(User, 'email')
|
||||
)
|
||||
user_first_name = fields.Field(
|
||||
column_name='user_first_name',
|
||||
attribute='user',
|
||||
widget=ForeignKeyWidget(User, 'first_name')
|
||||
)
|
||||
user_last_name = fields.Field(
|
||||
column_name='user_last_name',
|
||||
attribute='user',
|
||||
widget=ForeignKeyWidget(User, 'last_name')
|
||||
)
|
||||
discount_code = fields.Field(
|
||||
column_name='discount_code',
|
||||
attribute='discount_code',
|
||||
widget=ForeignKeyWidget(DiscountCode, 'code')
|
||||
)
|
||||
|
||||
class Meta:
|
||||
model = Registration
|
||||
fields = (
|
||||
'id',
|
||||
'event',
|
||||
'user_username',
|
||||
'user_email',
|
||||
'user_first_name',
|
||||
'user_last_name',
|
||||
'registered_at',
|
||||
'status',
|
||||
'ticket_id',
|
||||
'discount_code',
|
||||
'discount_amount',
|
||||
'final_price',
|
||||
'created_at',
|
||||
'updated_at',
|
||||
'is_deleted',
|
||||
'deleted_at',
|
||||
)
|
||||
export_order = fields
|
||||
|
||||
def dehydrate_ticket_id(self, obj):
|
||||
"""Limit ticket identifiers to eight characters in exports."""
|
||||
val = getattr(obj, 'ticket_id', '')
|
||||
return str(val)[:8] if val else ''
|
||||
Reference in New Issue
Block a user