示例#1
0
def create_lessons(apps, schema_editor):
    Lesson.objects.bulk_create(
        [Lesson(name="レッスンテスト", number=1, description="あいうえお"),
         Lesson(name="バレーレッスン", number=2, description="テストのレッスン"),
         Lesson(name="レッスン", number=3, description="これはテストです")
         ]
    )
    def saveLessonsToDB(self):
        """ Method to create Programming Environment, Language and Lesson for the test database """
        self.environment = ProgrammingEnvironment(
            environment_name="Web Applications",
            description="Test Description")
        self.environment.save()

        self.language = Language(language_name="JavaScript",
                                 description="Test Description",
                                 environment=self.environment)
        self.language.save()

        self.lesson = Lesson(language=self.language,
                             lesson_title="Variables",
                             lesson_description="Test Description",
                             lesson_content="Test content",
                             check_result="function check_result(result)\{\}",
                             lesson_number=1,
                             lesson_code="""
function variable_exercise(){
  //Write variable here
	
  //Return the variable here
}""")
        self.lesson.save()
示例#3
0
    def test_next_lesson(self):
        """ Method used to test the 'next_lesson' function """
        nextLesson = Lesson(language=self.language,
                            lesson_title="Conditionals",
                            lesson_description="Test Description",
                            lesson_content="Test content",
                            check_result="function check_result(result)\{\}",
                            lesson_number=2,
                            lesson_code="""test""")
        nextLesson.save()
        self.login_client()
        response = self.client.get(reverse("lesson-next-lesson",
                                           kwargs={
                                               "languageTitle":
                                               self.language.language_name,
                                               "currentLessonTitle":
                                               self.lesson.lesson_title,
                                               "nextLessonTitle":
                                               nextLesson.lesson_title
                                           }),
                                   follow=True)

        newProgress = Progress.objects.filter(
            lesson__lesson_title=self.lesson.lesson_title)

        self.assertEqual(response.status_code, 200)
        self.assertTemplateUsed(response, "lesson/lesson_base.html")
        self.assertInHTML(nextLesson.lesson_title, response.content.decode())
        self.assertIsNotNone(newProgress)
示例#4
0
    def setUp(self):
        self.user1 = User.objects.create_user(
            'bertie', '*****@*****.**', 'bertword')
        self.user1.is_active = True
        self.user1.save()    
        self.user2 = User.objects.create_user('dave', '*****@*****.**', 'dave')
        self.user2.is_active = True
        self.user2.save()

        self.user3 = User.objects.create_user(
            'Chuck Norris', '*****@*****.**', 'dontask')
        self.user3.is_active = True
        self.user3.save()
        self.course1 = Course(**course1_data)
        self.course1.organiser = self.user1
        self.course1.instructor = self.user1
        self.course1.save() 
        self.uc = UserCourse(course=self.course1, user=self.user2)
        self.uc.save()
        self.lesson1 = Lesson(name="Test Lesson 1", course = self.course1)
        self.lesson1.save()
        #att1 attached to course
        self.att1 = Attachment(course=self.course1, **self.att1_data)
        self.att1.save()      
        #att2 attached to lesson
        self.att2 = Attachment(lesson=self.lesson1, **self.att1_data)
        self.att2.save()   
        with open('media/attachments/empty_attachment_test.txt', 'w') as f:
            f.write('test')
示例#5
0
 def setUp(self):
     self.user1 = User.objects.create_user('bertie', '*****@*****.**', 'bertword')
     self.user1.is_active = True
     self.user1.save()
     self.user2 = User.objects.create_user('Van Gogh', '*****@*****.**', 'vancode')
     self.user2.is_active = True
     self.user2.save()
     self.user3 = User.objects.create_user('Chuck Norris', '*****@*****.**', 'dontask')
     self.user3.is_active = True
     self.user3.save()
     self.user4 = User.objects.create_user('James Maxwell', 'em@c', 'pdq')
     self.user4.is_active = True
     self.user4.save()
     self.course1 = Course(**course1_data)
     self.course1.organiser = self.user1
     self.course1.instructor = self.user1
     self.course1.save()
     self.course2 = Course(**course2_data)
     self.course2.organiser = self.user2
     self.course2.instructor = self.user2
     self.course2.save()     
     self.uc = UserCourse(course=self.course1, user=self.user2)
     self.uc.save()
     self.lesson1 = Lesson(name="Test Lesson 1", course = self.course1)
     self.lesson1.save()
     self.ul = UserLesson(user=self.user2, lesson=self.lesson1)
     self.ul.save()
