def setUp(self):
        time = datetime(2012, 05, 8)
        self.get_time = lambda: time
        settings.SCHOOL_TERM_START = dateutils.increment(time, weeks=-2)
        settings.SCHOOL_TERM_END = dateutils.increment(time, weeks=2)

        self.poll_response_current_week_date = dateutils.increment(time, weeks=-1)
        self.poll_response_past_week_date = dateutils.increment(time)

        htg = Group.objects.create(name='Head Teachers')
        country = LocationType.objects.create(name='country', slug='country')
        district = LocationType.objects.create(name='district', slug='district')
        uganda_fields = dict(rght=15274, name="Uganda", level=0, tree_id=1, lft=1, type=country)

        self.root_node = Location.objects.create(**uganda_fields)
        self.admin_user = create_user_with_group("John", Role.objects.create(name="Admins"), self.root_node)
        self.user = User.objects.create(username="******", password="******")

        kampala_point_fields = dict(latitude="0.3162800000", longitude="32.5821900000")
        kampala_point = Point.objects.create(**kampala_point_fields)
        kampala_fields = dict(rght=10901, tree_parent=self.root_node, name="Kampala", point=kampala_point, level=1,
                              tree_id=1, lft=10686, type=district)
        self.kampala_district = Location.objects.create(**kampala_fields)

        gulu_point_fields = dict(latitude="2.7666700000", longitude="32.3055600000")
        gulu_point = Point.objects.create(**gulu_point_fields)
        gulu_fields = dict(rght=9063, tree_parent=self.root_node, name="Gulu", point=gulu_point, level=1, tree_id=1,
                           lft=8888, type=district)
        self.gulu_district = Location.objects.create(**gulu_fields)

        self.school = School.objects.create(name="Don Bosco School", location=self.root_node)
        self.school1 = School.objects.create(name="St. Mary School", location=self.root_node)

        self.emisreporter1 = EmisReporter.objects.create(name="Reporter1", reporting_location=self.kampala_district)
        self.emisreporter1.schools.add(self.school)
        self.emisreporter1.groups.add(htg)
        self.emisreporter1.gender="F"
        self.emisreporter1.save()

        self.emisreporter2 = EmisReporter.objects.create(name="Reporter2", reporting_location=self.kampala_district)
        self.emisreporter2.schools.add(self.school1)
        self.emisreporter2.groups.add(htg)
        self.emisreporter2.gender="M"
        self.emisreporter2.save()

        self.emisreporter3 = EmisReporter.objects.create(name="Reporter3", reporting_location=self.gulu_district)
        self.emisreporter3.schools.add(self.school)
        self.emisreporter3.groups.add(htg)
        self.emisreporter3.gender="F"
        self.emisreporter3.save()

        self.backend = Backend.objects.create(name='fake_backed')
        self.connection1 = Connection.objects.create(identity="02022222220", backend=self.backend,
                                                     contact=self.emisreporter1)
        self.connection2 = Connection.objects.create(identity="02022222221", backend=self.backend,
                                                     contact=self.emisreporter2)
        self.connection3 = Connection.objects.create(identity="02022222222", backend=self.backend,
                                                     contact=self.emisreporter3)
        create_attribute()
Example #2
0
def get_current_and_previous_week():
    this_thursday = _this_thursday().date()
    current_week_start = dateutils.increment(this_thursday, days=-6)
    current_week = append_time_to_week_date(this_thursday, current_week_start)
    previous_week_start = dateutils.increment(this_thursday, days=-13)
    previous_week_end = dateutils.increment(this_thursday, days=-7)
    previous_week = append_time_to_week_date(previous_week_end,previous_week_start)
    return current_week, previous_week
Example #3
0
def get_current_and_previous_week():
    this_thursday = _this_thursday().date()
    current_week_start = dateutils.increment(this_thursday, days=-6)
    current_week = append_time_to_week_date(this_thursday, current_week_start)
    previous_week_start = dateutils.increment(this_thursday, days=-13)
    previous_week_end = dateutils.increment(this_thursday, days=-7)
    previous_week = append_time_to_week_date(previous_week_end,
                                             previous_week_start)
    return current_week, previous_week
    def get_thursday(self, today):

        if today.weekday() > 3:
            today = dateutils.increment(today, days=(3 - today.weekday()))
        elif today.weekday() < 3:
            today = dateutils.increment(today, days=-(today.weekday() + 4))

        if today.hour < 8:
            today = today + timedelta(hours=(8 - today.hour))
        return today
    def get_thursday(self, today):

        if today.weekday() > 3:
            today = dateutils.increment(today, days=(3 - today.weekday()))
        elif today.weekday() < 3:
            today = dateutils.increment(today, days=-(today.weekday() + 4))

        if today.hour < 8:
            today = today + timedelta(hours=(8 - today.hour))
        return today
 def test_should_responses_for_current_term_only(self):
     settings.SCHOOL_TERM_START = dateutils.increment(datetime.now(),weeks=-16)
     settings.SCHOOL_TERM_END = dateutils.increment(datetime.now(),weeks=-4)
     term_range = [settings.SCHOOL_TERM_START,settings.SCHOOL_TERM_END]
     self.water_source_poll.start()
     self.fake_incoming('yes',self.emis_reporter1)
     self.fake_incoming('yes',self.emis_reporter2)
     self.fake_incoming('no',self.emis_reporter3)
     location_result , monthly_result,percent = get_all_responses(self.water_source_poll, [self.kampala_district], term_range)
     self.assertEqual([],location_result)
Example #7
0
 def test_should_responses_for_current_term_only(self):
     settings.SCHOOL_TERM_START = dateutils.increment(datetime.now(),
                                                      weeks=-16)
     settings.SCHOOL_TERM_END = dateutils.increment(datetime.now(),
                                                    weeks=-4)
     term_range = [settings.SCHOOL_TERM_START, settings.SCHOOL_TERM_END]
     self.water_source_poll.start()
     self.fake_incoming('yes', self.emis_reporter1)
     self.fake_incoming('yes', self.emis_reporter2)
     self.fake_incoming('no', self.emis_reporter3)
     location_result, monthly_result, percent = get_all_responses(
         self.water_source_poll, [self.kampala_district], term_range)
     self.assertEqual([], location_result)
Example #8
0
 def test_should_return_latest_reporting_date_for_record(self):
     smc = create_group('SMC')
     location = create_location('kampala', create_location_type('district'))
     emis_reporter = create_emis_reporters('reporter1',location,None,12345,smc)
     poll = create_poll_with_reporters('poll1','dummy question',Poll.TYPE_TEXT,create_user_with_group('user1'),[emis_reporter])
     responses1 = Response.objects.create(poll=poll,contact=emis_reporter)
     responses2 = Response.objects.create(poll=poll,contact=emis_reporter)
     responses3 = Response.objects.create(poll=poll,contact=emis_reporter)
     self.set_response_date(responses1,dateutils.increment(datetime.now(),weeks=-1))
     self.set_response_date(responses2,dateutils.increment(datetime.now(),weeks=-2))
     self.set_response_date(responses3,dateutils.increment(datetime.now(),weeks=-3))
     latest_date = latest(emis_reporter)
     self.assertEqual(dateutils.increment(datetime.now(),weeks=-1).date(),latest_date.date())
 def test_should_give_target_for_previous_terms(self):
     settings.FIRST_TERM_BEGINS = dateutils.increment(datetime.now(), weeks=-13)
     settings.SCHOOL_TERM_START = datetime.now()
     settings.SCHOOL_TERM_END = dateutils.increment(datetime.now(), weeks=12)
     client = Client()
     client.login(username="******", password="******")
     this_thursday = _this_thursday()
     week_start = dateutils.increment(this_thursday, weeks=-12).strftime("%d,%b,%Y")
     week_end = dateutils.increment(this_thursday, weeks=-11, days=-1).strftime("%d,%b,%Y")
     second_week_in_first_term = week_start + " to " + week_end
     response = client.post("/edtrac/dash-admin-progress/", {"choose_week_to_view": second_week_in_first_term})
     self.assertEqual("No Reports made this week", response.context["current_mode"])
     self.assertEqual(1.2, response.context["target"])
