Пример #1
0
class ChangeUserOrganizationRoleSerializer(serializers.Serializer):
    """
    TODO: Can we merge this with the actual UserSerializer?
    A: I dunno, but i doubled down in the next serializer
    """
    role = serializers.ChoiceField(
        choices=['Member', 'Admin']
    )

    user = serializers.PrimaryKeyRelatedField(
        queryset=User.objects.get_queryset()
    )

    organization = serializers.PrimaryKeyRelatedField(
        queryset=Organization.objects.get_queryset()
    )

    def save(self, **kwargs):
        role = self.validated_data['role']
        user = self.validated_data['user']
        organization = self.validated_data['organization']
        org_user, _ = organization.get_or_add_user(user)

        if role == "Admin":
            org_user.is_admin = True
        else:
            org_user.is_admin = False
        org_user.save()

        return True

    class Meta:
        model = User
Пример #2
0
class RegisterSerializer(serializers.ModelSerializer):
    forum = serializers.PrimaryKeyRelatedField(many=False, read_only=True)
    user = serializers.PrimaryKeyRelatedField(many=False, read_only=True)

    class Meta:
        model = models.Register
        exclude = ('date', )
Пример #3
0
class ImageryRequestSerializer(serializers.HyperlinkedModelSerializer):
    requested_scenes = serializers.PrimaryKeyRelatedField(many=True,
                                                          read_only=True)
    job_bundles = serializers.PrimaryKeyRelatedField(many=True, read_only=True)

    class Meta:
        model = ImageryRequest
        fields = '__all__'
Пример #4
0
class EntrySerializer(serializers.ModelSerializer):
    permissions = DRYPermissionsField()
    competitor = serializers.PrimaryKeyRelatedField(
        queryset=Competitor.objects.all(),
        required=False,
        allow_null=True,
    )
    # logs = StateLogSerializer(many=True)
    statelogs = serializers.PrimaryKeyRelatedField(many=True, read_only=True)

    class Meta:
        model = Entry
        fields = (
            'id',
            'url',
            'status',
            'is_evaluation',
            'is_private',
            'draw',
            'seed',
            'prelim',
            'participants',
            'pos',
            'representing',
            'rank',
            'description',
            'notes',
            'mus_points',
            'per_points',
            'sng_points',
            'tot_points',
            'mus_score',
            'per_score',
            'sng_score',
            'tot_score',
            'mus_rank',
            'per_rank',
            'sng_rank',
            'tot_rank',
            'session',
            'group',
            'competitor',
            'contestants',
            'permissions',
            'statelogs',
        )

    def validate(self, data):
        """Check that the start is before the stop."""
        # if data['is_private'] and data['contestants']:
        #     raise serializers.ValidationError("Can not be private and compete for an award.")
        return data
Пример #5
0
class ChangePasswordSerializer(serializers.Serializer):
    """
    When a user is logged in, allow them to change their own password
    """
    current_password = serializers.CharField()
    confirm_password = serializers.CharField()
    password = serializers.CharField()
    user = serializers.PrimaryKeyRelatedField(
        queryset=User.objects.get_queryset()
    )

    def validate(self, data):
        # Check current password
        if not data['user'].check_password(data['current_password']):
            raise serializers.ValidationError(
                'Current password is not correct'
            )

        # Perform server side validation
        if data['password'] != data['confirm_password']:
            raise serializers.ValidationError(
                'Password and Confirm Password should be the same'
            )

        return data

    def save(self, **kwargs):
        user = self.validated_data['user']
        user.set_password(self.validated_data['password'])
        user.save()
        return True

    class Meta:
        model = User
Пример #6
0
class GroupSerializer(serializers.ModelSerializer):
    """This class is used to manage how we pass Group to the client app."""
    members = serializers.PrimaryKeyRelatedField(read_only=True, many=True)

    class Meta:
        model = Group
        fields = '__all__'
Пример #7
0
class GuestLoginRequestSerializer(serializers.Serializer):
    page = serializers.PrimaryKeyRelatedField(
        queryset=Page.objects.all(),
        many=False
    )
    email = serializers.EmailField()

    def save(self, **kwargs):
        email = self.validated_data['email']
        page = self.validated_data['page']
        group = page.group

        try:
            user = User.objects.get(username=email)
            if group.is_guest(user):
                generate_user_magic_link.delay(user_id=str(user.id), page_id=str(page.id))
            return True
        except Exception:
            # ToDo: Probably add some sort of instrumentation here
            return True

    class Meta:
        model = User
        fields = (
            'name',
            'group'
        )
Пример #8
0
class FullNormalizedDataSerializer(serializers.ModelSerializer):

    tasks = serializers.PrimaryKeyRelatedField(many=True, read_only=False, queryset=CeleryTaskResult.objects.all())
    source = serializers.HiddenField(default=serializers.CurrentUserDefault())

    class Meta:
        model = models.NormalizedData
        fields = ('data', 'source', 'raw', 'tasks')
