Example #1
0
class EventSearchSerializer(serializers.ModelSerializer):
    cover = ImageField(required=False, options={"height": 500})
    thumbnail = ImageField(
        source="cover",
        required=False,
        options={
            "height": 500,
            "width": 500,
            "smart": True
        },
    )
    text = ContentSerializerField()
    activation_time = ActivationTimeField()

    class Meta:
        model = Event
        fields = (
            "id",
            "title",
            "description",
            "cover",
            "text",
            "event_type",
            "location",
            "start_time",
            "thumbnail",
            "end_time",
            "total_capacity",
            "company",
            "registration_count",
            "tags",
            "activation_time",
            "pinned",
        )
        read_only = True
Example #2
0
class GalleryPictureSerializer(serializers.ModelSerializer):

    file = ImageField(required=True, options={'height': 700, 'smart': True})
    thumbnail = ImageField(source='file',
                           read_only=True,
                           options={
                               'height': 200,
                               'width': 300,
                               'smart': True
                           })
    raw_file = FileField(source='file', read_only=True)
    comments = CommentSerializer(read_only=True, many=True)
    comment_target = CharField(read_only=True)
    taggees = PublicUserField(many=True,
                              queryset=User.objects.all(),
                              required=False)

    class Meta:
        model = GalleryPicture
        fields = ('id', 'gallery', 'description', 'taggees', 'active', 'file',
                  'thumbnail', 'raw_file', 'comments', 'comment_target')
        read_only_fields = ('raw_file', 'thumbnail', 'gallery')

    def validate(self, attrs):
        gallery = Gallery.objects.get(
            pk=self.context['view'].kwargs['gallery_pk'])
        return {'gallery': gallery, **attrs}
Example #3
0
class GalleryPictureSerializer(serializers.ModelSerializer):

    file = ImageField(required=True, options={"height": 700, "smart": True})
    thumbnail = ImageField(
        source="file",
        read_only=True,
        options={"height": 200, "width": 300, "smart": True},
    )
    raw_file = FileField(source="file", read_only=True)
    comments = CommentSerializer(read_only=True, many=True)
    content_target = CharField(read_only=True)
    taggees = PublicUserField(many=True, queryset=User.objects.all(), required=False)

    class Meta:
        model = GalleryPicture
        fields = (
            "id",
            "gallery",
            "description",
            "taggees",
            "active",
            "file",
            "thumbnail",
            "raw_file",
            "comments",
            "content_target",
        )
        read_only_fields = ("raw_file", "thumbnail", "gallery")

    def validate(self, attrs):
        gallery = Gallery.objects.get(pk=self.context["view"].kwargs["gallery_pk"])
        return {"gallery": gallery, **attrs}
Example #4
0
class EventReadSerializer(TagSerializerMixin, BasisModelSerializer):
    company = CompanyField(queryset=Company.objects.all())
    cover = ImageField(required=False, options={"height": 500})
    thumbnail = ImageField(
        source="cover",
        required=False,
        options={
            "height": 500,
            "width": 500,
            "smart": True
        },
    )

    class Meta:
        model = Event
        fields = (
            "id",
            "title",
            "description",
            "cover",
            "event_type",
            "location",
            "start_time",
            "thumbnail",
            "total_capacity",
            "company",
            "registration_count",
            "tags",
        )
        read_only = True
Example #5
0
class CompanyListSerializer(BasisModelSerializer):
    logo = ImageField(required=False, options={"height": 500})
    thumbnail = ImageField(
        source="logo",
        required=False,
        options={"height": 500, "width": 500, "smart": True},
    )

    event_count = serializers.SerializerMethodField()
    joblisting_count = serializers.SerializerMethodField()

    def get_event_count(self, obj):
        return obj.events.filter(start_time__gt=timezone.now()).count()

    def get_joblisting_count(self, obj):
        return obj.joblistings.filter(visible_to__gte=timezone.now()).count()

    class Meta:
        model = Company
        fields = (
            "id",
            "name",
            "description",
            "event_count",
            "joblisting_count",
            "website",
            "company_type",
            "address",
            "logo",
            "thumbnail",
            "active",
        )
Example #6
0
class GalleryCoverSerializer(serializers.ModelSerializer):

    file = ImageField(required=False, options={"height": 700, "smart": True})

    thumbnail = ImageField(
        source="file",
        read_only=True,
        options={"height": 300, "width": 300, "smart": True},
    )

    class Meta:
        model = GalleryPicture
        fields = ("file", "thumbnail", "id")
Example #7
0
class CompanyListSerializer(BasisModelSerializer):
    logo = ImageField(required=False, options={'height': 500})
    thumbnail = ImageField(source='logo',
                           required=False,
                           options={
                               'height': 500,
                               'width': 500,
                               'smart': True
                           })

    class Meta:
        model = Company
        fields = ('id', 'name', 'description', 'website', 'company_type',
                  'address', 'logo', 'thumbnail')
Example #8
0
class GalleryCoverSerializer(serializers.ModelSerializer):

    file = ImageField(required=False, options={'height': 700, 'smart': True})

    thumbnail = ImageField(source='file',
                           read_only=True,
                           options={
                               'height': 300,
                               'width': 300,
                               'smart': True
                           })

    class Meta:
        model = GalleryPicture
        fields = ('file', 'thumbnail', 'id')
Example #9
0
class EventReadDetailedSerializer(TagSerializerMixin, BasisModelSerializer):
    comments = CommentSerializer(read_only=True, many=True)
    comment_target = CharField(read_only=True)
    cover = ImageField(required=False, options={'height': 500})
    company = CompanyField(queryset=Company.objects.all())
    responsible_group = AbakusGroupField(queryset=AbakusGroup.objects.all(),
                                         required=False,
                                         allow_null=True)
    pools = PoolReadSerializer(many=True)
    active_capacity = serializers.ReadOnlyField()
    text = ContentSerializerField()
    created_by = PublicUserSerializer()

    class Meta:
        model = Event
        fields = ('id', 'title', 'description', 'cover', 'text', 'event_type',
                  'location', 'comments', 'comment_target', 'start_time',
                  'end_time', 'merge_time', 'pools', 'unregistration_deadline',
                  'company', 'responsible_group', 'active_capacity',
                  'feedback_description', 'feedback_required', 'is_priced',
                  'price_member', 'price_guest', 'use_stripe',
                  'payment_due_date', 'use_captcha',
                  'waiting_registration_count', 'tags', 'is_merged',
                  'heed_penalties', 'created_by', 'is_abakom_only',
                  'registration_count', 'survey')
        read_only = True
Example #10
0
class DetailedAbakusGroupSerializer(serializers.ModelSerializer):
    logo = ImageField(
        required=False, allow_null=True, options={"height": 400, "width": 400}
    )

    class Meta:
        model = AbakusGroup
        fields = (
            "id",
            "name",
            "description",
            "contact_email",
            "parent",
            "permissions",
            "type",
            "text",
            "logo",
            "number_of_users",
            "show_badge",
        )

    def create(self, validated_data):
        if validated_data.get("type", None) == "interesse":
            validated_data["parent"] = AbakusGroup.objects.get(name="Interessegrupper")
        group = super(DetailedAbakusGroupSerializer, self).create(validated_data)
        user = self.context["request"].user
        Membership.objects.create(
            **{"user": user, "abakus_group": group, "role": constants.LEADER}
        )
        return group
Example #11
0
class PublicListAbakusGroupSerializer(PublicAbakusGroupSerializer):
    logo = ImageField(required=False, options={'height': 400, 'width': 400})

    class Meta:
        model = AbakusGroup
        fields = PublicAbakusGroupSerializer.Meta.fields + (
            'number_of_users', )
Example #12
0
class DetailedArticleSerializer(TagSerializerMixin, BasisModelSerializer):
    author = PublicUserSerializer(read_only=True, source="created_by")
    comments = CommentSerializer(read_only=True, many=True)
    cover = ImageField(required=False, options={"height": 500})
    content_target = CharField(read_only=True)
    content = ContentSerializerField(source="text")
    reactions_grouped = serializers.SerializerMethodField()

    def get_reactions_grouped(self, obj):
        user = self.context["request"].user
        return obj.get_reactions_grouped(user)

    class Meta:
        model = Article
        fields = (
            "id",
            "title",
            "cover",
            "author",
            "description",
            "comments",
            "content_target",
            "tags",
            "content",
            "created_at",
            "pinned",
            "reactions_grouped",
            "youtube_url",
        )
Example #13
0
class CompanyAdminDetailSerializer(BasisModelSerializer):
    comments = CommentSerializer(read_only=True, many=True)
    content_target = CharField(read_only=True)

    student_contact = PublicUserField(required=False,
                                      allow_null=True,
                                      queryset=User.objects.all())
    semester_statuses = SemesterStatusDetailSerializer(many=True,
                                                       read_only=True)
    company_contacts = CompanyContactSerializer(many=True, read_only=True)

    logo = ImageField(required=False, options={"height": 500})
    files = CompanyFileSerializer(many=True, read_only=True)

    class Meta:
        model = Company
        fields = (
            "id",
            "name",
            "student_contact",
            "description",
            "phone",
            "company_type",
            "website",
            "address",
            "payment_mail",
            "comments",
            "content_target",
            "semester_statuses",
            "active",
            "admin_comment",
            "logo",
            "files",
            "company_contacts",
        )
Example #14
0
File: users.py Project: webkom/lego
class Oauth2UserDataSerializer(serializers.ModelSerializer):
    """
    Basic serailizer
    """

    abakus_groups = PublicAbakusGroupSerializer(many=True)
    memberships = MembershipSerializer(many=True)
    profile_picture = ImageField(required=False, options={"height": 200, "width": 200})
    is_student = serializers.SerializerMethodField()
    is_abakus_member = serializers.BooleanField()

    class Meta:
        model = User
        fields = (
            "id",
            "username",
            "first_name",
            "last_name",
            "full_name",
            "email_address",
            "profile_picture",
            "gender",
            "is_active",
            "is_student",
            "abakus_groups",
            "is_abakus_member",
            "is_abakom_member",
            "memberships",
        )

    def get_is_student(self, user):
        return user.is_verified_student()
Example #15
0
class PageDetailSerializer(BasisModelSerializer):
    content = ContentSerializerField()
    picture = ImageField(required=False, options={"height": 500})

    class Meta:
        model = Page
        fields = ("pk", "title", "slug", "content", "picture", "category")
Example #16
0
class PageListSerializer(BasisModelSerializer):

    picture = ImageField(required=False, options={'height': 200, 'width': 200})

    class Meta:
        model = Page
        fields = ('pk', 'title', 'slug', 'picture')
Example #17
0
class CompanyDetailSerializer(BasisModelSerializer):
    logo = ImageField(required=False, options={'height': 500})

    class Meta:
        model = Company
        fields = ('id', 'name', 'description', 'phone', 'company_type',
                  'website', 'address', 'logo')
Example #18
0
File: users.py Project: webkom/lego
class DetailedUserSerializer(serializers.ModelSerializer):

    abakus_groups = PublicAbakusGroupSerializer(many=True)
    past_memberships = PastMembershipSerializer(many=True)
    penalties = serializers.SerializerMethodField("get_valid_penalties")
    profile_picture = ImageField(required=False, options={"height": 200, "width": 200})

    def get_valid_penalties(self, user):
        qs = Penalty.objects.valid().filter(user=user)
        serializer = PenaltySerializer(instance=qs, many=True)
        return serializer.data

    class Meta:
        model = User
        fields = (
            "id",
            "username",
            "first_name",
            "last_name",
            "full_name",
            "gender",
            "email",
            "email_address",
            "email_lists_enabled",
            "profile_picture",
            "allergies",
            "is_active",
            "penalties",
            "abakus_groups",
            "past_memberships",
            "permissions_per_group",
        )
Example #19
0
class PageDetailSerializer(BasisModelSerializer):

    picture = ImageField(required=False, options={'height': 500})

    class Meta:
        model = Page
        fields = ('pk', 'title', 'slug', 'content', 'picture')
