def UpdateOrganization(self, request, context):

        try:

            organization_identity = Organization.get_identity_resource({
                "uuid":
                request.uuid,
                "visible":
                True
            })

            if not organization_identity:
                return make_pb({}, UpdateOrganizationIdentityResponse)

            organization_identity.organization_domain = request.organization_domain
            organization_identity.name = request.name

            organization_identity.save()

        except Exception as e:
            warning(e)
            raise e

        return UpdateOrganizationIdentityResponse(
            uuid=organization_identity.uuid)
    def CreateBranchOffice(self, request, context):

        try:

            branch_office_dict = dict()
            branch_office_dict["name"] = request.name
            branch_office_dict["street"] = request.street
            branch_office_dict["number"] = request.number
            branch_office_dict["city"] = request.city
            branch_office_dict["state"] = request.state
            branch_office_dict["zip_code"] = request.zip_code
            branch_office_dict["organization"] = dict()
            branch_office_dict["organization"][
                "uuid"] = request.organization_uuid

            organization_identity = Organization.get_identity_resource({
                "uuid":
                request.organization_uuid,
                "visible":
                True
            })

            if not organization_identity:
                return make_pb({}, CreateBranchOfficeIdentityResponse)

            branch_office_identity = BranchOfficeSchema().load(
                branch_office_dict)
            branch_office_identity.save()

        except Exception as e:
            warning(e)
            raise e

        return CreateBranchOfficeIdentityResponse(
            uuid=branch_office_identity.uuid)
    def GetOrganizationByUUID(self, request, context):

        organization_identity = Organization.get_identity_resource({
            "uuid":
            request.uuid,
            "visible":
            True
        })

        organization_identity = OrganizationSchema().dump(
            organization_identity)
        warning(organization_identity)
        return make_pb(organization_identity or {},
                       GetOrganizationIdentityByUUIDResponse)
    def GetBranchOfficesByEmail(self, request, context):

        filter_dict = dict()
        filter_dict["organization_domain"] = request.organization_domain
        filter_dict["visible"] = True

        organization_identity = Organization.get_identity_resource(filter_dict)
        organization_identity_dict = OrganizationSchema(
            only=("branch_offices", )).dump(organization_identity)

        branch_office_identity_list = BranchOfficeSchema(
            many=True,
            only=("uuid",
                  "name")).dump(organization_identity_dict["branch_offices"])

        for branch_office_identity in branch_office_identity_list:
            yield make_pb(branch_office_identity or {},
                          GetBranchOfficesByEmailResponse)
    def DeleteOrganization(self, request, context):

        try:
            filter_dict = dict()
            filter_dict["uuid"] = request.uuid

            organization_identity = Organization.get_identity_resource(
                filter_dict)

            if not organization_identity:
                return DeleteOrganizationIdentityResponse(
                    uuid=organization_identity)

            organization_identity.disable()

        except Exception as e:
            warning(e)
            raise e

        return DeleteOrganizationIdentityResponse(
            uuid=organization_identity.uuid)