示例#6
0
    def setUp(self):
        self.user1 = User.objects.create_user('bertie', '*****@*****.**',
                                              'bertword')
        self.user1.is_active = True
        self.user1.save()
        self.user2 = User.objects.create_user('hank', '*****@*****.**',
                                              'hankdo')
        self.user2.is_active = True
        self.user2.save()

        self.course1 = Course(**self.course1_data)
        self.course1.organiser = self.user1
        self.course1.instructor = self.user1
        self.course1.save()

        self.course2 = Course(**self.course2_data)
        self.course2.organiser = self.user1
        self.course2.instructor = self.user2
        self.course2.save()

        self.course3 = Course(**self.course3_data)
        self.course3.organiser = self.user2
        self.course3.instructor = self.user2
        self.course3.save()

        self.course4 = Course(**self.course4_data)
        self.course4.organiser = self.user2
        self.course4.instructor = self.user2
        self.course4.save()

        self.course5 = Course(**self.course5_data)
        self.course5.organiser = self.user2
        self.course5.instructor = self.user2
        self.course5.save()

        self.lesson1 = Lesson(course=self.course1, **self.lesson1_data)
        self.lesson1.save()
        self.lesson2 = Lesson(course=self.course3, **self.lesson2_data)
        self.lesson2.save()
示例#7
0
    def setUp(self):
        self.user1 = User.objects.create_user('bertie', '*****@*****.**', 
                                              'bertword')
        self.user1.is_active = True
        self.user1.save()    
        self.user2 = User.objects.create_user('Van Gogh', '*****@*****.**', 'vancode')
        self.user2.is_active = True
        self.user2.save()
        self.user3 = User.objects.create_user('Chuck Norris', '*****@*****.**', 'dontask')
        self.user3.is_active = True
        self.user3.save()
        self.course1 = Course(**course1_data)
        self.course1.instructor = self.user2
        self.course1.organiser = self.user2
        self.course1.save() 

        self.uc = UserCourse(course=self.course1, user=self.user1)
        self.uc.save()
        self.lesson = Lesson(name="Test Lesson 1", course = self.course1)
        self.lesson.save() 
        self.li = LearningIntention(lesson=self.lesson, text="Intend...")
        self.li.save()
        self.uli = UserLearningIntention(user=self.user1, 
                                         learning_intention = self.li)
        self.lid1 = LearningIntentionDetail(
            learning_intention=self.li, 
            text ="LID A",
            lid_type=LearningIntentionDetail.SUCCESS_CRITERION)
        self.lid2 = LearningIntentionDetail(
            learning_intention=self.li, 
            text ="LID B",
            lid_type=LearningIntentionDetail.SUCCESS_CRITERION)
        self.lid3 = LearningIntentionDetail(
            learning_intention=self.li, 
            text ="LID C",
            lid_type=LearningIntentionDetail.LEARNING_OUTCOME)
        self.lid1.save()
        self.lid2.save()
        self.lid3.save()   
        self.ulid1 = UserLearningIntentionDetail(user=self.user1,
                                    learning_intention_detail=self.lid1)
        self.ulid1.save()    
        self.ulid2 = UserLearningIntentionDetail(user=self.user1,
                                    learning_intention_detail=self.lid2)
        self.ulid2.save()
        self.ulid3 = UserLearningIntentionDetail(user=self.user1,
                                    learning_intention_detail=self.lid3)
        self.ulid3.save()         
示例#8
0
 def setUp(self):
     self.user1 = User.objects.create_user(
         'bertie', '*****@*****.**', 'bertword')
     self.user1.is_active = True
     self.user1.save()
     self.user2 = User.objects.create_user('dave', '*****@*****.**', 'dave')
     self.user2.is_active = True
     self.user2.save()
     self.course1 = Course(**self.course1_data)
     self.course1.instructor = self.user2
     self.course1.organiser = self.user2
     self.course1.save()
     self.lesson1 = Lesson(course=self.course1, **self.lesson1_data)
     self.lesson1.save()        
     self.learningintention1 = LearningIntention(
         lesson = self.lesson1, text = "Practise")
     self.learningintention1.save()                                            
     self.lid1 = LearningIntentionDetail(
         learning_intention = self.learningintention1, 
         text = "Choose Topaz",
         lid_type = LearningIntentionDetail.SUCCESS_CRITERION
     )
     self.lid1.save()  
     self.lid2 = LearningIntentionDetail(
         learning_intention = self.learningintention1,
         text = "Eat fish",
         lid_type = LearningIntentionDetail.SUCCESS_CRITERION
     )                                        
     self.lid2.save()
     self.lid3 = LearningIntentionDetail(
         learning_intention = self.learningintention1, 
         text = "Calculate 6*9",
         lid_type = LearningIntentionDetail.LEARNING_OUTCOME
     )
     self.lid3.save()   
     
     self.profile1 = self.user1.profile
     self.profile1.accepted_terms = True
     self.profile1.signature_line = 'Learning stuff'
     self.profile1.save()
