Skip to content

Instantly share code, notes, and snippets.

@aBuder
Last active December 15, 2021 06:32
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save aBuder/654fb945f085b17358d8 to your computer and use it in GitHub Desktop.
Save aBuder/654fb945f085b17358d8 to your computer and use it in GitHub Desktop.
AccommodationViewSet
class AdvertisementType(models.Model):
name = models.CharField(max_length=255, blank=False, null=False, verbose_name='Name') # name of feature
created = models.DateField(auto_now=True) # created date
def __unicode__(self):
return u'{0} - {1}'.format(self.id, self.name)
class Accommodation(models.Model):
name = models.CharField(max_length=255, blank=False, null=False, verbose_name='Name') # name of the accommodation
description = models.TextField(blank=True, null=True, verbose_name='Allgemeine Beschreibung') # classification of object like '3 Stars'
objectDescription = models.TextField(blank=True, null=True, verbose_name='Objekt Beschreibung') # classification of object like '3 Stars'
roomDescription = models.TextField(blank=True, null=True, verbose_name='Raum Beschreibung')
bedroomDescription = models.TextField(blank=True, null=True, verbose_name='Schlafzimmer Beschreibung')
accommodationType = models.ForeignKey(AccommodationType, related_name='accommodationType', verbose_name='Art der Unterkunft')
advertisementType = models.ForeignKey(AdvertisementType, related_name='advertisementType', verbose_name='Art der Anzeige')
phone = models.CharField(max_length=13, blank=True, null=True, verbose_name='Telefon') # phone of object
fax = models.CharField(max_length=13, blank=True, verbose_name='Fax') # fax of object
web = models.URLField(blank=True, null=True, verbose_name='Webseite') # website url of object
email = models.EmailField(blank=True, null=True, verbose_name='Email') # email of object
contactPerson = models.TextField(blank=True, null=True, verbose_name='Kontaktperson') # name of contact person
address = models.ForeignKey(Address, related_name='address', verbose_name='Adresse') # address relation of object
location = models.ForeignKey(Location, related_name='location', verbose_name='GPS Daten')
animalSupports = models.ManyToManyField(AnimalSupport, related_name='animalSupports', blank=True, null=True, verbose_name='Unterstüzte Tiere') # which animals are supported
features = models.ManyToManyField(Feature, related_name='accommodation_features', blank=True, null=True, verbose_name='Ausstattung')
class Meta:
verbose_name = 'Unterkunft'
verbose_name_plural = 'Unterkünfte'
def __unicode__(self):
return u'{0} - {1}'.format(self.id, self.name)
class AdvertisementTypeSerializer(serializers.ModelSerializer):
"""
Serializer for model 'advertisementType'
"""
class Meta:
model = AdvertisementType
fields = ('id', 'name',)
class AccommodationSerializer(serializers.ModelSerializer):
"""
Serializer for model 'accommodation'
"""
accommodationType = AccommodationTypeSerializer(read_only=True)
advertisementType = AdvertisementTypeSerializer(read_only=True)
address = AddressSerializer(read_only=True)
location = LocationSerializer(read_only=True)
animalSupports = AnimalSupportSerializer(read_only=True)
features = FeatureSerializer(many=True, read_only=True)
class Meta:
model = Accommodation
fields = (
'id',
'name',
'description',
'objectDescription',
'roomDescription',
'bedroomDescription',
'accommodationType',
'advertisementType',
'phone',
'fax',
'web',
'email',
'contactPerson',
'address',
'location',
'animalSupports',
'features',
)
router.register('accommodationTypes', AccommodationTypeViewSet)
router.register('accommodations', AccommodationViewSet)
from webapp.serializers import *
from rest_framework import viewsets
from rest_framework import filters
from django_filters import Filter, FilterSet
class ListFilter(Filter):
def filter(self, qs, value):
if not value:
return qs
self.lookup_type = 'in'
values = value.split(',')
return super(ListFilter, self).filter(qs, values)
class AccommodationFilter(FilterSet):
ids = ListFilter(name='id')
accommodationType_ids = ListFilter(name='accommodationType_id')
class Meta:
model = Accommodation
fields = ['ids', 'accommodationType_ids']
class AccommodationViewSet(viewsets.ReadOnlyModelViewSet):
"""
REST API endpoint for 'accommodation' resource
"""
queryset = Accommodation.objects.all()
serializer_class = AccommodationSerializer
filter_backends = (filters.DjangoFilterBackend,)
filter_class = AccommodationFilter
@aBuder
Copy link
Author

aBuder commented Jun 27, 2015

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment