コード例 #1
0
def quiz(request, group_id):
    """Renders a list of all 'Quiz-type-GSystems' available within the database.
    """
    try:
        group_id = ObjectId(group_id)
    except:
        group_name, group_id = get_group_name_id(group_id)
    title = gst_quiz.name
    quiz_nodes = node_collection.find({
        'member_of': gst_quiz._id,
        'group_set': ObjectId(group_id)
    }).sort('last_update', -1)
    gst_quiz_item_id = node_collection.one({
        '_type': 'GSystemType',
        'name': u'QuizItem'
    })._id
    quiz_item_nodes = node_collection.find({
        'member_of': {
            '$all': [gst_quiz_item_id]
        },
        'group_set': {
            '$all': [ObjectId(group_id)]
        }
    }).sort('last_update', -1)
    return render_to_response("ndf/quiz.html", {
        'title': title,
        'quiz_nodes': quiz_nodes,
        'quiz_item_nodes': quiz_item_nodes,
        'groupid': group_id,
        'group_id': group_id
    },
                              context_instance=RequestContext(request))
コード例 #2
0
ファイル: partner.py プロジェクト: DurgaSwetha/ClixOER
def partner_showcase(request, group_id):

    group_name, group_id = get_group_name_id(group_id)

    all_source = node_collection.find({
        'attribute_set.source': {
            '$exists': True,
            '$ne': ''
        }
    }).distinct('attribute_set.source')

    partner_group = node_collection.one({
        '_type': 'GSystemType',
        'name': 'PartnerGroup'
    })

    source_partners = node_collection.find({
        '_type': 'Group',
        'member_of': {
            '$in': [partner_group._id]
        },
        'name': {
            '$in': all_source
        }
    }).sort('name', 1)

    return render_to_response('ndf/partner_showcase.html', {
        'group_id': group_id,
        'groupid': group_id,
        'source_partners': source_partners
    },
                              context_instance=RequestContext(request))
コード例 #3
0
ファイル: explore.py プロジェクト: lakshit07/gstudio
def explore_drafts(request):
    title = 'drafts'
    module_sort_list = None
    module_sort_list = get_attribute_value(group_id, 'items_sort_list')
    context_variable = {
                        'title': title, 
                        'group_id': group_id, 'groupid': group_id,
                    }
    if module_sort_list:
        modules_cur = map(Node,module_sort_list)
        context_variable.update({'modules_is_cur': False})
    else:
        modules_cur = node_collection.find({'member_of': gst_module_id ,'status':'PUBLISHED'}).sort('last_update', -1)
        context_variable.update({'modules_is_cur': True})

    module_unit_ids = [val for each_module in modules_cur for val in each_module.collection_set ]


    gstaff_access = check_is_gstaff(group_id,request.user)
    draft_query = {'member_of': gst_base_unit_id,
              '_id': {'$nin': module_unit_ids},
              'status':'PUBLISHED',
                }
    if not gstaff_access:
        draft_query.update({'$or': [
              {'created_by': request.user.id},
              {'group_admin': request.user.id},
              {'author_set': request.user.id},
              # No check on group-type PUBLIC for DraftUnits.
              # {'group_type': 'PUBLIC'}
              ]})

    base_unit_cur = node_collection.find(draft_query).sort('last_update', -1)
    # print "\nbase: ", base_unit_cur.count()


    '''
    base_unit_cur = node_collection.find({'member_of': gst_base_unit_id,
                                          '_id': {'$nin': module_unit_ids},
                                          'status':'PUBLISHED',
                                        '$or': [
                                          {'created_by': request.user.id},
                                          {'group_admin': request.user.id},
                                          {'author_set': request.user.id},
                                          # {'group_type': 'PUBLIC'}
                                          ]}).sort('last_update', -1)

    '''
#     base_unit_page_cur = paginator.Paginator(base_unit_cur, page_no, GSTUDIO_NO_OF_OBJS_PP)

    # base_unit_page_cur = paginator.Paginator(base_unit_cur, page_no, GSTUDIO_NO_OF_OBJS_PP)

    context_variable.update({'modules_cur': modules_cur,'units_cur': base_unit_cur})

    return render_to_response(
        # "ndf/explore.html", changed as per new Clix UI
        "ndf/explore_2017.html",
        # "ndf/lms_explore.html",
        context_variable,
        context_instance=RequestContext(request))
コード例 #4
0
ファイル: adminDashboard.py プロジェクト: DurgaSwetha/ClixOER
def adminDashboard(request):
    '''
    methods for class view
    '''
    objects_details = []
    nodes = node_collection.find({'_type': "GSystem"})
    group_obj = node_collection.find(
        {'$and': [{
            "_type": u'Group'
        }, {
            "name": u'home'
        }]})
    groupid = ""
    if group_obj:
        groupid = str(group_obj[0]._id)
        group_name = group_obj[0].name
    for each in nodes:
        objects_details.append({
            "Id": each._id,
            "Title": each.name,
            "Type": each.type_of,
            "Author": User.objects.get(id=each.created_by).username,
            "Group": ",".join(each.group_set)
        })
    template = "ndf/adminDashboard.html"

    variable = RequestContext(
        request, {
            'class_name': "GSystem",
            "nodes": objects_details,
            "groupid": groupid,
            "group_name": group_name
        })
    return render_to_response(template, variable)
コード例 #5
0
def explore_groups(request):
    title = 'groups'
    gstaff_access = check_is_gstaff(group_id, request.user)
    if gstaff_access:
        group_cur = node_collection.find({
            '_type': 'Group',
            'member_of': gst_group._id
        }).sort('last_update', -1)
    else:
        group_cur = node_collection.find({
            '_type': 'Group',
            'member_of': gst_group._id,
            'name': {
                '$nin': GSTUDIO_DEFAULT_GROUPS
            }
        }).sort('last_update', -1)

    context_variable = {
        'title': title,
        'doc_cur': group_cur,
        'card': 'ndf/simple_card.html',
        'group_id': group_id,
        'groupid': group_id
    }

    return render_to_response("ndf/explore.html",
                              context_variable,
                              context_instance=RequestContext(request))
コード例 #6
0
ファイル: explore.py プロジェクト: mrunal4/gstudio
def explore_drafts(request,page_no=1):
    title = 'drafts'
    modules_cur = node_collection.find({'member_of': gst_module_id }).sort('last_update', -1)

    module_unit_ids = [val for each_module in modules_cur for val in each_module.collection_set ]

    modules_cur.rewind()
    modules_page_cur = paginator.Paginator(modules_cur, page_no, GSTUDIO_NO_OF_OBJS_PP)

    base_unit_cur = node_collection.find({'member_of': gst_base_unit_id,
                                          '_id': {'$nin': module_unit_ids},
                                          'status':'PUBLISHED',
                                        '$or': [
                                          {'created_by': request.user.id},
                                          {'group_admin': request.user.id},
                                          {'author_set': request.user.id},
                                          {'group_type': 'PUBLIC'}
                                          ]}).sort('last_update', -1)
    base_unit_page_cur = paginator.Paginator(base_unit_cur, page_no, GSTUDIO_NO_OF_OBJS_PP)

    context_variable = {
                        'title': title, 'modules_cur': modules_cur,
                        'units_cur': base_unit_cur, 
                        'group_id': group_id, 'groupid': group_id,
                    }

    return render_to_response(
        # "ndf/explore.html", changed as per new Clix UI
        "ndf/explore_2017.html",
        # "ndf/lms_explore.html",
        context_variable,
        context_instance=RequestContext(request))
コード例 #7
0
def explore_drafts(request):
    title = 'drafts'
    module_sort_list = None
    module_sort_list = get_attribute_value(group_id, 'items_sort_list')
    context_variable = {
                        'title': title, 
                        'group_id': group_id, 'groupid': group_id,
                    }
    if module_sort_list:
        modules_cur = map(Node,module_sort_list)
        context_variable.update({'modules_is_cur': False})
    else:
        modules_cur = node_collection.find({'member_of': gst_module_id ,'status':'PUBLISHED'}).sort('last_update', -1)
        context_variable.update({'modules_is_cur': True})

    module_unit_ids = [val for each_module in modules_cur for val in each_module.collection_set ]


    gstaff_access = check_is_gstaff(group_id,request.user)
    draft_query = {'member_of': gst_base_unit_id,
              '_id': {'$nin': module_unit_ids},
              'status':'PUBLISHED',
                }
    if not gstaff_access:
        draft_query.update({'$or': [
              {'created_by': request.user.id},
              {'group_admin': request.user.id},
              {'author_set': request.user.id},
              # No check on group-type PUBLIC for DraftUnits.
              # {'group_type': 'PUBLIC'}
              ]})

    base_unit_cur = node_collection.find(draft_query).sort('last_update', -1)
    # print "\nbase: ", base_unit_cur.count()


    '''
    base_unit_cur = node_collection.find({'member_of': gst_base_unit_id,
                                          '_id': {'$nin': module_unit_ids},
                                          'status':'PUBLISHED',
                                        '$or': [
                                          {'created_by': request.user.id},
                                          {'group_admin': request.user.id},
                                          {'author_set': request.user.id},
                                          # {'group_type': 'PUBLIC'}
                                          ]}).sort('last_update', -1)

    '''
