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)
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)