Ejemplo n.º 1
0
    def test_obtain_sandbox_create_new(self):
        user = User(id=1)
        user.save()
        project = Project(id=1, created_by=user)
        project.save()
        branch = Branch(id=1, project_ref=project, created_by=user)
        branch.save()
        branch_revision_1 = BranchRevision(id=1,
                                           branch_ref=branch,
                                           revision_number=0)
        branch_revision_1.save()
        branch_revision_2 = BranchRevision(id=1,
                                           branch_ref=branch,
                                           revision_number=1)
        branch_revision_2.save()
        branch_revision_3 = BranchRevision(id=1,
                                           branch_ref=branch,
                                           revision_number=2)
        branch_revision_3.save()

        sandbox = utils.obtain_sandbox(user, branch.id)
        self.assertEqual(sandbox.created_by, user)
        self.assertEqual(sandbox.bound_to_branch_ref, branch)
        self.assertEqual(sandbox.created_from_branch_revision_ref,
                         branch_revision_3)
        self.assertEqual(sandbox.status, 0)
Ejemplo n.º 2
0
    def change(self, request, id=None):
        """
        Persists a change for given branch revision.
        Change is persisted as sandbox change.
        """
        serializer = ChangeSerializer(data=request.DATA)
        if serializer.is_valid():
            branch_rev = BranchRevision.objects.filter(id=id).first()
            sandbox = utils.obtain_sandbox(request.user,
                                           branch_rev.branch_ref.id)
            if sandbox.status != 0:
                return Response(error="cannot commit a closed sandbox",
                                status=status.HTTP_400_BAD_REQUEST)

            change = serializer.object
            change.made_by = request.user
            change.save()
            sandbox_change = SandboxChange()
            sandbox_change.change_ref = change
            sandbox_change.ordinal = SandboxChange.objects.filter(
                change_ref=change).count() + 1
            sandbox_change.sandbox_ref = sandbox
            sandbox_change.save()
            return Response(status=status.HTTP_204_NO_CONTENT)
        else:
            print "\nerrors occured:\n"
            print serializer.errors
        return Response("error occured",
                        status=status.HTTP_500_INTERNAL_SERVER_ERROR)
Ejemplo n.º 3
0
    def change(self, request, id=None):
        """
        Persists a change for given branch revision.
        Change is persisted as sandbox change.
        """
        serializer = ChangeSerializer(data=request.DATA)
        if serializer.is_valid():
            branch_rev = BranchRevision.objects.filter(id=id).first()
            sandbox = utils.obtain_sandbox(request.user, branch_rev.branch_ref.id)
            if sandbox.status != 0:
                return Response(error="cannot commit a closed sandbox", status=status.HTTP_400_BAD_REQUEST)

            change = serializer.object
            change.made_by = request.user
            change.save()
            sandbox_change = SandboxChange()
            sandbox_change.change_ref = change
            sandbox_change.ordinal = SandboxChange.objects.filter(change_ref=change).count() + 1
            sandbox_change.sandbox_ref = sandbox
            sandbox_change.save()
            return Response(status=status.HTTP_204_NO_CONTENT)
        else:
            print "\nerrors occured:\n"
            print serializer.errors
        return Response("error occured", status=status.HTTP_500_INTERNAL_SERVER_ERROR)
Ejemplo n.º 4
0
    def metadata(self, request, id=None):
        """
        Builds and returns sandbox metadata.
        """
        branch_revision = self.get_object()
        user = request.user
        sandbox = utils.obtain_sandbox(user, branch_revision.branch_ref.id)

        sandbox_state = SandboxState(user, sandbox)
        sandbox_state.build_sandbox_state_metadata()
        schemas = sandbox_state.schemas
        serializer = SchemaSerializer(schemas, many=True)
        return Response(serializer.data, status=status.HTTP_200_OK)
Ejemplo n.º 5
0
    def metadata(self, request, id=None):
        """
        Builds and returns sandbox metadata.
        """
        branch_revision = self.get_object()
        user = request.user
        sandbox = utils.obtain_sandbox(user, branch_revision.branch_ref.id)

        sandbox_state = SandboxState(user, sandbox)
        sandbox_state.build_sandbox_state_metadata()
        schemas = sandbox_state.schemas
        serializer = SchemaSerializer(schemas, many=True)
        return Response(serializer.data, status=status.HTTP_200_OK)
Ejemplo n.º 6
0
    def diagram(self, request, id=None):
        """
        Builds and returns single diagram.
        """
        branch_revision = self.get_object()
        user = request.user
        sandbox = utils.obtain_sandbox(user, branch_revision.branch_ref.id)

        sandbox_state = SandboxState(user, sandbox)
        sandbox_state.build_sandbox_state_symbols()
        diagram = sandbox_state.retrieve_diagram_details(request.QUERY_PARAMS.get('diagramId', None))

        serializer = DiagramSerializer(diagram)
        return Response(serializer.data, status=status.HTTP_200_OK)