示例#9
0
 def setUp(self):
     self.user1 = User.objects.create_user(
         'bertie', '*****@*****.**', 'bertword')
     self.user1.is_active = True
     self.user1.save()
     self.user2 = User.objects.create_user('dave', '*****@*****.**', 'dave')
     self.user2.is_active = True
     self.user2.save()
     self.course1 = Course(**self.course1_data)
     self.course1.organiser = self.user1
     self.course1.instructor = self.user1
     self.course1.save()
     self.lesson1 = Lesson(course=self.course1, **self.lesson1_data)
     self.lesson1.save()
     
     self.uc = UserCourse(course=self.course1, user=self.user2)
     self.uc.save()
     
     self.att1 = Attachment(course=self.course1, **self.att1_data)
     self.att2 = Attachment(lesson=self.lesson1, **self.att2_data)
     self.att1.save()
     self.att2.save()        
示例#10
0
 def setUp(self):
     self.user1 = User.objects.create_user('bertie', '*****@*****.**',
                                           'bertword')
     self.user1.is_active = True
     self.user1.save()
     self.course1 = Course(**self.course1_data)
     self.course1.organiser = self.user1
     self.course1.instructor = self.user1
     self.course1.save()
     self.lesson1 = Lesson(course=self.course1, **self.lesson1_data)
     self.lesson1.save()
     self.learningintention1 = LearningIntention(lesson=self.lesson1,
                                                 text="Practise")
     self.learningintention1.save()
     self.lid1 = LearningIntentionDetail(
         learning_intention=self.learningintention1,
         text="Choose",
         lid_type=LearningIntentionDetail.SUCCESS_CRITERION)
     self.lid1.save()
     self.lid2 = LearningIntentionDetail(
         learning_intention=self.learningintention1,
         text="Calculate",
         lid_type=LearningIntentionDetail.LEARNING_OUTCOME)
     self.lid2.save()
示例#11
0
def lesson_edit(request, lesson_id=None):
    if lesson_id:
        lesson = get_object_or_404(Lesson, pk=lesson_id)
        title = "レッスン受講記録編集"
    else:
        lesson = Lesson()
        title = "レッスン受講記録登録"

    if request.method == 'POST':
        form = LessonForm(request.POST, instance=lesson)
        if form.is_valid():
            lesson = form.save(commit=False)
            lesson.charge_yen = 0
            lesson.save()

            # 対象ユーザーの対象プランの当月受講履歴を取得
            year = int(lesson.date.strftime('%Y'))
            month = int(lesson.date.strftime('%m'))
            first_day = date(year, month, 1)
            end_day = date(year, month + 1, 1) - timedelta(days=1)
            q = Q(member=lesson.member,
                  plan=lesson.plan,
                  date__range=[first_day, end_day])
            t_lessons = Lesson.objects.filter(q).order_by('date')

            ruiseki_start = 0  # 累積開始時間
            ruiseki_end = 0  # 累積終了時間

            # 当月受講履歴をひとつずつ計算する
            for t_lesson in t_lessons:
                print("id:" + str(t_lesson.id))
                # 今回の累積レッスン終了時間
                ruiseki_end += t_lesson.hour

                # 今回の支払金額
                charge_yen = 0

                # 基本時間 > 0
                if t_lesson.plan.basic_include_hour > 0:
                    # 累積終了時間 <= 基本時間
                    if ruiseki_end <= t_lesson.plan.basic_include_hour:
                        t_lesson.charge_yen = charge_yen
                        t_lesson.save()
                        continue
                    else:
                        ruiseki_start = t_lesson.plan.basic_include_hour

                # 従量開始時間 <= 累積終了時間
                # 従量開始時間 <= 累積開始時間
                # 累積開始時間 <= 従量終了時間 または 従量終了時間 is null
                plan_paygs = PlanPayg.objects.filter(
                    Q(Q(plan=t_lesson.plan), Q(
                        payg_end_hour__gte=ruiseki_start),
                      Q(payg_start_hour__lte=ruiseki_end))
                    | Q(Q(
                        plan=t_lesson.plan), Q(
                            payg_start_hour__lte=ruiseki_end),
                        Q(payg_end_hour__isnull=True))).order_by(
                            'payg_start_hour')

                for plan_payg in plan_paygs:
                    print("ruiseki_start:" + str(ruiseki_start))
                    print("ruiseki_end:" + str(ruiseki_end))
                    print("before_charge_yen:" + str(charge_yen))
                    if plan_paygs.count(
                    ) > 1 and plan_payg.payg_end_hour is not None:
                        if plan_payg == plan_paygs.last():
                            # (累積終了時間 - 現在の従量開始時間) × 従量料金
                            now_hour = (ruiseki_end - ruiseki_start)
                            charge_yen += (ruiseki_end - ruiseki_start
                                           ) * plan_payg.payg_charge_yen
                            ruiseki_start = ruiseki_end
                        else:
                            # (現在の従量終了時間 - 累積開始時間) × 従量料金
                            now_hour = (plan_payg.payg_end_hour -
                                        ruiseki_start)
                            charge_yen += (
                                plan_payg.payg_end_hour -
                                ruiseki_start) * plan_payg.payg_charge_yen
                            ruiseki_start = plan_payg.payg_end_hour
                    else:
                        # (累積終了時間 - 累積開始時間) × 従量料金
                        now_hour = (ruiseki_end - ruiseki_start)
                        charge_yen += (ruiseki_end - ruiseki_start
                                       ) * plan_payg.payg_charge_yen
                        ruiseki_start = ruiseki_end
                    print("now_hour:" + str(now_hour))
                    print("after_charge_yen:" + str(charge_yen))
                    print("payg_charge_yen:" + str(plan_payg.payg_charge_yen))

                # 支払金額を更新
                t_lesson.charge_yen = charge_yen
                t_lesson.save()

            return redirect('lesson:lesson_list')
    else:
        form = LessonForm(instance=lesson)

    return render(request, 'lesson/edit.html',
                  dict(form=form, lesson_id=lesson_id, title=title))
