コード例 #1
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))
コード例 #2
0
ファイル: views.py プロジェクト: emreozen/FCC-PSAP-DB
def listUser():
    email = session['email']

    dataList = 0
    counter = 0
    adminUser = False

    if ('all' in session['read_access']):
        dataList = FCCDB.UserModel.find()
        counter = FCCDB.UserModel.find().count()
        adminUser = True
    else:
        return error("YOU ARE NOT AUTHORIZED FOR THIS PAGE")

    dataListSorted = dataList.sort('registered', pymongo.ASCENDING)

    if (((int(request.args['page']) - 1) * 10) > int(counter)):
        return page_not_found('500')
    pageSource = paginator.Paginator(dataListSorted, request.args['page'], 10)

    return render_template('listUser.html',
                           dataList=fixCursor(dataListSorted),
                           email=email,
                           pgSource=pageSource,
                           adminUser=adminUser)
コード例 #3
0
ファイル: views.py プロジェクト: emreozen/FCC-PSAP-DB
def list():
    email = session['email']

    dataList = 0
    counter = 0
    adminUser = False

    if ('all' in session['read_access']):
        dataList = FCCDB.PsapModel.find()
        counter = FCCDB.PsapModel.find().count()
        adminUser = True
    else:
        dataList = FCCDB.PsapModel.find(
            {'PSAP ID': {
                '$in': [int(i) for i in session['read_access']]
            }})
        counter = FCCDB.PsapModel.find({
            'PSAP ID': {
                '$in': [int(i) for i in session['read_access']]
            }
        }).count()

    dataListSorted = dataList.sort('PSAP ID', pymongo.ASCENDING)

    if (((int(request.args['page']) - 1) * 10) > int(counter)):
        return page_not_found('500')
    pageSource = paginator.Paginator(dataListSorted, request.args['page'], 10)

    return render_template('list.html',
                           dataList=fixCursor(dataListSorted),
                           email=email,
                           pgSource=pageSource,
                           adminUser=adminUser)
コード例 #4
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))
コード例 #5
0
def my_groups(request, group_id, page_no=1):

    from gnowsys_ndf.settings import GSTUDIO_NO_OF_OBJS_PP
    # if request.user == 'AnonymousUser':
    # raise 404

    try:
        auth = get_group_name_id(group_id, get_obj=True)

    except:
        user_id = eval(group_id)
        auth = node_collection.one({'_type': "Author", 'created_by': user_id})
    usrid = auth.created_by
    current_user = usrid
    if current_user:
        exclued_from_public = ""
        if int(current_user) == int(usrid):
            Access_policy = ["PUBLIC", "PRIVATE"]
        if int(current_user) != int(usrid):
            Access_policy = ["PUBLIC"]
    else:
        Access_policy = ["PUBLIC"]
        exclued_from_public = ObjectId(task_gst._id)

    group_cur = node_collection.find({
        '_type':
        "Group",
        'name': {
            '$nin': ["home", auth.name]
        },
        "access_policy": {
            "$in": Access_policy
        },
        'status':
        u'PUBLISHED',
        '$or': [{
            'group_admin': int(usrid)
        }, {
            'author_set': int(usrid)
        }]
    }).sort('last_update', -1)
    group_page_cur = paginator.Paginator(group_cur, page_no,
                                         GSTUDIO_NO_OF_OBJS_PP)

    auth_id = auth._id
    title = 'My Groups'

    return render_to_response('ndf/my-groups.html', {
        'group_id': group_id,
        'groupid': group_id,
        'node': auth,
        'title': title,
        'group_cur': group_cur,
        'group_page_cur': group_page_cur
    },
                              context_instance=RequestContext(request))
コード例 #6
0
ファイル: views.py プロジェクト: emreozen/FCC-PSAP-DB
def modifyUser():

    dataList = 0
    counter = 0
    adminUser = False

    if ('all' in session['read_access']):
        dataList = FCCDB.UserModel.find()
        counter = FCCDB.UserModel.find().count()
        adminUser = True
    else:
        return error("YOU ARE NOT AUTHORIZED FOR THIS PAGE")

    f = 0
    v1 = 0
    v2 = 0
    userHolder = 0
    if ('email' in request.args):
        modifyNode = FCCDB.UserModel.find_one(
            {'email': unicode(request.args['email'])})
        userHolder = request.args['email']

        if 'read_access' in request.args:
            v1 = modifyNode['read_access']
            v2 = unicode(request.args['read_access'])

            modifyNode['read_access'] = unicode(request.args['read_access'])
            modifyNode.save()
            f = 'PSAP Name'

        if 'write_access' in request.args:
            v1 = modifyNode['write_access']
            v2 = unicode(request.args['write_access'])
            modifyNode['write_access'] = unicode(request.args['write_access'])
            f = 'Write Access'
            modifyNode.save()

    dataList = FCCDB.UserModel.find()
    counter = FCCDB.UserModel.find().count()

    dataListSorted = dataList.sort('PSAP ID', pymongo.ASCENDING)

    if (((int(request.args['page']) - 1) * 10) > int(counter)):
        return page_not_found('500')

    pageSource = paginator.Paginator(dataListSorted, request.args['page'], 10)

    return render_template('modifyUser.html',
                           dataList=fixCursor(dataListSorted),
                           email=session['email'],
                           pgSource=pageSource,
                           cItem=f,
                           v1=v1,
                           v2=v2,
                           psapidNum=userHolder,
                           adminUser=adminUser)
