예제 #1
0
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)
예제 #2
0
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)
예제 #3
0
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
예제 #4
0
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)
예제 #5
0
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)
예제 #6
0
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)
예제 #7
0
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'})
예제 #8
0
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)
예제 #9
0
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)
예제 #10
0
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
예제 #11
0
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)
예제 #12
0
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
예제 #13
0
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
예제 #14
0
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)
예제 #15
0
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)
예제 #16
0
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)
예제 #17
0
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()
예제 #18
0
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)
예제 #19
0
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()
예제 #20
0
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)
예제 #21
0
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)
예제 #22
0
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)
예제 #23
0
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
예제 #24
0
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)
예제 #25
0
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()
예제 #26
0
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()
예제 #27
0
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)
예제 #28
0
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()
예제 #29
0
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)
예제 #30
0
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
예제 #31
0
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()
예제 #32
0
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
예제 #33
0
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)
예제 #34
0
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
예제 #35
0
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)
예제 #36
0
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)
예제 #37
0
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)     
예제 #38
0
def vote(request, id):
    return dump_and_render_json(request, None)
예제 #39
0
def search(request, query):
    return dump_and_render_json(request, None)
예제 #40
0
def quit(request, id):
    data = helper.quit_team(request, id)
    return dump_and_render_json(request, data)
예제 #41
0
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)
예제 #42
0
def quit(request, id):
    data = helper.quit_team(request, id)
    return dump_and_render_json(request, data)
예제 #43
0
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)
예제 #44
0
def delete(request, id):
    #deleted related
    return dump_and_render_json(request, None)
예제 #45
0
def flag(request, id):
    return dump_and_render_json(request, None)
예제 #46
0
def delete(request, id):
    #deleted related
    return dump_and_render_json(request, None)
예제 #47
0
def search(request, query):
    return dump_and_render_json(request, None)
예제 #48
0
def join(request, id):
    data = helper.join_team(request, id)
    return dump_and_render_json(request, data)
예제 #49
0
def send_response(request, data):
    return dump_and_render_json(request, data)
예제 #50
0
def delete(request, query):
    return dump_and_render_json(request, None)
예제 #51
0
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)
예제 #52
0
def flag(request, id):
    return dump_and_render_json(request, None)
예제 #53
0
def send_response(request, data):
    return dump_and_render_json(request, data)
예제 #54
0
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)
예제 #55
0
def join(request, id):
    data = helper.join_team(request, id)
    return dump_and_render_json(request, data)
예제 #56
0
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)
예제 #57
0
def search(request, id):
    data = helper.get_item(request, id)
    return dump_and_render_json(request,data)