summaryrefslogtreecommitdiff
path: root/gnowsys-ndf/gnowsys_ndf/ndf/views/methods.py
diff options
context:
space:
mode:
Diffstat (limited to 'gnowsys-ndf/gnowsys_ndf/ndf/views/methods.py')
-rw-r--r--gnowsys-ndf/gnowsys_ndf/ndf/views/methods.py119
1 files changed, 92 insertions, 27 deletions
diff --git a/gnowsys-ndf/gnowsys_ndf/ndf/views/methods.py b/gnowsys-ndf/gnowsys_ndf/ndf/views/methods.py
index 2f983e2b..d125264a 100644
--- a/gnowsys-ndf/gnowsys_ndf/ndf/views/methods.py
+++ b/gnowsys-ndf/gnowsys_ndf/ndf/views/methods.py
@@ -34,11 +34,11 @@ import ast
import string
import json
import locale
+import multiprocessing as mp
from datetime import datetime, timedelta, date
# import csv
# from collections import Counter
from collections import OrderedDict
-
col = db[Benchmark.collection_name]
history_manager = HistoryManager()
@@ -227,12 +227,28 @@ def get_gapps(default_gapp_listing=False, already_selected_gapps=[]):
# Then append their names in list of GApps to be excluded
if already_selected_gapps:
gapps_list_remove = gapps_list.remove
- for each_gapp in already_selected_gapps:
+ #Function used by Processes implemented below
+ def multi_(lst):
+ for each_gapp in lst:
gapp_name = each_gapp["name"]
if gapp_name in gapps_list:
gapps_list_remove(gapp_name)
-
+ #this empty list will have the Process objects as its elements
+ processes=[]
+ n1=len(already_selected_gapps)
+ lst1=already_selected_gapps
+ #returns no of cores in the cpu
+ x=mp.cpu_count()
+ #divides the list into those many parts
+ n2=n1/x
+ #Process object is created.The list after being partioned is also given as an argument.
+ for i in range(x):
+ processes.append(mp.Process(target=multi_,args=(lst1[i*n2:(i+1)*n2],)))
+ for i in range(x):
+ processes[i].start() #each Process started
+ for i in range(x):
+ processes[i].join() #each Process converges
# Find all GAPPs
meta_type = node_collection.one({
"_type": "MetaType", "name": META_TYPE[0]
@@ -488,6 +504,10 @@ def get_drawers(group_id, nid=None, nlist=[], page_no=1, checked=None, **kwargs)
if each._id not in nlist:
dict1[each._id] = each
+ #loop replaced by a list comprehension
+ dict2=[node_collection.one({'_id': oid}) for oid in nlist]
+
+
for oid in nlist:
obj = node_collection.one({'_id': oid})
dict2.append(obj)
@@ -501,10 +521,15 @@ def get_drawers(group_id, nid=None, nlist=[], page_no=1, checked=None, **kwargs)
if each._id != nid:
if each._id not in nlist:
dict1[each._id] = each
+ #loop replaced by a list comprehension
+ dict2=[node_collection.one({'_id': oid}) for oid in nlist]
- for oid in nlist:
+
+ for oid in nlist:
obj = node_collection.one({'_id': oid})
dict2.append(obj)
+
+
dict_drawer['1'] = dict1
dict_drawer['2'] = dict2
@@ -746,7 +771,6 @@ def get_node_common_fields(request, node, group_id, node_type, coll_set=None):
node.tags = tags_list
is_changed = True
-
# Build collection, prior node, teaches and assesses lists
if check_collection:
changed = build_collection(node, check_collection, right_drawer_list, checked)
@@ -813,11 +837,12 @@ def build_collection(node, check_collection, right_drawer_list, checked):
if node.prior_node != right_drawer_list:
i = 0
node.prior_node=[]
+ node_prior_node_append_temp=node.prior_node.append #a temp. variable which stores the lookup for append method
while (i < len(right_drawer_list)):
node_id = ObjectId(right_drawer_list[i])
node_obj = node_collection.one({"_id": node_id})
if node_obj:
- node.prior_node.append(node_id)
+ node_prior_node_append_temp(node_id)
i = i+1
# print "\n Changed: prior_node"
@@ -838,14 +863,16 @@ def build_collection(node, check_collection, right_drawer_list, checked):
i = 0
node.collection_set = []
# checking if each _id in collection_list is valid or not
+ nlist_append_temp=nlist.append #a temp. variable which stores the lookup for append method
+ node_collection_set_append_temp=node.collection_set.append #a temp. variable which stores the lookup for append method
while (i < len(right_drawer_list)):
node_id = ObjectId(right_drawer_list[i])
node_obj = node_collection.one({"_id": node_id})
if node_obj:
if node_id not in nlist:
- nlist.append(node_id)
+ nlist_append_temp(node_id)
else:
- node.collection_set.append(node_id)
+ node_collection_set_append_temp(node_id)
# After adding it to collection_set also make the 'node' as prior node for added collection element
node_collection.collection.update({'_id': ObjectId(node_id), 'prior_node': {'$nin':[node._id]} },{'$push': {'prior_node': ObjectId(node._id)}})
@@ -853,7 +880,7 @@ def build_collection(node, check_collection, right_drawer_list, checked):
for each in nlist:
if each not in node.collection_set:
- node.collection_set.append(each)
+ node_collection_set_append_temp(each)
node.status = u"PUBLISHED"
node.save()
# After adding it to collection_set also make the 'node' as prior node for added collection element
@@ -1030,7 +1057,7 @@ def build_collection(node, check_collection, right_drawer_list, checked):
else:
return False
-
+"""
@get_execution_time
def get_versioned_page(node):
rcs = RCS()
@@ -1048,7 +1075,7 @@ def get_versioned_page(node):
if line.find('status')!=-1:
up_ind=line.find('status')
if line.find(('PUBLISHED'),up_ind) !=-1:
- rev_no=rev_no.split()[0]
+ rev_no=rev_no.split()[0]
node=history_manager.get_version_document(node,rev_no)
proc1.kill()
return (node,rev_no)
@@ -1056,7 +1083,33 @@ def get_versioned_page(node):
node=history_manager.get_version_document(node,'1.1')
proc1.kill()
return(node,'1.1')
+"""
+@get_execution_time
+def get_versioned_page(node):
+ rcs = RCS()
+ fp = history_manager.get_file_path(node)
+ cmd= 'rlog %s' % \
+ (fp)
+ rev_no =""
+ proc1=subprocess.Popen(cmd,shell=True,
+ stdout=subprocess.PIPE)
+ for line in iter(proc1.stdout.readline,b''):
+ if line.find('revision')!=-1 and line.find('selected') == -1:
+ rev_no=string.split(line,'revision')
+ rev_no=rev_no[1].strip( '\t\n\r')
+ rev_no=rev_no.split()[0]
+ if line.find('status')!=-1:
+ up_ind=line.find('status')
+ if line.find(('PUBLISHED'),up_ind) !=-1:
+ rev_no=rev_no.split()[0]
+ node=history_manager.get_version_document(node,rev_no)
+ proc1.kill()
+ return (node,rev_no)
+ if rev_no == '1.1':
+ node=history_manager.get_version_document(node,'1.1')
+ proc1.kill()
+ return(node,'1.1')
@get_execution_time
@@ -1191,8 +1244,8 @@ def tag_info(request, group_id, tagname=None):
cur = node_collection.find({'tags': {'$regex': tagname, '$options': "i"},
'group_set':ObjectId(group_id)
})
- for every in cur:
- search_result.append(every)
+ #loop replaced by a list comprehension
+ search_result=[every for every in cur]
# Autheticate user can see all public files
elif request.user.is_authenticated():
@@ -1214,8 +1267,8 @@ def tag_info(request, group_id, tagname=None):
{'created_by': userid},
]
})
- for every in cur:
- search_result.append(every)
+ #loop replaced by a list comprehension
+ search_result=[every for every in cur]
else: # Unauthenticated user can see all public files.
group_node = node_collection.one({'_id': ObjectId(group_id)})
@@ -1226,8 +1279,8 @@ def tag_info(request, group_id, tagname=None):
'status': u'PUBLISHED'
}
)
- for every in cur:
- search_result.append(every)
+ #loop replaced by a list comprehension
+ search_result=[every for every in cur]
if search_result:
total = len(search_result)
@@ -1457,18 +1510,22 @@ def get_widget_built_up_data(at_rt_objectid_or_attr_name_list, node, type_of_set
"""
if not isinstance(at_rt_objectid_or_attr_name_list, list):
at_rt_objectid_or_attr_name_list = [at_rt_objectid_or_attr_name_list]
-
+ #a temp. variable which stores the lookup for append method
+ type_of_set_append_temp=type_of_set.append
if not type_of_set:
node["property_order"] = []
+ #a temp. variable which stores the lookup for append method
+ node_property_order_append_temp=node["property_order"].append
gst_nodes = node_collection.find({'_type': "GSystemType", '_id': {'$in': node["member_of"]}}, {'type_of': 1, 'property_order': 1})
for gst in gst_nodes:
for type_of in gst["type_of"]:
if type_of not in type_of_set:
- type_of_set.append(type_of)
+ type_of_set_append_temp(type_of)
for po in gst["property_order"]:
if po not in node["property_order"]:
- node["property_order"].append(po)
+ node_property_order_append_temp(po)
+
BASE_FIELD_METADATA = {
'name': {'name': "name", '_type': "BaseField", 'altnames': "Name", 'required': True},
@@ -1480,6 +1537,8 @@ def get_widget_built_up_data(at_rt_objectid_or_attr_name_list, node, type_of_set
}
widget_data_list = []
+ #a temp. variable which stores the lookup for append method
+ widget_data_list_append_temp=widget_data_list.append
for at_rt_objectid_or_attr_name in at_rt_objectid_or_attr_name_list:
if type(at_rt_objectid_or_attr_name) == ObjectId: #ObjectId.is_valid(at_rt_objectid_or_attr_name):
# For attribute-field(s) and/or relation-field(s)
@@ -1539,7 +1598,7 @@ def get_widget_built_up_data(at_rt_objectid_or_attr_name_list, node, type_of_set
data_type = node.structure[field.name]
value = node[field.name]
- widget_data_list.append({ '_type': field._type, # It's only use on details-view template; overridden in ndf_tags html_widget()
+ widget_data_list_append_temp({ '_type': field._type, # It's only use on details-view template; overridden in ndf_tags html_widget()
'_id': field._id,
'data_type': data_type,
'name': field.name, 'altnames': altnames,
@@ -1550,7 +1609,7 @@ def get_widget_built_up_data(at_rt_objectid_or_attr_name_list, node, type_of_set
# For node's base-field(s)
# widget_data_list.append([node['member_of'], BASE_FIELD_METADATA[at_rt_objectid_or_attr_name], node[at_rt_objectid_or_attr_name]])
- widget_data_list.append({ '_type': BASE_FIELD_METADATA[at_rt_objectid_or_attr_name]['_type'],
+ widget_data_list_append_temp({ '_type': BASE_FIELD_METADATA[at_rt_objectid_or_attr_name]['_type'],
'data_type': node.structure[at_rt_objectid_or_attr_name],
'name': at_rt_objectid_or_attr_name, 'altnames': BASE_FIELD_METADATA[at_rt_objectid_or_attr_name]['altnames'],
'value': node[at_rt_objectid_or_attr_name],
@@ -1578,21 +1637,25 @@ def get_property_order_with_value(node):
demo["property_order"] = []
type_of_set = []
+ #temp. variables which stores the lookup for append method
+ type_of_set_append_temp=type_of_set.append
+ demo_prop_append_temp=demo["property_order"].append
gst_nodes = node_collection.find({'_type': "GSystemType", '_id': {'$in': demo["member_of"]}}, {'type_of': 1, 'property_order': 1})
for gst in gst_nodes:
for type_of in gst["type_of"]:
if type_of not in type_of_set:
- type_of_set.append(type_of)
+ type_of_set_append_temp(type_of)
for po in gst["property_order"]:
if po not in demo["property_order"]:
- demo["property_order"].append(po)
+ demo_prop_append_temp(po)
demo.get_neighbourhood(node["member_of"])
-
+ #a temp. variable which stores the lookup for append method
+ new_property_order_append_temp=new_property_order.append
for tab_name, list_field_id_or_name in demo['property_order']:
list_field_set = get_widget_built_up_data(list_field_id_or_name, demo, type_of_set)
- new_property_order.append([tab_name, list_field_set])
+ new_property_order_append_temp([tab_name, list_field_set])
demo["property_order"] = new_property_order
@@ -1603,9 +1666,11 @@ def get_property_order_with_value(node):
if type_of_nodes.count():
demo["property_order"] = []
+ #a temp. variable which stores the lookup for append method
+ demo_prop_append_temp=demo["property_order"].append
for to in type_of_nodes:
for po in to["property_order"]:
- demo["property_order"].append(po)
+ demo_prop_append_temp(po)
node_collection.collection.update({'_id': demo._id}, {'$set': {'property_order': demo["property_order"]}}, upsert=False, multi=False)