def create(current_user, workspaceId, projectId):
    """
        Create a service. Reuires login
    """
    if request.content_type == 'application/json':
        post_data = request.get_json(force=True)
        required_keys = ['serviceType', 'serviceMeta']
        if all(name in post_data for name in required_keys):

            service = Service(serviceType=post_data.get('serviceType'),
                              serviceMeta=post_data.get('serviceMeta'),
                              projectId=projectId,
                              createdBy=current_user.email_id)

            service.create()

            # add to project
            project = Project.get_by_id(projectId)
            project.services.append(service._id)
            project.save()

            # Replcing _id with id
            service_obj = json.loads(service.to_json())
            service_obj['id'] = service_obj['_id']
            service_obj.pop('_id', None)

            return response_with_obj('success', 'Service created successfully', service_obj, 200)
        else:
            return response('failed', 'Required data not found in POST body.', 402)

    return response('failed', 'Content-type must be json', 402)
Пример #2
0
    def publish(self, projectId, current_user, priceContract):
        """
        Publish Bot - Triggers Billing
        TODO
        """
        self.publishedOn = util.get_current_time()

        if not self.isPublished:
            self.isPublished = True
            ##Create a bot service
            serviceMeta = self.playgroundMeta
            serviceMeta["priceContract"] = priceContract
            service = Service(serviceType='bot',
                              serviceMeta=serviceMeta,
                              projectId=projectId,
                              createdBy=current_user.email_id)
            service.create()

            self.publishedServiceId = service._id

            #add to project
            project = Project.get_by_id(projectId)
            project.services.append(service._id)
            project.save()

            self.save()

        else:
            #update service
            service = Service.get_by_id(self.publishedServiceId)
            servicePriceContract = service.serviceMeta.get(
                "priceContract", {})  #get exisitng price contract
            serviceMeta = self.playgroundMeta  #copy new playground meta
            serviceMeta[
                "priceContract"] = servicePriceContract  #add priceContract to service Meta
            service.serviceMeta = serviceMeta  #set new service meta
            service.save()

            self.save()

        return service._id
def messenger_integration(current_user, workspaceId, projectId):
    page_token = request.get_json(force=True).get('pageToken')
    page_id = request.get_json(force=True).get('pageId')
    page_name = request.get_json(force=True).get('pageName')
    bot_id = request.get_json(force=True).get('botId')
    language_code = request.get_json(force=True).get('languageCode', 'en-US')

    if all([page_token, page_id, page_name, bot_id, language_code]):

        # check if integrations already exist for the facebook page
        existingIntegrations = Service.objects(__raw__={
            'serviceMeta.channelId': str(page_id),
            'serviceMeta.channel': 'messenger',
            'isRemoved': False
        }).count()
        # if integrations exist, disable them
        print("existingIntegrations", existingIntegrations)
        if existingIntegrations:
            service = Service.objects(__raw__={
                'serviceMeta.channelId': str(page_id),
                'serviceMeta.channel': 'messenger',
                'isRemoved': False
            }).first()
            service.isActive = True
            service.save()

            # Replcing _id with id
            service_obj = json.loads(service.to_json())
            service_obj['id'] = service_obj['_id']
            service_obj.pop('_id', None)

            return response_with_obj('success', 'Existing service activated successfully', service_obj, 200)

        else:
            # create new service
            service = Service(serviceType='textChannel',
                              serviceMeta={
                                  'channel': 'messenger',
                                  'channelId': page_id,
                                  'channelName': page_name,
                                  'parentBot': bot_id,
                                  'accessToken': page_token,
                                  'languageCode': language_code
                              },
                              projectId=projectId,
                              createdBy=current_user.email_id)

            service.create()

            # add to project
            project = Project.get_by_id(projectId)
            project.services.append(service._id)
            project.save()

            # Replcing _id with id
            service_obj = json.loads(service.to_json())
            service_obj['id'] = service_obj['_id']
            service_obj.pop('_id', None)

            return response_with_obj('success', 'Service created successfully', service_obj, 200)

    else:
        return response('failed', 'Required data not found in POST body.', 402)