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