From 762176890a5ef8e3bb5174e58614daac46e68f07 Mon Sep 17 00:00:00 2001 From: Pedro Costa <43214965+PedroCosta8@users.noreply.github.com> Date: Tue, 13 Nov 2018 21:00:26 -0300 Subject: [PATCH] Add IUGA resource and Session resource (#10) Issue: GeoGuideProject/frontend#5 --- geoguide/server/datasets/resources.py | 44 ++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/geoguide/server/datasets/resources.py b/geoguide/server/datasets/resources.py index 994a3f1..aa5be02 100644 --- a/geoguide/server/datasets/resources.py +++ b/geoguide/server/datasets/resources.py @@ -1,6 +1,7 @@ import jwt import arrow from uuid import uuid4 +from geoguide.server.iuga import run_iuga import werkzeug from flask import Blueprint, request @@ -8,7 +9,7 @@ from flask_login import current_user, login_required from geoguide.server import app, db, dataset_manager -from geoguide.server.models import Dataset, AttributeType, Attribute +from geoguide.server.models import Dataset, AttributeType, Attribute, Session from geoguide.server.geoguide.helpers import save_as_sql @@ -34,6 +35,13 @@ 'attributes': fields.List(fields.Nested(attribute_fields)) } +session_fields = { + 'id': fields.String, + 'createdAt': fields.DateTime(attribute="created_at", dt_format='iso8601'), + 'userId': fields.String(attribute='user_id'), + 'datasetId': fields.String(attribute="dataset_id") +} + class DatasetBaseResource(Resource): @@ -126,5 +134,39 @@ def post(self): return dataset +class SessionResource(DatasetBaseResource): + + @marshal_with(session_fields) + @login_required + def post(self, uuid): + dataset = self.get_dataset(uuid) + + feedback_session = Session(dataset=dataset) + db.session.add(feedback_session) + db.session.commit() + + return feedback_session + + +class IugaResource(DatasetBaseResource): + + parser = reqparse.RequestParser() + parser.add_argument('k', type=int, required=True) + parser.add_argument('sigma', type=float, required=True) + parser.add_argument('limit', type=float, required=True) + + #@marshal_with({'name': fields.String}) + @login_required + def post(self, uuid, index): + args = self.parser.parse_args() + dataset = self.get_dataset(uuid) + vm = {} + vm['similarity'], vm['diversity'], vm['points'] = run_iuga( + index, args['k'], args['limit'], args['sigma'], dataset) + return vm + + api.add_resource(DatasetDetail, "/datasets/") api.add_resource(DatasetList, "/datasets") +api.add_resource(SessionResource, "/datasets//new-session") +api.add_resource(IugaResource, "/datasets///iuga") \ No newline at end of file