def post(self): jsonOutput = {'result': False} user = self.current_user linkType = self.request.get('linkType') sourcesURLs=json.loads(self.request.get('sourcesURLs')) sourcesNames=json.loads(self.request.get('sourcesNames')) parentNewScore = None if user: try: parentPointURL = self.request.get('pointUrl') oldPoint, oldPointRoot = Point.getCurrentByUrl(parentPointURL) if oldPointRoot: newPoint, newLinkPoint = Point.addSupportingPoint( oldPointRoot=oldPointRoot, title=self.request.get('title'), content=self.request.get('content'), summaryText=self.request.get('plainText'), user=user, # backlink=oldPoint.key.parent(), linkType = linkType, imageURL=self.request.get('imageURL'), imageAuthor=self.request.get('imageAuthor'), imageDescription=self.request.get('imageDescription'), sourcesURLs=sourcesURLs, sourcesNames=sourcesNames ) # TODO: Gene: Probably have a more efficient retrieval here no? oldPoint, oldPointRoot = Point.getCurrentByUrl(parentPointURL) if oldPoint: parentNewScore = oldPoint.pointValue() else: raise WhysaurusException('Point with URL %s not found' % parentPointURL) except WhysaurusException as e: jsonOutput = { 'result': False, 'errMessage': str(e) } else: ReportEvent.queueEventRecord(user.key.urlsafe(), newLinkPoint.key.urlsafe(), newPoint.key.urlsafe(), "Create Point") newLinkPointHTML = self.template_render('linkPoint.html', { 'point': newLinkPoint, 'linkType': linkType }) jsonOutput = { 'result': True, 'version': newPoint.version, 'author': newPoint.authorName, 'dateEdited': newPoint.PSTdateEdited.strftime('%b. %d, %Y, %I:%M %p'), 'numLinkPoints': newPoint.linkCount(linkType), 'newLinkPoint': newLinkPointHTML, 'authorURL': self.current_user.url, 'parentNewScore': parentNewScore } self.response.headers["Content-Type"] = 'application/json; charset=utf-8' self.response.out.write(json.dumps(jsonOutput)) else: self.response.out.write('Need to be logged in')
def post(self): jsonOutput = {'result': False} user = self.current_user linkType = self.request.get('linkType') sourcesURLs=json.loads(self.request.get('sourcesURLs')) sourcesNames=json.loads(self.request.get('sourcesNames')) if user: try: parentPointURL = self.request.get('pointUrl') oldPoint, oldPointRoot = Point.getCurrentByUrl(parentPointURL) if oldPointRoot: newPoint, newLinkPoint = Point.addSupportingPoint( oldPointRoot=oldPointRoot, title=self.request.get('title'), content=self.request.get('content'), summaryText=self.request.get('plainText'), user=user, # backlink=oldPoint.key.parent(), linkType = linkType, imageURL=self.request.get('imageURL'), imageAuthor=self.request.get('imageAuthor'), imageDescription=self.request.get('imageDescription'), sourcesURLs=sourcesURLs, sourcesNames=sourcesNames ) else: raise WhysaurusException('Point with URL %s not found' % parentPointURL) except WhysaurusException as e: jsonOutput = { 'result': False, 'errMessage': str(e) } else: ReportEvent.queueEventRecord(user.key.urlsafe(), newLinkPoint.key.urlsafe(), newPoint.key.urlsafe(), "Create Point") newLinkPointHTML = self.template_render('linkPoint.html', { 'point': newLinkPoint, 'linkType': linkType }) jsonOutput = { 'result': True, 'version': newPoint.version, 'author': newPoint.authorName, 'dateEdited': newPoint.PSTdateEdited.strftime('%b. %d, %Y, %I:%M %p'), 'numLinkPoints': newPoint.linkCount(linkType), 'newLinkPoint': newLinkPointHTML, 'authorURL': self.current_user.url } self.response.headers["Content-Type"] = 'application/json; charset=utf-8' self.response.out.write(json.dumps(jsonOutput)) else: self.response.out.write('Need to be logged in')
def mutate(self, info, point_data): oldPoint, oldPointRoot = PointModel.getCurrentByUrl( point_data.parentURL) newPoint, newLinkPoint = PointModel.addSupportingPoint( oldPointRoot=oldPointRoot, title=point_data.title, content=point_data.content, summaryText=point_data.summaryText, user=info.context.current_user, linkType=point_data.linkType, imageURL=point_data.imageURL, imageAuthor=point_data.imageAuthor, imageDescription=point_data.imageDescription, sourcesURLs=point_data.sourceURLs, sourcesNames=point_data.sourceNames) # these two are in service of the SubPointConnection logic - we should find a way to DRY this up newLinkPoint.parent = newPoint newLinkPoint.link_type = point_data.linkType return AddEvidence(point=newLinkPoint, parent=newPoint)