示例#12
0
def getGrades(user, jwxt_user):
    gradesStr = jwxt_user.getScore()
    pattern = pattern = re.compile(r'\{"[^\}]*"\}')
    results = pattern.finditer(gradesStr)
    for item in results:
        grade = item.group()
        try:
            lessonIdPattern = re.compile(r'(?<="kch":")([^"]+?)(?=")')
            lessonId = lessonIdPattern.search(grade).group()
            teacherPattern = re.compile(r'(?<="jsxm":")([^"]+?)(?=")')
            try:
                teacher = teacherPattern.search(grade).group()
            except:
                teacher = ''
            lesson = Lesson.objects.get(lessonId=lessonId, teacher=teacher)
        except Lesson.DoesNotExist:
            schoolNumber = lessonId[:5]
            try:
                schoolObj = School.objects.get(number=schoolNumber)
            except:
                schoolObj = School.objects.get(number='69000')
            titlePattern = re.compile(r'(?<="kcmc":")([^"]+?)(?=")')
            title = titlePattern.search(grade).group()
            classHour = 'None'
            creditPattern = re.compile(r'(?<="xf":")([^"]+?)(?=")')
            try:
                credit = creditPattern.search(grade).group()
            except:
                credit = '0'
            campus = ''
            teachType = '01'
            typePattern = re.compile(r'(?<="kclb":")([^"]+?)(?=")')
            type = typePattern.search(grade).group()
            lesson = Lesson(school=schoolObj,
                        lessonId=lessonId,
                        title=title,
                        description='',
                        classHour=classHour,
                        credit=credit,
                        campus=campus,
                        teacher=teacher[:128],
                        teachType=teachType,
                        type=type
             )
            lesson.save()
        yearPattern = re.compile(r'(?<="xnd":")([^"]+?)(?=")')
        try:
            year = yearPattern.search(grade).group()
        except:
            year = 'unknow'
        scorePattern = re.compile(r'(?<="zzcj":")([^"]+?)(?=")')
        try:
            score = int(scorePattern.search(grade).group())
        except:
            continue
        rankPattern = re.compile(r'(?<="jxbpm":")([^"]+?)(?=")')
        try:
            rank = rankPattern.search(grade).group()
        except:
            ranking = int
            total = int
        else:
            rank_list = map(int, re.findall(r'\d+', rank))
            try:
                ranking = rank_list[0]
                total = rank_list[1]
            except:
                ranking = int
                total = int
        termPattern = re.compile(r'(?<="xq":")([^"]+?)(?=")')
        try:
            term = termPattern.search(grade).group()
        except:
            term = '4'
        try:
            gradeObj = Grade.objects.get(user=user, lesson=lesson)
        except Grade.DoesNotExist:
            gradeObj = Grade(
                    user=user,
                    lesson=lesson,
                    year=year,
                    term=term,
                    score=score,
                    ranking=ranking,
                    total=total
            )
            gradeObj.save()
            lesson.add_grade_number()
            lesson.save()
示例#13
0
def create_lesson():
    Lesson.objects.bulk_create(
        [Lesson(name="レッスンテスト", number=1, description="レッスンだけ")])