Exemple #1
0
class ClassroomSerializer(Serializer):
    id = IntField(required=True)
    name = StrField(required=True)
    date_start = StrField(required=True)
    date_end = StrField(required=True)
    class_code = StrField(required=True)
    teacher = MethodField("serialize_teacher")
    students = MethodField("serialize_students")
    modules = MethodField("serialize_modules")

    def serialize_teacher(self, classroom):
        if not classroom.teacher:
            return {}
        return {"id": classroom.teacher_id}

    def serialize_students(self, classroom):
        if not classroom.students:
            return []
        return student_schemas.StudentRelSerializer(classroom.students,
                                                    many=True).data

    def serialize_modules(self, classroom):
        if not classroom.modules:
            return []
        return [("id", module.id) for module in classroom.modules]
Exemple #2
0
class TopicSerializer(Serializer):
    id = IntField(required=True)
    name = StrField(required=True)
    description = StrField(required=True)
    image = StrField(required=True)
    modules = MethodField("module_serializer")

    def module_serializer(self, topic):
        if not topic.modules:
            return []
        return [{"id": module.id} for module in topic.modules]
Exemple #3
0
class UserSerializer(Serializer):
    id = IntField(required=True)
    name = StrField(required=True)
    email = StrField(required=True)
    github_username = StrField(required=True)
    image = StrField(required=True)
    global_gems = IntField(required=True)
    last_seen = MethodField("serialize_last_seen")

    def serialize_last_seen(self, user):
        if not user.last_seen:
            return None
        return user.last_seen.isoformat()
Exemple #4
0
class SchoolSerializer(Serializer):
    name = StrField(required=True)
    emp_percent = FloatField(required=True)
    big_law = FloatField(required=True)
    small_law = FloatField(required=True)
    public_service = FloatField(required=True)
    clerkships = FloatField(required=True)
    unemp_percent = FloatField(required=True)
    debt = FloatField(required=True)
    attrition = FloatField(required=True)
    prestige = FloatField(required=True)
Exemple #5
0
class MetaSerializer(Serializer):
    id = IntField(required=True, label="meta_id")
    roles = StrField(required=True)
    user_id = MethodField("serialize_user")
    student_id = MethodField("serialize_student")
    teacher_id = MethodField("serialize_teacher")

    def serialize_user(self, meta):
        if not meta.user:
            return None
        return meta.user.id

    def serialize_student(self, meta):
        if not meta.student:
            return None
        return meta.student.id

    def serialize_teacher(self, meta):
        if not meta.teacher:
            return None
        return meta.teacher.id
Exemple #6
0
class ModuleRelSerializer(Serializer):
    id = IntField(required=True)
    name = StrField(required=True)
class ArtistSerializer(Serializer):
    artist = StrField(required=True, attr="name")
    works = WorkSerializer(required=True, many=True)
    total_value = Field(required=True, label="totalValue")
Exemple #8
0
class CheckpointProgressSerializer(Serializer):
    checkpoint = CheckpointRelSerializer()
    content = StrField(required=False)
    student_comment = StrField(required=False)
class WorkSerializer(Serializer):
    name = StrField(required=True)
    currency = StrField(required=True)
    price = StrField(required=True)
Exemple #10
0
class PictureSerializer(Serializer):
    fields = (
        'id', 'game', 'title', 'link', 'size', 'type', 'usetype', 'taglevel1', 'taglevel2', 'taglevel3',
        'created_time', 'quin_tag',
        'pic_type', 'badge', 'extend_data')

    # id = IntField(attr='id')
    title = MethodField()
    link = MethodField()
    taglevel1 = MethodField()
    taglevel2 = MethodField()
    taglevel3 = MethodField()
    created_time = MethodField()
    # size = IntField(attr='_id')
    type = MethodField()
    usetype = MethodField()
    # game = IntField(attr='_id')
    # pic_type = IntField(attr='_id')
    extend_data = StrField(required=True)
    badge = MethodField()
    quin_tag = MethodField()

    async def get_mongo_Badge(self,id):
        return await Badge.objects.filter(id=id).find_all()[0]

    def get_quin_category(self, instance):
        if instance.category:
            return {"category_id": instance.category.id, "category_name": instance.category.name}
        return None

    def get_quin_high_category(self, instance):
        if instance.category:
            if instance.category.high:
                return {"high_id": instance.category.high.id, "high_name": instance.category.high.name}
        return None

    def get_created_time(self, obj):
        return obj.created_time.strftime("%Y-%m-%d %H:%M:%S")

    def get_badge(self, obj):
        if obj.badge == "0":
            return ""
        else:
            try:
                return Badge.objects.filter(id=obj.id).find_all()[0]
            except Exception:
                return ""

    def get_id(self, obj):
        return str(obj.id)

    def get_title(self, obj):
        return obj.title

    def get_link(self, obj):
        if obj.usetype == 1:  # 查一下 应该是1
            return '%s%s%s' % (PIC_CDN_BROWSE, obj.content.startswith('/')
                               and obj.content or '/%s' % obj.content, PLAY_BGP_CSS)
        else:
            return '%s%s%s' % (PIC_CDN_BROWSE, obj.content.startswith('/')
                               and obj.content or '/%s' % obj.content, PLAY_ROLE_CSS)

    def get_type(self, obj):
        return ('webp', 'jpg', 'png', 'gif', 'bmp',)[obj.filetype]

    def get_usetype(self, obj):
        return ('bgp', 'role', "avatar", "item")[obj.usetype]

    def get_taglevel1(self, obj):
        if obj.taglevel1 > 0:
            taginfo = {}
            tag = GameMediatag.select().where(GameMediatag.id == obj.taglevel1).get()
            taginfo["id"] = tag.id
            taginfo["name"] = tag.name
            return taginfo
        else:
            return None

    def get_taglevel2(self, obj):
        if obj.taglevel2 > 0:
            taginfo = {}
            tag = GameMediatag.select().where(GameMediatag.id == obj.taglevel2).get()
            taginfo["id"] = tag.id
            taginfo["name"] = tag.name
            return taginfo
        else:
            return None

    def get_taglevel3(self, obj):
        if obj.taglevel3 > 0:
            taginfo = {}
            tag = GameMediatag.select().where(GameMediatag.id == obj.taglevel3).get()
            taginfo["id"] = tag.id
            taginfo["name"] = tag.name
            return taginfo
        else:
            return None

    def get_quin_tag(self, instance):
        result = []
        if instance.quin_tag:
            for tag in instance.quin_tag:
                try:
                    tag = GameQuintag.select().where(GameQuintag.id == tag).get()
                except GameQuintag.DoesNotExist:
                    continue
                tag_dict = {
                    "id": tag.id,
                    "name": tag.name,
                    "category": None,
                    "high": None}
                if tag.category:
                    tag_dict["category"] = {
                        "id": tag.category.id,
                        "name": tag.category.name}
                    if tag.category.high:
                        tag_dict["high"] = {
                            "id": tag.category.high.id,
                            "name": tag.category.high.name}
                result.append(tag_dict)
        return result