Пример #1
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))
Пример #2
0
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))
Пример #3
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))
Пример #4
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))
Пример #5
0
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))
Пример #6
0
def savejhapp(request,group_id):
  from gnowsys_ndf.ndf.views.file import save_file
  try:
      group_id = ObjectId(group_id)
  except:
      group_name, group_id = get_group_name_id(group_id)
  jhapp_type = request.POST.getlist("jhapp-type", "")
  jhapp_type_trim = jhapp_type[0].replace(" ", "")
  group_obj = node_collection.one({'_id': ObjectId(group_id)})
  title = request.POST.get('context_name','')
  usrid = request.user.id
  # jsmol_gst  = node_collection.one({"_type":"GSystemType","name":"Jsmol" })
  sel_jhapp_gst  = node_collection.one({"_type":"GSystemType","name":unicode(jhapp_type_trim) })
  
  import zipfile
  from gnowsys_ndf.ndf.views.filehive import write_files
  is_user_gstaff = check_is_gstaff(group_obj._id, request.user)
  
  fileobj_list = write_files(request, group_id)
  fileobj_id = fileobj_list[0]['_id']
  file_node = node_collection.one({'_id': ObjectId(fileobj_id) })
  
  if sel_jhapp_gst._id:
    file_node.member_of = [ObjectId(sel_jhapp_gst._id)]
  
  uploaded_files = request.FILES.getlist('filehive', [])
  zip_path = file_node.if_file.original['relurl']
  zip_split_path = zip_path.split('.')
  un_zip_path = zip_path.split('/')
  file_name = str(uploaded_files[0]).split(".")
  un_zip_split_path = "/data/media/"+un_zip_path[0] + "/" + un_zip_path[1] + "/" +un_zip_path[2] + "/"

  with zipfile.ZipFile("/data/media/"+ file_node.if_file.original['relurl'], "r") as z:
    z.extractall(un_zip_split_path)
  
  relurl_path = str("/" + un_zip_path[0] + "/" + un_zip_path[1] + "/" +un_zip_path[2] + "/" + file_name[0] + "/" + "index" + ".html" )
  # print "_______________________________",relurl_path
  discussion_enable_at = node_collection.one({"_type": "AttributeType", "name": "discussion_enable"})
  for each_gs_file in fileobj_list:
      #set interaction-settings
      each_gs_file.status = u"PUBLISHED"
      if usrid not in each_gs_file.contributors:
          each_gs_file.contributors.append(usrid)

      group_object = node_collection.one({'_id': ObjectId(group_id)})
      if (group_object.edit_policy == "EDITABLE_MODERATED") and (group_object.moderation_level > 0):
          from gnowsys_ndf.ndf.views.moderation import get_moderator_group_set
          # print "\n\n\n\ninside editable moderated block"
          each_gs_file.group_set = get_moderator_group_set(each_gs_file.group_set, group_object._id)
          # print "\n\n\npage_node._id",page_node._id
          each_gs_file.status = u'MODERATION'
          # print "\n\n\n page_node.status",page_node.status
      each_gs_file.save()
      create_gattribute(each_gs_file._id, discussion_enable_at, True)
      return_status = create_thread_for_node(request,group_obj._id, each_gs_file)
  file_node.url = "/data/media/"+ file_node.if_file.original['relurl']
  file_node.if_file.original.relurl =  relurl_path
  file_node.if_file.mime_type = u"text/html"
  file_node.save()
  return HttpResponseRedirect( reverse('file_detail', kwargs={"group_id": group_id,'_id':fileobj_id}))