Ejemplo n.º 7
0
    def project_state(self, request, id=None):
        """
        Builds and returns full sandbox state. Contains both metadata and symbols (diagrams)
        """
        branch_revision = self.get_object()
        user = request.user
        sandbox = utils.obtain_sandbox(user, branch_revision.branch_ref.id)

        sandbox_state = SandboxState(user, sandbox)
        sandbox_state.build_sandbox_state_metadata()
        sandbox_state.build_sandbox_state_symbols()

        sandbox_info = sandbox_state.build_project_info()
        serializer = SandboxBasicInfoSerializer(sandbox_info)
        return Response(serializer.data, status=status.HTTP_200_OK)
Ejemplo n.º 8
0
    def diagram(self, request, id=None):
        """
        Builds and returns single diagram.
        """
        branch_revision = self.get_object()
        user = request.user
        sandbox = utils.obtain_sandbox(user, branch_revision.branch_ref.id)

        sandbox_state = SandboxState(user, sandbox)
        sandbox_state.build_sandbox_state_symbols()
        diagram = sandbox_state.retrieve_diagram_details(
            request.QUERY_PARAMS.get('diagramId', None))

        serializer = DiagramSerializer(diagram)
        return Response(serializer.data, status=status.HTTP_200_OK)
Ejemplo n.º 9
0
    def project_state(self, request, id=None):
        """
        Builds and returns full sandbox state. Contains both metadata and symbols (diagrams)
        """
        branch_revision = self.get_object()
        user = request.user
        sandbox = utils.obtain_sandbox(user, branch_revision.branch_ref.id)

        sandbox_state = SandboxState(user, sandbox)
        sandbox_state.build_sandbox_state_metadata()
        sandbox_state.build_sandbox_state_symbols()

        sandbox_info = sandbox_state.build_project_info()
        serializer = SandboxBasicInfoSerializer(sandbox_info)
        return Response(serializer.data, status=status.HTTP_200_OK)
Ejemplo n.º 10
0
    def commit(self, request, id=None):
        """
        Commits current sandbox changes. See 'utils.commit_sandbox'
        """
        branch_revision = self.get_object()
        latest_branch_revision = BranchRevision.objects.filter(branch_ref=branch_revision.branch_ref).order_by(
            '-revision_number').first()
        if branch_revision.id != latest_branch_revision.id:
            return Response("cannot commit a on branch revision that is not latest!",
                            status=status.HTTP_400_BAD_REQUEST)

        user = request.user
        sandbox = utils.obtain_sandbox(user, branch_revision.branch_ref.id)
        if sandbox.status != 0:
            return Response("cannot commit a closed sandbox", status=status.HTTP_400_BAD_REQUEST)
        utils.commit_sandbox(sandbox, request.user)
        return Response(status=status.HTTP_200_OK)
Ejemplo n.º 11
0
    def test_obtain_sandbox_create_new(self):
        user = User(id=1)
        user.save()
        project = Project(id=1, created_by=user)
        project.save()
        branch = Branch(id=1, project_ref=project, created_by=user)
        branch.save()
        branch_revision_1 = BranchRevision(id=1, branch_ref=branch, revision_number=0)
        branch_revision_1.save()
        branch_revision_2 = BranchRevision(id=1, branch_ref=branch, revision_number=1)
        branch_revision_2.save()
        branch_revision_3 = BranchRevision(id=1, branch_ref=branch, revision_number=2)
        branch_revision_3.save()

        sandbox = utils.obtain_sandbox(user, branch.id)
        self.assertEqual(sandbox.created_by, user)
        self.assertEqual(sandbox.bound_to_branch_ref, branch)
        self.assertEqual(sandbox.created_from_branch_revision_ref, branch_revision_3)
        self.assertEqual(sandbox.status, 0)
Ejemplo n.º 12
0
    def commit(self, request, id=None):
        """
        Commits current sandbox changes. See 'utils.commit_sandbox'
        """
        branch_revision = self.get_object()
        latest_branch_revision = BranchRevision.objects.filter(
            branch_ref=branch_revision.branch_ref).order_by(
                '-revision_number').first()
        if branch_revision.id != latest_branch_revision.id:
            return Response(
                "cannot commit a on branch revision that is not latest!",
                status=status.HTTP_400_BAD_REQUEST)

        user = request.user
        sandbox = utils.obtain_sandbox(user, branch_revision.branch_ref.id)
        if sandbox.status != 0:
            return Response("cannot commit a closed sandbox",
                            status=status.HTTP_400_BAD_REQUEST)
        utils.commit_sandbox(sandbox, request.user)
        return Response(status=status.HTTP_200_OK)