Esempio n. 1
0
class RBUserSchema(UserSchema):
    has_owned_rooms = mm.Method('has_managed_rooms')
    is_rb_admin = mm.Function(lambda user: rb_is_admin(user))

    class Meta:
        fields = UserSchema.Meta.fields + ('has_owned_rooms', 'is_admin', 'is_rb_admin', 'identifier', 'full_name')

    def has_managed_rooms(self, user):
        from indico.modules.rb.operations.rooms import has_managed_rooms
        return has_managed_rooms(user)
Esempio n. 2
0
class EventNoteRecordSchema(RecordSchema, EventNoteSchema):
    class Meta:
        model = EventNote
        non_indexable = ('note_id', 'type', 'event_id', 'contribution_id',
                         'subcontribution_id', 'category_id', 'category_path',
                         'url', 'modified_dt')
        fields = RecordSchema.Meta.fields + non_indexable

    _data = fields.Function(lambda note: _EventNoteDataSchema().dump(note))
    category_path = fields.Function(lambda note, ctx: _get_category_chain(
        note.event, ctx.get('categories')))
    url = mm.Function(
        lambda note: url_for('event_notes.view', note, _external=True))
Esempio n. 3
0
class SubContributionRecordSchema(RecordSchema, SubContributionSchema):
    class Meta:
        model = SubContribution
        indexable = ('title', 'description', 'persons', 'location')
        non_indexable = ('subcontribution_id', 'type', 'event_id',
                         'contribution_id', 'category_id', 'category_path',
                         'url', 'start_dt', 'end_dt', 'duration')
        fields = RecordSchema.Meta.fields + non_indexable

    _data = fields.Function(lambda subc: SubContributionSchema(
        only=SubContributionRecordSchema.Meta.indexable).dump(subc))
    category_path = fields.Function(lambda subc, ctx: _get_category_chain(
        subc.event, ctx.get('categories')))
    url = mm.Function(lambda subc: url_for(
        'contributions.display_subcontribution', subc, _external=True))

    @post_dump
    def _transform(self, data, **kwargs):
        if desc := data['_data'].get('description'):
            data['_data']['description'] = strip_tags(desc).strip()
        return data
Esempio n. 4
0
class ContributionRecordSchema(RecordSchema, ContributionSchema):
    class Meta:
        model = Contribution
        indexable = ('title', 'description', 'location', 'persons')
        non_indexable = ('contribution_id', 'type', 'contribution_type',
                         'event_id', 'url', 'category_id', 'category_path',
                         'start_dt', 'end_dt', 'duration')
        fields = RecordSchema.Meta.fields + non_indexable

    _data = fields.Function(lambda contrib: ContributionSchema(
        only=ContributionRecordSchema.Meta.indexable).dump(contrib))
    category_path = fields.Function(
        lambda c, ctx: _get_category_chain(c.event, ctx.get('categories')))
    url = mm.Function(lambda contrib: url_for(
        'contributions.display_contribution', contrib, _external=True))

    @post_dump
    def _transform(self, data, **kwargs):
        if contribution_type := data.pop('contribution_type', None):
            data['type_format'] = contribution_type
        if desc := data['_data'].get('description'):
            data['_data']['description'] = strip_tags(desc).strip()