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()
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_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 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)
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)
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"])
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')
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)
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))
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): 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)
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'])
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])
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))
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)
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)
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])
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))
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()
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()