Пример #9
0
class AnalysisSerializer(serializers.ModelSerializer):

    dataset = serializers.PrimaryKeyRelatedField(queryset=Dataset.objects)

    class Meta:
        model = Analysis
        fields = '__all__'
        validators = []
        depth = 2
Пример #10
0
class GuestUserCreateSerializer(serializers.Serializer):
    """
    TODO: Matt rewrite with gin
    """
    organization = serializers.PrimaryKeyRelatedField(
        queryset=Organization.objects.get_queryset(),
        many=False
    )

    email = serializers.EmailField()
    name = serializers.CharField()

    # I don't know why, but setting this to be a pk related field errors...
    page = serializers.PrimaryKeyRelatedField(
        queryset=Page.objects.all(),
        many=False
    )

    def save(self, **kwargs):
        email = self.validated_data['email']
        user, created = User.objects.get_or_create(username=email)
        if created:
            user.name = self.validated_data['name']

        organization = self.validated_data['organization']
        org_user, _ = organization.get_or_add_user(user)
        org_user.is_guest = True
        org_user.is_admin = False

        user.save()
        org_user.save()
        page = self.validated_data['page']
        page.viewers.add(user)
        page.save()
        return user

    class Meta:
        model = User
        fields = (
            'name',
            'group'
        )
Пример #11
0
class FloorSerializer(serializers.ModelSerializer):
    building = BuildingSerializer(read_only=True)
    building_id = serializers.PrimaryKeyRelatedField(
        read_only=False, queryset=Building.objects.all())
    included_serializers = {'building': BuildingSerializer}

    class Meta:
        model = Floor
        fields = ('id', 'building', 'name', 'building_id')

    class JSONAPIMeta:
        included_resources = ['building']
Пример #12
0
class ChangedFieldSerializer(serializers.Serializer):
    title = serializers.CharField(max_length=200, required=False)
    priority = serializers.IntegerField(min_value=1,
                                        max_value=5,
                                        required=False)
    resolution = serializers.CharField(required=False)
    due_date = serializers.DateTimeField(required=False, allow_null=True)
    assigned_to = serializers.PrimaryKeyRelatedField(
        required=False,
        allow_null=True,
        queryset=Person.objects.all(
        )  # TODO restrict this queryset to something more sensible
    )

    signaled_by = serializers.PrimaryKeyRelatedField(
        required=False, allow_null=True, queryset=Person.objects.all())

    organization = serializers.PrimaryKeyRelatedField(
        required=False, allow_null=True, queryset=Organization.objects.all())

    department = serializers.PrimaryKeyRelatedField(
        required=False, allow_null=True, queryset=Team.objects.all())
Пример #13
0
class CommentSerializer(serializers.ModelSerializer):
    topic = serializers.PrimaryKeyRelatedField(many=False, read_only=True)
    user = serializers.PrimaryKeyRelatedField(many=False, read_only=True)
    html_description = serializers.SerializerMethodField()
    html_description = serializers.SerializerMethodField()
    likes = serializers.SerializerMethodField()

    def get_html_description(self, obj):
        # Parse markdown
        return mistune.markdown(obj.description)

    def get_likes(self, obj):
        # Get likes comment
        try:
            likes = obj.likes_comment.users
        except models.LikeComment.DoesNotExist:
            likes = []
        return likes

    class Meta:
        model = models.Comment
        fields = '__all__'
Пример #14
0
class FullNormalizedDataSerializer(serializers.ModelSerializer):
    # link to self
    url = fields.ShareIdentityField(view_name='api:normalizeddata-detail')

    tasks = serializers.PrimaryKeyRelatedField(
        many=True,
        read_only=False,
        queryset=models.CeleryTaskResult.objects.all())
    source = serializers.HiddenField(default=serializers.CurrentUserDefault())

    class Meta:
        model = models.NormalizedData
        fields = ('data', 'source', 'raw', 'tasks', 'url')
Пример #15
0
class GeneratedReportDownloadSerializer(serializers.Serializer):
    """
    Serializer to automatically generate a downloadable report for a list of
    Saved bills
    """
    title = serializers.CharField()
    organization = serializers.PrimaryKeyRelatedField(
        queryset=Organization.objects.get_queryset(), many=False)
    group = serializers.PrimaryKeyRelatedField(queryset=Group.objects.all(),
                                               many=False)

    def save(self, **kwargs):
        org_id = str(self.validated_data['organization'].id)
        title = self.validated_data['title']
        url = GenerateReport(org_id=org_id,
                             group_id=str(
                                 self.validated_data['group'].id)).from_group(
                                     str(self.validated_data['group'].id),
                                     title)
        return url

    class Meta:
        model = Group
Пример #16
0
class ChangeUserStatusSerializer(serializers.Serializer):
    """
    TODO: Can we merge this with the actual UserSerializer?
    """
    status = serializers.BooleanField()
    user = serializers.PrimaryKeyRelatedField(
        queryset=User.objects.get_queryset()
    )

    def save(self, **kwargs):
        user = self.validated_data['user']
        user.is_active = self.validated_data['status']
        user.save()
        return True

    class Meta:
        model = User
