alcatel/controller/ClusterAnnotation.py
changeset 27 8ca7f2cea729
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/alcatel/controller/ClusterAnnotation.py	Thu Jan 24 16:58:55 2013 +0100
@@ -0,0 +1,110 @@
+'''
+Created on 07 Aout 2012
+
+@author: Corinne
+'''
+
+import logging
+
+from dataparser.ClientClusterAnnotationDeleteAttributes import ClientClusterAnnotationDeleteAttributes
+from dataparser.ClientClusterAnnotationCreateAttributes import ClientDocumentAnnotationCreateAttributes
+from document.models import Cluster
+from django.contrib.auth.models import User
+from document.models import Tag
+from document.models import Documentaryfile
+from document.models import Annotationcluster
+
+logger = logging.getLogger('document')
+
+class ClusterAnnotation(object):
+
+    def __init__(self, request):
+        logger.info('ClusterAnnotation init')
+        self.request = request
+           
+    def create(self):
+        logger.info('create ClusterAnnotation')
+        attr = ClientDocumentAnnotationCreateAttributes(self.request)
+        logger.info('get_user = ' + str(attr.get_user()))
+        logger.info('get_documentary_file = ' + str(attr.get_documentary_file()))
+        logger.info('get_annotation = ' + str(attr.get_annotation()))
+        logger.info('get_cluster = ' + str(attr.get_cluster()))
+        logger.info('get_tags = ' + str(attr.get_tags()))
+        tags_attr = attr.get_tags()
+        try:
+            cluster = Cluster.objects.get(pk=attr.get_cluster())
+            try:
+                user_attr = User.objects.get(username=attr.get_user)
+            except User.DoesNotExist:
+                json= '{"error": "User does not existed"}'
+                logger.info(json)
+                return json
+            
+            try:
+                annotationCluster = Annotationcluster.objects.create(description=attr.get_annotation(),user=user_attr, cluster=cluster)
+            except Exception:
+                json = '{"error": "cluster_id already exists"}'
+                logger.info(json)
+                return json     
+                 
+            if tags_attr: 
+                logger.info('tags associated to annotation')
+                for tag in tags_attr:
+                    logger.info('annotation_tag = '+str(tag))
+                    for tag in tags_attr:
+                        logger.info('annotation_tag = '+str(tag))
+                        tag_attr = Tag(value=tag,annotationcluster=annotationCluster)
+                        tag_attr.save()
+                              
+            json = '{"annotation_cluster_created":' + str(annotationCluster.id) + '}'
+            logger.info(json)
+        except Cluster.DoesNotExist:
+            json = '{"error": "Invalid cluster id"}'
+            logger.info(json)
+            return json
+        
+        return json
+
+    def delete(self):
+        logger.info('delete ClusterAnnotation')
+        attr = ClientClusterAnnotationDeleteAttributes(self.request)
+        logger.info('get_user = ' + str(attr.get_user()))
+        logger.info('get_documentary_file_id = ' + str(attr.get_documentary_file()))
+        logger.info('get_cluster = ' + str(attr.get_cluster()))
+        clusterId = attr.get_cluster()
+        
+        if clusterId=='':
+            json = '{"error": "No cluster_id attribute in the http post request"}'
+            logger.info(json)
+            return json
+        try:
+            cluster = Cluster.objects.get(pk=clusterId)
+            try:
+                annotationcluster = cluster.annotationcluster
+            except cluster.annotationcluster.DoesNotExist:
+                json= '{"error": "No annotation on this cluster"}'
+                logger.info(json)
+                return json
+                
+        except Cluster.DoesNotExist:
+            json = '{"error": "Invalid cluster id"}'
+            logger.info(json)
+            return json
+        
+        try:
+            documentaryfile = Documentaryfile.objects.get(pk=attr.get_documentary_file())
+        except Documentaryfile.DoesNotExist:
+            json = '{"error": "Invalid documentary_file_id"}'
+            logger.info(json)
+            return json
+        
+        logger.info('documentaryfile.user.name = ' + str(documentaryfile.user.username))
+        if documentaryfile.user.username == attr.get_user():
+            annotationcluster.delete()
+            json = '{"annotation_cluster_deleted" :'  + str(clusterId) + '}'
+            logger.info(json)
+        else:
+            json = '{"error": "User does not matched"}'
+            logger.info(json)
+       
+        return json
\ No newline at end of file