Beispiel #1
0
 def assertionLookup(self, obj_url):
     """Method called to look up an assertion by its id number.  Accessed
     by going to URL /api/assertion/{id}.  Returns a serialized version 
     of the assertion."""
     try:
         return Assertion.get(obj_url.replace('/assertion/', '')).serialize()    
     except DoesNotExist:
         return rc.NOT_FOUND
     except ValidationError: #raised if input is not a valid id
         return rc.NOT_FOUND
Beispiel #2
0
 def assertionLookup(self, obj_url):
     """Method called to look up an assertion by its id number.  Accessed
     by going to URL /api/assertion/{id}.  Returns a serialized version 
     of the assertion."""
     try:
         return Assertion.get(obj_url.replace('/assertion/',
                                              '')).serialize()
     except DoesNotExist:
         return rc.NOT_FOUND
     except ValidationError:  #raised if input is not a valid id
         return rc.NOT_FOUND
Beispiel #3
0
    def assertionExpressionLookup(self, request, obj_url):
        assertionID = request.GET['id']
        start = int(request.GET.get('start', '0'))
        limit = int(request.GET.get('limit', '10'))

        #NOTE: should return ranked by confidence score.  For now assume that they do.
        try:
            assertion = Assertion.get(assertionID)
        except DoesNotExist:
            return rc.NOT_FOUND
        cursor = Expression.objects(assertion = assertion)[start:start + limit]
        expressions = []
        while (True):
            try:
                expressions.append(str(cursor.next().id))
            except StopIteration:
                break #no more assertions within the skip/limit boundaries

        if len(expressions) == 0: #no assertions were found for the concept
            return rc.NOT_FOUND

        return "{expressions: " + str(expressions) + "}"
Beispiel #4
0
    def assertionExpressionLookup(self, request, obj_url):
        assertionID = request.GET['id']
        start = int(request.GET.get('start', '0'))
        limit = int(request.GET.get('limit', '10'))

        #NOTE: should return ranked by confidence score.  For now assume that they do.
        try:
            assertion = Assertion.get(assertionID)
        except DoesNotExist:
            return rc.NOT_FOUND
        cursor = Expression.objects(assertion=assertion)[start:start + limit]
        expressions = []
        while (True):
            try:
                expressions.append(str(cursor.next().id))
            except StopIteration:
                break  #no more assertions within the skip/limit boundaries

        if len(expressions) == 0:  #no assertions were found for the concept
            return rc.NOT_FOUND

        return "{expressions: " + str(expressions) + "}"
Beispiel #5
0
    def assertionVote(self, request, obj_url):
        """Assertion vote is called whenever someone is voting on an assertion.  It can 
        be accessed in one of 2 ways: voting on an assertion identified directly by its id
        or voting on an assertion identified by its unique attributes. To add a positive vote,
        the user should make vote=1.  A negative vote is vote=-1.  Any other values will result
        in no action being taken.  

        Can be accessed through either of the following URLS:
        /api/assertionvote?dataset={dataset}&rel={relation}&concept={concept1,concept2,etc}
        &polarity={polarity}&context={context}&vote={vote}&user={username}&password={password}

        polarity and context are optional values, defaulting to polarity = 1 and context = None

        /api/assertionidvote?id={id}&vote={vote}
        """
        
        user = request.POST['user']
        password = request.POST['password']
        
         
        if obj_url.startswith('/assertionvote'):
            dataset = request.POST['dataset']
            relation = request.POST['rel']
            argstr = request.POST['concepts']
            polarity = int(request.POST.get('polarity','1'))
            context = request.POST.get('context','None')

            if context == "None":
                context = None

            
            try:
                 assertion = Assertion.objects.get(
                     dataset = dataset,
                     relation = relation,
                     argstr = argstr,
                     polarity = polarity,
                     context = context)
            except DoesNotExist:
                return rc.NOT_FOUND
        else:
            id = request.POST['id']

            try:
                assertion = Assertion.get(id)
                dataset = assertion.dataset
            except DoesNotExist:
                return rc.NOT_FOUND
        
        if User.objects.get(username=user).check_password(password):

            #the user's password is correct.  Get their reason and add
            try:
              ReasonConjunction.objects.get(target = dataset + '/contributor/' + user)
            except DoesNotExist:
              return rc.FORBIDDEN
        else:
            #incorrect password
            return rc.FORBIDDEN
         
        vote = request.POST['vote']
        if vote == "1": #vote in favor
            assertion.add_support([dataset + '/contributor/' + user]) 
        elif vote == "-1": #vote against
            assertion.add_oppose([dataset + '/contributor/' + user])
        else: #invalid vote
            return rc.BAD_REQUEST

        return assertion.serialize()
Beispiel #6
0
    def assertionVote(self, request, obj_url):
        """Assertion vote is called whenever someone is voting on an assertion.  It can 
        be accessed in one of 2 ways: voting on an assertion identified directly by its id
        or voting on an assertion identified by its unique attributes. To add a positive vote,
        the user should make vote=1.  A negative vote is vote=-1.  Any other values will result
        in no action being taken.  

        Can be accessed through either of the following URLS:
        /api/assertionvote?dataset={dataset}&rel={relation}&concept={concept1,concept2,etc}
        &polarity={polarity}&context={context}&vote={vote}&user={username}&password={password}

        polarity and context are optional values, defaulting to polarity = 1 and context = None

        /api/assertionidvote?id={id}&vote={vote}
        """

        user = request.POST['user']
        password = request.POST['password']

        if obj_url.startswith('/assertionvote'):
            dataset = request.POST['dataset']
            relation = request.POST['rel']
            argstr = request.POST['concepts']
            polarity = int(request.POST.get('polarity', '1'))
            context = request.POST.get('context', 'None')

            if context == "None":
                context = None

            try:
                assertion = Assertion.objects.get(dataset=dataset,
                                                  relation=relation,
                                                  argstr=argstr,
                                                  polarity=polarity,
                                                  context=context)
            except DoesNotExist:
                return rc.NOT_FOUND
        else:
            id = request.POST['id']

            try:
                assertion = Assertion.get(id)
                dataset = assertion.dataset
            except DoesNotExist:
                return rc.NOT_FOUND

        if User.objects.get(username=user).check_password(password):

            #the user's password is correct.  Get their reason and add
            try:
                ReasonConjunction.objects.get(target=dataset +
                                              '/contributor/' + user)
            except DoesNotExist:
                return rc.FORBIDDEN
        else:
            #incorrect password
            return rc.FORBIDDEN

        vote = request.POST['vote']
        if vote == "1":  #vote in favor
            assertion.add_support([dataset + '/contributor/' + user])
        elif vote == "-1":  #vote against
            assertion.add_oppose([dataset + '/contributor/' + user])
        else:  #invalid vote
            return rc.BAD_REQUEST

        return assertion.serialize()