Example #20
0
class EventCreateAndUpdateSerializer(TagSerializerMixin, BasisModelSerializer):
    cover = ImageField(required=False, options={'height': 500})
    responsible_group = AbakusGroupField(queryset=AbakusGroup.objects.all(),
                                         required=False,
                                         allow_null=True)
    pools = PoolCreateAndUpdateSerializer(many=True, required=False)
    text = ContentSerializerField()
    is_abakom_only = BooleanField(required=False, default=False)

    registration_close_time = serializers.DateTimeField(read_only=True)

    class Meta:
        model = Event
        fields = ('id', 'title', 'cover', 'description', 'text', 'company',
                  'responsible_group', 'feedback_description',
                  'feedback_required', 'event_type', 'location', 'is_priced',
                  'price_member', 'price_guest', 'use_stripe',
                  'payment_due_date', 'start_time', 'end_time', 'merge_time',
                  'use_captcha', 'tags', 'pools', 'unregistration_deadline',
                  'pinned', 'heed_penalties', 'is_abakom_only',
                  'registration_deadline_hours', 'registration_close_time')

    def create(self, validated_data):
        pools = validated_data.pop('pools', [])
        is_abakom_only = validated_data.pop('is_abakom_only', False)
        with transaction.atomic():
            event = super().create(validated_data)
            for pool in pools:
                permission_groups = pool.pop('permission_groups')
                created_pool = Pool.objects.create(event=event, **pool)
                created_pool.permission_groups.set(permission_groups)
            event.set_abakom_only(is_abakom_only)
            return event

    def update(self, instance, validated_data):
        pools = validated_data.pop('pools', None)
        is_abakom_only = validated_data.pop('is_abakom_only', False)
        with transaction.atomic():
            if pools is not None:
                existing_pools = list(instance.pools.all().values_list(
                    'id', flat=True))
                for pool in pools:
                    pool_id = pool.get('id', None)
                    if pool_id in existing_pools:
                        existing_pools.remove(pool_id)
                    permission_groups = pool.pop('permission_groups')
                    created_pool = Pool.objects.update_or_create(
                        event=instance,
                        id=pool_id,
                        defaults={
                            'name': pool.get('name'),
                            'capacity': pool.get('capacity', 0),
                            'activation_date': pool.get('activation_date'),
                        })[0]
                    created_pool.permission_groups.set(permission_groups)
                for pool_id in existing_pools:
                    Pool.objects.get(id=pool_id).delete()
            instance.set_abakom_only(is_abakom_only)
            return super().update(instance, validated_data)
Example #21
0
class SearchArticleSerializer(TagSerializerMixin, BasisModelSerializer):
    cover = ImageField(required=False, options={'height': 500})
    content = ContentSerializerField(source='text')

    class Meta:
        model = Article
        fields = ('id', 'title', 'cover', 'description', 'tags', 'content',
                  'pinned', 'created_at')
Example #22
0
class EventReadSerializer(TagSerializerMixin, BasisModelSerializer):
    company = CompanyField(queryset=Company.objects.all())
    cover = ImageField(required=False, options={'height': 500})
    thumbnail = ImageField(source='cover',
                           required=False,
                           options={
                               'height': 500,
                               'width': 500,
                               'smart': True
                           })

    class Meta:
        model = Event
        fields = ('id', 'title', 'description', 'cover', 'event_type',
                  'location', 'start_time', 'thumbnail', 'total_capacity',
                  'company', 'registration_count', 'tags')
        read_only = True
Example #23
0
class EventReadDetailedSerializer(TagSerializerMixin, BasisModelSerializer):
    comments = CommentSerializer(read_only=True, many=True)
    content_target = CharField(read_only=True)
    cover = ImageField(required=False, options={"height": 500})
    company = CompanyField(queryset=Company.objects.all())
    responsible_group = AbakusGroupField(queryset=AbakusGroup.objects.all(),
                                         required=False,
                                         allow_null=True)
    pools = PoolReadSerializer(many=True)
    active_capacity = serializers.ReadOnlyField()
    text = ContentSerializerField()
    created_by = PublicUserSerializer()

    registration_close_time = serializers.DateTimeField(read_only=True)

    class Meta:
        model = Event
        fields = (
            "id",
            "title",
            "description",
            "cover",
            "text",
            "event_type",
            "event_status_type",
            "location",
            "comments",
            "content_target",
            "start_time",
            "end_time",
            "merge_time",
            "pools",
            "registration_close_time",
            "registration_deadline_hours",
            "unregistration_deadline",
            "company",
            "responsible_group",
            "active_capacity",
            "feedback_description",
            "feedback_required",
            "is_priced",
            "price_member",
            "price_guest",
            "use_stripe",
            "payment_due_date",
            "use_captcha",
            "waiting_registration_count",
            "tags",
            "is_merged",
            "heed_penalties",
            "created_by",
            "is_abakom_only",
            "registration_count",
            "survey",
            "use_consent",
            "youtube_url",
        )
        read_only = True