コード例 #7
0
ファイル: views.py プロジェクト: emreozen/FCC-PSAP-DB
def subscribe():

    email = session['email']
    temp = 0
    subsNode = 0
    psapinfo = 0

    if ('psapid' in request.args):
        subsNode = FCCDB.UserModel.find_one({'email': email})
        temp = subsNode
        subsNode.addSub('11')
        subsNode['subscription'].append(unicode('11'))
        subsNode.save()
        psapinfo = unicode(request.args['psapid'])

    dataList = 0
    counter = 0
    adminUser = False

    if ('all' in session['read_access']):
        dataList = FCCDB.PsapModel.find()
        counter = FCCDB.PsapModel.find().count()
        adminUser = True

    else:
        dataList = FCCDB.PsapModel.find(
            {'PSAP ID': {
                '$in': [int(i) for i in session['read_access']]
            }})
        counter = FCCDB.PsapModel.find({
            'PSAP ID': {
                '$in': [int(i) for i in session['read_access']]
            }
        }).count()

    dataListSorted = dataList.sort('PSAP ID', pymongo.ASCENDING)

    if (((int(request.args['page']) - 1) * 10) > int(counter)):
        return page_not_found('500')

    pageSource = paginator.Paginator(dataListSorted, request.args['page'], 10)

    return render_template('subscribe.html',
                           dataList=fixCursor(dataListSorted),
                           email=email,
                           pgSource=pageSource,
                           subscribed=temp,
                           subscription=session['subscription'],
                           subscribedNode=psapinfo,
                           adminUser=adminUser)
コード例 #8
0
def my_performance(request, group_id, page_no=1):

    from gnowsys_ndf.settings import GSTUDIO_NO_OF_OBJS_PP

    if str(request.user) == 'AnonymousUser':
        raise Http404("You don't have an authority for this page!")

    try:
        auth_obj = get_group_name_id(group_id, get_obj=True)
        user_id = auth_obj.created_by

    except:
        user_id = eval(group_id)
        auth_obj = node_collection.one({
            '_type': "Author",
            'created_by': user_id
        })

    auth_id = auth_obj._id
    title = 'my performance'

    # my_modules_cur.rewind()

    my_units = node_collection.find({
        'member_of': {
            '$in': [ce_gst._id, announced_unit_gst._id, gst_group._id]
        },
        'name': {
            '$nin': GSTUDIO_DEFAULT_GROUPS_LIST
        },
        'author_set': request.user.id
    }).sort('last_update', -1)
    group_page_cur = paginator.Paginator(my_units, page_no,
                                         GSTUDIO_NO_OF_OBJS_PP)
    return render_to_response(
        'ndf/lms_dashboard.html',
        {
            'group_id': auth_id,
            'groupid': auth_id,
            'node': auth_obj,
            'title': title,
            # 'my_course_objs': my_course_objs,
            'units_cur': my_units,
            'my_perf_page_cur': group_page_cur
            # 'modules_cur': my_modules_cur
        },
        context_instance=RequestContext(request))
コード例 #9
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))
コード例 #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
ファイル: views.py プロジェクト: emreozen/FCC-PSAP-DB
def deleteUser():

    dataList = 0
    counter = 0
    adminUser = False

    if ('all' in session['read_access']):
        dataList = FCCDB.UserModel.find()
        counter = FCCDB.UserModel.find().count()
        adminUser = True
    else:
        return error("YOU ARE NOT AUTHORIZED FOR THIS PAGE")

    email = session['email']
    temp = 0

    if ('email' in request.args):
        deleteNode = FCCDB.UserModel.find(
            {'email': unicode(request.args['email'])})
        temp = deleteNode[0]
        deleteNode[0].delete()

    else:
        dataList = FCCDB.UserModel.find()
        counter = FCCDB.UserModel.find().count()

    dataListSorted = dataList.sort('PSAP ID', pymongo.ASCENDING)

    if (((int(request.args['page']) - 1) * 10) > int(counter)):
        return page_not_found('500')

    pageSource = paginator.Paginator(dataListSorted, request.args['page'], 10)

    return render_template('deleteUser.html',
                           dataList=fixCursor(dataListSorted),
                           email=email,
                           pgSource=pageSource,
                           deleted=temp,
                           adminUser=adminUser)
コード例 #12
0
def explore_courses(request,page_no=1):
    from gnowsys_ndf.settings import GSTUDIO_NO_OF_OBJS_PP
    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)

    context_variable = {
                        'title': title, 'doc_cur': ce_cur,
                        'group_id': group_id, 'groupid': group_id,
                        'card': 'ndf/event_card.html', 'ce_page_cur':ce_page_cur
                    }

    return render_to_response(
        "ndf/explore.html",
        context_variable,
        context_instance=RequestContext(request))
コード例 #13
0
ファイル: data_review.py プロジェクト: CLIxIndia-Dev/gstudio
def data_review(request, group_id, page_no=1, **kwargs):
    '''
    To get all the information related to every resource object in the group.

    To get processed context_variables into another variable,
    pass <get_paged_resources=True> as last arg.

    e.g:
    context_variables = data_review(request, group_id, page_no, get_paged_resources=True)
    '''

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

    files_obj = node_collection.find({
        'member_of': {
            '$in': [
                ObjectId(file_id._id),
                ObjectId(page_id._id),
                ObjectId(theme_gst_id._id),
                ObjectId(group_gst_id._id)
            ]
        },
        # '_type': 'File', 'fs_file_ids': {'$ne': []},
        'group_set': {
            '$in': [ObjectId(group_id)]
        },
        '$or': [{
            'access_policy': u"PUBLIC"
        }, {
            '$and': [{
                'access_policy': u"PRIVATE"
            }, {
                'created_by': request.user.id
            }]
        }]
        # {'member_of': {'$all': [pandora_video_st._id]}}
    }).sort("created_at", -1)

    # implementing pagination: paginator.Paginator(cursor_obj, <int: page no>, <int: no of obj in each page>)
    # (ref: https://github.com/namlook/mongokit/blob/master/mongokit/paginator.py)
    paged_resources = paginator.Paginator(files_obj, page_no, 10)

    # list to hold resources instances with it's attributes and relations
    files_list = []

    for each_resource in paged_resources.items:
        # each_resource, ver = get_page(request, each_resource)
        each_resource.get_neighbourhood(each_resource.member_of)
        files_list.append(node_collection.collection.GSystem(each_resource))
        # print "==============", each_resource.name, " : ", each_resource.group_set
        # print "\n\n\n========", each_resource.keys()
        # for each, val in each_resource.iteritems():
        # print each, "--", val,"\n"

    # print "files_obj.count: ", files_obj.count()
    files_obj.close()

    context_variables = {
        "group_id": group_id,
        "groupid": group_id,
        "files": files_list,
        "page_info": paged_resources,
        "urlname": "data_review_page",
        "second_arg": "",
        "static_educationalsubject": GSTUDIO_RESOURCES_EDUCATIONAL_SUBJECT,
        # "static_language": EXTRA_LANG_INFO,
        "static_language": GSTUDIO_RESOURCES_LANGUAGES,
        "static_educationaluse": GSTUDIO_RESOURCES_EDUCATIONAL_USE,
        "static_interactivitytype": GSTUDIO_RESOURCES_INTERACTIVITY_TYPE,
        "static_educationalalignment": GSTUDIO_RESOURCES_EDUCATIONAL_ALIGNMENT,
        "static_educationallevel": GSTUDIO_RESOURCES_EDUCATIONAL_LEVEL,
        "static_curricular": GSTUDIO_RESOURCES_CURRICULAR,
        "static_audience": GSTUDIO_RESOURCES_AUDIENCE,
        "static_status": list(STATUS_CHOICES),
        "static_textcomplexity": GSTUDIO_RESOURCES_TEXT_COMPLEXITY
    }

    if kwargs.get('get_paged_resources', False):
        return context_variables

    template_name = "ndf/data_review.html"

    return render_to_response(template_name,
                              context_variables,
                              context_instance=RequestContext(request))
