Esempio n. 1
0
    def get(self, request, table_id, filters, sortings):
        """
        Responds with a list of serialized views that belong to the table if the user
        has access to that group.
        """

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

        if filters:
            views = views.prefetch_related('viewfilter_set')

        if sortings:
            views = views.prefetch_related('viewsort_set')

        data = [
            view_type_registry.get_serializer(
                view,
                ViewSerializer,
                filters=filters,
                sortings=sortings
            ).data
            for view in views
        ]
        return Response(data)
Esempio n. 2
0
    def get(self, request, table_id, filters, sortings):
        """
        Responds with a list of serialized views 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
        )
        views = View.objects.filter(table=table).select_related("content_type")

        if filters:
            views = views.prefetch_related("viewfilter_set")

        if sortings:
            views = views.prefetch_related("viewsort_set")

        data = [
            view_type_registry.get_serializer(
                view, ViewSerializer, filters=filters, sortings=sortings
            ).data
            for view in views
        ]
        return Response(data)
Esempio n. 3
0
    def post(self, request, data, table_id):
        """Creates a new view for a user."""

        table = TableHandler().get_table(request.user, table_id)
        view = ViewHandler().create_view(
            request.user, table, data.pop('type'), **data)

        serializer = view_type_registry.get_serializer(view, ViewSerializer)
        return Response(serializer.data)
Esempio n. 4
0
    def get(self, request, view_id, filters, sortings):
        """Selects a single view and responds with a serialized version."""

        view = ViewHandler().get_view(request.user, view_id)
        serializer = view_type_registry.get_serializer(view,
                                                       ViewSerializer,
                                                       filters=filters,
                                                       sortings=sortings)
        return Response(serializer.data)
Esempio n. 5
0
    def get(self, request, view_id, filters, sortings):
        """Selects a single view and responds with a serialized version."""

        view = ViewHandler().get_view(view_id)
        view.table.database.group.has_user(request.user, raise_error=True)
        serializer = view_type_registry.get_serializer(
            view, ViewSerializer, filters=filters, sortings=sortings
        )
        return Response(serializer.data)
Esempio n. 6
0
    def post(self, request, data, table_id, filters, sortings):
        """Creates a new view for a user."""

        table = TableHandler().get_table(table_id)
        view = ViewHandler().create_view(request.user, table, data.pop("type"), **data)

        serializer = view_type_registry.get_serializer(
            view, ViewSerializer, filters=filters, sortings=sortings
        )
        return Response(serializer.data)
Esempio n. 7
0
def view_created(sender, view, user, **kwargs):
    table_page_type = page_registry.get('table')
    transaction.on_commit(lambda: table_page_type.broadcast(
        {
            'type':
            'view_created',
            'view':
            view_type_registry.get_serializer(
                view, ViewSerializer, filters=True, sortings=True).data
        },
        getattr(user, 'web_socket_id', None),
        table_id=view.table_id))
Esempio n. 8
0
def view_created(sender, view, user, **kwargs):
    table_page_type = page_registry.get("table")
    transaction.on_commit(lambda: table_page_type.broadcast(
        {
            "type":
            "view_created",
            "view":
            view_type_registry.get_serializer(
                view, ViewSerializer, filters=True, sortings=True).data,
        },
        getattr(user, "web_socket_id", None),
        table_id=view.table_id,
    ))
Esempio n. 9
0
    def patch(self, request, view_id):
        """Updates the view if the user belongs to the group."""

        view = ViewHandler().get_view(request.user, view_id).specific
        view_type = view_type_registry.get_by_model(view)
        data = validate_data_custom_fields(
            view_type.type, view_type_registry, request.data,
            base_serializer_class=UpdateViewSerializer
        )

        view = ViewHandler().update_view(request.user, view, **data)

        serializer = view_type_registry.get_serializer(view, ViewSerializer)
        return Response(serializer.data)
Esempio n. 10
0
def view_updated(sender, view, user, **kwargs):
    table_page_type = page_registry.get('table')
    transaction.on_commit(lambda: table_page_type.broadcast(
        {
            'type':
            'view_updated',
            'view_id':
            view.id,
            'view':
            view_type_registry.get_serializer(
                view,
                ViewSerializer,
                # We do not want to broad cast the filters and sortings every time
                # the view changes. There are separate views and handlers for them
                # each will broad cast their own message.
                filters=False,
                sortings=False).data
        },
        getattr(user, 'web_socket_id', None),
        table_id=view.table_id))