Example #10
0
    def test_should_give_proper_month_data_starting_from_today(self):
        start_date = datetime(2012, 1, 1)
        end_date = dateutils.increment(start_date, weeks=10)

        months = get_months(start_date, end_date)
        self.assertEqual(months[0][0].date(), start_date.date())
        self.assertEqual(months[-1][1].date(), end_date.date())
    def test_should_give_proper_month_data_starting_from_today(self):
        start_date = datetime(2012, 1, 1)
        end_date = dateutils.increment(start_date, weeks=10)

        months = get_months(start_date, end_date)
        self.assertEqual(months[0][0].date(), start_date.date())
        self.assertEqual(months[-1][1].date(), end_date.date())
    def handle(self, *args, **options):
    # ideally head teachers match the number of SMCs in eductrac
        book = xlwt.Workbook()
        school_dates = [getattr(settings, 'SCHOOL_TERM_START'), getattr(settings, 'SCHOOL_TERM_END')]
        first_date = school_dates[0]
        last_date = school_dates[1]
        date_bunches = []
        while first_date <= last_date:
            tmp = get_day_range(first_date)
            first_date  = tmp[0]
            date_bunches.append(get_day_range(first_date))
            first_date = dateutils.increment(first_date, weeks = 1)

        headings = ['School'] + [d.strftime("%d/%m/%Y") for d, _ in date_bunches]
        head_teacher_poll = Poll.objects.select_related().get(name = 'edtrac_head_teachers_attendance')
        enrolled_answered = EnrolledDeployedQuestionsAnswered.objects.select_related()
        district_names = enrolled_answered.values_list('school__location__name',flat=True).distinct()

        district_schools = {}
        for dn in district_names:
            district_schools[dn] = School.objects.select_related().filter(pk__in =\
                enrolled_answered.filter(school__location__name = dn).values_list('school__pk',flat=True)).order_by('name')


#TODO >>> split the head teachers in 2
#        female_head_teachers = EmisReporter.objects.filter(reporting_location__in =\
#            locations, groups__name="Head Teachers", gender='F').exclude(schools = None)
#
#        male_head_teachers = EmisReporter.objects.filter(reporting_location__in =\
#            locations, groups__name="Head Teachers", gender='M').exclude(schools = None)


        for district_name in district_schools.keys():
            container = []

            sheet = book.add_sheet(district_name, cell_overwrite_ok=True)
            rowx = 0
            for colx, val_headings in enumerate(headings):
                sheet.write(rowx, colx, val_headings)
                sheet.set_panes_frozen(True)
                sheet.set_horz_split_pos(rowx+1) # in general, freeze after last heading row
                sheet.set_remove_splits(True) # if user does unfreeze, don't leave a split there


            for school in district_schools[district_name]:
                school_vals = [school.name]
                for d_bunch in date_bunches:
                    yes_count = ResponseCategory.objects.filter(category__name = 'yes',
                        response__in=head_teacher_poll.responses.filter(date__range = d_bunch,
                        contact__emisreporter__schools = school)).count()
                    school_vals.extend([yes_count])

                container.append(school_vals)

            for row in container:
                rowx += 1
                for colx, value in enumerate(row):
                    sheet.write(rowx, colx, value)
        book.save('HeadTeacherReport.xls')
Example #13
0
 def generate_fake_responses_for_a_given_poll(self, poll):
     fake_responses = []
     kampala_responses=[]
     gulu_responses=[]
     start_date = datetime.datetime(datetime.datetime.now().year, datetime.datetime.now().month, 15)
     one_year_ago = dateutils.increment(start_date, years=-1)
     while start_date >= one_year_ago:
         self.generate_script_progress_and_session("edtrac_headteacher_violence_monthly", start_date, poll)
         values = ["1", "2", "3"]
         fake_responses.append(values)
         if (start_date.month==datetime.datetime.now().month) or (start_date.month==(datetime.datetime.now().month-1)):
             kampala_responses.append(float(values[0])+float(values[1]))
             gulu_responses.append(float(values[2]))
         self.fake_incoming_with_date(values[0], self.connection1, start_date)
         self.fake_incoming_with_date(values[1], self.connection2, start_date)
         self.fake_incoming_with_date(values[2], self.connection3, start_date)
         start_date = dateutils.increment(start_date, months=-1)
     return fake_responses,kampala_responses,gulu_responses
    def get_term_target(self, given_date):
        test_date = given_date
        week_count = 0
        temp = settings.SECOND_TERM_BEGINS

        if temp.weekday() < 3:
            temp = dateutils.increment(temp, days=(3 - temp.weekday()))
        elif temp.weekday() > 3:
            temp = dateutils.increment(temp, days=(10 - temp.weekday()))

        if settings.SECOND_TERM_BEGINS > given_date:
            temp = given_date
            test_date = settings.SECOND_TERM_BEGINS

        while temp < test_date:
            temp = dateutils.increment(temp, days=7)
            week_count += 1
        return add_offset_according_to_term_number(self.target[week_count], settings.SECOND_TERM_BEGINS)
Example #15
0
 def test_should_return_term_range_given_term_name(self):
     settings.SCHOOL_TERM_START = datetime.datetime.now()
     settings.SCHOOL_TERM_END = dateutils.increment(datetime.datetime.now(),
                                                    weeks=12)
     expected = [
         getattr(settings, 'SCHOOL_TERM_START'),
         getattr(settings, 'SCHOOL_TERM_END')
     ]
     self.assertEqual(expected, get_term_range(None))
Example #16
0
    def setUp(self):
        smc_group = create_group('SMC')
        admin_group = create_group('Admins')
        country = create_location_type("country")
        uganda_fields = {
            "rght": 15274,
            "level": 0,
            "tree_id": 1,
            "lft": 1,
            }
        self.uganda = create_location("uganda", country, **uganda_fields)
        district = create_location_type("district")
        kampala_fields = {
            "rght": 10901,
            "tree_parent": self.uganda,
            "level": 1,
            "tree_id": 1,
            "lft": 10686,
            }
        kampala_point = {
            "latitude": "0.3162800000",
            "longitude": "32.5821900000"
        }
        self.kampala_district = create_location("Kampala", district, point=kampala_point, **kampala_fields)

        self.kampala_school = create_school("St. Joseph's", self.kampala_district)
        self.head_teachers_group = create_group('Head Teachers')
        self.emis_reporter1 = create_emis_reporters("dummy1", self.kampala_district, self.kampala_school, 12345,
                                                    self.head_teachers_group)
        self.emis_reporter2 = create_emis_reporters("dummy2", self.kampala_district, self.kampala_school, 12346, self.head_teachers_group)
        self.emis_reporter3 = create_emis_reporters("dummy3", self.kampala_district, self.kampala_school, 12347, self.head_teachers_group)
        self.emis_reporter4 = create_emis_reporters("dummy4", self.kampala_district, self.kampala_school, 12348, smc_group)
        self.admin_user = create_user_with_group("John", admin_group, self.uganda)
        self.water_source_poll = create_poll_with_reporters('edtrac_water_source', "Does this school have a water source within 500 metres from the school? Answer yes or no",
                                               Poll.TYPE_TEXT, self.admin_user,
                                               [self.emis_reporter1, self.emis_reporter2, self.emis_reporter3,
                                                self.emis_reporter4])
        self.water_source_poll.add_yesno_categories()
        self.water_source_poll.save()
        today = datetime(datetime.now().year,datetime.now().month,datetime.now().day)
        settings.SCHOOL_TERM_START = dateutils.increment(today, weeks=-5)
        settings.SCHOOL_TERM_END = dateutils.increment(today,weeks=7)
        self.term_range = [settings.SCHOOL_TERM_START,settings.SCHOOL_TERM_END]
    def get_term_target(self, given_date):
        test_date = given_date
        week_count = 0
        temp = settings.SECOND_TERM_BEGINS

        if temp.weekday() < 3:
            temp = dateutils.increment(temp, days=(3 - temp.weekday()))
        elif temp.weekday() > 3:
            temp = dateutils.increment(temp, days=(10 - temp.weekday()))

        if settings.SECOND_TERM_BEGINS > given_date:
            temp = given_date
            test_date = settings.SECOND_TERM_BEGINS

        while temp < test_date:
            temp = dateutils.increment(temp, days=7)
            week_count += 1
        return add_offset_according_to_term_number(self.target[week_count],
                                                   settings.SECOND_TERM_BEGINS)
Example #18
0
    def setUp(self):
        super(TestAbsenteeismViewHelper, self).setUp()
        self.kampala_school1 = create_school("St. Joseph's", self.kampala_district)
        self.smc_group = create_group("SMC")
        self.emis_reporter5 = create_emis_reporters('Derek', self.kampala_district, self.kampala_school, 1234557,
                                                    self.smc_group)
        self.emis_reporter6 = create_emis_reporters('Peter', self.kampala_district, self.kampala_school1, 1234558,
                                                    self.smc_group)
        self.head_teachers_group = create_group("Head Teachers")
        self.emis_reporter7 = create_emis_reporters('John', self.kampala_district, self.kampala_school, 1234559,
                                                    self.head_teachers_group)
        self.emis_reporter7.gender = 'M'
        self.emis_reporter7.save()
        self.emis_reporter8 = create_emis_reporters('James', self.kampala_district, self.kampala_school1, 1234550,
                                                    self.head_teachers_group)
        self.emis_reporter8.gender = 'm'
        self.emis_reporter8.save()
        self.head_teachers_script = Script.objects.create(name='Education monitoring smc weekly script',
                                                     slug='edtrac_smc_weekly')
        self.head_teachers_poll, self.head_teachers_poll_created = Poll.objects.get_or_create(
            name='edtrac_head_teachers_attendance',
            user=self.admin_user,
            type=Poll.TYPE_TEXT,
            question='Has the head teacher been at school for at least 3 days? Answer YES or NO',
            default_response='')
        self.head_teachers_poll.add_yesno_categories()
        self.head_teachers_poll.save()
        self.head_teachers_script.steps.add(
            ScriptStep.objects.create(script=self.head_teachers_script, poll=self.head_teachers_poll, order=0,
                                      rule=ScriptStep.WAIT_MOVEON, start_offset=0, giveup_offset=86400 ))

        self.teachers_weekly_script = Script.objects.create(name='Revised P3 Teachers Weekly Script',slug='edtrac_p3_teachers_weekly')
        self.p3_boys_absent_poll.contacts.add(self.emis_reporter7)
        self.p3_boys_absent_poll.contacts.add(self.emis_reporter8)
        self.p3_boys_absent_poll.save()
        self.teachers_weekly_script.steps.add(
            ScriptStep.objects.create(script=self.teachers_weekly_script, poll=self.p3_boys_absent_poll, order=0,
                                      rule=ScriptStep.WAIT_MOVEON, start_offset=0, giveup_offset=7200 ))

        settings.SCHOOL_TERM_START = dateutils.increment(datetime.datetime.now(),weeks=-8)
        settings.SCHOOL_TERM_END = dateutils.increment(datetime.datetime.now(),weeks=1)
        self.date_week = get_week_date(4)
Example #19
0
 def generate_fake_responses_for_a_given_poll(self, poll):
     fake_responses = []
     kampala_responses = []
     gulu_responses = []
     start_date = datetime.datetime(datetime.datetime.now().year, datetime.datetime.now().month, 15)
     one_year_ago = dateutils.increment(start_date, years=-1)
     while start_date >= one_year_ago:
         self.generate_script_progress_and_session("edtrac_headteacher_violence_monthly", start_date, poll)
         values = ["1", "2", "3"]
         fake_responses.append(values)
         if (start_date.month == datetime.datetime.now().month) or (
             start_date.month == (datetime.datetime.now().month - 1)
         ):
             kampala_responses.append(float(values[0]) + float(values[1]))
             gulu_responses.append(float(values[2]))
         self.fake_incoming_with_date(values[0], self.connection1, start_date)
         self.fake_incoming_with_date(values[1], self.connection2, start_date)
         self.fake_incoming_with_date(values[2], self.connection3, start_date)
         start_date = dateutils.increment(start_date, months=-1)
     return fake_responses, kampala_responses, gulu_responses
 def test_should_give_target_for_previous_terms(self):
     settings.FIRST_TERM_BEGINS = dateutils.increment(datetime.now(),
                                                      weeks=-13)
     settings.SCHOOL_TERM_START = datetime.now()
     settings.SCHOOL_TERM_END = dateutils.increment(datetime.now(),
                                                    weeks=12)
     client = Client()
     client.login(username='******', password='******')
     this_thursday = _this_thursday()
     week_start = dateutils.increment(this_thursday,
                                      weeks=-12).strftime("%d,%b,%Y")
     week_end = dateutils.increment(this_thursday, weeks=-11,
                                    days=-1).strftime("%d,%b,%Y")
     second_week_in_first_term = week_start + " to " + week_end
     response = client.post(
         '/edtrac/dash-admin-progress/',
         {'choose_week_to_view': second_week_in_first_term})
     self.assertEqual('No Reports made this week',
                      response.context['current_mode'])
     self.assertEqual(1.2, response.context['target'])
Example #21
0
 def test_should_return_latest_reporting_date_for_record(self):
     smc = create_group('SMC')
     location = create_location('kampala', create_location_type('district'))
     emis_reporter = create_emis_reporters('reporter1', location, None,
                                           12345, smc)
     poll = create_poll_with_reporters('poll1', 'dummy question',
                                       Poll.TYPE_TEXT,
                                       create_user_with_group('user1'),
                                       [emis_reporter])
     responses1 = Response.objects.create(poll=poll, contact=emis_reporter)
     responses2 = Response.objects.create(poll=poll, contact=emis_reporter)
     responses3 = Response.objects.create(poll=poll, contact=emis_reporter)
     self.set_response_date(responses1,
                            dateutils.increment(datetime.now(), weeks=-1))
     self.set_response_date(responses2,
                            dateutils.increment(datetime.now(), weeks=-2))
     self.set_response_date(responses3,
                            dateutils.increment(datetime.now(), weeks=-3))
     latest_date = latest(emis_reporter)
     self.assertEqual(
         dateutils.increment(datetime.now(), weeks=-1).date(),
         latest_date.date())
 def test_curriculum_progress_view_for_specified_week(self):
     specified_week = self.poll_response_previous_week_date.strftime("%Y-%m-%d")
     self.reschedule()
     self.fake_incoming_with_date("5.1", self.connection1, self.poll_response_previous_week_date)
     self.fake_incoming_with_date("5.1", self.connection2, self.poll_response_previous_week_date)
     self.fake_incoming_with_date("5.1", self.connection3, self.poll_response_previous_week_date)
     client = Client()
     client.login(username="******", password="******")
     week_start = self.poll_response_previous_week_date.strftime("%d,%b,%Y")
     week_end = dateutils.increment(self.poll_response_current_week_date, weeks=-1, days=-1).strftime("%d,%b,%Y")
     week_choices = week_start + " to " + week_end
     response = client.post("/edtrac/dash-admin-progress/", {"choose_week_to_view": week_choices})
     target_value, term = self.get_term_target(self.poll_response_previous_week_date)
     self.assertEqual(target_value, response.context["target"])
     self.assertEqual("second", term)
     self.assertEqual(5.1, response.context["current_mode"][0][0])