#     base_unit_page_cur = paginator.Paginator(base_unit_cur, page_no, GSTUDIO_NO_OF_OBJS_PP)

    # base_unit_page_cur = paginator.Paginator(base_unit_cur, page_no, GSTUDIO_NO_OF_OBJS_PP)

    context_variable.update({'modules_cur': modules_cur,'units_cur': base_unit_cur})

    return render_to_response(
        # "ndf/explore.html", changed as per new Clix UI
        "ndf/explore_2017.html",
        # "ndf/lms_explore.html",
        context_variable,
        context_instance=RequestContext(request))
コード例 #8
0
ファイル: quiz.py プロジェクト: sakshi7373/gstudio
def quiz(request, group_id):
    """Renders a list of all 'Quiz-type-GSystems' available within the database.
    """
    group_obj = get_group_name_id(group_id, get_obj=True)
    group_id = group_obj._id
    group_name = group_obj.name
    title = gst_quiz.name
    quiz_nodes = node_collection.find({'member_of': gst_quiz._id, 'group_set': ObjectId(group_id)}).sort('last_update', -1)
    # gst_quiz_item_ids = [gst_quiz_item._id]
    quiz_item_nodes = node_collection.find({'member_of': gst_quiz_item._id,
     'group_set': ObjectId(group_id)}).sort('last_update', -1)

    if "CourseEventGroup" in group_obj.member_of_names_list or "announced_unit" in group_obj.member_of_names_list:
        # gst_quiz_item_ids = [gst_quiz_item_event._id]
        if not quiz_item_nodes.count():
            quiz_item_nodes = node_collection.find({'member_of': gst_quiz_item_event._id,
             'group_set': ObjectId(group_id)}).sort('last_update', -1)
    supported_languages = ['Hindi', 'Telugu']

    print "\nquiz_item_nodes: ", quiz_item_nodes.count()
    return render_to_response("ndf/quiz.html",
                              {'title': title,
                               'quiz_nodes': quiz_nodes,
                               'quiz_item_nodes': quiz_item_nodes,
                               'groupid':group_id,
                               'group_id':group_id,
                               'supported_languages': supported_languages
                              },
                              context_instance=RequestContext(request)
    )
コード例 #9
0
ファイル: adminDashboard.py プロジェクト: 91ranjan/gstudio
def adminDashboardClass(request, class_name="GSystem"):
    '''
    fetching class's objects
    '''
    group_set = ""
    if request.method=="POST":
        search = request.POST.get("search","")
        classtype = request.POST.get("class","")
        nodes = node_collection.find({'name':{'$regex':search, '$options': 'i' },'_type':classtype})
    else :
        nodes = node_collection.find({'_type':class_name})
    objects_details = []
    for each in nodes:
        member = []
        # for members in each.member_of:
        #     obj = node_collection.one({ '_id': members})
        #     if obj:
        #         member.append(obj.name+" - "+str(members))

        member = []
        member_of_list = []
        collection_list = []
        attribute_type_set = []
        relation_type_set = []
        if class_name == "GSystemType":
            for members in each.member_of:
                member.append(node_collection.one({ '_id': members}).name)
                # member_of_list.append(node_collection.one({'_id':members}).name+" - "+str(members))
            for coll in each.collection_set:
                collection_list.append(node_collection.one({ '_id': coll}).name)
                # collection_list.append(node_collection.one({ '_id': coll}).name+" - "+str(coll))
            for at_set in each.attribute_type_set:
                attribute_type_set.append(at_set.name)
                # attribute_type_set.append(at_set.name+" - "+str(at_set._id))
            for rt_set in each.relation_type_set:
                relation_type_set.append(rt_set.name)
                # relation_type_set.append(rt_set.name+" - "+str(rt_set._id))

	if class_name in ("GSystem","File"):
      		group_set = [node_collection.find_one({"_id":eachgroup}).name for eachgroup in each.group_set if node_collection.find_one({"_id":eachgroup}) ]
		objects_details.append({"Id":each._id,"Title":each.name,"Type":", ".join(member),"Author":User.objects.get(id=each.created_by).username,"Group":", ".join(group_set),"Creation":each.created_at})
        elif class_name in ("GAttribute","GRelation"):
            objects_details.append({"Id":each._id,"Title":each.name,"Type":"","Author":"","Creation":""})
	else :
		objects_details.append({"Id":each._id,"Title":each.name,"Type":", ".join(member),"Author":User.objects.get(id=each.created_by).username,"Creation":each.created_at,'member_of':", ".join(member_of_list), "collection_list":", ".join(collection_list), "attribute_type_set":", ".join(attribute_type_set), "relation_type_set":", ".join(relation_type_set)})
    groups = []
    group = node_collection.find({'_type':"Group"})
    for each in group:
        groups.append({'id':each._id,"title":each.name})
    systemtypes = []
    systemtype = node_collection.find({'_type':"GSystemType"})
    for each in systemtype:
        systemtypes.append({'id':each._id,"title":each.name})
    groupid = ""
    group_obj= node_collection.find({'$and':[{"_type":u'Group'},{"name":u'home'}]})
    if group_obj:
	groupid = str(group_obj[0]._id)
    template = "ndf/adminDashboard.html"
    variable = RequestContext(request, {'class_name':class_name, "nodes":objects_details, "Groups":groups, "systemtypes":systemtypes, "url":"data", "groupid":groupid})
    return render_to_response(template, variable)
コード例 #10
0
ファイル: quiz.py プロジェクト: mrunal4/gstudio
def quiz(request, group_id):
    """Renders a list of all 'Quiz-type-GSystems' available within the database.
    """
    group_obj = get_group_name_id(group_id, get_obj=True)
    group_id = group_obj._id
    group_name = group_obj.name
    title = gst_quiz.name
    quiz_nodes = node_collection.find({
        'member_of': gst_quiz._id,
        'group_set': ObjectId(group_id)
    }).sort('last_update', -1)
    gst_quiz_names = ['QuizItem']
    if "CourseEventGroup" in group_obj.member_of_names_list:
        gst_quiz_names.append('QuizItemEvent')
    gst_quiz_item = node_collection.find({
        '_type': 'GSystemType',
        'name': {
            '$in': gst_quiz_names
        }
    })
    gst_quiz_item_ids = [each_quiz_gst._id for each_quiz_gst in gst_quiz_item]
    quiz_item_nodes = node_collection.find({
        'member_of': {
            '$in': gst_quiz_item_ids
        },
        'group_set': ObjectId(group_id)
    }).sort('last_update', -1)
    return render_to_response("ndf/quiz.html", {
        'title': title,
        'quiz_nodes': quiz_nodes,
        'quiz_item_nodes': quiz_item_nodes,
        'groupid': group_id,
        'group_id': group_id
    },
                              context_instance=RequestContext(request))
コード例 #11
0
def video_search(request,group_id):
    # 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)

    vidcol = node_collection.find({'mime_type':{'$regex': 'video'}})
    if request.method=="GET":
        keyword=request.GET.get("search","")
        vid_search = node_collection.find({'$and':[{'mime_type':{'$regex': 'video'}},{'$or':[{'name':{'$regex':keyword}},{'tags':{'$regex':keyword}}]}]})
        template="ndf/file_search.html"
        variable=RequestContext(request,{'file_collection':vid_search,'view_name':'video_search','newgroup':group_id})
        return render_to_response(template,variable)        
コード例 #12
0
def create_rts(factory_relation_types,user_id):
  meta_type_id = ""
  member_of_type_id = ""
  for each in factory_relation_types:
    subject_type_id_list = []
    object_type_id_list = []
    object_cardinality = None
    is_reflexive = None
    is_transitive = None

    for key,value in each.items():
      at_name = key
      inverse_name = value['inverse_name']

      if "meta_type" in value:
        meta_type_name = value['meta_type']
        meta_type = node_collection.one({'$and':[{'_type':'MetaType'},{'name':meta_type_name}]})
        if meta_type:
          meta_type_id = meta_type._id

      if "member_of" in value:
        member_of_name = value['member_of']
        member_of_type = node_collection.one({'$and':[{'_type':'MetaType'},{'name':member_of_name}]})
        if member_of_type:
          member_of_type_id = member_of_type._id

      for s in value['subject_type']:
        if s == "*":
          node_s = node_collection.find({'_type': u'GSystemType'},{'_id':1})
          subject_type_id_list = [each_node._id for each_node in node_s]

        else:
          node_s = node_collection.one({'$and':[{'_type': u'GSystemType'},{'name': s}]})
          if node_s is None:
            node_s = node_collection.one({'$and':[{'_type': u'MetaType'},{'name': s}]})
          subject_type_id_list.append(node_s._id)

      for rs in value['object_type']:
        if rs == "*":
          node_s = node_collection.find({'_type': u'GSystemType'},{'_id':1})
          object_type_id_list = [each_node._id for each_node in node_s]

        else:
          node_rs = node_collection.one({'$and':[{'_type': u'GSystemType'},{'name': rs}]})
          if node_rs is None:
            node_rs =node_collection.one({'$and':[{'_type': u'MetaType'},{'name': rs}]})

          object_type_id_list.append(node_rs._id)

      if "object_cardinality" in value:
        object_cardinality = value["object_cardinality"]

      if "is_reflexive" in value:
        is_reflexive = value["is_reflexive"]

      if "is_transitive" in value:
        is_transitive = value["is_transitive"]

    create_relation_type(at_name, inverse_name, user_id, subject_type_id_list, object_type_id_list, meta_type_id, object_cardinality, member_of_type_id, is_reflexive, is_transitive)
コード例 #13
0
ファイル: event.py プロジェクト: g66shivam/gstudio
def send_event_notif_to_all_grp_members(group_obj, app_set_id, event_node, user_list):
   group_id = group_obj._id
   to_user_list = []
   event_organizer_str = ""
   event_coordinator_str = ""
   event_organized_by = []
   event_attendees = []
   event_coordinator = []
   for i in event_node.relation_set:
      if unicode('event_organised_by') in i.keys():
         event_organized_by = i['event_organised_by']
      if unicode('has_attendees') in i.keys():
         event_attendees = i['has_attendees']
      if unicode('event_coordinator') in i.keys():
         event_coordinator = i['event_coordinator'] 
   try:
      event_url = "/"+str(group_id)+"/event/"+str(app_set_id) +"/"+str(event_node._id)
      site = Site.objects.get(pk=1)
      site = site.name.__str__()
      event_link = "http://" + site + event_url
      event_organized_by_cur = node_collection.find({"_id":{'$in':event_organized_by}})
      event_coordinator_cur = node_collection.find({"_id":{'$in':event_coordinator}})
      for i in event_coordinator_cur:
          event_coordinator_str = event_coordinator_str + i.name + "  "
      for i in event_organized_by_cur:
          event_organizer_str = event_coordinator_str + i.name + "  "     
      render_label = render_to_string(
                        "notification/label.html",
                        {
                            "sender": "metaStudio",
                            "activity": "Event Created",
                            "conjunction": "-"
                        })
      if user_list:
          for j in event_attendees:
                      auth = node_collection.one({"_id":ObjectId(j)})
                      user_obj = User.objects.get(id=auth.created_by)
                      if user_obj not in to_user_list:
                              to_user_list.append(user_obj)
      else:
          for each_member in group_obj.author_set:
                      user_obj = User.objects.get(id=each_member)
                      if user_obj not in to_user_list:
                              to_user_list.append(user_obj)
       
      if event_organized_by:
         msg_string = "\n Event is organized by " + str ( event_organizer_str ) 
      else:
         msg_string = "" 

      message_string = "Invitation for Event"+ " " + str(event_node.name) + msg_string   + "\n Event will be co-ordinated by " +str (event_coordinator_str) + "\n- Please click [[" + event_link + "][here]] to view the details of the event"
      notification.create_notice_type(render_label, message_string, "notification") ##This is sent via email to all attendees in the group
      notification.send(to_user_list, render_label, {"from_user":"******"})
   except Exception as mailerror:
      error_msg = "Unable to send notifications!!!  ", str(mailerror)
      # print error_msg
      pass
コード例 #14
0
ファイル: wikidata.py プロジェクト: DurgaSwetha/ClixOER
def index(request, group_id):
    # 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)

    tag_coll = []
    selected_topic = None
    topic_coll = node_collection.find({"_type": u"GSystem"})
    topic_count = topic_coll.count()
    #print "here: " + str(topic_coll)
    topics = node_collection.find({"_type": u"GSystem"})
    #Tag collection
    tag_count = 0
    for topic1 in topics:
        for tag1 in topic1.tags:
            tag_coll.append(tag1)
            tag_count += 1

    context = RequestContext(request, {
        'title': "WikiData Topics",
        'topic_coll': topic_coll
    })
    template = "ndf/wikidata.html"
    variable = RequestContext(request, {'title': "WikiData Topics"})
    context_variables = {'title': "WikiData Topics"}
    context_instance = RequestContext(request, {
        'title': "WikiData Topics",
        'groupid': group_id,
        'group_id': group_id
    })
    attribute_set = None
    return render(
        request, template, {
            'title': "WikiData Topics",
            'topic_coll': topic_coll,
            'tag_count': tag_count,
            'tag_coll': tag_coll,
            'selected_topic': selected_topic,
            'attribute_set': attribute_set,
            'groupid': group_id,
            'group_id': group_id,
            'topic_count': topic_count
        })
コード例 #15
0
ファイル: module.py プロジェクト: 91ranjan/gstudio
def module(request, group_id, module_id=None):
    """
    * Renders a list of all 'modules' available within the database.
    """
    # 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)

    
    if module_id is None:
      module_ins = node_collection.find_one({'_type':"GSystemType", "name":"Module"})
      if module_ins:
        module_id = str(module_ins._id)
    
    if request.method == "POST":
      # Module search view
      title = GST_MODULE.name
      
      search_field = request.POST['search_field']
      module_coll = node_collection.find({'member_of': {'$all': [ObjectId(GST_MODULE._id)]},
                                         '$or': [{'name': {'$regex': search_field, '$options': 'i'}}, 
                                                 {'tags': {'$regex':search_field, '$options': 'i'}}], 
                                         'group_set': {'$all': [ObjectId(group_id)]}
                                     }).sort('last_update', -1)

      # module_nodes_count = course_coll.count()

      return render_to_response("ndf/module.html",
                                {'title': title,
                                 'appId':app._id,
                                 'searching': True, 'query': search_field,
                                 'module_coll': module_coll, 'groupid':group_id, 'group_id':group_id
                                }, 
                                context_instance=RequestContext(request)
                                )

    elif GST_MODULE._id == ObjectId(module_id):
      # Module list view
      title = GST_MODULE.name
      module_coll = node_collection.find({'member_of': {'$all': [ObjectId(module_id)]}, 'group_set': {'$all': [ObjectId(group_id)]}})
      template = "ndf/module.html"
      variable = RequestContext(request, {'title': title, 'appId':app._id, 'module_coll': module_coll, 'group_id': group_id, 'groupid': group_id})
      return render_to_response(template, variable)
コード例 #16
0
ファイル: batch.py プロジェクト: 91ranjan/gstudio
def batch(request, group_id):
    """
   * Renders a list of all 'batches' available within the database.
    """
    group_name, group_id = get_group_name_id(group_id)
    # ins_objectid = ObjectId()
    # st_student = node_collection.one({'_type':'GSystemType','name':'Student'})
    # 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
    nussd_course_type_name = ""
    announced_course_name = ""

    if request.method == "POST":
        announced_course_name = request.POST.get("announced_course_name", "")
        nussd_course_type_name = request.POST.get("nussd_course_name", "")
        # colg_gst = node_collection.one({'_type': "GSystemType", 'name': 'College'})
        # req_colg_id = node_collection.one({'member_of': colg_gst._id, 'relation_set.has_group': ObjectId(group_id)})
        batch_coll = node_collection.find({'member_of': GST_BATCH._id, 'relation_set.has_course': ObjectId(announced_course_name)})
        # for each_batch in batch_coll:
        #   each_batch['batch_name_human_readble'] = (each_batch.name).replace('_',' ')
    else:
        batch_coll = node_collection.find({'member_of': GST_BATCH._id, 'relation_set.batch_in_group':ObjectId(group_id)})
    fetch_ATs = ["nussd_course_type"]
    req_ATs = []
    for each in fetch_ATs:
        each = node_collection.one({'_type': "AttributeType", 'name': each}, {'_type': 1, '_id': 1, 'data_type': 1, 'complex_data_type': 1, 'name': 1, 'altnames': 1})

        if each["data_type"] == "IS()":
            dt = "IS("
            for v in each.complex_data_type:
                dt = dt + "u'" + v + "'" + ", "
            dt = dt[:(dt.rfind(", "))] + ")"
            each["data_type"] = dt

        each["data_type"] = eval(each["data_type"])
        each["value"] = None
        req_ATs.append(each)
    # users_in_group = node_collection.one({'_id':ObjectId(group_id)}).author_set
    template = "ndf/batch.html"
    variable = RequestContext(request, {'batch_coll': batch_coll,
                            'appId': app._id,
                            'nussd_course_name_var': nussd_course_type_name,
                            'announced_course_name_var': announced_course_name,
                            'ATs': req_ATs, 'group_id': group_id,
                            'groupid': group_id, 'title': GST_BATCH.name,
                            'st_batch_id': GST_BATCH._id})
    return render_to_response(template, variable)
コード例 #17
0
ファイル: api_v2.py プロジェクト: gnowledge/gstudio
def gst_attributes(gst_name_or_id):

    if not gst_name_or_id:
        return node_collection.find({'_type': 'AttributeType'}).distinct('name')

    try:
        gst_id = ObjectId(gst_name_or_id)
    except Exception as e:
        gst_name, gst_id = GSystemType.get_gst_name_id(gst_name_or_id)

    return [at.name for at in node_collection.find({'_type': 'AttributeType', 'subject_type': gst_id})]
コード例 #18
0
ファイル: api_v1.py プロジェクト: Harvindersingh0114/gstudio
def gst_attributes(gst_name_or_id):

    if not gst_name_or_id:
        return node_collection.find({'_type': 'AttributeType'}).distinct('name')

    try:
        gst_id = ObjectId(gst_name_or_id)
    except Exception as e:
        gst_name, gst_id = GSystemType.get_gst_name_id(gst_name_or_id)

    return [at.name for at in node_collection.find({'_type': 'AttributeType', 'subject_type': gst_id})]
コード例 #19
0
ファイル: explore.py プロジェクト: mrunal4/gstudio
def explore_drafts(request, page_no=1):
    title = 'drafts'
    modules_cur = node_collection.find({
        'member_of': gst_module_id
    }).sort('last_update', -1)

    module_unit_ids = [
        val for each_module in modules_cur
        for val in each_module.collection_set
    ]

    modules_cur.rewind()
    modules_page_cur = paginator.Paginator(modules_cur, page_no,
                                           GSTUDIO_NO_OF_OBJS_PP)

    base_unit_cur = node_collection.find({
        'member_of':
        gst_base_unit_id,
        '_id': {
            '$nin': module_unit_ids
        },
        'status':
        'PUBLISHED',
        '$or': [{
            'created_by': request.user.id
        }, {
            'group_admin': request.user.id
        }, {
            'author_set': request.user.id
        }, {
            'group_type': 'PUBLIC'
        }]
    }).sort('last_update', -1)
    base_unit_page_cur = paginator.Paginator(base_unit_cur, page_no,
                                             GSTUDIO_NO_OF_OBJS_PP)

    context_variable = {
        'title': title,
        'modules_cur': modules_cur,
        'units_cur': base_unit_cur,
        'group_id': group_id,
        'groupid': group_id,
    }

    return render_to_response(
        # "ndf/explore.html", changed as per new Clix UI
        "ndf/explore_2017.html",
        # "ndf/lms_explore.html",
        context_variable,
        context_instance=RequestContext(request))
コード例 #20
0
ファイル: explore.py プロジェクト: 91ranjan/gstudio
def explore_groups(request):
    title = 'groups'
    gstaff_access = check_is_gstaff(group_id,request.user)
    if gstaff_access:
        group_cur = node_collection.find({'_type': 'Group', 'member_of': gst_group._id}).sort('last_update', -1)
    else:
        group_cur = node_collection.find({'_type': 'Group', 'member_of': gst_group._id,'name':{'$nin':GSTUDIO_DEFAULT_GROUPS }}).sort('last_update', -1)

    context_variable = {'title': title, 'doc_cur': group_cur, 'card': 'ndf/simple_card.html',
                        'group_id': group_id, 'groupid': group_id}

    return render_to_response(
        "ndf/explore.html",
        context_variable,
        context_instance=RequestContext(request))
コード例 #21
0
ファイル: unit.py プロジェクト: gnowledge/gstudio
def list_units(request, group_id):
    '''
    listing of units
    '''
    parent_group_name, parent_group_id = Group.get_group_name_id(group_id)
    all_base_units = node_collection.find({
                                    '_type': 'Group',
                                    'group_set': {'$in': [parent_group_id]},
                                    'member_of': {'$in': [gst_base_unit_id]},
                                    '$or':[
                                        {'status': u'PUBLIC'},
                                        {
                                            '$and': [
                                                {'access_policy': u"PRIVATE"},
                                                {'created_by': request.user.id}
                                            ]
                                        }
                                    ]
                                }).sort('last_update', -1)

    template = "ndf/explore_2017.html"
    req_context = RequestContext(request, {
                                'group_id': parent_group_id,
                                'all_unit_objs': all_base_units
                            })
    return render_to_response(template, req_context)
コード例 #22
0
    def handle(self, *args, **options):
        gst_base_unit_name, gst_base_unit_id = GSystemType.get_gst_name_id('announced_unit')
        gst_course_ev_gr = node_collection.one({'_type': 'GSystemType', 'name': 'CourseEventGroup'})
        all_course_groups = node_collection.find({'_type': 'Group', 'member_of': {'$in': [gst_course_ev_gr._id, gst_base_unit_id]} })
        all_course_groups_count = all_course_groups.count()
        csv_created_count = 0

        for gr_index, each_group_obj in enumerate(all_course_groups, 1):
            assessment_and_quiz_data = True
            print "\n\n[ %d / %d ]" % (gr_index, all_course_groups_count)
            try:
                print "Exporting CSV for :", each_group_obj.name, "(Altnames:", each_group_obj.altnames, ")\n"
            except Exception as e:
                print "\n!! Exception in printing name of unit: ", e
                print "\n\nExporting CSV for :", each_group_obj._id, "\n"
                pass
            csv_created_count += export_group_analytics(each_group_obj, assessment_and_quiz_data)
        # print "Enter 'group name(case sensitive)' OR 'id': "
        # group_name_or_id = raw_input()
        # group_obj = Group.get_group_name_id(group_name_or_id, get_obj=True)

        # if not group_obj:
        #      raise ValueError('\nSorry. Request could not be visited. \
        #          \nGroup/Course, matching argument entered "' + group_name_or_id + '" does not exists!!')

        # export_group_analytics(group_obj,False)
        print "RESULT OF CSV EXPORT:\n\t- CREATED: %d\n\t- NOT CREATED: %d"%(csv_created_count, (all_course_groups_count - csv_created_count))
        print "=" * 100
コード例 #23
0
def link_login_ac():
    """This function links Author GSystem and Respecive Person's Sub-type GSystem.
  """
    users = User.objects.all()
    has_login_rt = node_collection.one({
        '_type': "RelationType",
        'name': "has_login"
    })

    for each in users:
        person_node = node_collection.find(
            {'attribute_set.email_id': each.email})
        auth_node = node_collection.one({
            '_type': "Author",
            'email': each.email
        })
        if person_node.count() <= 0 or auth_node is None:
            error_message = "\n Either person_node or auth_node doesn't exists for given email (" + each.email + ") !!!"
            log_list.append(error_message)
            continue

        for pn in person_node:
            gr_node = create_grelation(pn._id, has_login_rt, auth_node._id)
            info_message = "\n This GRelation created for " + str(
                gr_node.name) + "."
            log_list.append(info_message)
コード例 #24
0
ファイル: discussion.py プロジェクト: yogeshu/gstudio
def get_user_replies(request, group_id, user_name_or_id):

    group_obj = get_group_name_id(group_id, get_obj=True)
    group_id = group_obj._id

    user_obj = None
    try:
        if user_name_or_id.isdigit():
            user_obj = User.objects.get(pk=int(user_name_or_id))
        else:
            user_obj = User.objects.get(username=(user_name_or_id).strip())
        if user_obj:
            gst_reply = node_collection.one({
                '_type': 'GSystemType',
                'name': 'Reply'
            })
            user_replies = node_collection.find({
                'member_of': gst_reply._id,
                'group_set': ObjectId(group_id),
                'contributors': user_obj.pk
            }).sort('last_update', -1)

            return render_to_response('ndf/user_interactions.html', {
                'group_id': group_id,
                'groupid': group_id,
                'group_name': group_obj.name,
                'user_replies': user_replies,
                'user_obj': user_obj
            },
                                      context_instance=RequestContext(request))
    except Exception as no_user:
        return HttpResponse('No such User found')
コード例 #25
0
def quiz_details(request, group_id, node_id):
    try:
        group_id = ObjectId(group_id)
    except:
        group_name, group_id = get_group_name_id(group_id)

    title = gst_quiz.name
    gst_quiz_item = node_collection.one({
        '_type': 'GSystemType',
        'name': u'QuizItem'
    })

    quiz_node = node_collection.one({'_id': ObjectId(node_id)})
    quiz_item_nodes = node_collection.find({
        '_id': {
            '$in': quiz_node.collection_set
        },
        'member_of': gst_quiz_item._id
    }).sort('last_update', -1)
    # quiz_node.get_neighbourhood(quiz_node.member_of)

    context_variables = {
        'groupid': group_id,
        'group_id': group_id,
        'title': title,
        'node': quiz_node,
        'quiz_item_nodes': quiz_item_nodes
    }
    return render_to_response("ndf/quiz_details.html",
                              context_variables,
                              context_instance=RequestContext(request))
コード例 #26
0
ファイル: explore.py プロジェクト: yogeshu/gstudio
def explore_groups(request,page_no=1):
    title = 'workspaces'
    gstaff_access = check_is_gstaff(group_id,request.user)

    query = {'_type': 'Group', 'status': u'PUBLISHED',
            'agency_type':u"School",
            '$or': [
                        {'access_policy': u"PUBLIC"},
                        {'$and': [
                                {'access_policy': u"PRIVATE"},
                                {'created_by': request.user.id}
                            ]
                        }
                    ],
             'member_of': {'$in': [gst_group._id],
             '$nin': [gst_course._id, gst_basecoursegroup._id, ce_gst._id, gst_course._id, gst_base_unit_id]},
            }

    if gstaff_access:
        query.update({'group_type': {'$in': [u'PUBLIC', u'PRIVATE']}})
    else:
        query.update({'name': {'$nin': GSTUDIO_DEFAULT_GROUPS_LIST},
                    'group_type': u'PUBLIC'})
    group_cur = node_collection.find(query).sort('last_update', -1)

    grp_page_cur = paginator.Paginator(group_cur, page_no, GSTUDIO_NO_OF_OBJS_PP)
    context_variable = {'title': title, 'groups_cur': group_cur, 'card': 'ndf/card_group.html',
                        'group_id': group_id, 'groupid': group_id,'grp_page_cur': grp_page_cur}

    return render_to_response(
        "ndf/explore_2017.html",
        context_variable,
        context_instance=RequestContext(request))
コード例 #27
0
ファイル: discussion.py プロジェクト: smitpatwa/gstudio
def get_thread_comments_count(request, group_id, thread_node_id):
    return HttpResponse(
        node_collection.find({
            'member_of': reply_st._id,
            'origin.thread_id': ObjectId(thread_node_id)
        }).count())
    # return HttpResponse(json.dumps(result_set))
コード例 #28
0
def update_username(username_existing_expected_map={}):

    user_tokens_map_seperator = "-"

    for existing, expected in username_existing_expected_map.iteritems():

        check_in_username = user_tokens_map_seperator + existing + user_tokens_map_seperator + GSTUDIO_INSTITUTE_ID
        auth_cur = node_collection.find({
            '_type': u'Author',
            'name': {
                '$regex': unicode(check_in_username),
                '$options': 'i'
            }
        })
        print "\nUpdating Author instances for: '%s' \n" % existing
        for each_auth in auth_cur:
            print "\nOLD: ", each_auth.name
            each_auth.name = each_auth.name.replace(existing, expected)
            each_auth.save()
            print "NEW: ", each_auth.name

        print "-------------------------------------------"
        print "\nUpdating User instances for: '%s' \n" % existing
        user_cur = User.objects.filter(
            username__endswith=unicode(check_in_username))
        for each_user in user_cur:
            print "\nOLD: ", each_user.username
            each_user.username = each_user.username.replace(existing, expected)
            print "NEW: ", each_user.username
            each_user.save()

        print "\n=========================================== \n"
コード例 #29
0
    def handle(self, *args, **options):
        gst_course_ev_gr = node_collection.one({'_type': 'GSystemType', 'name': 'CourseEventGroup'})
        all_course_groups = node_collection.find({'_type': 'Group', 'member_of': {'$in': [gst_course_ev_gr._id]}})

        for each_group_obj in all_course_groups:
            print "\n\n Exporting CSV for: ", each_group_obj.name, "(", each_group_obj.altnames, ")\n"
            export_group_analytics(each_group_obj)
コード例 #30
0
ファイル: export_logic.py プロジェクト: DurgaSwetha/ClixOER
def delete_user_artifacts(user_ids_list):
    print "inside delete_user_artifacts"
    try:
        user_ids_list = map(int, user_ids_list)
        print "\n unit_ids ", user_ids_list, UNIT_IDS
        all_nodes = node_collection.find({
            '_type': 'GSystem',
            'created_by': {
                '$in': user_ids_list
            },
            'group_set': {
                '$in': UNIT_IDS
            }
        })
        print "\nArtifacts: ", all_nodes.count()
        if all_nodes.count():
            for each_node in all_nodes:
                print ".",
                log_file.write("\n**********************************\n")
                log_file.write(
                    "deleting the artifact node {0} created by {1}".format(
                        each_node._id, each_node.created_by))
                delete_node(each_node._id, deletion_type=1)
        else:
            log_file.write("\n**********************************\n")
            log_file.write("No artifacts found for {0}".format(UNIT_IDS))
    except Exception as del_user_artifacts_err:
        error_log = "\n !!! Error found while deleting user artifacts."
        error_log += "\nError: " + str(del_user_artifacts_err)
        log_file.write(str(error_log))
        print error_log
コード例 #31
0
    def handle(self, *args, **options):
        

        grp = node_collection.one({'_type': 'Group', '_id': ObjectId('5315b7497d9d331e53c12bda')})
        # grp = node_collection.one({'_type': 'Group', 'name': 'home'})

        lisp = []
        themes_list = []
        theme_item_list = [] 


        if grp:
            nodes = node_collection.find({'_type': 'GSystem', 'group_set': ObjectId(grp._id), 'member_of': {'$in': [theme_GST._id]} })

            for each in nodes:
                if each.collection_set:
                    for l in each.collection_set:
                        lisp.append(l)

            nodes.rewind()
            for e in nodes:
                if e._id not in lisp:
                    themes_list.append(e._id)


            nodes.rewind()
            for theme_item in nodes:
                if theme_item._id not in themes_list:
                    theme_item.member_of = []
                    theme_item.member_of.append(theme_item_GST._id)
                    theme_item.save()


        else:
            print "\n Mahagyan Group not exists ... "
コード例 #32
0
ファイル: batch.py プロジェクト: 91ranjan/gstudio
def get_possible_batches(request, group_id):
    '''
    Returns:
     * Batches of selected course
    '''
    group_name, group_id = get_group_name_id(group_id)
    response_dict = {"success": False}
    new_batch_node = None
    if request.is_ajax() and request.method == "POST":
        ac_id = request.POST.get("ac_id", '')
        create_new_batch = request.POST.get("create_new_batch", '')
        response_dict["success"] = True
        batch_user_list_dict = []
        list_of_members = []
        if ac_id:
            batch_cur = node_collection.find({'member_of': GST_BATCH._id,
                                'relation_set.has_course': ObjectId(ac_id)})
            for each_batch in batch_cur:
                each_batch_dict = {}
                if each_batch.relation_set:
                    for rel in each_batch.relation_set:
                        list_of_members = []
                        if rel and 'has_batch_member' in rel:
                            list_of_members.append(rel['has_batch_member'])
                            list_of_members.append(str(each_batch._id))
                            each_batch_dict[each_batch.name] = list_of_members
                batch_user_list_dict.append(each_batch_dict)
                # batch_user_list_dict.append(str(each_batch._id))
        # print "\n\nBatches----------", batch_user_list_dict
        response_dict["old_batches"] = batch_user_list_dict
        return HttpResponse(json.dumps(response_dict, cls=NodeJSONEncoder))
コード例 #33
0
ファイル: partner.py プロジェクト: 91ranjan/gstudio
def partner_showcase(request, group_id):

    group_name, group_id = get_group_name_id(group_id)
    
    all_source = node_collection.find({'attribute_set.source': {'$exists': True, '$ne': ''} }).distinct('attribute_set.source')

    partner_group = node_collection.one({'_type': 'GSystemType', 'name': 'PartnerGroup'})

    source_partners = node_collection.find({'_type': 'Group', 'member_of': {'$in': [partner_group._id]}, 'name': {'$in': all_source} }).sort('name',1)
    
    return render_to_response('ndf/partner_showcase.html',
                            {
                              'group_id': group_id, 'groupid': group_id,
                              'source_partners': source_partners
                            }, context_instance=RequestContext(request)
                          )
コード例 #34
0
def videoDashboard(request, group_id, video_id):
    # 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)

    if video_id is None:
        video_ins = node_collection.find_one({'_type':"GSystemType", "name":"Video"})
        if video_ins:
            video_id = str(video_ins._id)
    vid_col = node_collection.find({'member_of': {'$all': [ObjectId(video_id)]},'_type':'File', 'group_set': {'$all': [group_id]}})
    template = "ndf/videoDashboard.html"
    already_uploaded=request.GET.getlist('var',"")
    variable = RequestContext(request, {'videoCollection':vid_col, 'already_uploaded':already_uploaded, 'newgroup':group_id})
    return render_to_response(template, variable)
コード例 #35
0
def create_factory_schema_mapper(path):
    # dump_list = [type_json]
    schema_dump_path = os.path.join(path, 'factory_schema.json')

    all_factory_types = node_collection.find({
        '$or': [{
            '_type': {
                '$in': TYPES_LIST
            }
        }, {
            '_type': u'Group',
            'name': {
                '$in': GSTUDIO_DEFAULT_GROUPS_LIST
            }
        }]
    })
    factory_json_list = []
    for each_type in all_factory_types:
        each_type_json = type_json.copy()
        each_type_json['_type'] = each_type._type
        each_type_json['name'] = each_type.name
        each_type_json['source_id'] = each_type._id
        factory_json_list.append(each_type_json)

    with open(schema_dump_path, 'w+') as schema_file_out:
        schema_file_out.write(json_util.dumps(factory_json_list))
コード例 #36
0
ファイル: filehive.py プロジェクト: 91ranjan/gstudio
def read_file(request, group_id):

	all_fgs = node_collection.find({'_type': 'GSystem', 'member_of': gst_file._id})
	return render_to_response('ndf/filehive_listing.html', {
		'group_id': group_id, 'groupid': group_id,
		'all_filehives': all_fgs
		}, context_instance=RequestContext(request))
コード例 #37
0
ファイル: partner.py プロジェクト: 91ranjan/gstudio
def partner_list(request, group_id):

    group_obj = get_group_name_id(group_id, get_obj=True)
    app_gst = node_collection.one({'_type': 'GSystemType', 'name': 'PartnerGroup'})
    group_nodes = None
    collection_set = []
    # groups_category = None
    if group_obj:
        group_id = group_obj._id
        group_name = group_obj.name
        groups_category = group_obj.agency_type
        # groups_category = "Partner" if groups_category == "Partner" else "Group"

        group_obj = node_collection.one({'_id': ObjectId(group_id)})
        # if group_obj:
        #     for each in group_obj.collection_set:
        #         node = node_collection.one({'_id': each})
        #         collection_set.append(node)

        group_nodes = node_collection.find({'_id': {'$in':group_obj.post_node}}).sort("last_update",-1)
    # print GSTUDIO_NROER_MENU_MAPPINGS.get(group_name, None)
    # print GSTUDIO_NROER_MENU
    return render_to_response("ndf/partner_list.html",
                          {'group_nodes': group_nodes,
                           # "groups_category": groups_category,
                           'group_obj':group_obj,
                           'groupid': group_id, 'group_id': group_id, "app_gst": partner_group_gst,
                          }, context_instance=RequestContext(request))
コード例 #38
0
 def handle(self, *args, **options):
     '''
         For all users having any of the following element in their username,
         must have the agency-type set to Teacher for their respective Author objects
     '''
     print "\n 'agency-type=Teacher' setting Script Invoked."
     teacher_element_set = [
         'carbon', 'chlorine', 'copper', 'helium', 'iron', 'nitrogen',
         'oxygen', 'silver', 'sodium', 'zinc'
     ]
     ele_user_id_list = list(
         User.objects.filter(
             reduce(or_, [
                 Q(username__icontains=ele_name)
                 for ele_name in teacher_element_set
             ])).values_list('id', flat=True))
     ele_auth_cur = node_collection.find({
         '_type': 'Author',
         'created_by': {
             '$in': ele_user_id_list
         },
         'agency_type': {
             '$ne': 'Teacher'
         }
     })
     print "\n Total Authors not having Teacher agency-type: ", ele_auth_cur.count(
     )
     for each_auth in ele_auth_cur:
         try:
             each_auth.agency_type = 'Teacher'
         except Exception, e:
             each_auth['agency_type'] = 'Teacher'
         each_auth.save()
コード例 #39
0
def update_username(username_existing_expected_map={}):

	user_tokens_map_seperator = "-"
	# try:
	# 	with open('../doc/release-scripts/user-tokens.json') as tokens:
	# 		user_tokens_map = json.load(tokens)
	# 		user_tokens_map_seperator = user_tokens_map['seperator']
	# except Exception as e:
	# 	print e

	for existing, expected in username_existing_expected_map.iteritems():

		check_in_username = user_tokens_map_seperator + existing + user_tokens_map_seperator + GSTUDIO_INSTITUTE_ID
		auth_cur = node_collection.find({'_type': u'Author', 'name': {'$regex': unicode(check_in_username), '$options': 'i'} })
		print "\nUpdating Author instances for: '%s' \n"%existing
		for each_auth in auth_cur:
			print "\nOLD: ", each_auth.name
			each_auth.name = each_auth.name.replace(existing, expected)
			each_auth.save()
			print "NEW: ", each_auth.name

		print "-------------------------------------------"
		print "\nUpdating User instances for: '%s' \n"%existing
		user_cur = User.objects.filter(username__endswith=unicode(check_in_username))
		for each_user in user_cur:
			print "\nOLD: ", each_user.username
			each_user.username = each_user.username.replace(existing, expected)
			print "NEW: ", each_user.username
			each_user.save()

		print "\n=========================================== \n"
コード例 #40
0
ファイル: filehive.py プロジェクト: yogeshu/gstudio
def read_file(request, group_id):

	all_fgs = node_collection.find({'_type': 'GSystem', 'member_of': gst_file._id})
	return render_to_response('ndf/filehive_listing.html', {
		'group_id': group_id, 'groupid': group_id,
		'all_filehives': all_fgs
		}, context_instance=RequestContext(request))
コード例 #41
0
ファイル: adminDashboard.py プロジェクト: 91ranjan/gstudio
def adminDashboard(request):
    '''
    methods for class view 
    '''
    objects_details = []
    nodes = node_collection.find({'_type':"GSystem"})
    group_obj= node_collection.find({'$and':[{"_type":u'Group'},{"name":u'home'}]})
    groupid = ""
    if group_obj:
	groupid = str(group_obj[0]._id)
    for each in nodes:
	objects_details.append({"Id":each._id,"Title":each.name,"Type":each.type_of,"Author":User.objects.get(id=each.created_by).username,"Group":",".join(each.group_set)})
    template = "ndf/adminDashboard.html"

    variable = RequestContext(request, {'class_name':"GSystem","nodes":objects_details,"groupid":groupid})
    return render_to_response(template, variable)
コード例 #42
0
def list_themes(request, group_id):

    try:
        group_id = ObjectId(group_id)
    except:
        group_name, group_id = get_group_name_id(group_id)

    title = theme_GST.name

    nodes = node_collection.find(
        {
            'member_of': {
                '$all': [theme_GST._id]
            },
            'group_set': {
                '$all': [ObjectId(group_id)]
            }
        }, {
            '_id': 1,
            'name': 1,
            'created_by': 1,
            'created_at': 1
        })

    return render_to_response("ndf/list_themes.html", {
        'groupid': group_id,
        'group_id': group_id,
        'nodes': nodes,
        'theme_GST': theme_GST
    },
                              context_instance=RequestContext(request))
コード例 #43
0
ファイル: buddy.py プロジェクト: katkamrachana/gstudio
def list_buddy(request, group_id='home'):

    '''
    fetching all buddies.
    '''

    buddies_authid_name_dict= request.session.get('buddies_authid_name_dict', {})
    buddies_authid_list     = request.session.get('buddies_authid_list', [])
    # to load all user's at page load time (performance penalty, kept for ref):
    #
    # filter_authors = [ObjectId(auth_oid)for auth_oid in buddies_authid_list]
    # all_inst_users = User.objects.filter(username__iendswith=GSTUDIO_INSTITUTE_ID)
    # all_inst_authors = node_collection.find({
    #                                         '_type': u'Author',
    #                                         # '_id': {'$nin': filter_authors},
    #                                         'name': {
    #                                             '$regex': GSTUDIO_INSTITUTE_ID + '$'
    #                                             },
    #                                         'created_by': {'$ne': request.user.id}
    #                                         })

    selected_buddies_obj_list = node_collection.find({
                                            '_id': {'$in': [ObjectId(b) for b in buddies_authid_list]}
                                            })

    template = 'ndf/buddy_list.html'

    variable = RequestContext(request, {
                                    "group_id": group_id, 'all_inst_users': selected_buddies_obj_list,
                                    'buddies_id_name_dict': buddies_authid_name_dict,
                                    'buddies_id_list': buddies_authid_list
                                })

    return render_to_response(template, variable)
コード例 #44
0
ファイル: explore.py プロジェクト: lakshit07/gstudio
def explore_groups(request,page_no=1):
    title = 'workspaces'
    gstaff_access = check_is_gstaff(group_id,request.user)

    query = {'_type': 'Group', 'status': u'PUBLISHED',
            '$or': [
                        {'access_policy': u"PUBLIC"},
                        {'$and': [
                                {'access_policy': u"PRIVATE"},
                                {'created_by': request.user.id}
                            ]
                        }
                    ],
             'member_of': {'$in': [gst_group._id],
             '$nin': [gst_course._id, gst_basecoursegroup._id, ce_gst._id, gst_course._id, gst_base_unit_id]},
            }

    if gstaff_access:
        query.update({'group_type': {'$in': [u'PUBLIC', u'PRIVATE']}})
    else:
        query.update({'name': {'$nin': GSTUDIO_DEFAULT_GROUPS_LIST},
                    'group_type': u'PUBLIC'})
    group_cur = node_collection.find(query).sort('last_update', -1)

    grp_page_cur = paginator.Paginator(group_cur, page_no, GSTUDIO_NO_OF_OBJS_PP)
    context_variable = {'title': title, 'groups_cur': group_cur, 'card': 'ndf/card_group.html',
                        'group_id': group_id, 'groupid': group_id,'grp_page_cur': grp_page_cur}

    return render_to_response(
        "ndf/explore_2017.html",
        context_variable,
        context_instance=RequestContext(request))