コード例 #14
0
ファイル: data_review.py プロジェクト: CLIxIndia-Dev/gstudio
def get_dr_search_result_dict(request, group_id, search_text=None, page_no=1):

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

    # check if request is from form or from next page
    if request.GET.has_key("search_text"):
        search_text = request.GET.get("search_text", "")

    else:
        search_text = search_text.replace("+", " ")
        get_req = request.GET.copy()
        # adding values to GET req
        get_req.update({"search_text": search_text})
        # overwriting request.GET with newly created QueryDict instance get_req
        request.GET = get_req

    search_reply = json.loads(
        results_search(request, group_id, return_only_dict=True))
    exact_search_res = search_reply["exact"]["name"]
    result_ids_list = [
        ObjectId(each_dict["_id"]) for each_dict in exact_search_res
    ]
    result_cur = node_collection.find({
        "_id": {
            "$in": result_ids_list
        },
        'member_of': {
            '$in': [ObjectId(file_id._id),
                    ObjectId(page_id._id)]
        }
    })

    paged_resources = paginator.Paginator(result_cur, page_no, 10)

    # list to hold resources instances with it's attributes and relations
    files_list = []

    for each_resource in paged_resources.items:
        each_resource, ver = get_page(request, each_resource)
        each_resource.get_neighbourhood(each_resource.member_of)
        files_list.append(node_collection.collection.GSystem(each_resource))

    return render_to_response(
        "ndf/data_review.html",
        {
            "group_id": group_id,
            "groupid": group_id,
            "files": files_list,
            "page_info": paged_resources,
            "urlname": "data_review_search_page",
            "second_arg": search_text,
            "search_text": search_text,
            "static_educationalsubject": GSTUDIO_RESOURCES_EDUCATIONAL_SUBJECT,
            # "static_language": EXTRA_LANG_INFO,
            "static_language": GSTUDIO_RESOURCES_LANGUAGES,
            "static_educationaluse": GSTUDIO_RESOURCES_EDUCATIONAL_USE,
            "static_interactivitytype": GSTUDIO_RESOURCES_INTERACTIVITY_TYPE,
            "static_educationalalignment":
            GSTUDIO_RESOURCES_EDUCATIONAL_ALIGNMENT,
            "static_educationallevel": GSTUDIO_RESOURCES_EDUCATIONAL_LEVEL,
            "static_curricular": GSTUDIO_RESOURCES_CURRICULAR,
            "static_audience": GSTUDIO_RESOURCES_AUDIENCE,
            "static_status": list(STATUS_CHOICES),
            "static_textcomplexity": GSTUDIO_RESOURCES_TEXT_COMPLEXITY
        },
        context_instance=RequestContext(request))
コード例 #15
0
ファイル: imageDashboard.py プロジェクト: mayank1010/gstudio
def imageDashboard(request, group_id, image_id=None, page_no=1):
    from gnowsys_ndf.settings import GSTUDIO_NO_OF_OBJS_PP
    '''
    fetching image acording to group name
    '''
    # 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 image_id is None:
        image_ins = node_collection.find_one({
            '_type': "GSystemType",
            "name": "Image"
        })
        if image_ins:
            image_id = str(image_ins._id)

    # img_col = node_collection.find({'_type': 'File', 'member_of': {'$all': [ObjectId(image_id)]}, 'group_set': ObjectId(group_id)}).sort("last_update", -1)
    files_cur = node_collection.find(
        {
            '_type': {
                '$in': ["GSystem"]
            },
            'member_of': file_gst._id,
            'group_set': {
                '$all': [ObjectId(group_id)]
            },
            'if_file.mime_type': {
                '$regex': 'image'
            }

            # 'created_by': {'$in': gstaff_users},
            # '$or': [
            # {
            # },
            # {
            #     '$or': [
            #             {'access_policy': u"PUBLIC"},
            #             {
            #                 '$and': [
            #                         {'access_policy': u"PRIVATE"},
            #                         {'created_by': request.user.id}
            #                     ]
            #             }
            #         ],
            # }
            # {    'collection_set': {'$exists': "true", '$not': {'$size': 0} }}
            # ]
        },
        {
            'name': 1,
            '_id': 1,
            'fs_file_ids': 1,
            'member_of': 1,
            'mime_type': 1,
            'if_file': 1
        }).sort("last_update", -1)
    # print "file count\n\n\n",files_cur.count()

    image_page_info = paginator.Paginator(files_cur, page_no,
                                          GSTUDIO_NO_OF_OBJS_PP)
    template = "ndf/ImageDashboard.html"
    already_uploaded = request.GET.getlist('var', "")
    variable = RequestContext(
        request, {
            'imageCollection': files_cur,
            'already_uploaded': already_uploaded,
            'groupid': group_id,
            'group_id': group_id,
            'image_page_info': image_page_info
        })
    return render_to_response(template, variable)