Example #23
0
    def test_previous_week_attendance_against_current_week_attendance(self):
        schedule_script_now(grp=self.head_teacher_group.name,
                            slug=self.head_teachers_termly_script.slug)
        check_progress(self.head_teachers_termly_script)
        fake_incoming("10boys", self.emis_reporter1)
        check_progress(self.head_teachers_termly_script)
        fake_incoming("10", self.emis_reporter1)
        check_progress(self.head_teachers_termly_script)
        # previous week absenteeism script schedule
        schedule_script_now(grp=self.head_teacher_group.name,
                            slug=self.teachers_weekly_script.slug)
        check_progress(self.teachers_weekly_script)
        fake_incoming("5", self.emis_reporter1)
        check_progress(self.teachers_weekly_script)
        fake_incoming("5girls", self.emis_reporter1)
        check_progress(self.teachers_weekly_script)
        expected = 'Thankyou p3 Teacher, Attendance for boys have been improved by 50percent Attendance for girls have been improved by 50percent'
        # self.assertTrue(expected in Message.objects.filter(direction='O',connection=self.emis_reporter1.connection_set.all()[0]).values_list('text',flat=True))
        self.assertFalse(expected in Message.objects.filter(
            direction='O',
            connection=self.emis_reporter1.connection_set.all()
            [0]).values_list('text', flat=True))  #pausing feedback
        responses = Response.objects.filter(
            contact__connection=self.emis_reporter1.connection_set.all()[0],
            has_errors=False)
        poll_list = ['edtrac_boysp3_attendance', 'edtrac_girlsp3_attendance']
        this_thursday = _this_thursday().date()
        previous_week = dateutils.increment(this_thursday, days=-12)
        for resp in responses:
            if resp.poll.name in poll_list:
                resp.date = previous_week
                resp.save()
        # current week absenteeism script schedule
        schedule_script_now(grp=self.head_teacher_group.name,
                            slug=self.teachers_weekly_script.slug)
        check_progress(self.teachers_weekly_script)
        fake_incoming("6boys", self.emis_reporter1)
        check_progress(self.teachers_weekly_script)
        fake_incoming("4", self.emis_reporter1)
        check_progress(self.teachers_weekly_script)

        expected = 'Thankyou p3 Teacher, Attendance for boys have been improved by 10percent Attendance for girls have been dropped by 10percent'
        # self.assertTrue(expected in Message.objects.filter(direction='O',connection=self.emis_reporter1.connection_set.all()[0]).values_list('text',flat=True))
        self.assertFalse(expected in Message.objects.filter(
            direction='O',
            connection=self.emis_reporter1.connection_set.all()
            [0]).values_list('text', flat=True))  #pausing feedback
    def test_previous_week_attendance_against_current_week_attendance(self):
        schedule_script_now(grp = self.head_teacher_group.name, slug = self.head_teachers_termly_script.slug)
        check_progress(self.head_teachers_termly_script)
        fake_incoming("10boys", self.emis_reporter1)
        check_progress(self.head_teachers_termly_script)
        fake_incoming("10", self.emis_reporter1)
        check_progress(self.head_teachers_termly_script)
        # previous week absenteeism script schedule
        schedule_script_now(grp=self.head_teacher_group.name,slug=self.teachers_weekly_script.slug)
        check_progress(self.teachers_weekly_script)
        fake_incoming("5", self.emis_reporter1)
        check_progress(self.teachers_weekly_script)
        fake_incoming("5girls", self.emis_reporter1)
        check_progress(self.teachers_weekly_script)
        expected ='Thankyou p3 Teacher, Attendance for boys have been improved by 50percent Attendance for girls have been improved by 50percent'
        # self.assertTrue(expected in Message.objects.filter(direction='O',connection=self.emis_reporter1.connection_set.all()[0]).values_list('text',flat=True))
        self.assertFalse(expected in Message.objects.filter(direction='O',connection=self.emis_reporter1.connection_set.all()[0]).values_list('text',flat=True))#pausing feedback
        responses = Response.objects.filter(contact__connection=self.emis_reporter1.connection_set.all()[0],
                                           has_errors=False)
        poll_list = ['edtrac_boysp3_attendance','edtrac_girlsp3_attendance']
        this_thursday = _this_thursday().date()
        previous_week = dateutils.increment(this_thursday,days=-12)
        for resp in responses:
            if resp.poll.name in poll_list:
                resp.date = previous_week
                resp.save()
        # current week absenteeism script schedule
        schedule_script_now(grp=self.head_teacher_group.name,slug=self.teachers_weekly_script.slug)
        check_progress(self.teachers_weekly_script)
        fake_incoming("6boys", self.emis_reporter1)
        check_progress(self.teachers_weekly_script)
        fake_incoming("4", self.emis_reporter1)
        check_progress(self.teachers_weekly_script)

        expected ='Thankyou p3 Teacher, Attendance for boys have been improved by 10percent Attendance for girls have been dropped by 10percent'
        # self.assertTrue(expected in Message.objects.filter(direction='O',connection=self.emis_reporter1.connection_set.all()[0]).values_list('text',flat=True))
        self.assertFalse(expected in Message.objects.filter(direction='O',connection=self.emis_reporter1.connection_set.all()[0]).values_list('text',flat=True))#pausing feedback
 def test_curriculum_progress_view_for_specified_week(self):
     specified_week = self.poll_response_previous_week_date.strftime(
         "%Y-%m-%d")
     self.reschedule()
     self.fake_incoming_with_date('5.1', self.connection1,
                                  self.poll_response_previous_week_date)
     self.fake_incoming_with_date('5.1', self.connection2,
                                  self.poll_response_previous_week_date)
     self.fake_incoming_with_date('5.1', self.connection3,
                                  self.poll_response_previous_week_date)
     client = Client()
     client.login(username='******', password='******')
     week_start = self.poll_response_previous_week_date.strftime("%d,%b,%Y")
     week_end = dateutils.increment(self.poll_response_current_week_date,
                                    weeks=-1,
                                    days=-1).strftime("%d,%b,%Y")
     week_choices = week_start + " to " + week_end
     response = client.post('/edtrac/dash-admin-progress/',
                            {'choose_week_to_view': week_choices})
     target_value, term = self.get_term_target(
         self.poll_response_previous_week_date)
     self.assertEqual(target_value, response.context['target'])
     self.assertEqual('second', term)
     self.assertEqual(5.1, response.context['current_mode'][0][0])
    def handle(self, *args, **options):
        # ideally head teachers match the number of SMCs in eductrac
        book = xlwt.Workbook()
        school_dates = [
            getattr(settings, 'SCHOOL_TERM_START'),
            getattr(settings, 'SCHOOL_TERM_END')
        ]
        first_date = school_dates[0]
        last_date = school_dates[1]
        date_bunches = []
        while first_date <= last_date:
            tmp = get_day_range(first_date)
            first_date = tmp[0]
            date_bunches.append(get_day_range(first_date))
            first_date = dateutils.increment(first_date, weeks=1)

        headings = ['School'
                    ] + [d.strftime("%d/%m/%Y") for d, _ in date_bunches]
        head_teacher_poll = Poll.objects.select_related().get(
            name='edtrac_head_teachers_attendance')
        enrolled_answered = EnrolledDeployedQuestionsAnswered.objects.select_related(
        )
        district_names = enrolled_answered.values_list(
            'school__location__name', flat=True).distinct()

        district_schools = {}
        for dn in district_names:
            district_schools[dn] = School.objects.select_related().filter(pk__in =\
                enrolled_answered.filter(school__location__name = dn).values_list('school__pk',flat=True)).order_by('name')

#TODO >>> split the head teachers in 2
#        female_head_teachers = EmisReporter.objects.filter(reporting_location__in =\
#            locations, groups__name="Head Teachers", gender='F').exclude(schools = None)
#
#        male_head_teachers = EmisReporter.objects.filter(reporting_location__in =\
#            locations, groups__name="Head Teachers", gender='M').exclude(schools = None)

        for district_name in district_schools.keys():
            container = []

            sheet = book.add_sheet(district_name, cell_overwrite_ok=True)
            rowx = 0
            for colx, val_headings in enumerate(headings):
                sheet.write(rowx, colx, val_headings)
                sheet.set_panes_frozen(True)
                sheet.set_horz_split_pos(
                    rowx + 1)  # in general, freeze after last heading row
                sheet.set_remove_splits(
                    True)  # if user does unfreeze, don't leave a split there

            for school in district_schools[district_name]:
                school_vals = [school.name]
                for d_bunch in date_bunches:
                    yes_count = ResponseCategory.objects.filter(
                        category__name='yes',
                        response__in=head_teacher_poll.responses.filter(
                            date__range=d_bunch,
                            contact__emisreporter__schools=school)).count()
                    school_vals.extend([yes_count])

                container.append(school_vals)

            for row in container:
                rowx += 1
                for colx, value in enumerate(row):
                    sheet.write(rowx, colx, value)
        book.save('HeadTeacherReport.xls')
    def setUp(self):
        self.smc_group = create_group("SMC")
        country = create_location_type("country")
        uganda_fields = {
            "rght": 15274,
            "level": 0,
            "tree_id": 1,
            "lft": 1,
            }
        self.uganda = create_location("uganda", country, **uganda_fields)
        admin_group = create_group("Admins")
        self.admin_user = create_user_with_group("John", admin_group, self.uganda)
        district = create_location_type("district")
        kampala_fields = {
            "rght": 10901,
            "tree_parent": None,
            "level": 1,
            "tree_id": 1,
            "lft": 10686,
            }
        kampala_point = {
            "latitude": "0.3162800000",
            "longitude": "32.5821900000"
        }
        self.kampala_district = create_location("Kampala", district, point=kampala_point, **kampala_fields)
        self.kampala_school = create_school("St. Joseph's", self.kampala_district)
        self.head_teacher_group = create_group("Head Teachers")
        self.emis_reporter1 = create_emis_reporters("dummy1", self.kampala_district, self.kampala_school, 12345,
                                                    self.head_teacher_group)
        self.emis_reporter1.grade ='P3'
        self.emis_reporter1.save()
        self.p3_boys_absent_poll = create_poll_with_reporters("edtrac_boysp3_attendance", "How many P3 boys are at school today?",
                                                              Poll.TYPE_NUMERIC, self.admin_user,
                                                              [self.emis_reporter1])
        self.p3_girls_absent_poll = create_poll_with_reporters("edtrac_girlsp3_attendance", "How many P3 girls are at school today?",
                                                              Poll.TYPE_NUMERIC, self.admin_user,
                                                              [self.emis_reporter1])

        self.teachers_weekly_script = Script.objects.create(name='Revised P3 Teachers Weekly Script',
                                                            slug='edtrac_p3_teachers_weekly')
        self.p3_boys_attendance_step = ScriptStep.objects.create(script=self.teachers_weekly_script, poll=self.p3_boys_absent_poll,
                                                                 order=0, rule=ScriptStep.WAIT_MOVEON, start_offset=0,
                                                                 giveup_offset=2)
        self.teachers_weekly_script.steps.add(self.p3_boys_attendance_step)

        self.p3_girls_attendance_step = ScriptStep.objects.create(script=self.teachers_weekly_script, poll=self.p3_girls_absent_poll,
                                                   order=1, rule=ScriptStep.WAIT_MOVEON, start_offset=0,
                                                   giveup_offset=2)
        self.teachers_weekly_script.steps.add(self.p3_girls_attendance_step)

        self.p3_boys_enroll_poll = create_poll_with_reporters("edtrac_boysp3_enrollment", "How many boys are enrolled in P3 this term?",
                                                               Poll.TYPE_NUMERIC, self.admin_user,
                                                               [self.emis_reporter1])
        self.p3_girls_enroll_poll = create_poll_with_reporters("edtrac_girlsp3_enrollment", "How many girls are enrolled in P3 this term?",
                                                               Poll.TYPE_NUMERIC, self.admin_user,
                                                               [self.emis_reporter1])
        self.head_teachers_termly_script = Script.objects.create(name='P3 Enrollment Headteacher Termly Script',
                                                            slug='edtrac_p3_enrollment_headteacher_termly')

        self.head_teachers_termly_script.steps.add(
            ScriptStep.objects.create(script=self.head_teachers_termly_script, poll=self.p3_boys_enroll_poll, order=0,
                                      rule=ScriptStep.WAIT_MOVEON, start_offset=0, giveup_offset=7200))

        self.head_teachers_termly_script.steps.add(
            ScriptStep.objects.create(script=self.head_teachers_termly_script, poll=self.p3_girls_enroll_poll, order=1,
                                      rule=ScriptStep.WAIT_MOVEON, start_offset=0, giveup_offset=7200))
        settings.SCHOOL_TERM_START = dateutils.increment(datetime.now(),weeks=-4)
        settings.SCHOOL_TERM_END = dateutils.increment(datetime.now(),weeks=8)
 def test_should_return_week_count_between_two_dates(self):
     now = datetime(2012, 1, 1)
     four_weeks_before = dateutils.increment(now, weeks=-4)
     self.assertEqual(5, get_week_count(four_weeks_before, now))
