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): if request.user.is_authenticated(): if not request.method in ('GET', 'POST'): raise Http404() else: # list if request.method == 'GET': try: id = request.GET['cid'] try: user = Teacher.objects.get(pk=request.user.id) try: chapter = Chapter.objects.get(pk=id, author=user) quizzes = chapter.quizzes.all() from django.forms.models import model_to_dict data = dict() quizzes_ = [] for quiz in quizzes: quiz_ = model_to_dict(quiz, helper.quiz_fields) responses_ = [] if quiz.responses.count() > 0: for response in quiz.responses.all(): response_ = model_to_dict( response, fields=[ 'title', 'created_at', 'about', 'id' ]) responses_.append(response_) quiz_['responses'] = responses_ quizzes_.append(quiz_) data['list'] = quizzes_ return render_json( request, json.dumps(data, encoding="utf-8", cls=MeeMJSONEncoder)) except Chapter.DoesNotExist: pass except Teacher.DoesNotExist: pass except: pass # create, post method else: data = helper.create(request) return render_json( request, json.dumps(data, encoding="utf-8", cls=MeeMJSONEncoder)) 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 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 post_comment(request, content_type_id, object_id, form_class=CommentForm): content_type = get_object_or_404(ContentType, pk=content_type_id) obj = get_object_or_404(content_type.model_class(), pk=object_id) form = form_class(request.POST, request=request, obj=obj, user=request.user) if form.is_valid(): comment = form.save() commented.send(sender=post_comment, comment=comment, request=request) if request.is_ajax(): created = dehydrate_comment(comment) return render_json(request, json.dumps(created, encoding="utf-8")) else: if request.is_ajax(): return HttpResponse(json.dumps({ "status": "ERROR", "errors": form.errors }), content_type="application/json") redirect_to = request.POST.get("next") # light security check -- make sure redirect_to isn't garbage. if not redirect_to or " " in redirect_to or redirect_to.startswith("http"): redirect_to = obj return redirect(redirect_to)
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 comment_list(request, content_type_id, object_id): content_type = get_object_or_404(ContentType, pk=content_type_id) obj = get_object_or_404(content_type.model_class(), pk=object_id) comments = Comment.objects.filter(content_type=content_type, object_id=obj.pk) items = [] for comment in comments : item = dehydrate_comment(comment) items.append(item) return render_json(request, json.dumps(items, encoding="utf-8"))
def get_recieved (request): me = User.objects.get(id=request.user.id) tome = CollaboratorInvitation.objects.prefetch_related('fromuser').filter(usermail=me.email) invitations = [] for invitation in tome : item = model_to_dict(invitation, fields=invitation_fields) item['source'] = model_to_dict(invitation.user, fields=['id', 'username']) invitations.append(item) return render_json(request, json.dumps(invitations, encoding="utf-8", cls=MeeMJSONEncoder))
def rud(request, id): data = {'result' : 'forbidden'} if request.method == 'GET' : data = helper.get_item (request, id) if request.method == 'PUT' : data = helper.update (request, id) if request.method == 'DELETE' : return helper.delete (request, id) data = json.dumps(data, encoding="utf-8", cls=MeeMJSONEncoder) return render_json(request, data)
def default(request): data = None if request.method == 'GET' : data = helper.get_list(request) if request.method == 'POST' : data = helper.create(request) if data != None : data = json.dumps(data, encoding="utf-8", cls=MeeMJSONEncoder) return render_json(request, data) raise Http404
def comment_list(request, content_type_id, object_id): content_type = get_object_or_404(ContentType, pk=content_type_id) obj = get_object_or_404(content_type.model_class(), pk=object_id) comments = Comment.objects.filter(content_type=content_type, object_id=obj.pk) items = [] for comment in comments: item = dehydrate_comment(comment) items.append(item) return render_json(request, json.dumps(items, encoding="utf-8"))
def default(request): data = None if request.method == 'GET': data = helper.get_list(request) if request.method == 'POST': data = helper.create(request) if data != None: data = json.dumps(data, encoding="utf-8", cls=MeeMJSONEncoder) return render_json(request, data) raise Http404
def rud(request, id): data = {'result': 'forbidden'} if request.method == 'GET': data = helper.get_item(request, id) if request.method == 'PUT': data = helper.update(request, id) if request.method == 'DELETE': return helper.delete(request, id) data = json.dumps(data, encoding="utf-8", cls=MeeMJSONEncoder) return render_json(request, data)
def default(request): if request.user.is_authenticated (): if not request.method in ('GET' , 'POST'): raise Http404() else : # list if request.method == 'GET' : try : id = request.GET['cid'] try : user = Teacher.objects.get (pk=request.user.id) try : chapter = Chapter.objects.get (pk=id, author=user) quizzes = chapter.quizzes.all() from django.forms.models import model_to_dict data = dict () quizzes_ = [] for quiz in quizzes : quiz_ = model_to_dict(quiz, helper.quiz_fields) responses_ =[] if quiz.responses.count () > 0 : for response in quiz.responses.all() : response_ = model_to_dict(response, fields=['title', 'created_at', 'about', 'id']) responses_.append(response_) quiz_['responses'] = responses_ quizzes_.append(quiz_) data['list'] = quizzes_ return render_json(request, json.dumps(data, encoding="utf-8", cls=MeeMJSONEncoder)) except Chapter.DoesNotExist: pass except Teacher.DoesNotExist: pass except : pass # create, post method else : data = helper.create(request) return render_json(request, json.dumps(data, encoding="utf-8", cls=MeeMJSONEncoder)) raise Http404()
def get_recieved(request): me = User.objects.get(id=request.user.id) tome = CollaboratorInvitation.objects.prefetch_related('fromuser').filter( usermail=me.email) invitations = [] for invitation in tome: item = model_to_dict(invitation, fields=invitation_fields) item['source'] = model_to_dict(invitation.user, fields=['id', 'username']) invitations.append(item) return render_json( request, json.dumps(invitations, encoding="utf-8", cls=MeeMJSONEncoder))
def form_valid(self, form): try : contact = form.save(self.request) request = self.request messages.success(request, _('Thank You, your Message has been sent, we will sent you a reponse as possible !')) if request.is_ajax(): return render_json(request, json_dump_meemencoder (self.request, contact)) redirect_to = request.POST.get("next") self.success_url = request.POST.get("success") # #FIXME if not redirect_to or " " in redirect_to or redirect_to.startswith("http"): redirect_to = self.success_url return redirect(redirect_to) except BaseException, e: return e
def view(request, id): if request.user.is_authenticated (): from django.forms.models import model_to_dict message = models.Message.objects.get(id=id) if not message.seen : message.seen= True; if message.at == None : message.at = datetime.now() message.save () result = model_to_dict(message, fields =['at', 'body', 'subject', 'id']) #datetime.date() is not JSON serializable result['at'] = str(result['at']) result['author'] = {'name' : message.author.username, 'id' : message.author.id} return render_json(request, json.dumps(result, encoding="utf-8")) else : raise Http404
def default(request): if request.user.is_authenticated(): if not request.method in ('GET', 'POST'): raise Http404() else: #list if request.method == 'GET': try: id = request.GET['cid'] except Exception: raise Http404() page = 1 try: page = int(request.GET['page']) except Exception: pass try: user = Teacher.objects.get(pk=request.user.id) try: course = Course.objects.get(pk=id, author=user) chapters = course.chapters.order_by( 'created')[(page - 1) * 4:page * 4] from django.forms.models import model_to_dict data = dict() chapters_ = [] for chapter in chapters: chapter_ = model_to_dict( chapter, fields=['title', 'created_at', 'about', 'id']) chapters_.append(chapter_) data['list'] = chapters_ data['total'] = course.chapters.count() return render_json( request, json.dumps(data, encoding="utf-8", cls=MeeMJSONEncoder)) except Course.DoesNotExist: pass except Teacher.DoesNotExist: pass else: #create pass raise Http404()
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 view(request, id): if request.user.is_authenticated(): from django.forms.models import model_to_dict message = Topic.objects.get(id=id) if not message.seen: message.seen = True if message.at == None: message.at = datetime.now() message.save() result = model_to_dict(message, fields=['at', 'body', 'subject', 'id']) #datetime.date() is not JSON serializable result['at'] = str(result['at']) result['author'] = { 'name': message.author.username, 'id': message.author.id } return render_json(request, json.dumps(result, encoding="utf-8")) else: raise Http404
def form_valid(self, form): try: contact = form.save(self.request) request = self.request messages.success( request, _('Thank You, your Message has been sent, we will sent you a reponse as possible !' )) if request.is_ajax(): return render_json( request, json_dump_meemencoder(self.request, contact)) redirect_to = request.POST.get("next") self.success_url = request.POST.get("success") # #FIXME if not redirect_to or " " in redirect_to or redirect_to.startswith( "http"): redirect_to = self.success_url return redirect(redirect_to) except BaseException, e: return e
def default(request): if request.user.is_authenticated (): if not request.method in ( 'GET' , 'POST' ): raise Http404() else : #list if request.method == 'GET' : try : id = request.GET['cid'] except Exception: raise Http404() page = 1 try : page = int(request.GET['page']) except Exception: pass try : user = Teacher.objects.get (pk=request.user.id) try : course = Course.objects.get (pk=id, author=user) chapters = course.chapters.order_by('created')[(page - 1)*4: page * 4] from django.forms.models import model_to_dict data = dict () chapters_ = [] for chapter in chapters : chapter_ = model_to_dict(chapter, fields=['title', 'created_at', 'about', 'id']) chapters_.append(chapter_) data['list'] = chapters_ data['total'] = course.chapters.count () return render_json(request, json.dumps(data, encoding="utf-8", cls = MeeMJSONEncoder)) except Course.DoesNotExist: pass except Teacher.DoesNotExist: pass else : #create pass raise Http404()
def init (request): return render_json(request, json.dumps(data, encoding="utf-8"))
def init(request): return render_json(request, json.dumps(data, encoding="utf-8"))
def send_response(request, data): return render_json(request, json.dumps(data, encoding="utf-8", cls=MeeMJSONEncoder))
def upload_image(request, id): document = helper.upload_file (request, id) data = {'url' : get_file_media_url (document)} data = json.dumps(data, encoding="utf-8", cls=MeeMJSONEncoder) return render_json(request, data)
def send_response(request, data): return render_json(request, json.dumps(data, encoding="utf-8", cls = MeeMJSONEncoder))
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 upload_cover(request, id): courseinfo = helper.upload_cover(request, id) data = {'url': get_file_media_url(courseinfo, 'cover')} data = json.dumps(data, encoding="utf-8", cls=MeeMJSONEncoder) return render_json(request, data)
def upload(request): id = request.POST['chapter_id'] document = helper.upload_file(request, id) data = model_to_dict(document, fields=helper.document_fields) return render_json(request, json_dump_meemencoder(data))
def show(request): data = helper.get_notifications(request) data = json.dumps(data, encoding="utf-8", cls=MeeMJSONEncoder) return render_json(request, data)
def upload(request): id= request.POST['chapter_id'] document = helper.upload_file(request, id) data = model_to_dict(document, fields=helper.document_fields) return render_json(request, json_dump_meemencoder(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 list(request): data = helper.get_list(request) return render_json(request, json_dump_meemencoder(data))
def upload_image(request, id): document = helper.upload_file(request, id) data = {'url': get_file_media_url(document)} data = json.dumps(data, encoding="utf-8", cls=MeeMJSONEncoder) return render_json(request, data)
def upload_cover(request, id): courseinfo = helper.upload_cover (request, id) data = {'url' : get_file_media_url (courseinfo, 'cover')} data = json.dumps(data, encoding="utf-8", cls=MeeMJSONEncoder) return 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)