コード例 #16
0
ファイル: e-library.py プロジェクト: smitpatwa/gstudio
def resource_list(request, group_id, app_id=None, page_no=1):
    """
	* Renders a list of all 'Resources' available within the database (except eBooks).
	"""

    is_video = request.GET.get('is_video', "")

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

    if app_id is None:
        app_id = str(app._id)

    # # Code for displaying user shelf
    # shelves = []
    # shelf_list = {}
    # auth = node_collection.one({'_type': 'Author', 'name': unicode(request.user.username) })

    # if auth:
    #   has_shelf_RT = node_collection.one({'_type': 'RelationType', 'name': u'has_shelf' })
    #   dbref_has_shelf = has_shelf_RT.get_dbref()
    #   shelf = collection_tr.Triple.find({'_type': 'GRelation', 'subject': ObjectId(auth._id), 'relation_type': dbref_has_shelf })
    #   shelf_list = {}

    #   if shelf:
    # 	for each in shelf:
    # 		shelf_name = node_collection.one({'_id': ObjectId(each.right_subject)})
    # 		shelves.append(shelf_name)

    # 		shelf_list[shelf_name.name] = []
    # 		for ID in shelf_name.collection_set:
    # 		  shelf_item = node_collection.one({'_id': ObjectId(ID) })
    # 		  shelf_list[shelf_name.name].append(shelf_item.name)

    #   else:
    # 	shelves = []
    # # End of user shelf

    # pandoravideoCollection = node_collection.find({'member_of':pandora_video_st._id, 'group_set': ObjectId(group_id) })

    # if e_library_GST._id == ObjectId(app_id):
    title = e_library_GST.name
    file_id = GST_FILE._id
    datavisual = []
    no_of_objs_pp = 24

    # filters = request.POST.get("filters", "")
    # filters = json.loads(filters)
    # filters = get_filter_querydict(filters)

    # print "filters in E-Library : ", filters

    # declaring empty (deliberately to avoid errors), query dict to be pass-on in query
    query_dict = []
    # query_dict = filters

    selfilters = urllib.unquote(request.GET.get('selfilters', ''))
    if selfilters:
        selfilters = json.loads(selfilters)
        query_dict = get_filter_querydict(selfilters)

    query_dict.append({'attribute_set.educationaluse': {'$ne': 'eBooks'}})

    # files = node_collection.find({
    # 								'member_of': ObjectId(GST_FILE._id),
    # 								'_type': 'File',
    # 								'fs_file_ids': {'$ne': []},
    # 								'group_set': ObjectId(group_id),
    # 								'$and': query_dict,
    # 								'$or': [
    # 										{ 'access_policy': u"PUBLIC" },
    # 										{ '$and': [
    # 													{'access_policy': u"PRIVATE"},
    # 													{'created_by': request.user.id}
    # 												]
    # 										}
    # 									]

    # 								}).sort("last_update", -1)

    files = node_collection.find({
        # 'member_of': {'$in': [GST_FILE._id, GST_PAGE._id]},
        'member_of': {
            '$in': [GST_FILE._id]
        },
        # '_type': 'File',
        # 'fs_file_ids': {'$ne': []},
        'group_set': {
            '$all': [ObjectId(group_id)]
        },
        '$and':
        query_dict,
        '$or': [{
            'access_policy': u"PUBLIC"
        }, {
            '$and': [{
                'access_policy': u"PRIVATE"
            }, {
                'created_by': request.user.id
            }]
        }]
    }).sort("last_update", -1)

    # print "files.count : ", files.count()

    # pageCollection=node_collection.find({'member_of':GST_PAGE._id, 'group_set': ObjectId(group_id),
    # 									'$or': [
    # 									{ 'access_policy': u"PUBLIC" },
    # 									{ '$and': [
    # 												{'access_policy': u"PRIVATE"},
    # 												{'created_by': request.user.id}
    # 											]
    # 									}
    # 								],
    # 							'type_of': {'$in': [wiki_page._id]}
    # 							}).sort("last_update", -1)

    educationaluse_stats = {}

    if files:
        eu_list = []  # count
        for each in files:
            eu_list += [
                i.get("educationaluse") for i in each.attribute_set
                if i.has_key("educationaluse")
            ]

        files.rewind()

        if set(eu_list):
            if len(set(eu_list)) > 1:
                educationaluse_stats = dict(
                    (x, eu_list.count(x)) for x in set(eu_list))
            elif len(set(eu_list)) == 1:
                educationaluse_stats = {eu_list[0]: eu_list.count(eu_list[0])}
            educationaluse_stats["all"] = files.count()

        # print educationaluse_stats
        result_paginated_cur = files
        result_pages = paginator.Paginator(result_paginated_cur, page_no,
                                           no_of_objs_pp)

    collection_pages_cur = node_collection.find({
        'member_of': {
            '$in': [GST_FILE._id]
        },
        'group_set': {
            '$all': [ObjectId(group_id)]
        },
        '$and':
        query_dict,
        '$or': [{
            'access_policy': u"PUBLIC"
        }, {
            '$and': [{
                'access_policy': u"PRIVATE"
            }, {
                'created_by': request.user.id
            }]
        }],
        'collection_set': {
            '$exists': "true",
            '$not': {
                '$size': 0
            }
        }
    }).sort("last_update", -1)

    coll_page_count = collection_pages_cur.count(
    ) if collection_pages_cur else 0
    collection_pages = paginator.Paginator(collection_pages_cur, page_no,
                                           no_of_objs_pp)

    datavisual.append({
        "name": "Doc",
        "count": educationaluse_stats.get("Documents", 0)
    })
    datavisual.append({
        "name": "Page",
        "count": educationaluse_stats.get("Pages", 0)
    })
    datavisual.append({
        "name": "Image",
        "count": educationaluse_stats.get("Images", 0)
    })
    datavisual.append({
        "name": "Video",
        "count": educationaluse_stats.get("Videos", 0)
    })
    datavisual.append({
        "name": "Interactives",
        "count": educationaluse_stats.get("Interactives", 0)
    })
    datavisual.append({
        "name": "Audios",
        "count": educationaluse_stats.get("Audios", 0)
    })
    datavisual.append({
        "name": "eBooks",
        "count": educationaluse_stats.get("eBooks", 0)
    })
    if collection_pages_cur:
        datavisual.append({"name": "Collections", "count": coll_page_count})
    datavisual = json.dumps(datavisual)

    return render_to_response(
        "ndf/resource_list.html",
        {
            'title': title,
            'app': e_library_GST,
            'appId': app._id,
            "app_gst": app,
            # 'already_uploaded': already_uploaded,'shelf_list': shelf_list,'shelves': shelves,
            'files': files,
            "detail_urlname": "file_detail",
            'ebook_pages': educationaluse_stats.get("eBooks", 0),
            # 'page_count': pageCollection.count(),
            # 'page_nodes':pageCollection
            'file_pages': result_pages,
            'image_pages': educationaluse_stats.get("Images", 0),
            'interactive_pages': educationaluse_stats.get("Interactives", 0),
            'educationaluse_stats': json.dumps(educationaluse_stats),
            'doc_pages': educationaluse_stats.get("Documents", 0),
            'video_pages': educationaluse_stats.get("Videos", 0),
            'audio_pages': educationaluse_stats.get("Audios", 0),
            'collection_pages': collection_pages,
            'collection': collection_pages_cur,
            'groupid': group_id,
            'group_id': group_id,
            "datavisual": datavisual,
        },
        context_instance=RequestContext(request))