Example #29
0
 def test_should_return_week_count_between_two_dates(self):
     now  = datetime(2012,1,1)
     four_weeks_before = dateutils.increment(now , weeks=-4)
     self.assertEqual(5, get_week_count(four_weeks_before, now ))
    def setUp(self):
        self.target = {
            1: 1.1,
            2: 1.2,
            3: 1.3,
            4: 2.1,
            5: 2.2,
            6: 2.3,
            7: 3.1,
            8: 3.2,
            9: 3.3,
            10: 4.1,
            11: 4.2,
            12: 4.3,
        }
        settings.FIRST_TERM_BEGINS = dateutils.increment(datetime.now(), weeks=-16)
        settings.SECOND_TERM_BEGINS = dateutils.increment(datetime.now(), weeks=-4)
        settings.THIRD_TERM_BEGINS = dateutils.increment(datetime.now(), weeks=8)

        settings.SCHOOL_TERM_START = settings.SECOND_TERM_BEGINS
        self.poll_response_current_week_date = self.get_thursday(datetime.today())
        self.poll_response_previous_week_date = dateutils.increment(self.poll_response_current_week_date, weeks=-2)

        ht = Group.objects.create(name="Head Teachers")
        country = LocationType.objects.create(name="country", slug="country")
        district = LocationType.objects.create(name="district", slug="district")
        uganda_fields = dict(rght=15274, name="Uganda", level=0, tree_id=1, lft=1, type=country)

        self.root_node = Location.objects.create(**uganda_fields)
        self.admin_user = create_user_with_group("John", Role.objects.create(name="Admins"), self.root_node)
        self.user = User.objects.create(username="******", password="******")

        kampala_point_fields = dict(latitude="0.3162800000", longitude="32.5821900000")
        kampala_point = Point.objects.create(**kampala_point_fields)
        kampala_fields = dict(
            rght=10901,
            tree_parent=self.root_node,
            name="Kampala",
            point=kampala_point,
            level=1,
            tree_id=1,
            lft=10686,
            type=district,
        )
        self.kampala_district = Location.objects.create(**kampala_fields)

        gulu_point_fields = dict(latitude="2.7666700000", longitude="32.3055600000")
        gulu_point = Point.objects.create(**gulu_point_fields)
        gulu_fields = dict(
            rght=9063,
            tree_parent=self.root_node,
            name="Gulu",
            point=gulu_point,
            level=1,
            tree_id=1,
            lft=8888,
            type=district,
        )
        self.gulu_district = Location.objects.create(**gulu_fields)

        self.school = School.objects.create(name="Don Bosco School", location=self.root_node)
        self.school1 = School.objects.create(name="St. Mary School", location=self.root_node)

        self.emisreporter1 = EmisReporter.objects.create(name="Reporter1", reporting_location=self.kampala_district)
        self.emisreporter1.schools.add(self.school)
        self.emisreporter1.grade = u"P3"
        self.emisreporter1.groups.add(ht)
        self.emisreporter1.save()

        self.emisreporter2 = EmisReporter.objects.create(name="Reporter2", reporting_location=self.kampala_district)
        self.emisreporter2.schools.add(self.school1)
        self.emisreporter2.grade = u"P3"
        self.emisreporter2.groups.add(ht)
        self.emisreporter2.save()

        self.emisreporter3 = EmisReporter.objects.create(name="Reporter3", reporting_location=self.gulu_district)
        self.emisreporter3.schools.add(self.school)
        self.emisreporter3.grade = u"P3"
        self.emisreporter3.groups.add(ht)
        self.emisreporter3.save()

        self.backend = Backend.objects.create(name="fake_backed")
        self.connection1 = Connection.objects.create(
            identity="02022222220", backend=self.backend, contact=self.emisreporter1
        )
        self.connection2 = Connection.objects.create(
            identity="02022222221", backend=self.backend, contact=self.emisreporter2
        )
        self.connection3 = Connection.objects.create(
            identity="02022222222", backend=self.backend, contact=self.emisreporter3
        )
        create_attribute()
        self.poll, self.poll_created = Poll.objects.get_or_create(
            name="edtrac_p3curriculum_progress",
            user=self.user,
            type=Poll.TYPE_NUMERIC,
            question="What sub theme number of the P3 Literacy curriculum are you teaching this week?",
            default_response="",
        )
        self.script = Script.objects.create(
            slug="edtrac_p3_teachers_weekly", name="Revised P3 Teachers Weekly Script", enabled=False
        )
        self.script.steps.add(
            ScriptStep.objects.get_or_create(
                script=self.script,
                poll=self.poll,
                order=0,
                rule=ScriptStep.WAIT_MOVEON,
                num_tries=1,
                start_offset=0,
                retry_offset=86400,
                giveup_offset=86400,
            )[0]
        )
 def setUp(self):
     self.today = datetime.today()
     settings.FIRST_TERM_BEGINS = dateutils.increment(self.today,weeks=-16)
     settings.SECOND_TERM_BEGINS = dateutils.increment(self.today,weeks=-4)
 def setUp(self):
     self.today = datetime.today()
     settings.FIRST_TERM_BEGINS = dateutils.increment(self.today, weeks=-16)
     settings.SECOND_TERM_BEGINS = dateutils.increment(self.today, weeks=-4)
