Skip to content

Instantly share code, notes, and snippets.

@katkamrachana
Created January 18, 2018 10:17
Show Gist options
  • Save katkamrachana/4dd0574fe7ef2d1ccc0c0ac5a1a322ca to your computer and use it in GitHub Desktop.
Save katkamrachana/4dd0574fe7ef2d1ccc0c0ac5a1a322ca to your computer and use it in GitHub Desktop.
group-dashboard
@get_execution_time
def group_dashboard(request, group_id=None):
try:
group_obj = ""
# shelf_list = {}
# shelves = []
alternate_template = ""
profile_pic_image = None
list_of_unit_events = []
all_blogs = None
blog_pages = None
user_blogs = None
subgroups_cur = None
old_profile_pics = []
selected = request.GET.get('selected','')
group_obj = get_group_name_id(group_id, get_obj=True)
try:
if 'tab_name' in group_obj.project_config and group_obj.project_config['tab_name'].lower() == "questions":
if "announced_unit" in group_obj.member_of_names_list:
if group_obj.collection_set:
lesson_id = group_obj.collection_set[0]
lesson_node = node_collection.one({'_id': ObjectId(lesson_id)})
activity_id = lesson_node.collection_set[0]
return HttpResponseRedirect(reverse('activity_player_detail', kwargs={'group_id': group_id,
'lesson_id': lesson_id, 'activity_id': activity_id}))
except Exception as e:
pass
if ("base_unit" in group_obj.member_of_names_list or
"CourseEventGroup" in group_obj.member_of_names_list or
"BaseCourseGroup" in group_obj.member_of_names_list or
"announced_unit" in group_obj.member_of_names_list):
return HttpResponseRedirect(reverse('course_about', kwargs={'group_id': group_id}))
if group_obj and group_obj.post_node:
# subgroups_cur = node_collection.find({'_id': {'$in': group_obj.post_node}, 'edit_policy': {'$ne': "EDITABLE_MODERATED"},
# now we are showing moderating group too:
subgroups_cur = node_collection.find({
'_type': u'Group',
'_id': {'$in': group_obj.post_node},
# 'member_of': {'$in': [group_gst._id]}, #Listing all types of sub groups
'$or': [
{'created_by': request.user.id},
{'group_admin': request.user.id},
{'author_set': request.user.id},
{'group_type': 'PUBLIC'}
]
}).sort("last_update",-1)
if not group_obj:
group_obj=node_collection.one({'$and':[{'_type':u'Group'},{'name':u'home'}]})
group_id=group_obj['_id']
else:
# group_obj=node_collection.one({'_id':ObjectId(group_id)})
group_id = group_obj._id
# getting the profile pic File object
# profile_pic_image, grelation_node = get_relation_value(group_obj._id,"has_profile_pic")
# profile_pic_image = get_relation_value(group_obj._id,"has_profile_pic")
# if profile_pic_image:
# profile_pic_image = profile_pic_image[0]
grel_dict = get_relation_value(group_obj._id, "has_profile_pic")
is_cursor = grel_dict.get("cursor",False)
if not is_cursor:
profile_pic_image = grel_dict.get("grel_node")
# grel_id = grel_dict.get("grel_id")
# for each in group_obj.relation_set:
# if "has_profile_pic" in each:
# profile_pic_image = node_collection.one(
# {'_type': "File", '_id': each["has_profile_pic"][0]}
# )
# break
'''
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' })
shelf = triple_collection.find({'_type': 'GRelation', 'subject': ObjectId(auth._id), 'relation_type': has_shelf_RT._id })
shelf_list = {}
if shelf:
#a temp. variable which stores the lookup for append method
shelves_append_temp=shelves.append
for each in shelf:
shelf_name = node_collection.one({'_id': ObjectId(each.right_subject)})
shelves_append_temp(shelf_name)
shelf_list[shelf_name.name] = []
#a temp. variable which stores the lookup for append method
shelf_lst_shelfname_append=shelf_list[shelf_name.name].append
for ID in shelf_name.collection_set:
shelf_item = node_collection.one({'_id': ObjectId(ID) })
shelf_lst_shelfname_append(shelf_item.name)
else:
shelves = []
'''
except Exception as e:
print "\nError: ", e
group_obj=node_collection.one({'$and':[{'_type':u'Group'},{'name':u'home'}]})
group_id=group_obj['_id']
pass
# profile_pic_image, grelation_node = get_relation_value(group_obj._id,"has_profile_pic")
# profile_pic_image = get_relation_value(group_obj._id,"has_profile_pic")
# if profile_pic_image:
# profile_pic_image = profile_pic_image[0]
grel_dict = get_relation_value(group_obj._id, "has_profile_pic")
is_cursor = grel_dict.get("cursor",False)
if not is_cursor:
profile_pic_image = grel_dict.get("grel_node")
# grel_id = grel_dict.get("grel_id")
has_profile_pic_rt = node_collection.one({'_type': 'RelationType', 'name': unicode('has_profile_pic') })
all_old_prof_pics = triple_collection.find({'_type': "GRelation", "subject": group_obj._id, 'relation_type': has_profile_pic_rt._id, 'status': u"DELETED"})
if all_old_prof_pics:
for each_grel in all_old_prof_pics:
n = node_collection.one({'_id': ObjectId(each_grel.right_subject)})
old_profile_pics.append(n)
# Call to get_neighbourhood() is required for setting-up property_order_list
# group_obj.get_neighbourhood(group_obj.member_of)
course_structure_exists = False
files_cur = None
parent_groupid_of_pe = None
list_of_sg_member_of = get_sg_member_of(group_obj._id)
# print "\n\n list_of_sg_member_of", list_of_sg_member_of
files_cur = None
allow_to_join = ""
sg_type = None
course_collection_data = []
if u"ProgramEventGroup" in list_of_sg_member_of and u"ProgramEventGroup" not in group_obj.member_of_names_list:
sg_type = "ProgramEventGroup"
# files_cur = node_collection.find({'group_set': ObjectId(group_obj._id), '_type': "File"})
parent_groupid_of_pe = node_collection.find_one({'_type':"Group","post_node": group_obj._id})
if parent_groupid_of_pe:
parent_groupid_of_pe = parent_groupid_of_pe._id
alternate_template = "ndf/gprogram_event_group.html"
if "CourseEventGroup" in group_obj.member_of_names_list:
sg_type = "CourseEventGroup"
alternate_template = "ndf/gcourse_event_group.html"
# course_collection_data = get_collection(request,group_obj._id,group_obj._id)
# course_collection_data = json.loads(course_collection_data.content)
if 'Group' in group_obj.member_of_names_list:
alternate_template = "ndf/lms.html"
# The line below is commented in order to:
# Fetch files_cur - resources under moderation in groupdahsboard.html
# if u"ProgramEventGroup" not in group_obj.member_of_names_list:
if "CourseEventGroup" in group_obj.member_of_names_list or u"ProgramEventGroup" in list_of_sg_member_of and u"ProgramEventGroup" not in group_obj.member_of_names_list:
page_gst = node_collection.one({'_type': "GSystemType", 'name': "Page"})
blogpage_gst = node_collection.one({'_type': "GSystemType", 'name': "Blog page"})
# files_cur = node_collection.find({'group_set': ObjectId(group_obj._id), '_type': "File"}).sort("last_update",-1)
if group_obj.collection_set:
course_structure_exists = True
if request.user.id:
all_blogs = node_collection.find({
'member_of':page_gst._id,
'type_of': blogpage_gst._id,
'group_set': group_obj._id
}).sort('created_at', -1)
if all_blogs:
blog_pages = all_blogs.clone()
blog_pages = blog_pages.where("this.created_by!=" + str(request.user.id))
user_blogs = all_blogs.where("this.created_by==" + str(request.user.id))
start_enrollment_date = get_attribute_value(group_obj._id,"start_enroll")
# if 'start_enroll' in group_obj:
# if group_obj.start_enroll:
# start_enrollment_date = group_obj.start_enroll
# # print "\n\nstart_enrollment_date", start_enrollment_dates
if start_enrollment_date:
start_enrollment_date = start_enrollment_date.date()
curr_date_time = datetime.now().date()
if start_enrollment_date > curr_date_time:
allow_to_join = "Forthcoming"
else:
allow_to_join = "Open"
last_enrollment_date = get_attribute_value(group_obj._id,"end_enroll")
# if 'end_enroll' in group_obj:
# if group_obj.end_enroll:
# last_enrollment_date = group_obj.end_enroll
if last_enrollment_date:
last_enrollment_date = last_enrollment_date.date()
curr_date_time = datetime.now().date()
if last_enrollment_date < curr_date_time:
allow_to_join = "Closed"
else:
allow_to_join = "Open"
if group_obj.edit_policy == "EDITABLE_MODERATED":# and group_obj._type != "Group":
files_cur = node_collection.find({'group_set': ObjectId(group_obj._id), '_type': {'$in': ["File"]}})
'''
property_order_list = []
if "group_of" in group_obj:
if group_obj['group_of']:
college = node_collection.one({'_type': "GSystemType", 'name': "College"}, {'_id': 1})
if college:
if college._id in group_obj['group_of'][0]['member_of']:
alternate_template = "ndf/college_group_details.html"
property_order_list = get_property_order_with_value(group_obj['group_of'][0])
annotations = json.dumps(group_obj.annotations)
'''
default_template = "ndf/groupdashboard.html"
# print "\n\n blog_pages.count------",blog_pages
if alternate_template:
return HttpResponseRedirect( reverse('course_about', kwargs={"group_id": group_id}) )
else:
return render_to_response([alternate_template,default_template] ,{'node': group_obj, 'groupid':group_id,
'group_id':group_id, 'user':request.user,
# 'shelf_list': shelf_list,
'list_of_unit_events': list_of_unit_events,
'blog_pages':blog_pages,
'user_blogs': user_blogs,
'selected': selected,
'files_cur': files_cur,
'sg_type': sg_type,
'course_collection_data':course_collection_data,
'parent_groupid_of_pe':parent_groupid_of_pe,
'course_structure_exists':course_structure_exists,
'allow_to_join': allow_to_join,
'appId':app._id, 'app_gst': group_gst,
'subgroups_cur':subgroups_cur,
# 'annotations' : annotations, 'shelves': shelves,
'prof_pic_obj': profile_pic_image,
'old_profile_pics':old_profile_pics,
'group_obj': group_obj,
},context_instance=RequestContext(request)
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment