def publish_page(request,group_id,node): ins_objectid = ObjectId() if ins_objectid.is_valid(group_id) is False : group_ins = collection.Node.find_one({'_type': "Group","name": group_id}) auth = collection.Node.one({'_type': 'Author', 'name': unicode(request.user.username) }) if group_ins: group_id = str(group_ins._id) else : auth = collection.Node.one({'_type': 'Author', 'name': unicode(request.user.username) }) if auth : group_id = str(auth._id) else : pass node=collection.Node.one({'_id':ObjectId(node)}) group=collection.Node.one({'_id':ObjectId(group_id)}) if group.post_node: node.status=unicode("PUBLISHED") node.save('UnderModeration') else: page_node,v=get_page(request,node) node.content = page_node.content node.content_org=page_node.content_org node.status=unicode("PUBLISHED") node.modified_by = int(request.user.id) node.save() #no need to use this section as seprate view is created for group publish #if node._type == 'Group': # return HttpResponseRedirect(reverse('groupchange', kwargs={'group_id': group_id})) return HttpResponseRedirect(reverse('page_details', kwargs={'group_id': group_id, 'app_id': node._id}))
def create_edit_page(request, group_id, node_id=None): """Creates/Modifies details about the given quiz-item. """ ins_objectid = ObjectId() if ins_objectid.is_valid(group_id) is False : group_ins = collection.Node.find_one({'_type': "Group","name": group_id}) auth = collection.Node.one({'_type': 'Author', 'name': unicode(request.user.username) }) if group_ins: group_id = str(group_ins._id) else : auth = collection.Node.one({'_type': 'Author', 'name': unicode(request.user.username) }) if auth : group_id = str(auth._id) else : pass context_variables = { 'title': gst_page.name, 'group_id': group_id, 'groupid': group_id } available_nodes = collection.Node.find({'_type': u'GSystem', 'member_of': ObjectId(gst_page._id) }) nodes_list = [] for each in available_nodes: nodes_list.append(each.name) if node_id: page_node = collection.Node.one({'_type': u'GSystem', '_id': ObjectId(node_id)}) else: page_node = collection.GSystem() if request.method == "POST": get_node_common_fields(request, page_node, group_id, gst_page) page_node.save() return HttpResponseRedirect(reverse('page_details', kwargs={'group_id': group_id, 'app_id': page_node._id })) else: if node_id: page_node,ver=get_page(request,page_node) context_variables['node'] = page_node context_variables['groupid']=group_id context_variables['group_id']=group_id context_variables['nodes_list'] = json.dumps(nodes_list) else: context_variables['nodes_list'] = json.dumps(nodes_list) return render_to_response("ndf/page_create_edit.html", context_variables, context_instance=RequestContext(request) )
def get_dr_search_result_dict(request, group_id, search_text=None, page_no=1): try: group_id = ObjectId(group_id) except: group_name, group_id = get_group_name_id(group_id) # check if request is from form or from next page if request.GET.has_key("search_text"): search_text = request.GET.get("search_text", "") else: search_text = search_text.replace("+", " ") get_req = request.GET.copy() # adding values to GET req get_req.update({"search_text": search_text}) # overwriting request.GET with newly created QueryDict instance get_req request.GET = get_req search_reply = json.loads(results_search(request, group_id, return_only_dict = True)) exact_search_res = search_reply["exact"]["name"] result_ids_list = [ ObjectId(each_dict["_id"]) for each_dict in exact_search_res ] result_cur = node_collection.find({ "_id": {"$in": result_ids_list}, 'member_of': {'$in': [ObjectId(file_id._id), ObjectId(page_id._id)]} }) paged_resources = paginator.Paginator(result_cur, page_no, 10) # list to hold resources instances with it's attributes and relations files_list = [] for each_resource in paged_resources.items: each_resource, ver = get_page(request, each_resource) each_resource.get_neighbourhood(each_resource.member_of) files_list.append(node_collection.collection.GSystem(each_resource)) return render_to_response("ndf/data_review.html", { "group_id": group_id, "groupid": group_id, "files": files_list, "page_info": paged_resources, "urlname": "data_review_search_page", "second_arg": search_text, "search_text": search_text, "static_educationalsubject": GSTUDIO_RESOURCES_EDUCATIONAL_SUBJECT, # "static_language": EXTRA_LANG_INFO, "static_language": GSTUDIO_RESOURCES_LANGUAGES, "static_educationaluse": GSTUDIO_RESOURCES_EDUCATIONAL_USE, "static_interactivitytype": GSTUDIO_RESOURCES_INTERACTIVITY_TYPE, "static_educationalalignment": GSTUDIO_RESOURCES_EDUCATIONAL_ALIGNMENT, "static_educationallevel": GSTUDIO_RESOURCES_EDUCATIONAL_LEVEL, "static_curricular": GSTUDIO_RESOURCES_CURRICULAR, "static_audience": GSTUDIO_RESOURCES_AUDIENCE, "static_status": list(STATUS_CHOICES), "static_textcomplexity": GSTUDIO_RESOURCES_TEXT_COMPLEXITY }, context_instance=RequestContext(request))
def publish_page(request, group_id, node): # ins_objectid = ObjectId() # if ins_objectid.is_valid(group_id) is False : # group_ins = node_collection.find_one({'_type': "Group", "name": group_id}) # auth = node_collection.one({'_type': 'Author', 'name': unicode(request.user.username) }) # if group_ins: # group_id = str(group_ins._id) # else : # auth = node_collection.one({'_type': 'Author', 'name': unicode(request.user.username) }) # if auth : # group_id = str(auth._id) # else : # pass try: group_id = ObjectId(group_id) except: group_name, group_id = get_group_name_id(group_id) node = node_collection.one({'_id': ObjectId(node)}) group = node_collection.one({'_id': ObjectId(group_id)}) if group.post_node: node.status = unicode("PUBLISHED") node.save('UnderModeration', groupid=group_id) else: page_node, v = get_page(request, node) node.content = unicode(page_node.content) node.content_org = unicode(page_node.content_org) node.status = unicode("PUBLISHED") node.modified_by = int(request.user.id) node.save(groupid=group_id) #no need to use this section as seprate view is created for group publish #if node._type == 'Group': # return HttpResponseRedirect(reverse('groupchange', kwargs={'group_id': group_id})) if 'Quiz' in node.member_of_names_list or 'QuizItem' in node.member_of_names_list: return HttpResponseRedirect( reverse('quiz_details', kwargs={ 'group_id': group_id, 'app_id': node._id })) return HttpResponseRedirect( reverse('page_details', kwargs={ 'group_id': group_id, 'app_id': node._id }))
def publish_page(request,group_id,node): # ins_objectid = ObjectId() # if ins_objectid.is_valid(group_id) is False : # group_ins = node_collection.find_one({'_type': "Group", "name": group_id}) # auth = node_collection.one({'_type': 'Author', 'name': unicode(request.user.username) }) # if group_ins: # group_id = str(group_ins._id) # else : # auth = node_collection.one({'_type': 'Author', 'name': unicode(request.user.username) }) # if auth : # group_id = str(auth._id) # else : # pass try: group_id = ObjectId(group_id) except: group_name, group_id = get_group_name_id(group_id) node = node_collection.one({'_id': ObjectId(node)}) group = node_collection.one({'_id': ObjectId(group_id)}) if group.post_node: node.status=unicode("PUBLISHED") node.save('UnderModeration',groupid=group_id) else: page_node,v=get_page(request,node) node.content = unicode(page_node.content) node.content_org = unicode(page_node.content_org) node.status = unicode("PUBLISHED") node.modified_by = int(request.user.id) node.save(groupid=group_id) #no need to use this section as seprate view is created for group publish #if node._type == 'Group': # return HttpResponseRedirect(reverse('groupchange', kwargs={'group_id': group_id})) if 'Quiz' in node.member_of_names_list or 'QuizItem' in node.member_of_names_list: return HttpResponseRedirect(reverse('quiz_details', kwargs={'group_id': group_id, 'app_id': node._id})) return HttpResponseRedirect(reverse('page_details', kwargs={'group_id': group_id, 'app_id': node._id}))
def get_dr_search_result_dict(request, group_id, search_text=None, page_no=1): try: group_id = ObjectId(group_id) except: group_name, group_id = get_group_name_id(group_id) # check if request is from form or from next page if request.GET.has_key("search_text"): search_text = request.GET.get("search_text", "") else: search_text = search_text.replace("+", " ") get_req = request.GET.copy() # adding values to GET req get_req.update({"search_text": search_text}) # overwriting request.GET with newly created QueryDict instance get_req request.GET = get_req search_reply = json.loads( results_search(request, group_id, return_only_dict=True)) exact_search_res = search_reply["exact"]["name"] result_ids_list = [ ObjectId(each_dict["_id"]) for each_dict in exact_search_res ] result_cur = node_collection.find({ "_id": { "$in": result_ids_list }, 'member_of': { '$in': [ObjectId(file_id._id), ObjectId(page_id._id)] } }) paged_resources = paginator.Paginator(result_cur, page_no, 10) # list to hold resources instances with it's attributes and relations files_list = [] for each_resource in paged_resources.items: each_resource, ver = get_page(request, each_resource) each_resource.get_neighbourhood(each_resource.member_of) files_list.append(node_collection.collection.GSystem(each_resource)) return render_to_response( "ndf/data_review.html", { "group_id": group_id, "groupid": group_id, "files": files_list, "page_info": paged_resources, "urlname": "data_review_search_page", "second_arg": search_text, "search_text": search_text, "static_educationalsubject": GSTUDIO_RESOURCES_EDUCATIONAL_SUBJECT, # "static_language": EXTRA_LANG_INFO, "static_language": GSTUDIO_RESOURCES_LANGUAGES, "static_educationaluse": GSTUDIO_RESOURCES_EDUCATIONAL_USE, "static_interactivitytype": GSTUDIO_RESOURCES_INTERACTIVITY_TYPE, "static_educationalalignment": GSTUDIO_RESOURCES_EDUCATIONAL_ALIGNMENT, "static_educationallevel": GSTUDIO_RESOURCES_EDUCATIONAL_LEVEL, "static_curricular": GSTUDIO_RESOURCES_CURRICULAR, "static_audience": GSTUDIO_RESOURCES_AUDIENCE, "static_status": list(STATUS_CHOICES), "static_textcomplexity": GSTUDIO_RESOURCES_TEXT_COMPLEXITY }, context_instance=RequestContext(request))
def create_edit_term(request, group_id, node_id=None): # ins_objectid = ObjectId() # if ins_objectid.is_valid(group_id) is False : # group_ins = node_collection.find_one({'_type': "Group","name": group_id}) # auth = node_collection.one({'_type': 'Author', 'name': unicode(request.user.username) }) # if group_ins: # group_id = str(group_ins._id) # else : # auth = node_collection.one({'_type': 'Author', 'name': unicode(request.user.username) }) # if auth : # group_id = str(auth._id) # else : # pass try: group_id = ObjectId(group_id) except: group_name, group_id = get_group_name_id(group_id) context_variables = { 'title': title, 'group_id': group_id, 'groupid': group_id } # To list all term instances terms_list = node_collection.find({'_type': 'GSystem', 'member_of': {'$all': [ObjectId(term_GST._id), ObjectId(topic_GST._id)]}, 'group_set': ObjectId(group_id) }).sort('name', 1) nodes_list = [] for each in terms_list: nodes_list.append(str((each.name).strip().lower())) if node_id: term_node = node_collection.one({'_id': ObjectId(node_id)}) else: term_node = node_collection.collection.GSystem() if request.method == "POST": # get_node_common_fields(request, page_node, group_id, gst_page) term_node.save(is_changed=get_node_common_fields(request, term_node, group_id, term_GST),groupid=group_id) get_node_metadata(request,term_node,term_GST) return HttpResponseRedirect(reverse('term_details', kwargs={'group_id': group_id, 'node_id': term_node._id })) else: if node_id: term_node,ver=get_page(request,term_node) term_node.get_neighbourhood(term_node.member_of) context_variables['node'] = term_node context_variables['groupid']=group_id context_variables['group_id']=group_id context_variables['nodes_list'] = json.dumps(nodes_list) else: context_variables['nodes_list'] = json.dumps(nodes_list) return render_to_response("ndf/term_create_edit.html", context_variables, context_instance=RequestContext(request) )
def page(request, group_id, app_id=None): """Renders a list of all 'Page-type-GSystems' available within the database. """ ins_objectid = ObjectId() if ins_objectid.is_valid(group_id) is False : group_ins = collection.Node.find_one({'_type': "Group","name": group_id}) auth = collection.Node.one({'_type': 'Author', 'name': unicode(request.user.username) }) if group_ins: group_id = str(group_ins._id) else : auth = collection.Node.one({'_type': 'Author', 'name': unicode(request.user.username) }) if auth : group_id = str(auth._id) else : pass if app_id is None: app_ins = collection.Node.find_one({'_type':"GSystemType", "name":"Page"}) if app_ins: app_id = str(app_ins._id) content=[] version=[] con=[] group_object=collection.Group.one({'_id':ObjectId(group_id)}) if request.method == "POST": # Page search view title = gst_page.name search_field = request.POST['search_field'] page_nodes = collection.Node.find({ 'member_of': {'$all': [ObjectId(app_id)]}, '$or': [ {'$and': [ {'name': {'$regex': search_field, '$options': 'i'}}, {'$or': [ {'access_policy': u"PUBLIC"}, {'$and': [{'access_policy': u"PRIVATE"}, {'created_by': request.user.id}]} ] } ] }, {'$and': [ {'tags': {'$regex':search_field, '$options': 'i'}}, {'$or': [ {'access_policy': u"PUBLIC"}, {'$and': [{'access_policy': u"PRIVATE"}, {'created_by': request.user.id}]} ] } ] } ], 'group_set': {'$all': [ObjectId(group_id)]}, 'status': {'$nin': ['HIDDEN']} }).sort('last_update', -1) return render_to_response("ndf/page_list.html", {'title': title, 'searching': True, 'query': search_field, 'page_nodes': page_nodes, 'groupid':group_id, 'group_id':group_id }, context_instance=RequestContext(request) ) elif gst_page._id == ObjectId(app_id): # Page list view # code for moderated Groups # collection.Node.reload() group_type = collection.Node.one({'_id':ObjectId(group_id)}) group_info=group_type_info(group_id) title = gst_page.name if group_info == "Moderated": title = gst_page.name node=group_type.prior_node[0] page_nodes = collection.Node.find({'member_of': {'$all': [ObjectId(app_id)]}, 'group_set': {'$all': [ObjectId(node)]}, }).sort('last_update', -1) return render_to_response("ndf/page_list.html", {'title': title, 'page_nodes': page_nodes, 'groupid':group_id, 'group_id':group_id }, context_instance=RequestContext(request)) elif group_info == "BaseModerated": #code for parent Groups node = collection.Node.find({'member_of': {'$all': [ObjectId(app_id)]}, 'group_set': {'$all': [ObjectId(group_id)]}, 'status': {'$nin': ['HIDDEN']} }).sort('last_update', -1) if node is None: node = collection.Node.find({'member_of':ObjectId(app_id)}) for nodes in node: node,ver=get_versioned_page(nodes) content.append(node) # rcs content ends here return render_to_response("ndf/page_list.html", {'title': title, 'page_nodes':content, 'groupid':group_id, 'group_id':group_id }, context_instance=RequestContext(request) ) elif group_info == "PUBLIC" or group_info == "PRIVATE" or group_info is None: """ Below query returns only those documents: (a) which are pages, (b) which belongs to given group, (c) which has status either as DRAFT or PUBLISHED, and (d) which has access_policy either as PUBLIC or if PRIVATE then it's created_by must be the logged-in user """ page_nodes = collection.Node.find({'member_of': {'$all': [ObjectId(app_id)]}, 'group_set': {'$all': [ObjectId(group_id)]}, '$or': [ {'access_policy': u"PUBLIC"}, {'$and': [ {'access_policy': u"PRIVATE"}, {'created_by': request.user.id} ] } ], 'status': {'$nin': ['HIDDEN']} }).sort('last_update', -1) # content =[] # for nodes in page_nodes: # node,ver=get_page(request,nodes) # if node != 'None': # content.append(node) return render_to_response("ndf/page_list.html", {'title': title, 'page_nodes': page_nodes, 'groupid':group_id, 'group_id':group_id }, context_instance=RequestContext(request)) else: #Page Single instance view Group_node = collection.Node.one({"_id": ObjectId(group_id)}) if Group_node.prior_node: page_node = collection.Node.one({"_id": ObjectId(app_id)}) else: node = collection.Node.one({"_id":ObjectId(app_id)}) if Group_node.edit_policy == "EDITABLE_NON_MODERATED" or Group_node.edit_policy is None or Group_node.edit_policy == "NON_EDITABLE": page_node,ver=get_page(request,node) else: #else part is kept for time being until all the groups are implemented if node.status == u"DRAFT": page_node,ver=get_versioned_page(node) elif node.status == u"PUBLISHED": page_node = node # First time breadcrumbs_list created on click of page details breadcrumbs_list = [] # Appends the elements in breadcrumbs_list first time the resource which is clicked breadcrumbs_list.append( (str(page_node._id), page_node.name) ) shelves = [] shelf_list = {} auth = collection.Node.one({'_type': 'Author', 'name': unicode(request.user.username) }) if auth: has_shelf_RT = collection.Node.one({'_type': 'RelationType', 'name': u'has_shelf' }) dbref_has_shelf = has_shelf_RT.get_dbref() shelf = collection_tr.Triple.find({'_type': 'GRelation', 'subject': ObjectId(auth._id), 'relation_type': dbref_has_shelf }) shelf_list = {} if shelf: for each in shelf: shelf_name = collection.Node.one({'_id': ObjectId(each.right_subject)}) shelves.append(shelf_name) shelf_list[shelf_name.name] = [] for ID in shelf_name.collection_set: shelf_item = collection.Node.one({'_id': ObjectId(ID) }) shelf_list[shelf_name.name].append(shelf_item.name) else: shelves = [] return render_to_response('ndf/page_details.html', { 'node': page_node, 'group_id': group_id, 'shelf_list': shelf_list, 'shelves': shelves, 'groupid':group_id, 'breadcrumbs_list': breadcrumbs_list }, context_instance = RequestContext(request) )
def create_edit_term(request, group_id, node_id=None): # ins_objectid = ObjectId() # if ins_objectid.is_valid(group_id) is False : # group_ins = node_collection.find_one({'_type': "Group","name": group_id}) # auth = node_collection.one({'_type': 'Author', 'name': unicode(request.user.username) }) # if group_ins: # group_id = str(group_ins._id) # else : # auth = node_collection.one({'_type': 'Author', 'name': unicode(request.user.username) }) # if auth : # group_id = str(auth._id) # else : # pass try: group_id = ObjectId(group_id) except: group_name, group_id = get_group_name_id(group_id) context_variables = { 'title': title, 'group_id': group_id, 'groupid': group_id } # To list all term instances terms_list = node_collection.find({ '_type': 'GSystem', 'member_of': { '$all': [ObjectId(term_GST._id), ObjectId(topic_GST._id)] }, 'group_set': ObjectId(group_id) }).sort('name', 1) nodes_list = [] for each in terms_list: nodes_list.append(str((each.name).strip().lower())) if node_id: term_node = node_collection.one({'_id': ObjectId(node_id)}) else: term_node = node_collection.collection.GSystem() if request.method == "POST": # get_node_common_fields(request, page_node, group_id, gst_page) term_node.save(is_changed=get_node_common_fields( request, term_node, group_id, term_GST), groupid=group_id) get_node_metadata(request, term_node, term_GST) return HttpResponseRedirect( reverse('term_details', kwargs={ 'group_id': group_id, 'node_id': term_node._id })) else: if node_id: term_node, ver = get_page(request, term_node) term_node.get_neighbourhood(term_node.member_of) context_variables['node'] = term_node context_variables['groupid'] = group_id context_variables['group_id'] = group_id context_variables['nodes_list'] = json.dumps(nodes_list) else: context_variables['nodes_list'] = json.dumps(nodes_list) return render_to_response("ndf/term_create_edit.html", context_variables, context_instance=RequestContext(request))