def list(request): if (not request.user.is_authenticated()) or 'type' in request.GET: list = [] items = Course.objects.all() paginator = Paginator(items, 10) recents_activities = paginator.page(1) for item in items: list.append({ 'id': item.id, 'title': item.title.encode("utf-8"), 'ccount': item.chapters.count(), 'scount': item.students.count() }) return dump_and_render_json(request, list) else: list = [] items = User.objects.get(pk=request.user.id).myclass.all() for item in items: list.append({ 'id': item.id, 'title': item.title.encode("utf-8"), 'ccount': item.chapters.count(), 'scount': item.students.count() }) return dump_and_render_json(request, list)
def default(request): if request.user.is_authenticated (): if not request.method == 'GET' : return dump_and_render_json(request, None) else : try : id = request.GET['cid'] except : return dump_and_render_json(request, None) try : course = Course.objects.get (pk=id) students = course.students.all() from django.forms.models import model_to_dict data = dict () data['data'] = dict () data['data']['invitations'] = 2 data['data']['requests'] = 3 classroom = list() for student in students : student_ = model_to_dict(student, fields=['username', 'id', 'email']) student_['cover'] = student.profile.thumb classroom.append(student_) data['students'] = classroom # json.dumps(classroom, encoding="utf-8") return dump_and_render_json(request, data) except Course.DoesNotExist: return dump_and_render_json(request, None) else : return dump_and_render_json(request, None)
def search(request): result = {'result': None} if request.user.is_authenticated(): if not request.method == 'GET': return dump_and_render_json(request, result) else: try: q = request.GET['q'] cid = request.GET['cid'] except: return dump_and_render_json(request, result) try: # get already in classroom already = CourseSubscriber.objects.filter( course__pk=cid).values_list('student__id') # filter in student students = Student.objects.filter(username__startswith=q)\ .exclude(id__in=already).values('username', 'id' , 'profile__thumb')[0:5] list_ = list(students) # FIXME , we must alias profile__thumb as thumb before turn on python for item in list_: item['thumb'] = item.pop('profile__thumb') return render_json(request, simplejson.dumps({'result': list_})) except Student.DoesNotExist: pass else: pass raise Http404
def search(request): result = {'result' : None} if request.user.is_authenticated (): if not request.method == 'GET' : return dump_and_render_json(request, result) else : try : q = request.GET['q'] cid = request.GET['cid'] except : return dump_and_render_json(request, result) try : # get already in classroom already = CourseSubscriber.objects.filter (course__pk=cid).values_list('student__id') # filter in student students = Student.objects.filter(username__startswith=q)\ .exclude(id__in=already).values('username', 'id' , 'profile__thumb')[0:5] list_ = list(students) # FIXME , we must alias profile__thumb as thumb before turn on python for item in list_: item['thumb'] = item.pop('profile__thumb') return render_json(request, simplejson.dumps({'result' : list_})) except Student.DoesNotExist: return dump_and_render_json(request, result) else : return dump_and_render_json(request, result)
def default(request): if request.user.is_authenticated(): if not request.method == 'GET': return dump_and_render_json(request, None) else: try: id = request.GET['cid'] except: return dump_and_render_json(request, None) try: course = Course.objects.get(pk=id) students = course.students.all() from django.forms.models import model_to_dict data = dict() data['data'] = dict() data['data']['invitations'] = 2 data['data']['requests'] = 3 classroom = list() for student in students: student_ = model_to_dict( student, fields=['username', 'id', 'email']) student_['cover'] = student.profile.thumb classroom.append(student_) data[ 'students'] = classroom # json.dumps(classroom, encoding="utf-8") return dump_and_render_json(request, data) except Course.DoesNotExist: return dump_and_render_json(request, None) else: return dump_and_render_json(request, None)
def invite(request): #template = "tclassroom/invite_join_course" message = request.POST['message'] userid = request.user.id username = request.user.username parsed_mails = request.POST['list'].split('#') emails = [] me = User.objects.get(id=userid) email = me.email already = CollaboratorInvitation.objects.filter(fromuser=me, accepted=False) if (already.count () > 10): return dump_and_render_json(request, dict({'status' : 'error', 'code' : 'limited exceeded'})) tolist = [] for item in parsed_mails : append = True if (item == email): continue for sent in already : if (sent.usermail == item) : append = False break if append : tolist.append(item) emails.append(CollaboratorInvitation (usermail=item, fromuser=me)) if len(emails) == 0 : return dump_and_render_json(request, dict({'status' : 'error', 'code' : 'limited exceeded'})) #subject = render_to_string('teacher_invitation_subject.txt'.format(template)) mandrillappmessage = EmailMessage(subject=username + " Invitation!", to=tolist, from_email=settings.EMAIL_NO_REPLY) mandrillappmessage.template_name = "TEACHER_COLLABORATION_INVITATION" mandrillappmessage.global_merge_vars = { # Merge tags in your template 'ACTIVATE': " show invitation", 'MESSAGE': message } merge_vars = {} CollaboratorInvitation.objects.bulk_create(emails) time_threshold = datetime.now() - timedelta(seconds=3) invitations = CollaboratorInvitation.objects.filter(sent_at__gt=time_threshold, fromuser=me) value = {} for invitation in invitations : value = model_to_dict(invitation, fields = ['usermail']) url = request.build_absolute_uri (reverse("teacher_invitation_response", args=[invitation.id])) value.update ({ 'URL' : url}) merge_vars[invitation.usermail] = value mandrillappmessage.merge_vars = merge_vars """ message.merge_vars = { '*****@*****.**': {'offer': "15% off anvils"}, '*****@*****.**': {'offer': "instant tunnel paint"} } msg = EmailMultiAlternatives(subject, "body", settings.EMAIL_NO_REPLY, bcc=emails) msg.attach_alternative(body, "text/html") response_ = msg.send() """ try : mandrillappmessage.send() return render_json(request, mandrillappmessage.mandrill_response) except djrill.MandrillAPIError as ex: return render_json(request, mandrillappmessage.mandrill_response)
def default(request): data = None if request.user.is_authenticated (): if request.method == 'GET' : data = helper.task_list(request) else: if request.method == 'POST' : data = helper.create(request) return dump_and_render_json(request, data) return dump_and_render_json(request, {'Error' : 'unknown result'})
def register(request): message = {} if request.method == 'POST': form = StudentCreationForm(request.POST) if form.is_valid(): new_user = form.save(request) message.update({'satus': 'OK', 'auth_type': new_user.auth_type}) message.update({'message': 'welcome'}) if (new_user.auth_type == new_user.PHONE): from django.core.urlresolvers import reverse message.update({ 'comfirmUrl': request.build_absolute_uri( reverse("account_student_confirm_sms", args=[request.session['phone_verification']])) }) else: # Show an error page message.update({'status': 'Error'}) message.update({'message': error_form_serialization(form.errors)}) else: message.update({'satus': 'Error'}) message.update({'message': 'Unknown request'}) return dump_and_render_json(request, message)
def view(request, id): #if request.user.is_authenticated (): item = Chapter.objects.get(pk=id) question_list = [] for question in item.question_set.all(): response_list = [] for response in question.response_set.all(): response_list.append({ 'id': response.id, 'value': response.is_true }) question_list.append({ 'id': question.id, 'value': str(question.value), 'values': str(question.responses), 'responses': response_list, 'appear_at': question.appear_at }) result = { 'id': item.id, 'title': str(item.title), 'qcm_questions': question_list, 'qcounts': len(question_list) } return dump_and_render_json(request, result)
def upload_file(request, id): from teacher.apps.courses.documents import helper as documents_helper video = Video.objects.get(id=request.POST['id']) document = documents_helper.upload_file (request, video.chapter.id) data = helper.attach_new_file(document, video) return dump_and_render_json(request, data) raise HttpResponseServerError
def list(request): #if request.user.is_authenticated (): list = [] items = Course.objects.all() for item in items: list.append ({'id' : item.id, 'title' : str(item.title), 'ccount' : item.chapter_set.count()}) return dump_and_render_json (request, list)
def default(request): if request.user.is_authenticated(): from django.forms.models import model_to_dict try: course = Course.objects.get(id=request.GET['cid']) topics = Topic.objects.filter( course=course ) #.values ('id', 'body', 'subject', 'at', 'seen') items = [] for topic in topics: item = model_to_dict( topic, ['title', 'content', 'created_time', 'id']) item['from'] = { 'name': topic.author.username, 'id': topic.author.id } item['at'] = str(item['created_time']) items.append(item) response = { 'count': topics.count(), 'list': items, 'course': model_to_dict(course, ['id']) } return render_json(request, json.dumps(response, encoding="utf-8")) except Course.DoesNotExist: return dump_and_render_json(request, None) else: raise Http404
def upload_file(request, id): from teacher.apps.courses.documents import helper as documents_helper video = Video.objects.get(id=request.POST['id']) document = documents_helper.upload_file(request, video.chapter.id) data = helper.attach_new_file(document, video) return dump_and_render_json(request, data) raise HttpResponseServerError
def subscribe(request, id): #if request.user.is_authenticated (): item = Course.objects.get(pk=id) student_list = [] for student in item.students.all(): student_list.append({ 'id': student.id, 'username': student.username.encode("utf-8") }) chapter_list = [] for chapter in item.chapter_set.all(): chapter_list.append({ 'id': chapter.id, 'title': chapter.title.encode("utf-8") }) result = { 'id': item.id, 'title': item.title.encode("utf-8"), 'scount': item.students.count(), 'students': student_list, 'ccount': len(chapter_list), 'chapters': chapter_list } return dump_and_render_json(request, result)
def rud(request, id): if request.method == 'GET' : data = helper.get_item(request, id) elif request.method == 'PUT' : data = helper.update (request, id) elif request.method == 'DELETE' : data = helper.delete (request, id) return dump_and_render_json(request, data)
def rud(request, id): if request.method == 'GET': data = helper.get(request, id) if request.method == 'PUT': data = helper.update(request, id) if request.method == 'DELETE': data = helper.delete(request, id) return dump_and_render_json(request, data)
def default(request): data = None if request.method == 'GET' : data = helper.get_list(request, id) else : data = helper.create(request) return dump_and_render_json (request, data) raise Http404()
def view(request, id): #if request.user.is_authenticated (): item = Course.objects.get(pk=id) student_list = [] for student in item.students.all(): student_list.append ({'id' : student.id, 'username' : str(student.username)}) result = {'id' : item.id, 'title' : str(item.title), 'scount' : item.students.count(), 'students' : student_list} return dump_and_render_json (request, result)
def default(request): data = None if request.method == 'GET': data = helper.get_list(request, request.GET['quiz_id']) else: data = helper.create(request) return dump_and_render_json(request, data) raise Http404()
def default(request): data = None if request.method == 'GET' : data = helper.team_list(request) else: if request.method == 'POST' : data = helper.create_team(request) return dump_and_render_json(request, data)
def default(request): data = None if request.method == 'GET': data = helper.team_list(request) else: if request.method == 'POST': data = helper.create_team(request) return dump_and_render_json(request, data)
def rud(request, id): data = {'result' : 'forbidden'} if request.user.is_authenticated (): if request.method == 'GET' : data = helper.get (request, id) if request.method == 'PUT' : data = helper.update (request, id) if request.method == 'DELETE' : data = helper.delete (request, id) return dump_and_render_json(request, data)
def quick_search(request): # get current user try : user = User.objects.get(pk=request.user.id) my_collaborators = user.teacher.get_collaborators(True) users = [item.user for item in my_collaborators if re.search('\A'+ request.GET['q'] , item.user.username)] #users = User.objects.filter(Q(id__in=ids) & Q(username__statrwith=request.GET['q'])).all() return dump_and_render_json(request, models_to_dict(users, fields=["username", "id"])) except User.DoesNotExist , e: pass
def rud(request, id): data = {'result': 'forbidden'} if request.user.is_authenticated(): if request.method == 'GET': data = helper.get(request, id) if request.method == 'PUT': data = helper.update(request, id) if request.method == 'DELETE': data = helper.delete(request, id) return dump_and_render_json(request, data)
def default(request): data = None if request.method == 'GET' : data = helper.get_list (request, request.GET['cid']) else : # create data = helper.create(request) if data != None : return dump_and_render_json(request, data) raise Http404()
def rud(request, id): data = None if request.method == 'GET' : data = helper.get (request, id) if request.method == 'PUT' : data = helper.update (request, id) if request.method == 'DELETE' : data = helper.delete (request, id) return dump_and_render_json(request, data) raise Http404()
def list(request): #if request.user.is_authenticated (): list = [] items = Course.objects.all() for item in items: list.append({ 'id': item.id, 'title': str(item.title), 'ccount': item.chapter_set.count() }) return dump_and_render_json(request, list)
def rud(request, id): data = None try : if request.method == 'GET' : data = helper.get (request, id) if request.method == 'PUT' : data = helper.update (request, id) if request.method == 'DELETE' : data = helper.delete (request, id) return dump_and_render_json(request, data) except Exception : raise Http404()
def view (request, id): #if request.user.is_authenticated (): item = Chapter.objects.get(pk=id) question_list = [] for question in item.question_set.all(): response_list = [] for response in question.response_set.all(): response_list.append ({'id' : response.id, 'value' : response.is_true}) question_list.append ({'id' : question.id, 'value' : str(question.value), 'values' : str(question.responses), 'responses' : response_list, 'appear_at' : question.appear_at }) result = {'id' : item.id, 'title' : str(item.title), 'qcm_questions' : question_list, 'qcounts' : len (question_list)} return dump_and_render_json (request, result)
def quick_search(request): id = request.GET['cid'] query = request.GET['q'] try: course = Course.objects.get(pk=id) students = course.students.filter(username__startswith=query) classroom = [] for student in students: classroom.append(hydrate_student(student)) return dump_and_render_json(request, classroom) except Course.DoesNotExist: raise Http404
def default(request): data = None if request.method == 'GET' : module = 'course' if 'module' in request.GET : module = request.GET['module'] try : id = request.GET['cid'] except KeyError : raise Http404() data = helper.get_list(request, module, id) else : data = helper.create(request) return dump_and_render_json (request, data) raise Http404()
def default(request): id = request.GET['cid'] try: course = Course.objects.get(pk=id) students = course.students.all() data = dict() data['data'] = dict() data['data']['invitations'] = 2 data['data']['requests'] = 3 classroom = list() for student in students: classroom.append(hydrate_student(student)) data['students'] = classroom return dump_and_render_json(request, data) except Course.DoesNotExist: raise Http404
def view(request, id): #if request.user.is_authenticated (): item = Course.objects.get(pk=id) student_list = [] for student in item.students.all(): student_list.append({ 'id': student.id, 'username': str(student.username) }) result = { 'id': item.id, 'title': str(item.title), 'scount': item.students.count(), 'students': student_list } return dump_and_render_json(request, result)
def default(request): if request.user.is_authenticated (): from django.forms.models import model_to_dict try : course = Course.objects.get(id=request.GET['cid']) topics = models.CourseForumTopic.objects.filter(course=course)#.values ('id', 'body', 'subject', 'at', 'seen') items = [] for topic in topics : item = model_to_dict(topic, ['title', 'content', 'created_time', 'id']) item ['from'] = { 'name' : topic.author.username, 'id' : topic.author.id } item ['at'] = str(item['created_time']) items.append(item) response = {'count' : topics.count (), 'list' : items , 'course' : model_to_dict(course, [ 'id'])} return render_json(request, json.dumps(response, encoding="utf-8")) except Course.DoesNotExist : return dump_and_render_json(request, None) else : raise Http404
def login(request): if request.method == 'POST': login = request.POST.get('login', '') password = request.POST.get('password', '') user = auth.authenticate(email=login, password=password) message = {} if user is not None and user.is_active: # Correct password, and the user is marked "active" auth.login(request, user) # Redirect to a success page. message.update({'satus': 'OK'}) else: # Show an error page message.update({'status': 'Error'}) else : message.update({'satus': 'False' }) message.update({'message': 'Unknown request'}) return dump_and_render_json(request, message)
def login(request): if request.method == 'POST': login = request.POST.get('login', '') password = request.POST.get('password', '') user = auth.authenticate(email=login, password=password) message = {} if user is not None and user.is_active: # Correct password, and the user is marked "active" auth.login(request, user) # Redirect to a success page. message.update({'satus': 'OK'}) else: # Show an error page message.update({'status': 'Error'}) else: message.update({'satus': 'False'}) message.update({'message': 'Unknown request'}) return dump_and_render_json(request, message)
def register(request): message = {} if request.method == 'POST': form = StudentCreationForm(request.POST) if form.is_valid(): new_user = form.save(request) message.update({'satus': 'OK', 'auth_type' : new_user.auth_type}) message.update({'message': 'welcome'}) if (new_user.auth_type == new_user.PHONE): from django.core.urlresolvers import reverse message.update({'comfirmUrl': request.build_absolute_uri(reverse("account_student_confirm_sms", args=[request.session['phone_verification']]))}) else: # Show an error page message.update({'status': 'Error'}) message.update({'message': error_form_serialization (form.errors)}) else : message.update({'satus': 'Error' }) message.update({'message': 'Unknown request'}) return dump_and_render_json(request, message)
def vote(request, id): return dump_and_render_json(request, None)
def search(request, query): return dump_and_render_json(request, None)
def quit(request, id): data = helper.quit_team(request, id) return dump_and_render_json(request, data)
def default(request): if request.user.is_authenticated(): userid = request.user.id user = User.objects.select_related().get(pk=userid) model = model_to_dict(user, ['username', 'email']) invitations_count = CollaboratorInvitation.objects.filter( fromuser=user.id).count() invitations_recieved = CollaboratorInvitation.objects.filter( usermail=user.email).count() studentCount = 0 course_count = 0 courses = user.courses.all() for course in courses: studentCount = studentCount + course.students.count() course_count = course_count + 1 staff_count = Team.objects.annotate( staff_count=Count('members')).filter( owner=user).values('staff_count') staff_count = staff_count[0]['staff_count'] """ collaborations = user.my_collaborators.select_related().all() other_collaborations = user.my_collaborators_with_others.select_related().all() """ collaborators = Collaborator.objects.filter(source=user).all() member_in_teams = TeamMemberShip.objects.filter( member__in=collaborators).select_related('team', 'assigned_tasks').all() tasks_count = 0 todos = [] # FIXME for item in member_in_teams: tasks_count += item.team.assigned_tasks.count() for task in item.team.tasks.all(): task_ = model_to_dict(task, ['id', 'start', 'end', 'title']) if getattr(task, 'label', False): task_.update({'color': task.label.color}) else: task_.update({'color': '#ccc'}) todos.append(task_) model.update({ 'id': user.id, 'username': user.email, 'img_not_found': '/images/team/houssem.jpg', 'thamb_img_url': get_file_media_url(user.profile.cover, 'location'), 'studentsCount': studentCount, 'coursesCount': course_count, 'collaboratorsCount': staff_count, 'tasksCount': tasks_count, 'invitations_sent_count': invitations_count, 'invitations_recieved_count': invitations_recieved, 'progress': get_profile_progress(user), }) recents = user.history.all() paginator = Paginator(recents, 10) recents_activities = paginator.page(1) recents_activities_list = [] for item in recents_activities: item_ = model_to_dict(item, fields=['id', 'action_time', 'object_id']) item_.update({'model': item.content_type.model}) recents_activities_list.append(item_) #.push(item_) model.update({'history': recents_activities_list}) model.update({'todos': todos}) return render_json( request, json.dumps(model, encoding="utf-8", cls=MeeMJSONEncoder)) else: return dump_and_render_json(request, None)
def quit(request, id): data = helper.quit_team(request, id) return dump_and_render_json(request, data)
def invite(request): from django.conf import settings from django.core.urlresolvers import reverse from django.template.loader import get_template from django.template import Context from django.core.mail import EmailMultiAlternatives #, send_mass_mail from django.template.loader import render_to_string result = {'result': None} if request.user.is_authenticated(): if not request.method == 'POST': return dump_and_render_json(request, result) id = request.POST['cid'] course = Course.objects.get(pk=id) template = "tclassroom/invite_join_course" subscribe_url = reverse("app_course_subscribe", args=[id]) subject = render_to_string('{0}_subject.txt'.format(template)) message = request.POST['text'] username = request.user.username # remove superfluous line breaks subject = " ".join(subject.splitlines()).strip() html = get_template('{0}_body.html'.format(template)) body = html.render( Context({ message: message, username: username, subscribe_url: subscribe_url })).strip() list = request.POST['list'].split('#') """ # send mass_mail datatuple = () for item in list : datatuple += (subject, body, settings.EMAIL_NO_REPLY, [item]) datatuple = (datatuple,) response_ = send_mass_mail(datatuple) result = {'result' : response_} """ emails = [] for item in list: emails.append(item) """ msg = EmailMultiAlternatives(subject, "body", settings.EMAIL_NO_REPLY, bcc=emails) msg.attach_alternative(body, "text/html") response_ = msg.send() """ from django.core.mail import EmailMessage from django.utils.translation import ugettext_lazy as _ msg = EmailMessage(subject=subject, from_email="*****@*****.**", to=emails) msg.template_name = "invitation" # A Mandrill template name """ msg.template_content = { # Content blocks to fill in 'TRACKING_BLOCK': "<a href='.../*|TRACKINGNO|*'>track it</a>" } """ hello = unicode(_("Hello")) subscribe = unicode(_("Activate")) msg.global_merge_vars = { # Merge tags in your template 'MESSAGE': message, 'URL': request.build_absolute_uri(subscribe_url), 'TEACHER': username, 'Hello': hello, 'ACTIVATE': subscribe } """ msg.merge_vars = { # Per-recipient merge tags '*****@*****.**': {'NAME': "Pat"}, '*****@*****.**': {'NAME': "Kim"} } """ result = msg.send() return dump_and_render_json(request, result) else: return dump_and_render_json(request, result)
def delete(request, id): #deleted related return dump_and_render_json(request, None)
def flag(request, id): return dump_and_render_json(request, None)
def delete(request, id): #deleted related return dump_and_render_json(request, None)
def search(request, query): return dump_and_render_json(request, None)
def join(request, id): data = helper.join_team(request, id) return dump_and_render_json(request, data)
def send_response(request, data): return dump_and_render_json(request, data)
def delete(request, query): return dump_and_render_json(request, None)
def statistics(request, id): #if request.user.is_authenticated (): item = Chapter.objects.get(pk=id) result = {'id' : item.id, 'title' : str(item.title)} return dump_and_render_json (request, result)
def flag(request, id): return dump_and_render_json(request, None)
def send_response(request, data): return dump_and_render_json(request, data)
def invite(request): #template = "tclassroom/invite_join_course" message = request.POST['message'] userid = request.user.id username = request.user.username parsed_mails = request.POST['list'].split('#') emails = [] me = User.objects.get(id=userid) email = me.email already = CollaboratorInvitation.objects.filter(fromuser=me, accepted=False) if (already.count() > 10): return dump_and_render_json( request, dict({ 'status': 'error', 'code': 'limited exceeded' })) tolist = [] for item in parsed_mails: append = True if (item == email): continue for sent in already: if (sent.usermail == item): append = False break if append: tolist.append(item) emails.append(CollaboratorInvitation(usermail=item, fromuser=me)) if len(emails) == 0: return dump_and_render_json( request, dict({ 'status': 'error', 'code': 'limited exceeded' })) #subject = render_to_string('teacher_invitation_subject.txt'.format(template)) mandrillappmessage = EmailMessage(subject=username + " Invitation!", to=tolist, from_email=settings.EMAIL_NO_REPLY) mandrillappmessage.template_name = "TEACHER_COLLABORATION_INVITATION" mandrillappmessage.global_merge_vars = { # Merge tags in your template 'ACTIVATE': " show invitation", 'MESSAGE': message } merge_vars = {} CollaboratorInvitation.objects.bulk_create(emails) time_threshold = datetime.now() - timedelta(seconds=3) invitations = CollaboratorInvitation.objects.filter( sent_at__gt=time_threshold, fromuser=me) value = {} for invitation in invitations: value = model_to_dict(invitation, fields=['usermail']) url = request.build_absolute_uri( reverse("teacher_invitation_response", args=[invitation.id])) value.update({'URL': url}) merge_vars[invitation.usermail] = value mandrillappmessage.merge_vars = merge_vars """ message.merge_vars = { '*****@*****.**': {'offer': "15% off anvils"}, '*****@*****.**': {'offer': "instant tunnel paint"} } msg = EmailMultiAlternatives(subject, "body", settings.EMAIL_NO_REPLY, bcc=emails) msg.attach_alternative(body, "text/html") response_ = msg.send() """ try: mandrillappmessage.send() return render_json(request, mandrillappmessage.mandrill_response) except djrill.MandrillAPIError as ex: return render_json(request, mandrillappmessage.mandrill_response)
def join(request, id): data = helper.join_team(request, id) return dump_and_render_json(request, data)
def default(request): if request.user.is_authenticated (): userid = request.user.id user = User.objects.select_related().get(pk=userid) model = model_to_dict(user, ['username', 'email']) invitations_count = CollaboratorInvitation.objects.filter(fromuser=user.id).count() invitations_recieved = CollaboratorInvitation.objects.filter(usermail=user.email).count() studentCount = 0 course_count = 0 courses = user.courses.all () for course in courses : studentCount = studentCount + course.students.count () course_count = course_count + 1 staff_count = Team.objects.annotate(staff_count=Count('members')).filter(owner=user).values ('staff_count') staff_count = staff_count[0]['staff_count'] """ collaborations = user.my_collaborators.select_related().all() other_collaborations = user.my_collaborators_with_others.select_related().all() """ collaborators = Collaborator.objects.filter(source=user).all () member_in_teams = TeamMemberShip.objects.filter(member__in=collaborators).select_related('team', 'assigned_tasks').all () tasks_count = 0 todos = [] # FIXME for item in member_in_teams : tasks_count += item.team.assigned_tasks.count() for task in item.team.tasks.all() : task_ = model_to_dict(task, ['id', 'start', 'end', 'title']) if getattr(task, 'label', False): task_.update({ 'color' : task.label.color}) else : task_.update({ 'color' : '#ccc'}) todos.append(task_) model.update({ 'id' : user.id , 'username' : user.email, 'img_not_found' : '/images/team/houssem.jpg', 'thamb_img_url' : get_file_media_url (user.profile.cover, 'location'), 'studentsCount' : studentCount, 'coursesCount' : course_count , 'collaboratorsCount' : staff_count, 'tasksCount' : tasks_count, 'invitations_sent_count' : invitations_count, 'invitations_recieved_count' : invitations_recieved, 'progress' : get_profile_progress(user), }); recents = user.history.all() paginator = Paginator(recents, 10) recents_activities = paginator.page(1) recents_activities_list = [] for item in recents_activities : item_ = model_to_dict(item, fields=['id', 'action_time', 'object_id']) item_.update({'model' : item.content_type.model}) recents_activities_list.append(item_) #.push(item_) model.update({'history' : recents_activities_list}) model.update({'todos' : todos}) return render_json(request, json.dumps(model, encoding="utf-8", cls=MeeMJSONEncoder)) else : return dump_and_render_json(request, None)
def search(request, id): data = helper.get_item(request, id) return dump_and_render_json(request,data)