Пример #7
0
def program_event_list(request, group_id):
    """
    * Renders a list of all 'programs'
    """
    try:
        group_id = ObjectId(group_id)
    except:
        group_name, group_id = get_group_name_id(group_id)
    group_obj = node_collection.one({'_id': ObjectId(group_id)})

    course_coll = None
    enr_ce_coll = []
    list_of_pe = []
    all_pe = []
    pe_gst = node_collection.one({'_type': "GSystemType", 'name': "ProgramEventGroup"})

    # program events
    title = "Events"

    pe_coll = node_collection.find({'member_of': pe_gst._id}).sort('last_update', -1)
    for each_pe in pe_coll:
        list_of_hierarchy = get_prior_node_hierarchy(each_pe._id)
        if list_of_hierarchy:
            pe_obj = list_of_hierarchy[len(list_of_hierarchy)-1]
        if pe_obj not in list_of_pe and pe_obj._id in group_obj.post_node:
            list_of_pe.append(pe_obj)
    # print "\n\n list_of_pe",list_of_pe
    gstaff_access = False
    if request.user.id:
        gstaff_access = check_is_gstaff(group_id,request.user)
        userid = int(request.user.id)
        for each in list_of_pe:
            if userid in each.author_set:
                if each not in enr_ce_coll:
                    enr_ce_coll.append(each)     
            else:
                all_pe.append(each)   
    else:
        all_pe = list_of_pe
    if gstaff_access:
        all_pe = enr_ce_coll
    # If request.user is admin, enr_ce_coll is all_pe. 
    # As admin is added in author set of all pe
        # enr_ce_coll = node_collection.find({'$in': list_of_pe,'author_set': int(request.user.id)}).sort('last_update', -1)

    # ce_coll = node_collection.find({'member_of': pe_gst._id, 'author_set': {'$ne': int(request.user.id)}})

    return render_to_response("ndf/course.html",
                            {'title': title,
                             'course_gst': pe_gst,
                             'course_coll': list_of_pe,
                             'groupid': group_id, 'group_id': group_id,
                             'ce_coll':all_pe,
                             'enr_ce_coll':enr_ce_coll,
                            },
                            context_instance=RequestContext(request)
                            )     
Пример #8
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))
Пример #9
0
def explore_basecourses(request):

    gstaff_access = check_is_gstaff(group_id,request.user)
    if not gstaff_access:
        return HttpResponseRedirect(reverse('explore_courses'))

    title = 'base courses'

    course_cur = node_collection.find({'member_of': gst_course._id}).sort('last_update', -1)
    context_variable = {'title': title, 'doc_cur': course_cur, 'card': 'ndf/event_card.html',
                        'group_id': group_id, 'groupid': group_id}
    return render_to_response(
        "ndf/explore.html",
        context_variable,
        context_instance=RequestContext(request))