Example #33
0
    def setUp(self):
        smc_group = create_group('SMC')
        admin_group = create_group('Admins')
        country = create_location_type("country")
        uganda_fields = {
            "rght": 15274,
            "level": 0,
            "tree_id": 1,
            "lft": 1,
        }
        self.uganda = create_location("uganda", country, **uganda_fields)
        district = create_location_type("district")
        kampala_fields = {
            "rght": 10901,
            "tree_parent": self.uganda,
            "level": 1,
            "tree_id": 1,
            "lft": 10686,
        }
        kampala_point = {
            "latitude": "0.3162800000",
            "longitude": "32.5821900000"
        }
        self.kampala_district = create_location("Kampala",
                                                district,
                                                point=kampala_point,
                                                **kampala_fields)

        self.kampala_school = create_school("St. Joseph's",
                                            self.kampala_district)
        self.head_teachers_group = create_group('Head Teachers')
        self.emis_reporter1 = create_emis_reporters("dummy1",
                                                    self.kampala_district,
                                                    self.kampala_school, 12345,
                                                    self.head_teachers_group)
        self.emis_reporter2 = create_emis_reporters("dummy2",
                                                    self.kampala_district,
                                                    self.kampala_school, 12346,
                                                    self.head_teachers_group)
        self.emis_reporter3 = create_emis_reporters("dummy3",
                                                    self.kampala_district,
                                                    self.kampala_school, 12347,
                                                    self.head_teachers_group)
        self.emis_reporter4 = create_emis_reporters("dummy4",
                                                    self.kampala_district,
                                                    self.kampala_school, 12348,
                                                    smc_group)
        self.admin_user = create_user_with_group("John", admin_group,
                                                 self.uganda)
        self.water_source_poll = create_poll_with_reporters(
            'edtrac_water_source',
            "Does this school have a water source within 500 metres from the school? Answer yes or no",
            Poll.TYPE_TEXT, self.admin_user, [
                self.emis_reporter1, self.emis_reporter2, self.emis_reporter3,
                self.emis_reporter4
            ])
        self.water_source_poll.add_yesno_categories()
        self.water_source_poll.save()
        today = datetime(datetime.now().year,
                         datetime.now().month,
                         datetime.now().day)
        settings.SCHOOL_TERM_START = dateutils.increment(today, weeks=-5)
        settings.SCHOOL_TERM_END = dateutils.increment(today, weeks=7)
        self.term_range = [
            settings.SCHOOL_TERM_START, settings.SCHOOL_TERM_END
        ]
    def setUp(self):
        self.target = {
            1: 1.1,
            2: 1.2,
            3: 1.3,
            4: 2.1,
            5: 2.2,
            6: 2.3,
            7: 3.1,
            8: 3.2,
            9: 3.3,
            10: 4.1,
            11: 4.2,
            12: 4.3
        }
        settings.FIRST_TERM_BEGINS = dateutils.increment(datetime.now(),
                                                         weeks=-16)
        settings.SECOND_TERM_BEGINS = dateutils.increment(datetime.now(),
                                                          weeks=-4)
        settings.THIRD_TERM_BEGINS = dateutils.increment(datetime.now(),
                                                         weeks=8)

        settings.SCHOOL_TERM_START = settings.SECOND_TERM_BEGINS
        self.poll_response_current_week_date = self.get_thursday(
            datetime.today())
        self.poll_response_previous_week_date = dateutils.increment(
            self.poll_response_current_week_date, weeks=-2)

        ht = Group.objects.create(name='Head Teachers')
        country = LocationType.objects.create(name='country', slug='country')
        district = LocationType.objects.create(name='district',
                                               slug='district')
        uganda_fields = dict(rght=15274,
                             name="Uganda",
                             level=0,
                             tree_id=1,
                             lft=1,
                             type=country)

        self.root_node = Location.objects.create(**uganda_fields)
        self.admin_user = create_user_with_group(
            "John", Role.objects.create(name="Admins"), self.root_node)
        self.user = User.objects.create(username="******", password="******")

        kampala_point_fields = dict(latitude="0.3162800000",
                                    longitude="32.5821900000")
        kampala_point = Point.objects.create(**kampala_point_fields)
        kampala_fields = dict(rght=10901,
                              tree_parent=self.root_node,
                              name="Kampala",
                              point=kampala_point,
                              level=1,
                              tree_id=1,
                              lft=10686,
                              type=district)
        self.kampala_district = Location.objects.create(**kampala_fields)

        gulu_point_fields = dict(latitude="2.7666700000",
                                 longitude="32.3055600000")
        gulu_point = Point.objects.create(**gulu_point_fields)
        gulu_fields = dict(rght=9063,
                           tree_parent=self.root_node,
                           name="Gulu",
                           point=gulu_point,
                           level=1,
                           tree_id=1,
                           lft=8888,
                           type=district)
        self.gulu_district = Location.objects.create(**gulu_fields)

        self.school = School.objects.create(name="Don Bosco School",
                                            location=self.root_node)
        self.school1 = School.objects.create(name="St. Mary School",
                                             location=self.root_node)

        self.emisreporter1 = EmisReporter.objects.create(
            name="Reporter1", reporting_location=self.kampala_district)
        self.emisreporter1.schools.add(self.school)
        self.emisreporter1.grade = u'P3'
        self.emisreporter1.groups.add(ht)
        self.emisreporter1.save()

        self.emisreporter2 = EmisReporter.objects.create(
            name="Reporter2", reporting_location=self.kampala_district)
        self.emisreporter2.schools.add(self.school1)
        self.emisreporter2.grade = u'P3'
        self.emisreporter2.groups.add(ht)
        self.emisreporter2.save()

        self.emisreporter3 = EmisReporter.objects.create(
            name="Reporter3", reporting_location=self.gulu_district)
        self.emisreporter3.schools.add(self.school)
        self.emisreporter3.grade = u'P3'
        self.emisreporter3.groups.add(ht)
        self.emisreporter3.save()

        self.backend = Backend.objects.create(name='fake_backed')
        self.connection1 = Connection.objects.create(
            identity="02022222220",
            backend=self.backend,
            contact=self.emisreporter1)
        self.connection2 = Connection.objects.create(
            identity="02022222221",
            backend=self.backend,
            contact=self.emisreporter2)
        self.connection3 = Connection.objects.create(
            identity="02022222222",
            backend=self.backend,
            contact=self.emisreporter3)
        create_attribute()
        self.poll, self.poll_created = Poll.objects.get_or_create(
            name='edtrac_p3curriculum_progress',
            user=self.user,
            type=Poll.TYPE_NUMERIC,
            question=
            'What sub theme number of the P3 Literacy curriculum are you teaching this week?',
            default_response='')
        self.script = Script.objects.create(
            slug="edtrac_p3_teachers_weekly",
            name="Revised P3 Teachers Weekly Script",
            enabled=False)
        self.script.steps.add(
            ScriptStep.objects.get_or_create(
                script=self.script,
                poll=self.poll,
                order=0,
                rule=ScriptStep.WAIT_MOVEON,
                num_tries=1,
                start_offset=0,
                retry_offset=86400,
                giveup_offset=86400,
            )[0])
    def setUp(self):
        country = create_location_type("country")
        uganda_fields = {
            "rght": 15274,
            "level": 0,
            "tree_id": 1,
            "lft": 1,
        }
        self.uganda = create_location("uganda", country, **uganda_fields)
        admin_group = create_group("Admins")
        self.smc_group = create_group("SMC")
        self.admin_user = create_user_with_group("John", admin_group, self.uganda)

        district = create_location_type("district")
        kampala_fields = {
            "rght": 10901,
            "tree_parent": self.uganda,
            "level": 1,
            "tree_id": 1,
            "lft": 10686,
            }
        kampala_point = {
            "latitude": "0.3162800000",
            "longitude": "32.5821900000"
        }
        self.kampala_district = create_location("Kampala", district, point=kampala_point, **kampala_fields)
        self.kampala_school = create_school("St. Joseph's", self.kampala_district)
        self.head_teacher_group = create_group("Head Teachers")
        self.emis_reporter1 = create_emis_reporters("dummy1", self.kampala_district, self.kampala_school, 12345,
                                                    self.head_teacher_group)
        self.emis_reporter1.grade ='P3'
        self.emis_reporter1.save()
        self.emis_reporter2 = create_emis_reporters("dummy2", self.kampala_district, self.kampala_school, 12346,
                                                    self.head_teacher_group)
        self.emis_reporter2.grade ='P3'
        self.emis_reporter2.save()

        self.emis_reporter3 = create_emis_reporters("dummy1", self.kampala_district, self.kampala_school, 12347,
                                                    self.smc_group)

        self.p3_boys_absent_poll = create_poll_with_reporters("edtrac_boysp3_attendance", "How many P3 boys are at school today?",
                                                              Poll.TYPE_NUMERIC, self.admin_user,
                                                              [self.emis_reporter1, self.emis_reporter2])
        self.p3_girls_absent_poll = create_poll_with_reporters("edtrac_girlsp3_attendance", "How many P3 girls are at school today?",
                                                              Poll.TYPE_NUMERIC, self.admin_user,
                                                              [self.emis_reporter1, self.emis_reporter2])

        self.teachers_weekly_script = Script.objects.create(name='Revised P3 Teachers Weekly Script',
                                            slug='edtrac_p3_teachers_weekly')
        self.p3_boys_attendance_step = ScriptStep.objects.create(script=self.teachers_weekly_script, poll=self.p3_boys_absent_poll,
                                                   order=0, rule=ScriptStep.WAIT_MOVEON, start_offset=0,
                                                   giveup_offset=2)
        self.teachers_weekly_script.steps.add(
            self.p3_boys_attendance_step)
        self.p3_girls_attendance_step = ScriptStep.objects.create(script=self.teachers_weekly_script, poll=self.p3_girls_absent_poll,
                                                   order=1, rule=ScriptStep.WAIT_MOVEON, start_offset=0,
                                                   giveup_offset=2)
        self.teachers_weekly_script.steps.add(
            self.p3_girls_attendance_step)

        self.p3_boys_enroll_poll = create_poll_with_reporters("edtrac_boysp3_enrollment", "How many boys are enrolled in P3 this term?",
                                                               Poll.TYPE_NUMERIC, self.admin_user,
                                                               [self.emis_reporter1])
        self.p3_girls_enroll_poll = create_poll_with_reporters("edtrac_girlsp3_enrollment", "How many girls are enrolled in P3 this term?",
                                                               Poll.TYPE_NUMERIC, self.admin_user,
                                                               [self.emis_reporter1])

        self.head_teachers_termly_script = Script.objects.create(name='P3 Enrollment Headteacher Termly Script',
                                                            slug='edtrac_p3_enrollment_headteacher_termly')
        self.head_teachers_termly_script.steps.add(
            ScriptStep.objects.create(script=self.head_teachers_termly_script, poll=self.p3_boys_enroll_poll, order=0,
                                      rule=ScriptStep.WAIT_MOVEON, start_offset=0, giveup_offset=7200 ))

        self.head_teachers_termly_script.steps.add(
            ScriptStep.objects.create(script=self.head_teachers_termly_script, poll=self.p3_girls_enroll_poll, order=1,
                                      rule=ScriptStep.WAIT_MOVEON, start_offset=0, giveup_offset=7200 ))


        self.head_teacher_poll = create_poll_with_reporters("edtrac_head_teachers_attendance", "Has the head teacher been at school for at least 3 days? Answer YES or NO",
                                                               Poll.TYPE_TEXT, self.admin_user,
                                                               [self.emis_reporter3])
        self.head_teacher_poll.add_yesno_categories()
        self.head_teacher_poll.save()
        self.smc_weekly_script = Script.objects.create(name='Education monitoring smc weekly script',
                                                                 slug='edtrac_smc_weekly')
        self.smc_weekly_script.steps.add(
            ScriptStep.objects.create(script=self.smc_weekly_script, poll=self.head_teacher_poll, order=0,
                                      rule=ScriptStep.WAIT_MOVEON, start_offset=0, giveup_offset=7200 ))

        self.head_teachers_weekly_script = Script.objects.create(name = "Teachers weekly attendance script",
                                                            slug = 'edtrac_head_teachers_weekly')
        self.male_teachers_attendance_poll = create_poll_with_reporters(
            "edtrac_m_teachers_attendance", "How many male teachers were in school this week?",
            Poll.TYPE_NUMERIC, self.admin_user, [self.emis_reporter1])

        self.female_teachers_attendance_poll = create_poll_with_reporters(
            "edtrac_f_teachers_attendance", "How many female teachers were in school this week?",
            Poll.TYPE_NUMERIC, self.admin_user, [self.emis_reporter1])

        self.male_teacher_deployment_poll = create_poll_with_reporters(
            "edtrac_m_teachers_deployment", "How many male teachers were deployed in school this term?",
            Poll.TYPE_NUMERIC, self.admin_user, [self.emis_reporter1])


        self.female_teacher_deployment_poll = create_poll_with_reporters(
            "edtrac_f_teachers_deployment", "How many female teachers were deployed this term?",
            Poll.TYPE_NUMERIC, self.admin_user, [self.emis_reporter1])

        self.head_teachers_weekly_script.steps.add(
            ScriptStep.objects.create(script=self.head_teachers_weekly_script, poll=self.female_teacher_deployment_poll,
                order=0, rule=ScriptStep.WAIT_MOVEON, start_offset=0, giveup_offset=1)
        )

        self.head_teachers_weekly_script.steps.add(
            ScriptStep.objects.create(script=self.head_teachers_weekly_script, poll=self.male_teacher_deployment_poll,
                order=1, rule=ScriptStep.WAIT_MOVEON, start_offset=0, giveup_offset=1)
        )

        self.head_teachers_weekly_script.steps.add(
            ScriptStep.objects.create(script=self.head_teachers_weekly_script, poll=self.female_teachers_attendance_poll,
                order=2, rule=ScriptStep.WAIT_MOVEON, start_offset=0, giveup_offset=1)
        )

        self.male_teacher_step = ScriptStep.objects.create(script=self.head_teachers_weekly_script,
                                                           poll=self.male_teachers_attendance_poll, order=3, rule=ScriptStep.WAIT_MOVEON, start_offset=0, giveup_offset=1)
        self.head_teachers_weekly_script.steps.add(
            self.male_teacher_step
        )


        settings.SCHOOL_TERM_START = dateutils.increment(datetime.today(),weeks=-4)
        settings.SCHOOL_TERM_END = dateutils.increment(datetime.today(),weeks=8)