コード例 #17
0
ファイル: e-library.py プロジェクト: smitpatwa/gstudio
def elib_paged_file_objs(request, group_id, filetype, page_no):
    '''
	Method to implement pagination in File and E-Library app.
	'''
    if request.is_ajax() and request.method == "POST":
        group_name, group_id = get_group_name_id(group_id)

        no_of_objs_pp = 24
        result_pages = None

        filters = request.POST.get("filters", "")
        filters = json.loads(filters)
        filters = get_filter_querydict(filters)

        # print "filters in E-Library : ", filters

        # declaring empty (deliberately to avoid errors), query dict to be pass-on in query
        # query_dict = [{}]
        query_dict = filters

        selfilters = urllib.unquote(request.GET.get('selfilters', ''))
        if selfilters:
            selfilters = json.loads(selfilters)
            query_dict = get_filter_querydict(selfilters)

        query_dict.append({'attribute_set.educationaluse': {'$ne': u'eBooks'}})

        detail_urlname = "file_detail"
        if filetype != "all":
            # if filetype == "Pages":
            # 	detail_urlname = "page_details"
            # 	result_cur = node_collection.find({'member_of': GST_PAGE._id,
            #                                  '_type': 'GSystem',
            #                                  'group_set': {'$all': [ObjectId(group_id)]},
            #                                  '$or': [
            #                                      {'access_policy': u"PUBLIC"},
            #                                      {'$and': [
            #                                          {'access_policy': u"PRIVATE"},
            #                                          {'created_by': request.user.id}
            #                                      ]
            #                                   }
            #                                  ]
            #                              }).sort("last_update", -1)

            # 	result_paginated_cur = result_cur
            # 	result_pages = paginator.Paginator(result_paginated_cur, page_no, no_of_objs_pp)

            # elif filetype == "Collections":
            if filetype == "Collections":
                pass
                # detail_urlname = "page_details"
                # result_cur = node_collection.find({
                # 					'member_of': {'$in': [GST_FILE._id, GST_PAGE._id]},
                #                                 'group_set': {'$all': [ObjectId(group_id)]},
                #                                 '$or': [
                #                                     {'access_policy': u"PUBLIC"},
                #                                     {'$and': [
                #                                         {'access_policy': u"PRIVATE"},
                #                                         {'created_by': request.user.id}
                #                                     ]
                #                                  }
                #                                 ],
                #                                 'collection_set': {'$exists': "true", '$not': {'$size': 0} }
                #                             }).sort("last_update", -1)
                # # print "=====================", result_cur.count()

                # result_paginated_cur = result_cur
                # result_pages = paginator.Paginator(result_paginated_cur, page_no, no_of_objs_pp)
                # # print "=====================", result_pages

                # query_dict.append({ 'collection_set': {'$exists': "true", '$not': {'$size': 0} } })
            else:
                query_dict.append({"attribute_set.educationaluse": filetype})

        # print filters
        # if filters:
        # 	temp_list = []
        # 	for each in filters:
        # 		filter_grp = each["or"]
        # 		for each_filter in filter_grp:
        # 			temp_dict = {}
        # 			each_filter["selFieldText"] = cast_to_data_type(each_filter["selFieldText"], each_filter["selFieldPrimaryType"])

        # 			if each_filter["selFieldPrimaryType"] == unicode("list"):
        # 				each_filter["selFieldText"] = {"$in": each_filter["selFieldText"]}

        # 			if each_filter["selFieldGstudioType"] == "attribute":

        # 				temp_dict["attribute_set." + each_filter["selFieldValue"]] = each_filter["selFieldText"]
        # 				temp_list.append(temp_dict)
        # 				# print "temp_list : ", temp_list
        # 			elif each_filter["selFieldGstudioType"] == "field":
        # 				temp_dict[each_filter["selFieldValue"]] = each_filter["selFieldText"]
        # 				temp_list.append(temp_dict)

        # 		if temp_list:
        # 			query_dict.append({ "$or": temp_list})

        # print "query_dict : ", query_dict

        files = node_collection.find({
            'member_of': {
                '$in': [GST_FILE._id]
            },
            # 'member_of': {'$in': [GST_FILE._id, GST_PAGE._id]},
            # '_type': 'File',
            # 'fs_file_ids': {'$ne': []},
            'group_set': {
                '$all': [ObjectId(group_id)]
            },
            '$and':
            query_dict,
            '$or': [{
                'access_policy': u"PUBLIC"
            }, {
                '$and': [{
                    'access_policy': u"PRIVATE"
                }, {
                    'created_by': request.user.id
                }]
            }]
        }).sort("last_update", -1)

        educationaluse_stats = {}
        # print "files_count: ", files.count()

        # if filetype == "Pages":
        # 	filter_result = "True" if (result_cur.count() > 0) else "False"
        # else:
        if files:  # and not result_pages:
            # print "=======", educationaluse_stats

            eu_list = []  # count
            collection_set_count = 0
            for each in files:
                eu_list += [
                    i.get("educationaluse") for i in each.attribute_set
                    if i.has_key("educationaluse")
                ]
                collection_set_count += 1 if each.collection_set else 0

            files.rewind()

            if set(eu_list):
                if len(set(eu_list)) > 1:
                    educationaluse_stats = dict(
                        (x, eu_list.count(x)) for x in set(eu_list))
                elif len(set(eu_list)) == 1:
                    educationaluse_stats = {
                        eu_list[0]: eu_list.count(eu_list[0])
                    }
                educationaluse_stats["all"] = files.count()
                educationaluse_stats["Collections"] = collection_set_count

            result_paginated_cur = files
            result_pages = paginator.Paginator(result_paginated_cur, page_no,
                                               no_of_objs_pp)

        filter_result = "True" if (files.count() > 0) else "False"

        if filetype == "Collections":
            detail_urlname = "page_details"
            result_cur = node_collection.find({
                'member_of': {
                    '$in': [GST_FILE._id, GST_PAGE._id]
                },
                'group_set': {
                    '$all': [ObjectId(group_id)]
                },
                '$and':
                query_dict,
                '$or': [{
                    'access_policy': u"PUBLIC"
                }, {
                    '$and': [{
                        'access_policy': u"PRIVATE"
                    }, {
                        'created_by': request.user.id
                    }]
                }],
                'collection_set': {
                    '$exists': "true",
                    '$not': {
                        '$size': 0
                    }
                }
            }).sort("last_update", -1)
            # print "=====================", result_cur.count()

            result_paginated_cur = result_cur
            result_pages = paginator.Paginator(result_paginated_cur, page_no,
                                               no_of_objs_pp)

        # if filetype == "all":
        #     if files:
        #         result_paginated_cur = files
        #         result_pages = paginator.Paginator(result_paginated_cur, page_no, no_of_objs_pp)

        # # else:
        # elif filetype == "Documents":
        #     d_Collection = node_collection.find({'_type': "GAttribute", 'attribute_type.$id': gattr._id,"subject": {'$in': coll} ,"object_value": "Documents"}).sort("last_update", -1)

        #     doc = []
        #     for e in d_Collection:
        #         doc.append(e.subject)

        #     result_paginated_cur = node_collection.find({ '$or':[{'_id': {'$in': doc}},

        #                 {'member_of': {'$nin': [ObjectId(GST_IMAGE._id), ObjectId(GST_VIDEO._id),ObjectId(pandora_video_st._id)]},
        #                                     '_type': 'File', 'group_set': {'$all': [ObjectId(group_id)]},
        #                                     # 'mime_type': {'$not': re.compile("^audio.*")},
        #                                     '$or': [
        #                                           {'access_policy': u"PUBLIC"},
        #                                             {'$and': [{'access_policy': u"PRIVATE"}, {'created_by': request.user.id}]}
        #                                            ]
        #                                     }]

        #         }).sort("last_update", -1)

        #     result_pages = paginator.Paginator(result_paginated_cur, page_no, no_of_objs_pp)

        # print "educationaluse_stats: ", educationaluse_stats

        return render_to_response(
            "ndf/file_list_tab.html", {
                "filter_result": filter_result,
                "group_id": group_id,
                "group_name_tag": group_id,
                "groupid": group_id,
                'title': "E-Library",
                "educationaluse_stats": json.dumps(educationaluse_stats),
                "resource_type": result_paginated_cur,
                "detail_urlname": detail_urlname,
                "filetype": filetype,
                "res_type_name": "",
                "page_info": result_pages
            },
            context_instance=RequestContext(request))