Пример #17
0
class EntrySerializer(serializers.ModelSerializer):
    permissions = DRYPermissionsField()
    # logs = StateLogSerializer(many=True)
    statelogs = serializers.PrimaryKeyRelatedField(many=True, read_only=True)
    included_serializers = {
        'contestants': 'apps.smanager.serializers.ContestantSerializer',
        'statelogs': 'apps.smanager.serializers.StateLogSerializer',
        'group': 'apps.bhs.serializers.GroupSerializer',
    }

    class Meta:
        model = Entry
        fields = (
            'id',
            'url',
            'status',
            'is_evaluation',
            'is_private',
            'is_mt',
            'draw',
            'seed',
            'prelim',
            'participants',
            'pos',
            'representing',
            'description',
            'notes',
            'session',
            'group',
            'contestants',
            'permissions',
            'statelogs',
        )

    class JSONAPIMeta:
        included_resources = [
            # 'appearances',
            'contestants',
        ]

    def validate(self, data):
        """Check that the start is before the stop."""
        # if data['is_private'] and data['contestants']:
        #     raise serializers.ValidationError("Can not be private and compete for an award.")
        return data
Пример #18
0
class ProfileSerializer(serializers.ModelSerializer):
    user = serializers.PrimaryKeyRelatedField(many=False, read_only=True)
    photo = CustomFileField(
        validators=[valid_extension_image],
        max_length=None,
        allow_empty_file=True,
    )
    last_seen = serializers.SerializerMethodField()
    online = serializers.SerializerMethodField()

    def get_last_seen(self, obj):
        return obj.last_seen

    def get_online(self, obj):
        return obj.online

    class Meta:
        model = models.Profile
        fields = '__all__'
Пример #19
0
class EntrySerializer(serializers.ModelSerializer):
    permissions = DRYPermissionsField()
    statelogs = serializers.PrimaryKeyRelatedField(
        many=True,
        read_only=True,
    )
    included_serializers = {
    }

    class Meta:
        model = Entry
        fields = [
            'id',
            'status',
            'is_evaluation',
            'is_private',
            'is_mt',
            'is_senior',
            'is_youth',
            'draw',
            'seed',
            'prelim',
            'base',
            'participants',
            'pos',
            'representing',
            'chapters',
            'description',
            'notes',
            'image_id',

            'group_id',
            'name',
            'kind',
            'gender',
            # 'district',
            'division',
            'bhs_id',
            'code',

            'owners',
            'contests',
            'repertories',
            'session',

            'statelogs',
            'permissions',
        ]
        read_only_fields = [
            'image_id',
        ]

    class JSONAPIMeta:
        included_resources = [
            # 'appearances',
        ]

    def validate(self, data):
        """Check that the start is before the stop."""
        # if data['is_private']:
        #     raise serializers.ValidationError("Can not be private and compete for an award.")
        return data
Пример #20
0
class ContentTypeFieldSerializer(serializers.ModelSerializer):
    """
    Serializer class that provides a contenty_type field
    """
    target_content_type = serializers.PrimaryKeyRelatedField(
        many=False, queryset=get_allowed_contenttypes())
Пример #21
0
class TopicSerializer(serializers.ModelSerializer):
    total_comments = serializers.SerializerMethodField()
    views = serializers.SerializerMethodField()
    forum = serializers.PrimaryKeyRelatedField(many=False, read_only=True)
    user = serializers.PrimaryKeyRelatedField(many=False, read_only=True)
    html_description = serializers.SerializerMethodField()
    likes = serializers.SerializerMethodField()
    users_topic_comment = serializers.SerializerMethodField()

    def get_total_comments(self, obj):
        """
        Get total comments of topic
        """
        return obj.topics.count()

    def get_views(self, obj):
        """
        Get total hitcounts
        """
        hit = models.HitcountTopic.objects.filter(topic=obj)
        if hit.exists():
            count = len(hit.first().data)
        else:
            count = 0
        return count

    def get_html_description(self, obj):
        # Parse markdown
        return mistune.markdown(obj.description)

    def get_likes(self, obj):
        # Get likes topic
        try:
            likes = obj.likes_topic.users
        except models.LikeTopic.DoesNotExist:
            likes = []
        return likes

    def get_users_topic_comment(self, obj):
        # I get the users who participated in the topic
        users = []
        list_users = []
        username_topic = obj.user.username

        for comment in obj.topics.all():
            username = comment.user.username
            if not (username in list_users):
                photo = utils.get_photo_profile(comment.user.id)
                record = {"username": username, "photo": photo}
                # If is creator topic, add top
                if username == username_topic:
                    users.insert(0, record)
                else:
                    users.append(record)
                list_users.append(username)

        # If creator topic not exists, add
        if not (username_topic in list_users) and obj.topics.count() > 0:
            photo = utils.get_photo_profile(obj.user.id)
            users.insert(0, {"username": username_topic, "photo": photo})

        return users

    class Meta:
        model = models.Topic
        fields = '__all__'
        read_only_fields = ('slug', )