Example #24
0
class PublicArticleSerializer(TagSerializerMixin, BasisModelSerializer):

    cover = ImageField(required=False, options={'height': 300})
    author = PublicUserSerializer(read_only=True, source='created_by')

    class Meta:
        model = Article
        fields = ('id', 'title', 'cover', 'author', 'description', 'tags',
                  'created_at', 'pinned')
Example #25
0
class EventSearchSerializer(serializers.ModelSerializer):
    cover = ImageField(required=False, options={'height': 500})
    thumbnail = ImageField(source='cover',
                           required=False,
                           options={
                               'height': 500,
                               'width': 500,
                               'smart': True
                           })
    text = ContentSerializerField()

    class Meta:
        model = Event
        fields = ('id', 'title', 'description', 'cover', 'text', 'event_type',
                  'location', 'start_time', 'thumbnail', 'end_time',
                  'total_capacity', 'company', 'registration_count', 'tags',
                  'pinned')
        read_only = True
Example #26
0
class PageDetailAuthSerializer(BasisModelSerializer,
                               ObjectPermissionsSerializerMixin):
    content = ContentSerializerField()
    picture = ImageField(required=False, options={"height": 500})

    class Meta:
        model = Page
        fields = (PageDetailSerializer.Meta.fields +
                  ObjectPermissionsSerializerMixin.Meta.fields)
Example #27
0
class MeSerializer(serializers.ModelSerializer):
    """
    Serializer for the /me, retrieve and update endpoint with EDIT permissions.
    Also used by our JWT handler and returned to the user when a user obtains a JWT token.
    """

    abakus_groups = PublicAbakusGroupSerializer(many=True)
    memberships = MembershipSerializer(many=True)
    profile_picture = ImageField(required=False,
                                 options={
                                     'height': 200,
                                     'width': 200
                                 })
    ical_token = serializers.SerializerMethodField('get_user_ical_token')
    penalties = serializers.SerializerMethodField('get_valid_penalties')
    is_student = serializers.SerializerMethodField()
    is_abakus_member = serializers.BooleanField()
    past_memberships = PastMembershipSerializer(many=True)

    def get_user_ical_token(self, user):
        ical_token = ICalToken.objects.get_or_create(user=user)[0]
        return ical_token.token

    def get_valid_penalties(self, user):
        qs = Penalty.objects.valid().filter(user=user)
        serializer = PenaltySerializer(instance=qs, many=True)
        return serializer.data

    def get_is_student(self, user):
        return user.is_verified_student()

    def validate_username(self, username):
        """
        It is not possible to change username tom something that exists.
        Used to remove case-sensitivity.
        """
        username_exists = User.objects \
            .filter(username__iexact=username) \
            .exclude(id=self.instance.id) \
            .exists()

        if username_exists:
            raise exceptions.ValidationError('Username exists')

        return username

    class Meta:
        model = User
        fields = ('id', 'username', 'first_name', 'last_name', 'full_name',
                  'email', 'email_address', 'email_lists_enabled',
                  'profile_picture', 'gender', 'allergies', 'is_active',
                  'is_student', 'abakus_groups', 'is_abakus_member',
                  'is_abakom_member', 'penalties', 'ical_token', 'memberships',
                  'past_memberships')
Example #28
0
class DetailedArticleSerializer(TagSerializerMixin, BasisModelSerializer):
    author = PublicUserSerializer(read_only=True, source='created_by')
    comments = CommentSerializer(read_only=True, many=True)
    cover = ImageField(required=False, options={'height': 500})
    comment_target = CharField(read_only=True)
    content = ContentSerializerField(source='text')

    class Meta:
        model = Article
        fields = ('id', 'title', 'cover', 'author', 'description', 'comments',
                  'comment_target', 'tags', 'content', 'created_at', 'pinned')
Example #29
0
class PublicUserSerializer(serializers.ModelSerializer):

    profile_picture = ImageField(required=False,
                                 options={
                                     'height': 200,
                                     'width': 200
                                 })

    class Meta:
        model = User
        fields = ('id', 'username', 'first_name', 'last_name', 'full_name',
                  'gender', 'profile_picture')
        read_only_fields = ('username', )
Example #30
0
class PublicAbakusGroupSerializer(serializers.ModelSerializer):
    logo = ImageField(required=False, options={'height': 400, 'width': 400})

    class Meta:
        model = AbakusGroup
        fields = (
            'id',
            'name',
            'description',
            'contact_email',
            'parent',
            'logo',
            'type',
        )