コード例 #18
0
ファイル: explore.py プロジェクト: mrunal4/gstudio
def explore_courses(request, page_no=1):

    # this will be announced tab
    title = 'courses'
    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)

    primary_lang_tuple = get_language_tuple(GSTUDIO_PRIMARY_COURSE_LANGUAGE)
    '''
    katkamrachana - 14June2017
    About following query:

        [A]. Finding CourseEventGroup instances(First $and in $or):
                    Find CourseEventGroup instances, that are published.
                    Get courses that are linked to the request.user
                    Also find courses, that are "PUBLIC AND LANGUAGE falls under
                    GSTUDIO_PRIMARY_COURSE_LANGUAGE"
                    Hence, Apply language constraint. Introduced to display concerned
                    course for i2c(in 3 languages)
        [B]. Finding announced_unit instances(Second $and in $or):
                    Find announced_unit instances, that are published.
                    Get courses that are linked to the request.user
                    Also find courses, that are "PUBLIC"
                    No check on language
        [C]. Check using _type field in case conditions A and B fail, only Groups are
                 to be listed and not GSystems
        [D]. Check using name field in case conditions A and B fail,
                executing condition C then do not display factory Groups.

    '''
    base_unit_cur = node_collection.find({
        '$or': [{
            '$and': [{
                'member_of': ce_gst._id
            }, {
                'status': 'PUBLISHED'
            }, {
                '$or': [{
                    'created_by': request.user.id
                }, {
                    'group_admin': request.user.id
                }, {
                    'author_set': request.user.id
                }, {
                    '$and': [
                        {
                            'group_type': 'PUBLIC'
                        },
                        {
                            'language': primary_lang_tuple
                        },
                    ]
                }]
            }]
        }, {
            '$and': [{
                'member_of': announced_unit_gst._id
            }, {
                'status': 'PUBLISHED'
            }, {
                '$or': [{
                    'created_by': request.user.id
                }, {
                    'group_admin': request.user.id
                }, {
                    'author_set': request.user.id
                }, {
                    'group_type': 'PUBLIC'
                }]
            }]
        }],
        '_type':
        'Group',
        'name': {
            '$nin': GSTUDIO_DEFAULT_GROUPS_LIST
        },
        '_id': {
            '$nin': module_unit_ids
        },
    }).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))
