예제 #1
0
파일: views.py 프로젝트: code-watch/baserow
    def get(self, request, field_id):
        """Selects a single field and responds with a serialized version."""

        field = FieldHandler().get_field(field_id)
        field.table.database.group.has_user(request.user, raise_error=True)
        serializer = field_type_registry.get_serializer(field, FieldSerializer)
        return Response(serializer.data)
예제 #2
0
파일: views.py 프로젝트: jbjuin/baserow
    def patch(self, request, field_id):
        """Updates the field if the user belongs to the group."""

        field = (FieldHandler().get_field(
            field_id,
            base_queryset=Field.objects.select_for_update()).specific)
        type_name = type_from_data_or_registry(request.data,
                                               field_type_registry, field)
        field_type = field_type_registry.get(type_name)
        data = validate_data_custom_fields(
            type_name,
            field_type_registry,
            request.data,
            base_serializer_class=UpdateFieldSerializer,
        )

        # Because each field type can raise custom exceptions at while updating the
        # field we need to be able to map those to the correct API exceptions which are
        # defined in the type.
        with field_type.map_api_exceptions():
            field = FieldHandler().update_field(request.user, field, type_name,
                                                **data)

        serializer = field_type_registry.get_serializer(field, FieldSerializer)
        return Response(serializer.data)
예제 #3
0
    def post(self, request, data, table_id):
        """Creates a new field for a table."""

        type_name = data.pop('type')
        table = TableHandler().get_table(request.user, table_id)
        field = FieldHandler().create_field(request.user, table, type_name,
                                            **data)

        serializer = field_type_registry.get_serializer(field, FieldSerializer)
        return Response(serializer.data)
예제 #4
0
def field_created(sender, field, user, **kwargs):
    table_page_type = page_registry.get('table')
    transaction.on_commit(lambda: table_page_type.broadcast(
        {
            'type':
            'field_created',
            'field':
            field_type_registry.get_serializer(field, FieldSerializer).data
        },
        getattr(user, 'web_socket_id', None),
        table_id=field.table_id))
예제 #5
0
파일: signals.py 프로젝트: jbjuin/baserow
def field_created(sender, field, user, **kwargs):
    table_page_type = page_registry.get("table")
    transaction.on_commit(lambda: table_page_type.broadcast(
        {
            "type":
            "field_created",
            "field":
            field_type_registry.get_serializer(field, FieldSerializer).data,
        },
        getattr(user, "web_socket_id", None),
        table_id=field.table_id,
    ))
예제 #6
0
    def get(self, request, table_id):
        """
        Responds with a list of serialized fields that belong to the table if the user
        has access to that group.
        """

        table = TableHandler().get_table(request.user, table_id)
        fields = Field.objects.filter(table=table).select_related('content_type')

        data = [
            field_type_registry.get_serializer(field, FieldSerializer).data
            for field in fields
        ]
        return Response(data)
예제 #7
0
    def post(self, request, data, table_id):
        """Creates a new field for a table."""

        type_name = data.pop('type')
        field_type = field_type_registry.get(type_name)
        table = TableHandler().get_table(request.user, table_id)

        # Because each field type can raise custom exceptions while creating the
        # field we need to be able to map those to the correct API exceptions which are
        # defined in the type.
        with field_type.map_api_exceptions():
            field = FieldHandler().create_field(request.user, table, type_name, **data)

        serializer = field_type_registry.get_serializer(field, FieldSerializer)
        return Response(serializer.data)
예제 #8
0
파일: views.py 프로젝트: jbjuin/baserow
    def get(self, request, table_id):
        """
        Responds with a list of serialized fields that belong to the table if the user
        has access to that group.
        """

        table = TableHandler().get_table(table_id)
        table.database.group.has_user(request.user,
                                      raise_error=True,
                                      allow_if_template=True)
        fields = Field.objects.filter(
            table=table).select_related("content_type")

        data = [
            field_type_registry.get_serializer(field, FieldSerializer).data
            for field in fields
        ]
        return Response(data)
예제 #9
0
    def patch(self, request, field_id):
        """Updates the field if the user belongs to the group."""

        field = FieldHandler().get_field(
            request.user,
            field_id,
            base_queryset=Field.objects.select_for_update()).specific

        type_name = type_from_data_or_registry(request.data,
                                               field_type_registry, field)
        data = validate_data_custom_fields(
            type_name,
            field_type_registry,
            request.data,
            base_serializer_class=UpdateFieldSerializer)

        field = FieldHandler().update_field(request.user, field, type_name,
                                            **data)

        serializer = field_type_registry.get_serializer(field, FieldSerializer)
        return Response(serializer.data)
예제 #10
0
    def get(self, request, field_id):
        """Selects a single field and responds with a serialized version."""

        field = FieldHandler().get_field(request.user, field_id)
        serializer = field_type_registry.get_serializer(field, FieldSerializer)
        return Response(serializer.data)