Пример #10
0
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))
Пример #11
0
def explore_basecourses(request,page_no=1):

    from gnowsys_ndf.settings import GSTUDIO_NO_OF_OBJS_PP
    gstaff_access = check_is_gstaff(group_id,request.user)
    if not gstaff_access:
        return HttpResponseRedirect(reverse('explore_courses'))

    title = 'base courses'

    course_cur = node_collection.find({'member_of': gst_course._id}).sort('last_update', -1)
    ce_page_cur = paginator.Paginator(course_cur, page_no, GSTUDIO_NO_OF_OBJS_PP)
    context_variable = {'title': title, 'doc_cur': course_cur, 'card': 'ndf/event_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))
Пример #12
0
def explore_basecourses(request):

    gstaff_access = check_is_gstaff(group_id, request.user)
    if not gstaff_access:
        return HttpResponseRedirect(reverse('explore_courses'))

    title = 'base courses'

    course_cur = node_collection.find({
        'member_of': gst_course._id
    }).sort('last_update', -1)
    context_variable = {
        'title': title,
        'doc_cur': course_cur,
        'card': 'ndf/event_card.html',
        'group_id': group_id,
        'groupid': group_id
    }
    return render_to_response("ndf/explore.html",
                              context_variable,
                              context_instance=RequestContext(request))
Пример #13
0
def savejhapp(request, group_id):
    from gnowsys_ndf.ndf.views.file import save_file
    try:
        group_id = ObjectId(group_id)
    except:
        group_name, group_id = get_group_name_id(group_id)
    jhapp_type = request.POST.getlist("jhapp-type", "")
    jhapp_type_trim = jhapp_type[0].replace(" ", "")
    group_obj = node_collection.one({'_id': ObjectId(group_id)})
    title = request.POST.get('context_name', '')
    usrid = request.user.id
    # jsmol_gst  = node_collection.one({"_type":"GSystemType","name":"Jsmol" })
    sel_jhapp_gst = node_collection.one({
        "_type": "GSystemType",
        "name": unicode(jhapp_type_trim)
    })

    import zipfile
    from gnowsys_ndf.ndf.views.filehive import write_files
    is_user_gstaff = check_is_gstaff(group_obj._id, request.user)

    fileobj_list = write_files(request, group_id)
    fileobj_id = fileobj_list[0]['_id']
    file_node = node_collection.one({'_id': ObjectId(fileobj_id)})

    if sel_jhapp_gst._id:
        file_node.member_of = [ObjectId(sel_jhapp_gst._id)]

    uploaded_files = request.FILES.getlist('filehive', [])
    zip_path = file_node.if_file.original['relurl']
    zip_split_path = zip_path.split('.')
    un_zip_path = zip_path.split('/')
    file_name = str(uploaded_files[0]).split(".")
    un_zip_split_path = "/data/media/" + un_zip_path[0] + "/" + un_zip_path[
        1] + "/" + un_zip_path[2] + "/"

    with zipfile.ZipFile("/data/media/" + file_node.if_file.original['relurl'],
                         "r") as z:
        z.extractall(un_zip_split_path)

    relurl_path = str("/" + un_zip_path[0] + "/" + un_zip_path[1] + "/" +
                      un_zip_path[2] + "/" + file_name[0] + "/" + "index" +
                      ".html")
    # print "_______________________________",relurl_path
    discussion_enable_at = node_collection.one({
        "_type": "AttributeType",
        "name": "discussion_enable"
    })
    for each_gs_file in fileobj_list:
        #set interaction-settings
        each_gs_file.status = u"PUBLISHED"
        if usrid not in each_gs_file.contributors:
            each_gs_file.contributors.append(usrid)

        group_object = node_collection.one({'_id': ObjectId(group_id)})
        if (group_object.edit_policy == "EDITABLE_MODERATED") and (
                group_object.moderation_level > 0):
            from gnowsys_ndf.ndf.views.moderation import get_moderator_group_set
            # print "\n\n\n\ninside editable moderated block"
            each_gs_file.group_set = get_moderator_group_set(
                each_gs_file.group_set, group_object._id)
            # print "\n\n\npage_node._id",page_node._id
            each_gs_file.status = u'MODERATION'
            # print "\n\n\n page_node.status",page_node.status
        each_gs_file.save()
        create_gattribute(each_gs_file._id, discussion_enable_at, True)
        return_status = create_thread_for_node(request, group_obj._id,
                                               each_gs_file)
    file_node.url = "/data/media/" + file_node.if_file.original['relurl']
    file_node.if_file.original.relurl = relurl_path
    file_node.if_file.mime_type = u"text/html"
    file_node.save()
    return HttpResponseRedirect(
        reverse('file_detail',
                kwargs={
                    "group_id": group_id,
                    '_id': fileobj_id
                }))
Пример #14
0
def module_detail(request, group_id, node_id, title=""):
    '''
    detail of of selected module
    '''
    group_name, group_id = Group.get_group_name_id(group_id)
    print "in module_detail and group id, title", group_id, title
    print "node_id", node_id
    module_obj = Node.get_node_by_id(ObjectId(node_id))
    context_variable = {
        'group_id': group_id,
        'groupid': group_id,
        'node': module_obj,
        'title': title,
        'card': 'ndf/event_card.html',
        'card_url_name': 'groupchange'
    }

    # module_detail_query = {'member_of': gst_base_unit_id,
    #           '_id': {'$nin': module_unit_ids},
    #           'status':'PUBLISHED',
    #             }
    # if not gstaff_access:
    #     module_detail_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'}
    #           ]})

    gstaff_access = check_is_gstaff(group_id, request.user)

    module_detail_query = {
        '_id': {
            '$in': module_obj.collection_set
        },
        'status': 'PUBLISHED'
    }
    '''
    if not gstaff_access:
        module_detail_query.update({'$or': [
        {'$and': [
            {'member_of': gst_base_unit_id},
            {'$or': [
              {'created_by': request.user.id},
              {'group_admin': request.user.id},
              {'author_set': request.user.id},
            ]}
        ]},
        {'member_of': gst_announced_unit_id}
      ]})
    '''
    primary_lang_tuple = get_language_tuple(GSTUDIO_PRIMARY_COURSE_LANGUAGE)
    if title == "courses":

        #   module_detail_query.update({'$or': [
        #   {'$and': [
        #       {'member_of': {'$in': [gst_announced_unit_id, gst_ce_id]}},
        #       {'$or': [
        #         {'created_by': request.user.id},
        #         {'group_admin': request.user.id},
        #         {'author_set': request.user.id},
        #         {
        #          '$and': [
        #              {'group_type': u'PUBLIC'},
        #              {'language': primary_lang_tuple},
        #          ]
        #         },
        #       ]}
        #   ]},
        #   #{'member_of': gst_announced_unit_id }
        # ]})
        #
        # # above can be delete after robust testing of following new query:

        module_detail_query.update({
            'status':
            'PUBLISHED',
            '$or': [{
                'group_admin': request.user.id
            }, {
                'created_by': request.user.id
            }, {
                'author_set': request.user.id
            }, {
                'member_of': gst_announced_unit_id
            }, {
                'language': primary_lang_tuple,
                'group_type': u'PUBLIC',
                'member_of': gst_ce_id
            }]
        })

    if title == "drafts":
        module_detail_query.update({
            '$or': [
                {
                    '$and': [{
                        'member_of': gst_base_unit_id
                    }, {
                        '$or': [
                            {
                                'created_by': request.user.id
                            },
                            {
                                'group_admin': request.user.id
                            },
                            {
                                'author_set': request.user.id
                            },
                        ]
                    }]
                },
            ]
        })

    # units_under_module = Node.get_nodes_by_ids_list(module_obj.collection_set)
    '''
    gstaff_access = check_is_gstaff(group_id, request.user)

    if gstaff_access:
        module_detail_query.update({'member_of': {'$in': [gst_announced_unit_id, gst_base_unit_id]}})
    else:
        module_detail_query.update({'member_of': gst_announced_unit_id})
    '''
    units_under_module = node_collection.find(module_detail_query).sort(
        'last_update', -1)
    context_variable.update({'units_under_module': units_under_module})

    units_sort_list = get_attribute_value(node_id, 'items_sort_list')
    from django.core.cache import cache
    test = cache.get('5945db6e2c4796014abd1784attribute_valueitems_sort_list')
    print "test:", test
    if units_sort_list:
        #print "from attribute:",units_sort_list
        context_variable.update({'units_sort_list': units_sort_list})
    else:
        print "no items_sort_list"
        context_variable.update({'units_sort_list': list(units_under_module)})

    template = 'ndf/module_detail.html'
    print "units of selected module", units_sort_list
    return render_to_response(template,
                              context_variable,
                              context_instance=RequestContext(request))
Пример #15
0
def module_detail(request, group_id, node_id, title=""):
    '''
    detail of of selected module
    '''
    group_name, group_id = Group.get_group_name_id(group_id)

    module_obj = Node.get_node_by_id(node_id)

    # module_detail_query = {'member_of': gst_base_unit_id,
    #           '_id': {'$nin': module_unit_ids},
    #           'status':'PUBLISHED',
    #             }
    # if not gstaff_access:
    #     module_detail_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'}
    #           ]})

    gstaff_access = check_is_gstaff(group_id, request.user)
    module_detail_query = {
        '_id': {
            '$in': module_obj.collection_set
        },
        'status': 'PUBLISHED'
    }
    '''
    if not gstaff_access:
        module_detail_query.update({'$or': [
        {'$and': [
            {'member_of': gst_base_unit_id},
            {'$or': [
              {'created_by': request.user.id},
              {'group_admin': request.user.id},
              {'author_set': request.user.id},
            ]}
        ]},
        {'member_of': gst_announced_unit_id}
      ]})
    '''

    if title == "courses":
        module_detail_query.update({
            '$or': [{
                '$and': [{
                    'member_of': gst_announced_unit_id
                }, {
                    '$or': [
                        {
                            'created_by': request.user.id
                        },
                        {
                            'group_admin': request.user.id
                        },
                        {
                            'author_set': request.user.id
                        },
                    ]
                }]
            }, {
                'member_of': gst_announced_unit_id
            }]
        })

    if title == "drafts":
        print "(((((((((((((((((((((((((("
        module_detail_query.update({
            '$or': [
                {
                    '$and': [{
                        'member_of': gst_base_unit_id
                    }, {
                        '$or': [
                            {
                                'created_by': request.user.id
                            },
                            {
                                'group_admin': request.user.id
                            },
                            {
                                'author_set': request.user.id
                            },
                        ]
                    }]
                },
            ]
        })

    # units_under_module = Node.get_nodes_by_ids_list(module_obj.collection_set)
    '''
    gstaff_access = check_is_gstaff(group_id, request.user)

    if gstaff_access:
        module_detail_query.update({'member_of': {'$in': [gst_announced_unit_id, gst_base_unit_id]}})
    else:
        module_detail_query.update({'member_of': gst_announced_unit_id})
    '''

    units_under_module = node_collection.find(module_detail_query).sort(
        'last_update', -1)
    template = 'ndf/module_detail.html'

    req_context = RequestContext(
        request, {
            'title': title,
            'node': module_obj,
            'units_under_module': units_under_module,
            'group_id': group_id,
            'groupid': group_id,
            'card': 'ndf/event_card.html',
            'card_url_name': 'groupchange'
        })
    return render_to_response(template, req_context)
Пример #16
0
def program_event_list(request, group_id):
    """
    * Renders a list of all 'programs'
    """
    try:
        group_id = ObjectId(group_id)
    except:
        group_name, group_id = get_group_name_id(group_id)
    group_obj = node_collection.one({'_id': ObjectId(group_id)})

    course_coll = None
    enr_ce_coll = []
    list_of_pe = []
    all_pe = []
    pe_gst = node_collection.one({
        '_type': "GSystemType",
        'name': "ProgramEventGroup"
    })

    # program events
    title = "Events"

    pe_coll = node_collection.find({
        'member_of': pe_gst._id
    }).sort('last_update', -1)
    for each_pe in pe_coll:
        list_of_hierarchy = get_prior_node_hierarchy(each_pe._id)
        if list_of_hierarchy:
            pe_obj = list_of_hierarchy[len(list_of_hierarchy) - 1]
        if pe_obj not in list_of_pe and pe_obj._id in group_obj.post_node:
            list_of_pe.append(pe_obj)
    # print "\n\n list_of_pe",list_of_pe
    gstaff_access = False
    if request.user.id:
        gstaff_access = check_is_gstaff(group_id, request.user)
        userid = int(request.user.id)
        for each in list_of_pe:
            if userid in each.author_set:
                if each not in enr_ce_coll:
                    enr_ce_coll.append(each)
            else:
                all_pe.append(each)
    else:
        all_pe = list_of_pe
    if gstaff_access:
        all_pe = enr_ce_coll
    # If request.user is admin, enr_ce_coll is all_pe.
    # As admin is added in author set of all pe
    # enr_ce_coll = node_collection.find({'$in': list_of_pe,'author_set': int(request.user.id)}).sort('last_update', -1)

    # ce_coll = node_collection.find({'member_of': pe_gst._id, 'author_set': {'$ne': int(request.user.id)}})

    return render_to_response("ndf/course.html", {
        'title': title,
        'course_gst': pe_gst,
        'course_coll': list_of_pe,
        'groupid': group_id,
        'group_id': group_id,
        'ce_coll': all_pe,
        'enr_ce_coll': enr_ce_coll,
    },
                              context_instance=RequestContext(request))
Пример #17
0
def explore_basecourses(request,page_no=1):

    title = 'courses'
    # ce_cur = node_collection.find({'member_of': ce_gst._id,
    #                                     '$or': [
    #                                       {'created_by': request.user.id},
    #                                       {'group_admin': request.user.id},
    #                                       {'author_set': request.user.id},
    #                                       {'group_type': 'PUBLIC'}
    #                                       ]}).sort('last_update', -1)
    # ce_page_cur = paginator.Paginator(ce_cur, page_no, GSTUDIO_NO_OF_OBJS_PP)

    # parent_group_name, parent_group_id = Group.get_group_name_id(group_id)
    '''
    ce_cur = node_collection.find({
                                    '_type': 'Group',
                                    # 'group_set': {'$in': [parent_group_id]},
                                    'member_of': {'$in': [gst_base_unit_id]},
                                    '$or':[
                                        {'group_type': u'PUBLIC'},
                                        {
                                            '$and': [
                                                {'access_policy': u"PRIVATE"},
                                                {'created_by': request.user.id}
                                            ]
                                        }
                                    ],
                                    'status': u'PUBLISHED'
                                }).sort('last_update', -1)
    '''
    gstaff_access = check_is_gstaff(group_id,request.user)

    query = {'_type': 'Group', 'status': u'PUBLISHED',
             'member_of': {'$in': [gst_base_unit_id]},
            }

    if gstaff_access:
        query.update({'group_type': u'PRIVATE'})
    else:
        query.update({'group_type': u'PUBLIC'})
        if request.user.is_authenticated():
            query.update({'$and': [{'group_type': u'PRIVATE'},
                                        {'created_by': request.user.id}]})
    ce_cur = node_collection.find(query).sort('last_update', -1)



    ce_page_cur = paginator.Paginator(ce_cur, page_no, GSTUDIO_NO_OF_OBJS_PP)
    # print ce_cur.count()
    title = 'base courses'
    context_variable = {
                        'title': title, 'doc_cur': ce_cur,
                        'group_id': group_id, 'groupid': group_id,
                        'card': 'ndf/card_group.html', 'ce_page_cur':ce_page_cur
                    }


    return render_to_response(
        # "ndf/explore.html", changed as per new Clix UI
        "ndf/explore_2017.html",
        context_variable,
        context_instance=RequestContext(request))
Пример #18
0
def module_detail(request, group_id, node_id,title=""):
    '''
    detail of of selected module
    '''
    group_name, group_id = Group.get_group_name_id(group_id)

    module_obj = Node.get_node_by_id(ObjectId(node_id))
    context_variable = {
                        'group_id': group_id, 'groupid': group_id,
                        'node': module_obj, 'title': title,
                        'card': 'ndf/event_card.html', 'card_url_name': 'groupchange'
                    }

    # module_detail_query = {'member_of': gst_base_unit_id,
    #           '_id': {'$nin': module_unit_ids},
    #           'status':'PUBLISHED',
    #             }
    # if not gstaff_access:
    #     module_detail_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'}
    #           ]})



    gstaff_access = check_is_gstaff(group_id,request.user)

    module_detail_query = {'_id': {'$in': module_obj.collection_set},
    'status':'PUBLISHED'
    }
    
    '''
    if not gstaff_access:
        module_detail_query.update({'$or': [
        {'$and': [
            {'member_of': gst_base_unit_id},
            {'$or': [
              {'created_by': request.user.id},
              {'group_admin': request.user.id},
              {'author_set': request.user.id},
            ]}
        ]},
        {'member_of': gst_announced_unit_id}
      ]})
    '''
    primary_lang_tuple = get_language_tuple(GSTUDIO_PRIMARY_COURSE_LANGUAGE)
    if title == "courses":
        module_detail_query.update({'$or': [
        {'$and': [
            {'member_of': {'$in': [gst_announced_unit_id, gst_ce_id]}},
            {'$or': [
              {'created_by': request.user.id},
              {'group_admin': request.user.id},
              {'author_set': request.user.id},
              {
               '$and': [
                   {'group_type': u'PUBLIC'},
                   {'language': primary_lang_tuple},
               ]
              },
            ]}
        ]},
        #{'member_of': gst_announced_unit_id }
      ]})

    
    if title == "drafts":
        module_detail_query.update({'$or': [
        {'$and': [
            {'member_of': gst_base_unit_id},
            {'$or': [
              {'created_by': request.user.id},
              {'group_admin': request.user.id},
              {'author_set': request.user.id},
            ]}
        ]},
      ]}) 

    # units_under_module = Node.get_nodes_by_ids_list(module_obj.collection_set)
    '''
    gstaff_access = check_is_gstaff(group_id, request.user)

    if gstaff_access:
        module_detail_query.update({'member_of': {'$in': [gst_announced_unit_id, gst_base_unit_id]}})
    else:
        module_detail_query.update({'member_of': gst_announced_unit_id})
    '''
    units_under_module = node_collection.find(module_detail_query).sort('last_update', -1)
    context_variable.update({'units_under_module': units_under_module})

    units_sort_list = get_attribute_value(node_id, 'items_sort_list')

    if units_sort_list:
        context_variable.update({'units_sort_list': units_sort_list})
    else:
        context_variable.update({'units_sort_list': list(units_under_module)})

    template = 'ndf/module_detail.html'

    return render_to_response(
        template,
        context_variable,
        context_instance=RequestContext(request))
Пример #19
0
def explore_basecourses(request, page_no=1):

    title = 'courses'
    # ce_cur = node_collection.find({'member_of': ce_gst._id,
    #                                     '$or': [
    #                                       {'created_by': request.user.id},
    #                                       {'group_admin': request.user.id},
    #                                       {'author_set': request.user.id},
    #                                       {'group_type': 'PUBLIC'}
    #                                       ]}).sort('last_update', -1)
    # ce_page_cur = paginator.Paginator(ce_cur, page_no, GSTUDIO_NO_OF_OBJS_PP)

    # parent_group_name, parent_group_id = Group.get_group_name_id(group_id)
    '''
    ce_cur = node_collection.find({
                                    '_type': 'Group',
                                    # 'group_set': {'$in': [parent_group_id]},
                                    'member_of': {'$in': [gst_base_unit_id]},
                                    '$or':[
                                        {'group_type': u'PUBLIC'},
                                        {
                                            '$and': [
                                                {'access_policy': u"PRIVATE"},
                                                {'created_by': request.user.id}
                                            ]
                                        }
                                    ],
                                    'status': u'PUBLISHED'
                                }).sort('last_update', -1)
    '''
    gstaff_access = check_is_gstaff(group_id, request.user)

    query = {
        '_type': 'Group',
        'status': u'PUBLISHED',
        'member_of': {
            '$in': [gst_base_unit_id]
        },
    }

    if gstaff_access:
        query.update({'group_type': u'PRIVATE'})
    else:
        query.update({'group_type': u'PUBLIC'})
        if request.user.is_authenticated():
            query.update({
                '$and': [{
                    'group_type': u'PRIVATE'
                }, {
                    'created_by': request.user.id
                }]
            })
    ce_cur = node_collection.find(query).sort('last_update', -1)

    ce_page_cur = paginator.Paginator(ce_cur, page_no, GSTUDIO_NO_OF_OBJS_PP)
    # print ce_cur.count()
    title = 'base courses'
    context_variable = {
        'title': title,
        'doc_cur': ce_cur,
        'group_id': group_id,
        'groupid': group_id,
        'card': 'ndf/card_group.html',
        'ce_page_cur': ce_page_cur
    }

    return render_to_response(
        # "ndf/explore.html", changed as per new Clix UI
        "ndf/explore_2017.html",
        context_variable,
        context_instance=RequestContext(request))