コード例 #45
0
def create_users_dump(path, user_id_list):
    dump_list = [user_json]
    schema_dump_path = os.path.join(path, 'users_dump.json')
    auth_cur = node_collection.find({'_type': 'Author',
                'created_by': {'$in': user_id_list}},
                {'name':1, 'email': 1, 'created_by': 1})

    user_json_list =  []
    for each_auth in auth_cur:
        try:
            user_obj = User.objects.get(pk=each_auth.created_by)
        except Exception as no_user:
            pass
        if user_obj:
            each_user_json = user_json.copy()
            each_user_json['user_id'] = user_obj.id
            each_user_json['user_name'] = user_obj.username
            # for email
            user_email_val = user_obj.email
            if user_email_val == '':
                user_email_val = user_obj.username
            each_user_json['user_email'] = user_email_val
            each_user_json['user_author_id'] = str(each_auth._id)
            user_json_list.append(each_user_json)

    with open(schema_dump_path, 'w+') as schema_file_out:
        schema_file_out.write(json.dumps(user_json_list))
コード例 #46
0
ファイル: create_schema.py プロジェクト: gnowledge/gstudio
def update_default_st(field):
  default_st_cur = node_collection.find({'_type': 'GSystemType',
                    'name': {'$in': GSTUDIO_DEFAULT_SYSTEM_TYPES_LIST}})
  default_st_ids = [st._id for st in default_st_cur]
  if default_st_ids:
    field.extend(default_st_ids)
  return field
コード例 #47
0
ファイル: discussion.py プロジェクト: lakshit07/gstudio
def discussion_delete_reply(request, group_id, node_id):

    try:
        group_id = ObjectId(group_id)
    except:
        group_name, group_id = get_group_name_id(group_id)

    nodes_to_delete = json.loads(request.POST.get("nodes_to_delete", "[]"))

    deleted_replies = []
    node_obj = node_collection.one({'_id': ObjectId(node_id)})
    # print "\n\nnode_obj.name", node_obj.name, node_obj.member_of_names_list,node_obj._id

    for each_reply in nodes_to_delete:
        temp_reply = node_collection.one({"_id": ObjectId(each_reply)})

        if temp_reply:
            deleted_replies.append(temp_reply._id.__str__())
            temp_reply.delete()

    replies_cur = node_collection.find({'origin.thread_id': ObjectId(node_id)})
    # print "\n replies_cur",replies_cur.count()
    if (not replies_cur.count()) and (int(request.user.id) in node_obj.author_set):
        author_set_ids = node_obj.author_set
        author_set_ids.remove(int(request.user.id))
        node_obj.author_set = author_set_ids
        node_obj.save()
    return HttpResponse(json.dumps(deleted_replies))
コード例 #48
0
ファイル: discussion.py プロジェクト: mrunal4/gstudio
def discussion_delete_reply(request, group_id, node_id):

    try:
        group_id = ObjectId(group_id)
    except:
        group_name, group_id = get_group_name_id(group_id)

    nodes_to_delete = json.loads(request.POST.get("nodes_to_delete", "[]"))

    deleted_replies = []
    node_obj = node_collection.one({'_id': ObjectId(node_id)})
    # print "\n\nnode_obj.name", node_obj.name, node_obj.member_of_names_list,node_obj._id

    for each_reply in nodes_to_delete:
        temp_reply = node_collection.one({"_id": ObjectId(each_reply)})

        if temp_reply:
            deleted_replies.append(temp_reply._id.__str__())
            temp_reply.delete()

    replies_cur = node_collection.find({'origin.thread_id': ObjectId(node_id)})
    # print "\n replies_cur",replies_cur.count()
    if (not replies_cur.count()) and (int(request.user.id) in node_obj.author_set):
        author_set_ids = node_obj.author_set
        author_set_ids.remove(int(request.user.id))
        node_obj.author_set = author_set_ids
        node_obj.save()
    return HttpResponse(json.dumps(deleted_replies))
コード例 #49
0
ファイル: videoDashboard.py プロジェクト: 91ranjan/gstudio
def videoDashboard(request, group_id, video_id):
    # 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)

    if video_id is None:
        video_ins = node_collection.find_one({'_type':"GSystemType", "name":"Video"})
        if video_ins:
            video_id = str(video_ins._id)
    vid_col = node_collection.find({'member_of': {'$all': [ObjectId(video_id)]},'_type':'File', 'group_set': {'$all': [group_id]}})
    template = "ndf/videoDashboard.html"
    already_uploaded=request.GET.getlist('var',"")
    variable = RequestContext(request, {'videoCollection':vid_col, 'already_uploaded':already_uploaded, 'newgroup':group_id})
    return render_to_response(template, variable)
コード例 #50
0
ファイル: dev_utils.py プロジェクト: DurgaSwetha/ClixOER
def query_doc(request, doc_id_or_name=None, option=None):

    if ObjectId.is_valid(doc_id_or_name):
        doc_id_or_name = ObjectId(doc_id_or_name)

    query_res = node_collection.find(
        {'$or': [{
            '_id': doc_id_or_name
        }, {
            'name': unicode(doc_id_or_name)
        }]})

    result = []
    for each_doc in query_res:
        if option in ['nbh', 'NBH', 'get_neighbourhood']:
            each_doc.get_neighbourhood(each_doc.member_of)
        result.append(json.dumps(each_doc, cls=NodeJSONEncoder,
                                 sort_keys=True))

    return render_to_response('ndf/dev_query_doc.html', {
        'result': result,
        'query': doc_id_or_name,
        'count': query_res.count()
    },
                              context_instance=RequestContext(request))
コード例 #51
0
ファイル: unit.py プロジェクト: DurgaSwetha/ClixOER
def list_units(request, group_id):
    '''
    listing of units
    '''
    parent_group_name, parent_group_id = Group.get_group_name_id(group_id)
    all_base_units = node_collection.find({
        '_type':
        'Group',
        'group_set': {
            '$in': [parent_group_id]
        },
        'member_of': {
            '$in': [gst_base_unit_id]
        },
        '$or': [{
            'status': u'PUBLIC'
        }, {
            '$and': [{
                'access_policy': u"PRIVATE"
            }, {
                'created_by': request.user.id
            }]
        }]
    }).sort('last_update', -1)

    template = "ndf/explore_2017.html"
    req_context = RequestContext(request, {
        'group_id': parent_group_id,
        'all_unit_objs': all_base_units
    })
    return render_to_response(template, req_context)
コード例 #52
0
ファイル: batch.py プロジェクト: DurgaSwetha/ClixOER
def get_possible_batches(request, group_id):
    '''
    Returns:
     * Batches of selected course
    '''
    group_name, group_id = get_group_name_id(group_id)
    response_dict = {"success": False}
    new_batch_node = None
    if request.is_ajax() and request.method == "POST":
        ac_id = request.POST.get("ac_id", '')
        create_new_batch = request.POST.get("create_new_batch", '')
        response_dict["success"] = True
        batch_user_list_dict = []
        list_of_members = []
        if ac_id:
            batch_cur = node_collection.find({
                'member_of':
                GST_BATCH._id,
                'relation_set.has_course':
                ObjectId(ac_id)
            })
            for each_batch in batch_cur:
                each_batch_dict = {}
                if each_batch.relation_set:
                    for rel in each_batch.relation_set:
                        list_of_members = []
                        if rel and 'has_batch_member' in rel:
                            list_of_members.append(rel['has_batch_member'])
                            list_of_members.append(str(each_batch._id))
                            each_batch_dict[each_batch.name] = list_of_members
                batch_user_list_dict.append(each_batch_dict)
                # batch_user_list_dict.append(str(each_batch._id))
        # print "\n\nBatches----------", batch_user_list_dict
        response_dict["old_batches"] = batch_user_list_dict
        return HttpResponse(json.dumps(response_dict, cls=NodeJSONEncoder))
コード例 #53
0
ファイル: release2-1_nov17.py プロジェクト: gnowledge/gstudio
def update_username(username_existing_expected_map={}):

    user_tokens_map_seperator = "-"

    for existing, expected in username_existing_expected_map.iteritems():

        check_in_username = user_tokens_map_seperator + existing + user_tokens_map_seperator + GSTUDIO_INSTITUTE_ID
        auth_cur = node_collection.find({'_type': u'Author', 'name': {'$regex': unicode(check_in_username), '$options': 'i'} })
        print "\nUpdating Author instances for: '%s' \n" % existing
        for each_auth in auth_cur:
            print "\nOLD: ", each_auth.name
            each_auth.name = each_auth.name.replace(existing, expected)
            each_auth.save()
            print "NEW: ", each_auth.name

        print "-------------------------------------------"
        print "\nUpdating User instances for: '%s' \n" % existing
        user_cur = User.objects.filter(username__endswith=unicode(check_in_username))
        for each_user in user_cur:
            print "\nOLD: ", each_user.username
            each_user.username = each_user.username.replace(existing, expected)
            print "NEW: ", each_user.username
            each_user.save()

        print "\n=========================================== \n"