Example #36
0
def in_term(start,given_date):
    if start <= given_date <= dateutils.increment(start,weeks=12):
        return True
    return False
    def setUp(self):
        country = create_location_type("country")
        uganda_fields = {
            "rght": 15274,
            "level": 0,
            "tree_id": 1,
            "lft": 1,
        }
        self.uganda = create_location("uganda", country, **uganda_fields)
        admin_group = create_group("Admins")
        self.admin_user = create_user_with_group("John", admin_group,
                                                 self.uganda)

        district = create_location_type("district")
        kampala_fields = {
            "rght": 10901,
            "tree_parent": self.uganda,
            "level": 1,
            "tree_id": 1,
            "lft": 10686,
        }
        kampala_point = {
            "latitude": "0.3162800000",
            "longitude": "32.5821900000"
        }
        self.kampala_district = create_location("Kampala",
                                                district,
                                                point=kampala_point,
                                                **kampala_fields)
        self.kampala_school = create_school("St. Joseph's",
                                            self.kampala_district)
        self.head_teacher_group = create_group("Head Teachers")
        self.emis_reporter1 = create_emis_reporters("dummy1",
                                                    self.kampala_district,
                                                    self.kampala_school, 12345,
                                                    self.head_teacher_group)
        self.emis_reporter1.grade = 'P6'
        self.emis_reporter1.save()
        self.emis_reporter2 = create_emis_reporters("dummy2",
                                                    self.kampala_district,
                                                    self.kampala_school, 12346,
                                                    self.head_teacher_group)
        self.emis_reporter2.grade = 'P6'
        self.emis_reporter2.save()

        self.p6_boys_absent_poll = create_poll_with_reporters(
            "edtrac_boysp6_attendance",
            "How many P6 boys are at school today?", Poll.TYPE_NUMERIC,
            self.admin_user, [self.emis_reporter1, self.emis_reporter2])
        self.p6_girls_absent_poll = create_poll_with_reporters(
            "edtrac_girlsp6_attendance",
            "How many P6 girls are at school today?", Poll.TYPE_NUMERIC,
            self.admin_user, [self.emis_reporter1, self.emis_reporter2])

        self.teachers_weekly_script = Script.objects.create(
            name='Revised P6 Teachers Weekly Script',
            slug='edtrac_p6_teachers_weekly')
        self.p6_boys_attendance_step = ScriptStep.objects.create(
            script=self.teachers_weekly_script,
            poll=self.p6_boys_absent_poll,
            order=0,
            rule=ScriptStep.WAIT_MOVEON,
            start_offset=0,
            giveup_offset=7200)
        self.teachers_weekly_script.steps.add(self.p6_boys_attendance_step)
        self.p6_girls_attendance_step = ScriptStep.objects.create(
            script=self.teachers_weekly_script,
            poll=self.p6_girls_absent_poll,
            order=1,
            rule=ScriptStep.WAIT_MOVEON,
            start_offset=0,
            giveup_offset=7200)
        self.teachers_weekly_script.steps.add(self.p6_girls_attendance_step)
        self.p6_boys_enroll_poll = create_poll_with_reporters(
            "edtrac_boysp6_enrollment",
            "How many boys are enrolled in P6 this term?", Poll.TYPE_NUMERIC,
            self.admin_user, [self.emis_reporter1])
        self.p6_girls_enroll_poll = create_poll_with_reporters(
            "edtrac_girlsp6_enrollment",
            "How many girls are enrolled in P6 this term?", Poll.TYPE_NUMERIC,
            self.admin_user, [self.emis_reporter1])

        self.head_teachers_termly_script = Script.objects.create(
            name='P6 Enrollment Headteacher Termly Script',
            slug='edtrac_p6_enrollment_headteacher_termly')
        self.head_teachers_termly_script.steps.add(
            ScriptStep.objects.create(script=self.head_teachers_termly_script,
                                      poll=self.p6_boys_enroll_poll,
                                      order=0,
                                      rule=ScriptStep.WAIT_MOVEON,
                                      start_offset=0,
                                      giveup_offset=7200))

        self.head_teachers_termly_script.steps.add(
            ScriptStep.objects.create(script=self.head_teachers_termly_script,
                                      poll=self.p6_girls_enroll_poll,
                                      order=1,
                                      rule=ScriptStep.WAIT_MOVEON,
                                      start_offset=0,
                                      giveup_offset=7200))
        settings.SCHOOL_TERM_START = dateutils.increment(
            datetime.datetime.today(), weeks=-4)
        settings.SCHOOL_TERM_END = dateutils.increment(
            datetime.datetime.today(), weeks=8)
 def test_should_return_target_value_for_given_date_in_second_term(self):
     settings.SCHOOL_TERM_START = dateutils.increment(self.today, weeks=-4)
     target_value = get_target_value(self.today)
     self.assertEqual(6.2, target_value[0])
Example #39
0
 def set_weekly_date(self, responses):
     today = datetime.datetime.now()
     i=-1
     for response in responses:
         self.set_date(dateutils.increment(today,weeks=i), response)
         i -= 1
 def test_should_return_target_value_for_given_date_in_second_term(self):
     settings.SCHOOL_TERM_START = dateutils.increment(self.today,weeks=-4)
     target_value = get_target_value(self.today)
     self.assertEqual(6.2,target_value[0])
 def test_should_return_term_range_given_term_name(self):
     settings.SCHOOL_TERM_START = datetime.datetime.now()
     settings.SCHOOL_TERM_END = dateutils.increment(datetime.datetime.now(),weeks=12)
     expected = [getattr(settings,'SCHOOL_TERM_START'),getattr(settings,'SCHOOL_TERM_END')]
     self.assertEqual(expected,get_term_range(None))
