src/catedit/api.py
changeset 11 f2d54d2841f3
parent 9 893799c494e2
child 12 8ca7be41e3ca
equal deleted inserted replaced
10:7d016d52be36 11:f2d54d2841f3
     1 from flask.ext.restful import Resource, fields, Api, reqparse
     1 from flask.ext.restful import Resource, fields, Api, reqparse
     2 from flask import request
     2 from flask import request
     3 from app import app, cache
     3 from catedit import app, cache
     4 from models import Category, CategoryManager
     4 from models import Category, CategoryManager
     5 from rdflib import Graph, RDF
     5 from rdflib import Graph, RDF
     6 from utils import *
     6 from utils import *
     7 from settings import *
     7 from settings import *
     8 from config import *
     8 from config import *
     9 import os
     9 import os
    10 
    10 
       
    11 
    11 api = Api(app)
    12 api = Api(app)
       
    13 logger = app.logger
    12 
    14 
    13 cat_parser = reqparse.RequestParser()
    15 cat_parser = reqparse.RequestParser()
    14 cat_parser.add_argument('label', type=str)
    16 cat_parser.add_argument('label', type=str)
    15 cat_parser.add_argument('description', type=str)
    17 cat_parser.add_argument('description', type=str)
    16 cat_parser.add_argument('commit_message', type=str)
    18 cat_parser.add_argument('commit_message', type=str)
    39     def put(self, cat_id):
    41     def put(self, cat_id):
    40         args = cat_parser.parse_args()
    42         args = cat_parser.parse_args()
    41         cat_manager_instance = CategoryManager()
    43         cat_manager_instance = CategoryManager()
    42 
    44 
    43         new_property_list = []
    45         new_property_list = []
    44         # print args["property_predicate"]
    46 
    45         # print args["property_object"]
    47         logger.debug(args["property_predicate"])
       
    48         logger.debug(args["property_object"])
    46         for property_predicate, property_object in zip(
    49         for property_predicate, property_object in zip(
    47                 args["property_predicate"],
    50                 args["property_predicate"],
    48                 args["property_object"]):
    51                 args["property_object"]):
    49             if property_object:
    52             if property_object:
    50                 property_object_to_append = property_object
    53                 property_object_to_append = property_object
    51                 # if URIRef category, we must prefix id with namespace
    54                 # if URIRef category, we must prefix id with namespace
    52                 if app.config["PROPERTY_LIST"] \
    55                 if (app.config["PROPERTY_LIST"]
    53                              [property_predicate] \
    56                               [property_predicate]
    54                              ["object_type"] == "uriref-category" :
    57                               ["object_type"]) == "uriref-category":
    55                     property_object_to_append = app.config["ONTOLOGY_NAMESPACE"] \
    58                     property_object_to_append = \
    56                                                 + property_object
    59                         app.config["ONTOLOGY_NAMESPACE"] + property_object
    57                     # print property_object_to_append
    60                     logger.debug(property_object_to_append)
    58                 new_property_list.append((property_predicate,
    61                 new_property_list.append((property_predicate,
    59                                           property_object_to_append))
    62                                           property_object_to_append))
    60         # print new_property_list
    63         logger.debug(new_property_list)
    61         c = cat_manager_instance.load_cat(cat_id)
    64         c = cat_manager_instance.load_cat(cat_id)
    62         c.edit_category(new_description=args["description"],
    65         c.edit_category(new_description=args["description"],
    63                         new_label=args["label"],
    66                         new_label=args["label"],
    64                         new_other_properties=new_property_list)
    67                         new_other_properties=new_property_list)
    65         cat_manager_instance.save_cat(c, message=args["commit_message"])
    68         cat_manager_instance.save_cat(c, message=args["commit_message"])
    66         # print "put id: "+c.cat_id
    69         logger.debug("put id: "+c.cat_id)
    67         cache.clear()
    70         cache.clear()
    68         return c.cat_graph.serialize(format='turtle'), 200
    71         return c.cat_graph.serialize(format='turtle'), 200
    69         # Maybe not send the whole cat back, see if it's worth it
    72         # Maybe not send the whole cat back, see if it's worth it
    70 
    73 
    71     @classmethod
    74     @classmethod
    72     def post(self):
    75     def post(self):
    73         args = cat_parser.parse_args()
    76         args = cat_parser.parse_args()
    74         property_list = []
    77         property_list = []
    75         # print args["property_predicate"]
    78         logger.debug(args["property_predicate"])
    76         # print args["property_object"]
    79         logger.debug(args["property_object"])
    77         for property_predicate, property_object in zip(
    80         for property_predicate, property_object in zip(
    78                 request.form.getlist('property_predicate'),
    81                 request.form.getlist('property_predicate'),
    79                 request.form.getlist('property_object')):
    82                 request.form.getlist('property_object')):
    80             if property_object:
    83             if property_object:
    81                 if app.config["PROPERTY_LIST"] \
    84                 if (app.config["PROPERTY_LIST"]
    82                              [property_predicate] \
    85                               [property_predicate]
    83                              ["object_type"] == "uriref-category":
    86                               ["object_type"]) == "uriref-category":
    84                     property_list.append((property_predicate,
    87                     property_list.append((property_predicate,
    85                                           app.config["ONTOLOGY_NAMESPACE"]
    88                                           app.config["ONTOLOGY_NAMESPACE"]
    86                                           +property_object))
    89                                           + property_object))
    87                 else:
    90                 else:
    88                     property_list.append((property_predicate,
    91                     property_list.append((property_predicate,
    89                                           property_object))
    92                                           property_object))
    90         # print property_list
    93         logger.debug(property_list)
    91         c = Category(label=args["label"],
    94         c = Category(label=args["label"],
    92                      description=args["description"],
    95                      description=args["description"],
    93                      other_properties=property_list)
    96                      other_properties=property_list)
    94         cat_manager_instance = CategoryManager()
    97         cat_manager_instance = CategoryManager()
    95         cat_manager_instance.save_cat(c, message=args["commit_message"])
    98         cat_manager_instance.save_cat(c, message=args["commit_message"])
    96         # print "post id: "+c.cat_id
    99         logger.debug("post id: "+c.cat_id)
    97         cache.clear()
   100         cache.clear()
    98         return c.cat_graph.serialize(format='turtle'), 201
   101         return c.cat_graph.serialize(format='turtle'), 201
    99 
   102 
   100     @classmethod
   103     @classmethod
   101     def delete(self, cat_id):
   104     def delete(self, cat_id):
   103         if not request.form["delete_message"]:
   106         if not request.form["delete_message"]:
   104             message = "Deleting category "+cat_id
   107             message = "Deleting category "+cat_id
   105         else:
   108         else:
   106             message = request.form["delete_message"]
   109             message = request.form["delete_message"]
   107         cat_manager_instance.delete_cat(cat_id, message=message)
   110         cat_manager_instance.delete_cat(cat_id, message=message)
   108         # print "delete id: "+cat_id
   111         logger.debug("delete id: "+cat_id)
   109         cache.clear()
   112         cache.clear()
   110         return 204
   113         return 204
   111 
   114 
   112 api.add_resource(CategoryAPI,
   115 api.add_resource(CategoryAPI,
   113                  '/category/<string:cat_id>',
   116                  '/category/<string:cat_id>',