コード例 #54
0
ファイル: forum.py プロジェクト: 91ranjan/gstudio
def delete_thread(request,group_id,forum_id,node_id):
    """ Changing status of thread to HIDDEN
    """
    ins_objectid  = ObjectId()
    if ins_objectid.is_valid(node_id) : 
        thread=node_collection.one({'_id':ObjectId(node_id)})
    else:
        return
    forum = node_collection.one({'_id': ObjectId(forum_id)})
    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
    op = node_collection.collection.update({'_id': ObjectId(node_id)}, {'$set': {'status': u"HIDDEN"}})

    node=node_collection.one({'_id':ObjectId(node_id)})
    forum_threads = []
    exstng_reply = node_collection.find({'$and':[{'_type':'GSystem'},{'prior_node':ObjectId(forum._id)}],'status':{'$nin':['HIDDEN']}})
    exstng_reply.sort('created_at')
    forum_node=node_collection.one({'_id':ObjectId(forum_id)})
    for each in exstng_reply:
        forum_threads.append(each.name)
    #send notifications to all group members
    colg=node_collection.one({'_id':ObjectId(group_id)})
    for each in colg.author_set:
        if each != colg.created_by:
            bx=get_userobject(each)
            if bx:
                activity=request.user.username+" -deleted thread "
                prefix=" in the forum "+forum_node.name
                link="http://"+sitename+"/"+str(colg._id)+"/forum/"+str(forum_node._id)
                msg=activity+"-"+node.name+prefix+"- in the group '"+colg.name+"' created by you."+"'\n"+"Please visit "+link+" to see the forum."  
#                no_check=forum_notification_status(group_id,auth._id)
#                if no_check:
                ret = set_notif_val(request,group_id,msg,activity,bx)
    activity=request.user.username+" -deleted thread "    
    prefix=" in the forum "+forum_node.name
    bx=get_userobject(colg.created_by)
    if bx:
        link="http://"+sitename+"/"+str(colg._id)+"/forum/"+str(forum_node._id)
        msg=activity+"-"+node.name+prefix+"- in the group '"+colg.name+"' created by you."+"'\n"+"Please visit "+link+" to see the forum."  
#        no_check=forum_notification_status(group_id,auth._id)
#        if no_check:
        ret = set_notif_val(request,group_id,msg,activity,bx)
    #send notification code ends here
    variables = RequestContext(request,{
                                        'forum':forum,
                                        'groupid':group_id,'group_id':group_id,
                                        'forum_created_by':User.objects.get(id=forum.created_by).username
                                        })

    return render_to_response("ndf/forumdetails.html",variables)
コード例 #55
0
ファイル: explore.py プロジェクト: g66shivam/gstudio
def explore_groups(request,page_no=1):
    from gnowsys_ndf.settings import GSTUDIO_NO_OF_OBJS_PP
    title = 'groups'
    gstaff_access = check_is_gstaff(group_id,request.user)
    if gstaff_access:
        group_cur = node_collection.find({'_type': 'Group', 'member_of': gst_group._id}).sort('last_update', -1)
    else:
        group_cur = node_collection.find({'_type': 'Group', 'member_of': gst_group._id,'name':{'$nin':GSTUDIO_DEFAULT_GROUPS }}).sort('last_update', -1)

    ce_page_cur = paginator.Paginator(group_cur, page_no, GSTUDIO_NO_OF_OBJS_PP)
    context_variable = {'title': title, 'doc_cur': group_cur, 'card': 'ndf/simple_card.html',
                        'group_id': group_id, 'groupid': group_id,'ce_page_cur':ce_page_cur}

    return render_to_response(
        "ndf/explore.html",
        context_variable,
        context_instance=RequestContext(request))
コード例 #56
0
ファイル: analytics.py プロジェクト: gnowledge/gstudio
def group_summary(request,group_id):
	'''
	Renders the summary of all the activities done by the members of the Group
	'''
	group_name, group_id = get_group_name_id(group_id)

	query("group",{ "group_id" : group_id })

	data = {}
	pipe = [{'$match' : { 'group_id' : str(group_id)}}, {'$group': {'_id': '$user.name', 'num_of_activities': {'$sum': 1}}}]
	sorted_list = analytics_collection.aggregate(pipeline=pipe)
	sorted_list_acc_activities = sorted(sorted_list['result'],key = lambda k:k[u'num_of_activities'],reverse=True)

	data['active_users'] = []
	i=0
	for doc in sorted_list_acc_activities :
		data['active_users'].append({ "name" : (doc[u'_id']) , "activities" : doc[u'num_of_activities'] } )
		i+=1
		if i==3:
			break
	Course = node_collection.find_one({"_type":"GSystemType","name":"Course"})
	CourseEventGroup  =  node_collection.find_one({"_type":"GSystemType","name":"CourseEventGroup"})
        TwistGst = node_collection.find_one({"_type":"GSystemType","name":"Twist"})
	data['forums'] = db['Nodes'].find({"url":"forum", "group_set":ObjectId(group_id)}).count()
	data['threads'] = db['Nodes'].find({"member_of":ObjectId(TwistGst._id),"group_set":ObjectId(group_id)}).count()
	regx=re.compile("^Reply of:.*")
	data['replies'] = db['Nodes'].find({"name": regx,"group_set":ObjectId(group_id)}).count()
	data['files'] = db['Nodes'].find({"url":"file", "group_set":ObjectId(group_id)}).count()
	data['pages'] = db['Nodes'].find({"url":"page", "group_set":ObjectId(group_id)}).count()
	data['total_activities'] = analytics_collection.find({ "group_id" : unicode(group_id)}).count()
	data['Courses'] =  node_collection.find({"type_of":Course._id}).count()
	data['announce_courses'] = node_collection.find({"prior_node":ObjectId(group_id),"member_of":CourseEventGroup._id}).count()
	data['recent'] = {}

	specific_date = datetime.datetime.now() - datetime.timedelta(days=7)

	data['recent']['forums'] = analytics_collection.find({"action.key": {"$in" : ['create', 'edit']}, "group_id": str(group_id), "obj.forum" : { '$exists' : 'true'},"timestamp":{'$gte':specific_date}}).count()
	data['recent']['threads'] = analytics_collection.find({"action.key": {"$in" : ['create', 'edit']}, "group_id": str(group_id), "obj.thread" : { '$exists' : 'true'},"timestamp":{'$gte':specific_date}}).count()
	data['recent']['replies'] = analytics_collection.find({"action.key": {"$in" : ['add']}, "group_id": str(group_id), "obj.reply" : { '$exists' : 'true'},"timestamp":{'$gte':specific_date}}).count()
	data['recent']['files'] = analytics_collection.find({"action.key": {"$in" : ['create', 'edit']}, "group_id": str(group_id), "obj.file" : { '$exists' : 'true'},"timestamp":{'$gte':specific_date}}).count()
	data['recent']['pages'] = analytics_collection.find({"action.key": {"$in" : ['create', 'edit']}, "group_id": str(group_id), "obj.page" : { '$exists' : 'true'},"timestamp":{'$gte':specific_date}}).count()
	data['recent']['create_edit_course'] = analytics_collection.find({"action.key": {"$in" : ['create', 'edit']}, "group_id": str(group_id), "obj.course" : { '$exists' : 'true'},"timestamp":{'$gte':specific_date}}).count()


	return render (request ,"ndf/analytics_group_summary.html",
																{ "data" : data, "group_id" : group_id, "groupid" : group_id})
コード例 #57
0
ファイル: api_v2.py プロジェクト: gnowledge/gstudio
def api_get_field_values(request, field_name):
    '''
    GET /api/v2/tags
    '''
    field_name = api_name_model_name_dict.get(field_name, field_name)
    gsystem_structure_dict = GSystem.structure
    gsystem_keys = gsystem_structure_dict.keys()

    if field_name in gsystem_keys:
        json_result = '[]'
        oid_fields = [ k for k, v in gsystem_structure_dict.iteritems() if v in [bson.objectid.ObjectId, [bson.objectid.ObjectId]] ]
        user_fields = ['created_by', 'modified_by', 'contributors']

        # MONGO
        if field_name in oid_fields:
            result_list = node_collection.find({ '_id': {'$in': node_collection.find({}).distinct(field_name) } }).distinct('name')
        # USER
        elif field_name in user_fields:
            # mapping user id to username.
            result_list = node_collection.find({'_type': 'Author', 'created_by': {'$in': node_collection.find({}).distinct(field_name) } }).distinct('name')
        # OTHER
        else:
            # overriden from settings
            GSTUDIO_WORKING_GAPPS = [u'Page', u'File']
            gstudio_working_gapps_mof_list = node_collection.find({'_type': 'GSystemType', 'name': {'$in': GSTUDIO_WORKING_GAPPS} }).distinct('_id')
            result_list = node_collection.find({'_type': 'GSystem', 'status': u'PUBLISHED', 'access_policy': 'PUBLIC', 'member_of': {'$in': gstudio_working_gapps_mof_list}}).distinct(field_name)

        return HttpResponse(json.dumps(result_list, ensure_ascii=False, cls=NodeJSONEncoder, sort_keys=True, indent=4).encode('utf16'), content_type='application/json')

    elif field_name in node_collection.find({'_type': 'AttributeType'}).distinct('name'):
        return HttpResponse( json.dumps(node_collection.find().distinct('attribute_set.' + field_name), sort_keys=True, indent=4), content_type='application/json')

    return HttpResponse(["Invalid Field"], content_type='application/json')