Example #42
0
    def setUp(self):
        time = datetime(2012, 05, 8)
        self.get_time = lambda: time
        settings.SCHOOL_TERM_START = dateutils.increment(time, weeks=-2)
        settings.SCHOOL_TERM_END = dateutils.increment(time, weeks=2)

        self.poll_response_current_week_date = dateutils.increment(time,
                                                                   weeks=-1)
        self.poll_response_past_week_date = dateutils.increment(time)

        htg = Group.objects.create(name='Head Teachers')
        country = LocationType.objects.create(name='country', slug='country')
        district = LocationType.objects.create(name='district',
                                               slug='district')
        uganda_fields = dict(rght=15274,
                             name="Uganda",
                             level=0,
                             tree_id=1,
                             lft=1,
                             type=country)

        self.root_node = Location.objects.create(**uganda_fields)
        self.admin_user = create_user_with_group(
            "John", Role.objects.create(name="Admins"), self.root_node)
        self.user = User.objects.create(username="******", password="******")

        kampala_point_fields = dict(latitude="0.3162800000",
                                    longitude="32.5821900000")
        kampala_point = Point.objects.create(**kampala_point_fields)
        kampala_fields = dict(rght=10901,
                              tree_parent=self.root_node,
                              name="Kampala",
                              point=kampala_point,
                              level=1,
                              tree_id=1,
                              lft=10686,
                              type=district)
        self.kampala_district = Location.objects.create(**kampala_fields)

        gulu_point_fields = dict(latitude="2.7666700000",
                                 longitude="32.3055600000")
        gulu_point = Point.objects.create(**gulu_point_fields)
        gulu_fields = dict(rght=9063,
                           tree_parent=self.root_node,
                           name="Gulu",
                           point=gulu_point,
                           level=1,
                           tree_id=1,
                           lft=8888,
                           type=district)
        self.gulu_district = Location.objects.create(**gulu_fields)

        self.school = School.objects.create(name="Don Bosco School",
                                            location=self.root_node)
        self.school1 = School.objects.create(name="St. Mary School",
                                             location=self.root_node)

        self.emisreporter1 = EmisReporter.objects.create(
            name="Reporter1", reporting_location=self.kampala_district)
        self.emisreporter1.schools.add(self.school)
        self.emisreporter1.groups.add(htg)
        self.emisreporter1.gender = "F"
        self.emisreporter1.save()

        self.emisreporter2 = EmisReporter.objects.create(
            name="Reporter2", reporting_location=self.kampala_district)
        self.emisreporter2.schools.add(self.school1)
        self.emisreporter2.groups.add(htg)
        self.emisreporter2.gender = "M"
        self.emisreporter2.save()

        self.emisreporter3 = EmisReporter.objects.create(
            name="Reporter3", reporting_location=self.gulu_district)
        self.emisreporter3.schools.add(self.school)
        self.emisreporter3.groups.add(htg)
        self.emisreporter3.gender = "F"
        self.emisreporter3.save()

        self.backend = Backend.objects.create(name='fake_backed')
        self.connection1 = Connection.objects.create(
            identity="02022222220",
            backend=self.backend,
            contact=self.emisreporter1)
        self.connection2 = Connection.objects.create(
            identity="02022222221",
            backend=self.backend,
            contact=self.emisreporter2)
        self.connection3 = Connection.objects.create(
            identity="02022222222",
            backend=self.backend,
            contact=self.emisreporter3)
        create_attribute()
Example #43
0
    def setUp(self):
        country = create_location_type("country")
        uganda_fields = {
            "rght": 15274,
            "level": 0,
            "tree_id": 1,
            "lft": 1,
        }
        self.uganda = create_location("uganda", country, **uganda_fields)
        admin_group = create_group("Admins")
        self.smc_group = create_group("SMC")
        self.admin_user = create_user_with_group("John", admin_group,
                                                 self.uganda)

        district = create_location_type("district")
        kampala_fields = {
            "rght": 10901,
            "tree_parent": self.uganda,
            "level": 1,
            "tree_id": 1,
            "lft": 10686,
        }
        kampala_point = {
            "latitude": "0.3162800000",
            "longitude": "32.5821900000"
        }
        self.kampala_district = create_location("Kampala",
                                                district,
                                                point=kampala_point,
                                                **kampala_fields)
        self.kampala_school = create_school("St. Joseph's",
                                            self.kampala_district)
        self.kampala_school_lubaga = create_school("UMHS Lubaga",
                                                   self.kampala_district)
        self.head_teacher_group = create_group("Head Teachers")
        self.emis_reporter1 = create_emis_reporters("dummy1",
                                                    self.kampala_district,
                                                    self.kampala_school, 12345,
                                                    self.head_teacher_group)
        self.emis_reporter1.grade = 'P3'
        self.emis_reporter1.gender = 'M'
        self.emis_reporter1.save()
        self.emis_reporter2 = create_emis_reporters("dummy2",
                                                    self.kampala_district,
                                                    self.kampala_school, 12346,
                                                    self.head_teacher_group)

        self.emis_reporter2.grade = 'P3'
        self.emis_reporter2.gender = 'M'
        self.emis_reporter2.save()

        self.emis_reporter3 = create_emis_reporters("dummy1",
                                                    self.kampala_district,
                                                    self.kampala_school, 12347,
                                                    self.smc_group)
        self.emis_reporter3.gender = 'F'
        self.emis_reporter3.save()

        self.p3_boys_absent_poll = create_poll_with_reporters(
            "edtrac_boysp3_attendance",
            "How many P3 boys are at school today?", Poll.TYPE_NUMERIC,
            self.admin_user, [self.emis_reporter1, self.emis_reporter2])
        self.p3_girls_absent_poll = create_poll_with_reporters(
            "edtrac_girlsp3_attendance",
            "How many P3 girls are at school today?", Poll.TYPE_NUMERIC,
            self.admin_user, [self.emis_reporter1, self.emis_reporter2])

        self.p3_boys_enroll_poll = create_poll_with_reporters(
            "edtrac_boysp3_enrollment",
            "How many boys are enrolled in P3 this term?", Poll.TYPE_NUMERIC,
            self.admin_user, [self.emis_reporter1])
        self.p3_girls_enroll_poll = create_poll_with_reporters(
            "edtrac_girlsp3_enrollment",
            "How many girls are enrolled in P3 this term?", Poll.TYPE_NUMERIC,
            self.admin_user, [self.emis_reporter1])
        self.head_teacher_monitoring_poll = create_poll_with_reporters(
            "edtrac_head_teachers_attendance",
            "Has the head teacher been at school for at least 3 days? Answer YES or NO",
            Poll.TYPE_TEXT, self.admin_user, [self.emis_reporter3])
        self.teachers_weekly_script = Script.objects.create(
            name='Revised P3 Teachers Weekly Script',
            slug='edtrac_p3_teachers_weekly')

        self.p3_boys_attendance_step = ScriptStep.objects.create(
            script=self.teachers_weekly_script,
            poll=self.p3_boys_absent_poll,
            order=0,
            rule=ScriptStep.WAIT_MOVEON,
            start_offset=0,
            giveup_offset=2)
        self.teachers_weekly_script.steps.add(self.p3_boys_attendance_step)

        self.p3_girls_attendance_step = ScriptStep.objects.create(
            script=self.teachers_weekly_script,
            poll=self.p3_girls_absent_poll,
            order=1,
            rule=ScriptStep.WAIT_MOVEON,
            start_offset=0,
            giveup_offset=2)
        self.teachers_weekly_script.steps.add(self.p3_girls_attendance_step)

        self.head_teachers_termly_script = Script.objects.create(
            name='P3 Enrollment Headteacher Termly Script',
            slug='edtrac_p3_enrollment_headteacher_termly')
        self.head_teacher_weekly_script = Script.objects.create(
            name='Education monitoring smc weekly script',
            slug='edtrac_education_monitoring_smc_weekly_script')
        self.head_teachers_termly_script.steps.add(
            ScriptStep.objects.create(script=self.head_teachers_termly_script,
                                      poll=self.p3_boys_enroll_poll,
                                      order=0,
                                      rule=ScriptStep.WAIT_MOVEON,
                                      start_offset=0,
                                      giveup_offset=7200))

        self.head_teachers_termly_script.steps.add(
            ScriptStep.objects.create(script=self.head_teachers_termly_script,
                                      poll=self.p3_girls_enroll_poll,
                                      order=1,
                                      rule=ScriptStep.WAIT_MOVEON,
                                      start_offset=0,
                                      giveup_offset=7200))
        self.head_teacher_weekly_script.steps.add(
            ScriptStep.objects.create(script=self.head_teacher_weekly_script,
                                      poll=self.head_teacher_monitoring_poll,
                                      order=0,
                                      rule=ScriptStep.WAIT_MOVEON,
                                      start_offset=0,
                                      giveup_offset=7200))

        settings.SCHOOL_TERM_START = dateutils.increment(
            datetime.datetime.today(), weeks=-4)
        settings.SCHOOL_TERM_END = dateutils.increment(
            datetime.datetime.today(), weeks=8)
        self.term_range = [
            getattr(settings, 'SCHOOL_TERM_START'),
            getattr(settings, 'SCHOOL_TERM_END')
        ]

        create_attribute()