コード例 #19
0
ファイル: explore.py プロジェクト: siddhudhangar/gstudio
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))
コード例 #20
0
ファイル: views.py プロジェクト: emreozen/FCC-PSAP-DB
def modify():
    f = 0
    v1 = 0
    v2 = 0
    psapHolder = 0
    if ('psapid' in request.args):
        # modifyNode = FCCDB.PsapModel.find({'PSAP ID':int(request.args['psapid'])})
        modifyNode = FCCDB.PsapModel.find_one(
            {'PSAP ID': int(request.args['psapid'])})
        psapHolder = request.args['psapid']
        # temp = modifyNode[0]

        if 'pName' in request.args:
            v1 = modifyNode['PSAP Name']
            v2 = unicode(request.args['pName'])
            modifyNode['PSAP Name'] = unicode(request.args['pName'])
            modifyNode.save()
            f = 'PSAP Name'
        if 'state' in request.args:
            v1 = modifyNode['State']
            v2 = unicode(request.args['state'])
            modifyNode['State'] = unicode(request.args['state'])
            f = 'State'
            modifyNode.save()
        if 'county' in request.args:
            v1 = modifyNode['County']
            v2 = unicode(request.args['county'])
            modifyNode['County'] = request.args['county']
            f = 'County'
            modifyNode.save()
        if 'city' in request.args:
            v1 = modifyNode['City']
            v2 = unicode(request.args['city'])
            modifyNode['City'] = request.args['city']
            f = 'City'
            modifyNode.save()
        if 'toc' in request.args:
            v1 = modifyNode['Type of Change']
            v2 = unicode(request.args['toc'])
            modifyNode['Type of Change'] = request.args['toc']
            f = 'Type of Change'
            modifyNode.save()
        if 'comments' in request.args:
            v1 = modifyNode['Comments']
            v2 = unicode(request.args['comments'])
            modifyNode['Comments'] = request.args['comments']
            f = 'Comments'
            modifyNode.save()
        if 'text2911' in request.args:
            v1 = modifyNode['Text to 911']
            v2 = unicode(request.args['text2911'])
            modifyNode['Text to 911'] = request.args['text2911']
            f = 'Text to 911'
            modifyNode.save()
        if 'psapcontact' in request.args:
            v1 = modifyNode['PSAP Contact']
            v2 = unicode(request.args['psapcontact'])
            modifyNode['PSAP Contact'] = request.args['psapcontact']
            f = 'PSAP Contact'
            modifyNode.save()
    dataList = 0
    counter = 0
    adminUser = False

    if ('all' in session['write_access']):
        dataList = FCCDB.PsapModel.find()
        counter = FCCDB.PsapModel.find().count()
        adminUser = True
    else:
        dataList = FCCDB.PsapModel.find(
            {'PSAP ID': {
                '$in': [int(i) for i in session['write_access']]
            }})
        counter = FCCDB.PsapModel.find({
            'PSAP ID': {
                '$in': [int(i) for i in session['write_access']]
            }
        }).count()

    dataListSorted = dataList.sort('PSAP ID', pymongo.ASCENDING)

    if (((int(request.args['page']) - 1) * 10) > int(counter)):
        return page_not_found('500')

    pageSource = paginator.Paginator(dataListSorted, request.args['page'], 10)

    return render_template('modify.html',
                           dataList=fixCursor(dataListSorted),
                           email=session['email'],
                           pgSource=pageSource,
                           cItem=f,
                           v1=v1,
                           v2=v2,
                           psapidNum=psapHolder,
                           adminUser=adminUser)
コード例 #21
0
def page(request, group_id, app_id=None, page_no=1):
    """Renders a list of all 'Page-type-GSystems' available within the database.
    """
    try:
        group_id = ObjectId(group_id)
    except:
        group_name, group_id = get_group_name_id(group_id)

    if app_id is None:
        app_ins = node_collection.find_one({
            '_type': "GSystemType",
            "name": "Page"
        })
        if app_ins:
            app_id = str(app_ins._id)
    from gnowsys_ndf.settings import GSTUDIO_NO_OF_OBJS_PP
    content = []
    version = []
    con = []
    group_object = node_collection.one({'_id': ObjectId(group_id)})

    # Code for user shelf
    shelves = []
    shelf_list = {}
    auth = node_collection.one({
        '_type': 'Author',
        'name': unicode(request.user.username)
    })

    if request.method == "POST":
        title = gst_page.name
        search_field = request.POST['search_field']
        page_nodes = node_collection.find({
            'member_of': {
                '$all': [ObjectId(app_id)]
            },
            '$or': [{
                '$and': [{
                    'name': {
                        '$regex': search_field,
                        '$options': 'i'
                    }
                }, {
                    '$or': [{
                        'access_policy': u"PUBLIC"
                    }, {
                        '$and': [{
                            'access_policy': u"PRIVATE"
                        }, {
                            'created_by': request.user.id
                        }]
                    }]
                }]
            }, {
                '$and': [{
                    'tags': {
                        '$regex': search_field,
                        '$options': 'i'
                    }
                }, {
                    '$or': [{
                        'access_policy': u"PUBLIC"
                    }, {
                        '$and': [{
                            'access_policy': u"PRIVATE"
                        }, {
                            'created_by': request.user.id
                        }]
                    }]
                }]
            }],
            'group_set': {
                '$all': [ObjectId(group_id)]
            },
            'status': {
                '$nin': ['HIDDEN']
            }
        }).sort('last_update', -1)
        paginator_pages = paginator.Paginator(page_nodes, page_no,
                                              GSTUDIO_NO_OF_OBJS_PP)
        return render_to_response("ndf/page_list.html", {
            'title': title,
            'appId': app._id,
            'shelf_list': shelf_list,
            'shelves': shelves,
            'searching': True,
            'query': search_field,
            'page_nodes': page_nodes,
            'groupid': group_id,
            'group_id': group_id,
            'page_info': paginator_pages
        },
                                  context_instance=RequestContext(request))

    elif gst_page._id == ObjectId(app_id):
        group_type = node_collection.one({'_id': ObjectId(group_id)})
        group_info = group_type_info(group_id)
        node = node_collection.find({'member_of': ObjectId(app_id)})
        title = gst_page.name
        """
          Below query returns only those documents:
          (a) which are pages,
          (b) which belongs to given group,
          (c) which has status either as DRAFT or PUBLISHED, and
          (d) which has access_policy either as PUBLIC or if PRIVATE then it's created_by must be the logged-in user
        """
        page_nodes = node_collection.find({
            'member_of': {
                '$all': [ObjectId(app_id)]
            },
            'group_set': {
                '$all': [ObjectId(group_id)]
            },
            '$or': [{
                'access_policy': u"PUBLIC"
            }, {
                '$and': [{
                    'access_policy': u"PRIVATE"
                }, {
                    'created_by': request.user.id
                }]
            }],
            'status': {
                '$nin': ['HIDDEN']
            }
        }).sort('last_update', -1)
        paginator_pages = paginator.Paginator(page_nodes, page_no,
                                              GSTUDIO_NO_OF_OBJS_PP)
        return render_to_response("ndf/page_list.html", {
            'title': title,
            'appId': app._id,
            'shelf_list': shelf_list,
            'shelves': shelves,
            'page_nodes': page_nodes,
            'groupid': group_id,
            'group_id': group_id,
            'page_info': paginator_pages
        },
                                  context_instance=RequestContext(request))

    else:
        # Page Single instance view
        page_node = node_collection.one({"_id": ObjectId(app_id)})
        thread_node = None
        allow_to_comment = None
        annotations = None
        if page_node:
            annotations = json.dumps(page_node.annotations)
            page_node.get_neighbourhood(page_node.member_of)

            thread_node, allow_to_comment = node_thread_access(
                group_id, page_node)
        return render_to_response('ndf/page_details.html', {
            'node': page_node,
            'node_has_thread': thread_node,
            'appId': app._id,
            'group_id': group_id,
            'shelf_list': shelf_list,
            'allow_to_comment': allow_to_comment,
            'annotations': annotations,
            'shelves': shelves,
            'groupid': group_id
        },
                                  context_instance=RequestContext(request))
コード例 #22
0
ファイル: e-book.py プロジェクト: DurgaSwetha/ClixOER
def ebook_listing(request, group_id, page_no=1):
    from gnowsys_ndf.settings import GSTUDIO_NO_OF_OBJS_PP
    import urllib

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

    selfilters = urllib.unquote(request.GET.get('selfilters', ''))
    # print "===\n", selfilters, "===\n"
    query_dict = [{}]
    if selfilters:
        selfilters = json.loads(selfilters)
        query_dict = get_filter_querydict(selfilters)
    # else:
    # 	query_dict.append({'collection_set': {'$exists': "true", '$not': {'$size': 0} }})

    # print "\n----\n", query_dict
    # all_ebooks = node_collection.find({
    # 		# "_type": "File",
    # 		# "attribute_set.educationaluse": "eBooks",
    # 		'$and': query_dict,
    # 		'collection_set': {'$exists': "true", '$not': {'$size': 0} }
    # 	})

    all_ebooks = node_collection.find({
        'member_of': {
            '$in': [GST_FILE._id, GST_PAGE._id]
        },
        # '_type': 'File',
        # 'fs_file_ids': {'$ne': []},
        'group_set': {
            '$in': [ObjectId(group_id)]
        },
        'attribute_set.educationaluse':
        'eBooks',
        '$and':
        query_dict,
        '$or': [{
            'access_policy': u"PUBLIC"
        }, {
            '$and': [{
                'access_policy': u"PRIVATE"
            }, {
                'created_by': request.user.id
            }]
        }],
        'collection_set': {
            '$exists': "true",
            '$not': {
                '$size': 0
            }
        }
    }).sort("last_update", -1)

    ebooks_page_info = paginator.Paginator(all_ebooks, page_no,
                                           GSTUDIO_NO_OF_OBJS_PP)

    return render_to_response("ndf/ebook.html", {
        "all_ebooks": all_ebooks,
        "ebook_gst": ebook_gst,
        "page_info": ebooks_page_info,
        "title": "eBooks",
        "group_id": group_id,
        "groupid": group_id
    },
                              context_instance=RequestContext(request))
コード例 #23
0
def my_desk(request, group_id, page_no=1):
    if str(request.user) == 'AnonymousUser':
        raise Http404("You don't have an authority for this page!")

    try:
        auth_obj = get_group_name_id(group_id, get_obj=True)
        user_id = auth_obj.created_by

    except:
        user_id = eval(group_id)
        auth_obj = node_collection.one({
            '_type': "Author",
            'created_by': user_id
        })

    auth_id = auth_obj._id
    title = 'my desk'
    from gnowsys_ndf.settings import GSTUDIO_NO_OF_OBJS_PP

    # modules_cur = node_collection.find({'member_of': gst_module_id  }).sort('last_update', -1)

    # my_course_objs = get_user_course_groups(user_id)
    # module_unit_ids = [val for each_module in modules_cur for val in each_module.collection_set ]

    # modules_cur.rewind()
    # print my_course_objs
    # base_unit_cur = node_collection.find({'member_of': {'$in': [ce_gst._id, announced_unit_gst._id]},
    #                                       'author_set': request.user.id,
    #                                     }).sort('last_update', -1)
    # my_list_unit = []
    # for each in base_unit_cur:
    #     my_list_unit.append(each._id)

    # base_unit_cur.rewind()
    # my_modules_cur = node_collection.find({'member_of': gst_module_id ,'collection_set':{'$in':my_list_unit } }).sort('last_update', -1)

    # my_modules = []
    # for each in my_modules_cur:
    #     my_modules.append(each._id)

    my_units = node_collection.find({
        'member_of': {
            '$in': [ce_gst._id, announced_unit_gst._id, gst_group._id]
        },
        'name': {
            '$nin': GSTUDIO_DEFAULT_GROUPS_LIST
        },
        'author_set': request.user.id
    }).sort('last_update', -1)

    my_units_page_cur = paginator.Paginator(my_units, page_no,
                                            GSTUDIO_NO_OF_OBJS_PP)
    # my_modules_cur.rewind()
    return render_to_response(
        'ndf/lms_dashboard.html',
        {
            'group_id': auth_id,
            'groupid': auth_id,
            'node': auth_obj,
            'title': title,
            # 'my_course_objs': my_course_objs,
            'units_cur': my_units,
            'my_units_page_cur': my_units_page_cur
            # 'modules_cur': my_modules_cur
        },
        context_instance=RequestContext(request))