コード例 #1
0
ファイル: page.py プロジェクト: adityamangla/metaStudio
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}))
コード例 #2
0
ファイル: page.py プロジェクト: adityamangla/metaStudio
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)
                              )
コード例 #3
0
ファイル: data_review.py プロジェクト: gnowledge/gstudio
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))
コード例 #4
0
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
                }))
コード例 #5
0
ファイル: page.py プロジェクト: g66shivam/gstudio
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}))
コード例 #6
0
ファイル: data_review.py プロジェクト: CLIxIndia-Dev/gstudio
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))
コード例 #7
0
ファイル: term.py プロジェクト: 91ranjan/gstudio
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)
                              	)
コード例 #8
0
ファイル: page.py プロジェクト: adityamangla/metaStudio
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)
        )        
コード例 #9
0
ファイル: term.py プロジェクト: DurgaSwetha/ClixOER
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))