summaryrefslogtreecommitdiff
path: root/gnowsys-ndf/gnowsys_ndf/ndf/views/course.py
diff options
context:
space:
mode:
Diffstat (limited to 'gnowsys-ndf/gnowsys_ndf/ndf/views/course.py')
-rw-r--r--gnowsys-ndf/gnowsys_ndf/ndf/views/course.py261
1 files changed, 158 insertions, 103 deletions
diff --git a/gnowsys-ndf/gnowsys_ndf/ndf/views/course.py b/gnowsys-ndf/gnowsys_ndf/ndf/views/course.py
index 5819e5e..58083d3 100644
--- a/gnowsys-ndf/gnowsys_ndf/ndf/views/course.py
+++ b/gnowsys-ndf/gnowsys_ndf/ndf/views/course.py
@@ -15,15 +15,15 @@ from django.core.urlresolvers import reverse
from django.contrib.auth.models import User
from django.contrib.auth.decorators import login_required
from django.contrib.sites.models import Site
-
try:
- from bson import ObjectId
+ from bson import ObjectId
except ImportError: # old pymongo
- from pymongo.objectid import ObjectId
+ from pymongo.objectid import ObjectId
''' -- imports from application folders/files -- '''
from gnowsys_ndf.settings import GAPPS, MEDIA_ROOT, GSTUDIO_TASK_TYPES
from gnowsys_ndf.ndf.models import NodeJSONEncoder
+from gnowsys_ndf.local_settings import GSTUDIO_SITE_NAME
from gnowsys_ndf.ndf.models import Node, AttributeType, RelationType
from gnowsys_ndf.ndf.models import node_collection, triple_collection
from gnowsys_ndf.ndf.views.file import save_file
@@ -32,8 +32,11 @@ from gnowsys_ndf.ndf.views.methods import get_node_common_fields, parse_template
from gnowsys_ndf.ndf.views.notify import set_notif_val
from gnowsys_ndf.ndf.views.methods import get_property_order_with_value
from gnowsys_ndf.ndf.views.methods import create_gattribute, create_grelation, create_task
+from gnowsys_ndf.notification import models as notification
+
+GST_COURSE = node_collection.one({'_type': "GSystemType", 'name': "Course"})
+GST_ACOURSE = node_collection.one({'_type': "GSystemType", 'name': "Announced Course"})
-GST_COURSE = node_collection.one({'_type': "GSystemType", 'name': GAPPS[7]})
app = GST_COURSE
@@ -45,80 +48,74 @@ def course(request, group_id, course_id=None):
"""
ins_objectid = ObjectId()
if ins_objectid.is_valid(group_id) is False:
- group_ins = node_collection.find_one({'_type': "Group", "name": group_id})
- auth = node_collection.one({'_type': 'Author', 'name': unicode(request.user.username) })
- if group_ins:
- group_id = str(group_ins._id)
- else:
+ group_ins = node_collection.find_one({'_type': "Group", "name": group_id})
auth = node_collection.one({'_type': 'Author', 'name': unicode(request.user.username) })
- if auth:
- group_id = str(auth._id)
+ 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
-
+ app_id = None
+ app_id = app._id
+ course_coll = None
+ all_course_coll = None
+ ann_course_coll = None
+ app_set_id = None
if course_id is None:
- course_ins = node_collection.find_one({'_type': "GSystemType", "name": "Course"})
- if course_ins:
- course_id = str(course_ins._id)
+ course_ins = node_collection.find_one({'_type': "GSystemType", "name": "Course"})
+ if course_ins:
+ course_id = str(course_ins._id)
- if request.method == "POST":
- # Course search view
- title = GST_COURSE.name
-
- search_field = request.POST['search_field']
- course_coll = node_collection.find({'member_of': {'$all': [ObjectId(GST_COURSE._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)]}
- }).sort('last_update', -1)
-
- # course_nodes_count = course_coll.count()
-
- return render_to_response("ndf/course.html",
- {'title': title,
- 'appId': app._id,
- 'searching': True, 'query': search_field,
- 'course_coll': course_coll, 'groupid': group_id, 'group_id':group_id
- },
- context_instance=RequestContext(request)
- )
+ app_set = node_collection.one({'_type': "GSystemType", 'name': "Announced Course"})
+ app_set_id = app_set._id
- else:
- # Course list view
- title = GST_COURSE.name
- course_coll = node_collection.find({'member_of': {'$all': [ObjectId(course_id)]},
- 'group_set': {'$all': [ObjectId(group_id)]},
- '$or': [
- {'access_policy': u"PUBLIC"},
- {'$and': [
- {'access_policy': u"PRIVATE"},
- {'created_by': request.user.id}
- ]
- }
- ]
- })
- template = "ndf/course.html"
- variable = RequestContext(request, {'title': title, 'course_nodes_count': course_coll.count(), 'course_coll': course_coll, 'groupid':group_id, 'appId':app._id, 'group_id':group_id})
- return render_to_response(template, variable)
+ # Course search view
+ title = GST_COURSE.name
+ # course_coll = node_collection.find({'member_of': {'$all': [ObjectId(GST_COURSE._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)]}
+ # }).sort('last_update', -1)
+
+ course_coll = node_collection.find({'member_of': GST_COURSE._id})
+
+
+ all_course_coll = node_collection.find({'member_of': {'$in': [GST_COURSE._id,GST_ACOURSE._id]}})
+
+ ann_course_coll = node_collection.find({'member_of': GST_ACOURSE._id})
+ return render_to_response("ndf/course.html",
+ {'title': title,
+ 'app_id': app_id,
+ 'app_set_id': app_set_id,
+ 'searching': True, 'course_coll': course_coll,
+ 'groupid': group_id, 'group_id': group_id,
+ 'all_course_coll': all_course_coll,
+ 'ann_course_coll': ann_course_coll
+ },
+ context_instance=RequestContext(request)
+ )
@login_required
@get_execution_time
@@ -137,10 +134,11 @@ def create_edit(request, group_id, node_id=None):
group_id = str(auth._id)
else:
pass
+ at_course_type = node_collection.one({'_type': 'AttributeType', 'name': 'nussd_course_type'})
context_variables = {'title': GST_COURSE.name,
- 'group_id': group_id,
- 'groupid': group_id
- }
+ 'group_id': group_id,
+ 'groupid': group_id
+ }
if node_id:
course_node = node_collection.one({'_type': u'GSystem', '_id': ObjectId(node_id)})
else:
@@ -155,6 +153,7 @@ def create_edit(request, group_id, node_id=None):
if request.method == "POST":
# get_node_common_fields(request, course_node, group_id, GST_COURSE)
course_node.save(is_changed=get_node_common_fields(request, course_node, group_id, GST_COURSE))
+ create_gattribute(course_node._id, at_course_type, u"General")
return HttpResponseRedirect(reverse('course', kwargs={'group_id': group_id}))
else:
@@ -162,7 +161,7 @@ def create_edit(request, group_id, node_id=None):
context_variables['node'] = course_node
context_variables['groupid'] = group_id
context_variables['group_id'] = group_id
- context_variables['appId'] = app._id
+ context_variables['app_id'] = app._id
context_variables['nodes_list'] = json.dumps(nodes_list)
return render_to_response("ndf/course_create_edit.html",
context_variables,
@@ -189,17 +188,31 @@ def course_detail(request, group_id, _id):
title = GST_COURSE.name
course_node = node_collection.one({"_id": ObjectId(_id)})
+
if course_node.collection_set:
course_structure_exists = True
- return render_to_response("ndf/course_detail.html",
- {'node': course_node,
- 'groupid': group_id,
- 'group_id': group_id,
- 'appId': app._id,
- 'title':title,
- 'course_structure_exists': course_structure_exists
- },
+ gs_name = course_node.member_of_names_list[0]
+ context_variables = {'groupid': group_id,
+ 'group_id': group_id,
+ 'app_id': app._id,
+ 'title': title,
+ 'node': course_node
+ }
+ if gs_name == "Course":
+ context_variables["course_structure_exists"] = course_structure_exists
+ else:
+ if course_node.relation_set:
+ for rel in course_node.relation_set:
+ if "announced_for" in rel:
+ cnode = node_collection.one({'_id':ObjectId(rel["announced_for"][0])})
+ context_variables["cnode"] = cnode
+ break
+
+ template = "ndf/" + gs_name.lower().replace(' ','_') +"_detail.html"
+
+ return render_to_response(template,
+ context_variables,
context_instance=RequestContext(request)
)
@@ -210,8 +223,8 @@ def course_create_edit(request, group_id, app_id, app_set_id=None, app_set_insta
"""
Creates/Modifies document of given sub-types of Course(s).
"""
-
auth = None
+ tiss_site = False
if ObjectId.is_valid(group_id) is False:
group_ins = node_collection.one({'_type': "Group", "name": group_id})
auth = node_collection.one({
@@ -229,6 +242,9 @@ def course_create_edit(request, group_id, app_id, app_set_id=None, app_set_insta
else:
pass
+ if GSTUDIO_SITE_NAME is "TISS":
+ tiss_site = True
+
app = None
if app_id is None:
app = node_collection.one({'_type': "GSystemType", 'name': app_name})
@@ -236,8 +252,6 @@ def course_create_edit(request, group_id, app_id, app_set_id=None, app_set_insta
app_id = str(app._id)
else:
app = node_collection.one({'_id': ObjectId(app_id)})
-
- app_name = app.name
# app_set = ""
app_collection_set = []
title = ""
@@ -416,18 +430,25 @@ def course_create_edit(request, group_id, app_id, app_set_id=None, app_set_insta
course_gs = ac_nc_code[0]
nc_id = ac_nc_code[1]
nc_course_code = ac_nc_code[2]
-
if not course_gs:
# Create new Announced Course GSystem
course_gs = node_collection.collection.GSystem()
course_gs.member_of.append(course_gst._id)
- # Prepare name for Announced Course GSystem
- c_name = unicode(
- nc_course_code + "_" + college_enrollment_code + "_"
- + start_time.strftime("%b_%Y") + "-"
- + end_time.strftime("%b_%Y")
- )
+ if tiss_site:
+ # Prepare name for Announced Course GSystem
+ c_name = unicode(
+ nc_course_code + "_" + college_enrollment_code + "_"
+ + start_time.strftime("%b_%Y") + "-"
+ + end_time.strftime("%b_%Y")
+ )
+ else:
+ # Prepare name for Announced Course GSystem
+ c_name = unicode(
+ nc_course_code + "_"+ start_time.strftime("%b_%Y") + "-"
+ + end_time.strftime("%b_%Y")
+ )
+
request.POST["name"] = c_name
is_changed = get_node_common_fields(
@@ -496,6 +517,27 @@ def course_create_edit(request, group_id, app_id, app_set_id=None, app_set_insta
ann_course_id_list.append(course_gs._id)
+
+ if not tiss_site:
+
+ site = Site.objects.get(pk=1)
+ site = site.name.__str__()
+ ann_course_url_link = "http://" + site + "/home/course/course_detail/" + \
+ str(course_gs._id)
+ user_obj = User.objects.all()
+ # Sending email to all registered users on site NROER
+ render_label = render_to_string(
+ "notification/label.html",
+ {"sender": "NROER eCourses",
+ "activity": "Course Announcement",
+ "conjunction": "-"
+ })
+ if user_obj:
+ notification.create_notice_type(render_label," New eCourse '"\
+ + str(course_gs.name) +"' has been announced."\
+ +"Visit this link to enroll into this ecourse : " \
+ + ann_course_url_link, "notification")
+ notification.send(user_obj, render_label, {"from_user": "NROER eCourses"})
else:
is_changed = get_node_common_fields(request, course_gs, group_id, course_gst)
@@ -591,16 +633,25 @@ def course_create_edit(request, group_id, app_id, app_set_id=None, app_set_insta
node_collection.collection.RelationType(field_instance),
field_value
)
-
- return HttpResponseRedirect(
- reverse(
- app_name.lower() + ":" + template_prefix + '_app_detail',
- kwargs={
- 'group_id': group_id, "app_id": app_id,
- "app_set_id": app_set_id
- }
+ if tiss_site:
+ return HttpResponseRedirect(
+ reverse(
+ app_name.lower() + ":" + template_prefix + '_app_detail',
+ kwargs={
+ 'group_id': group_id, "app_id": app_id,
+ "app_set_id": app_set_id
+ }
+ )
+ )
+ else:
+ return HttpResponseRedirect(
+ reverse(
+ "course",
+ kwargs={
+ 'group_id': group_id
+ }
+ )
)
- )
univ = node_collection.one({
'_type': "GSystemType", 'name': "University"
@@ -621,6 +672,7 @@ def course_create_edit(request, group_id, app_id, app_set_id=None, app_set_insta
{'name': 1}
).sort('name', 1)
+
default_template = "ndf/course_create_edit.html"
context_variables = {
'groupid': group_id, 'group_id': group_id,
@@ -628,6 +680,7 @@ def course_create_edit(request, group_id, app_id, app_set_id=None, app_set_insta
'app_collection_set': app_collection_set,
'app_set_id': app_set_id,
'title': title,
+ 'tiss_site': tiss_site,
'university_cur': university_cur,
'property_order_list': property_order_list
}
@@ -788,6 +841,9 @@ def mis_course_detail(request, group_id, app_id=None, app_set_id=None, app_set_i
raise Exception(error_message)
+
+# Ajax views for setting up Course Structure
+
@login_required
@get_execution_time
def create_course_struct(request, group_id, node_id):
@@ -1103,7 +1159,6 @@ def add_units(request, group_id):
return render_to_response(template, variable)
-
@login_required
def get_resources(request, group_id):
'''