示例#1
0
 def test_recalculate_results(self):
     util.rebuild_denorm_models(
         [self.objs.teams.last_year, self.objs.teams.other_subsidiary])
     queryset = models.UserAttendance.objects.all()
     actions.recalculate_results(self.modeladmin, self.request, queryset)
     message = get_messages(self.request)._queued_messages[0].message
     self.assertEqual(str(message), "Výsledky přepočítány")
示例#2
0
 def test_admin_draw_results_fq_lb(self):
     models.Payment.objects.create(
         user_attendance_id=self.objs.userattendances.userattendance2.pk,
         status=models.Status.DONE,
         amount=1,
     )
     models.Payment.objects.create(
         user_attendance_id=self.objs.userattendances.registered.pk,
         status=models.Status.DONE,
         amount=1,
     )
     util.rebuild_denorm_models(
         models.UserAttendance.objects.filter(id__in=[
             self.objs.userattendances.userattendance2.pk,
             self.objs.userattendances.registered.pk,
         ], ), )
     competition = models.Competition.objects.get(slug="FQ-LB")
     cr = models.CompetitionResult.objects.get(
         team_id=self.objs.teams.basic.pk, competition=competition)
     cr.result = 0.8
     cr.save()
     address = reverse("admin_draw_results",
                       kwargs={"competition_slug": "FQ-LB"})
     response = self.client.get(address)
     self.assertContains(
         response,
         "Testing team 1 z organizace Testing company",
     )
     self.assertContains(
         response,
         "pravidelnost jízd 80 %",
     )
     self.assertContains(
         response,
         "      <ul>"
         "         <li>"
         "            Testing User: "******"         </li>"
         "      </ul>",
         html=True,
     )
     self.assertContains(
         response,
         "      <ul>"
         "         <li>"
         "            Testing User 1: "
         "         </li>"
         "      </ul>",
         html=True,
     )
     self.assertContains(
         response,
         "   "
         "      <ul>"
         "         <li>"
         "            Registered User 1: "
         "         </li>"
         "      </ul>",
         html=True,
     )
示例#3
0
 def test_touch_items_user_attendance(self):
     util.rebuild_denorm_models(models.Team.objects.filter(pk__in=[2, 3]))
     queryset = models.UserAttendance.objects.all()
     actions.touch_items(self.modeladmin, self.request, queryset)
     message = get_messages(self.request)._queued_messages[0].message
     self.assertEquals(
         str(message),
         "Obnova 8 denormalizovaných položek byla zadána ke zpracování")
示例#4
0
 def setUp(self):
     super().setUp()
     self.client = APIClient(HTTP_HOST="testing-campaign.testserver",
                             HTTP_REFERER="test-referer")
     self.client.force_login(User.objects.get(pk=1128),
                             settings.AUTHENTICATION_BACKENDS[0])
     util.rebuild_denorm_models(Team.objects.filter(pk=1))
     util.rebuild_denorm_models(UserAttendance.objects.filter(pk=1115))
示例#5
0
 def setUp(self):
     self.client = Client(HTTP_HOST="testing-campaign.testserver")
     self.client.force_login(User.objects.get(username='******'),
                             settings.AUTHENTICATION_BACKENDS[0])
     util.rebuild_denorm_models(
         models.UserAttendance.objects.filter(pk__in=[1115, 2115, 1015]))
     util.rebuild_denorm_models(Team.objects.filter(pk=1))
     self.user_attendance = UserAttendance.objects.filter(pk=1115)
示例#6
0
 def test_payment_unknown_none(self):
     models.Payment.objects.all().delete()
     util.rebuild_denorm_models(models.Team.objects.filter(pk__in=[1, 3]))
     util.rebuild_denorm_models(models.UserAttendance.objects.filter(pk=1016))
     user = models.UserAttendance.objects.get(pk=1016)
     self.assertEqual(user.payment_status, "none")
     self.assertEqual(user.representative_payment, None)
     self.assertEqual(user.payment_class(), "error")
     self.assertEqual(str(user.get_payment_status_display()), "žádné platby")
示例#7
0
 def test_touch_items_user_attendance(self):
     util.rebuild_denorm_models(
         [self.objs.teams.last_year, self.objs.teams.other_subsidiary])
     queryset = models.UserAttendance.objects.all()
     actions.touch_items(self.modeladmin, self.request, queryset)
     message = get_messages(self.request)._queued_messages[0].message
     self.assertEqual(
         str(message),
         "Obnova 8 denormalizovaných položek byla zadána ke zpracování")
示例#8
0
 def setUp(self):
     PriceLevelRecipe.make()
     self.user_attendance = UserAttendancePaidRecipe.make(
         approved_for_team='approved')
     util.rebuild_denorm_models([self.user_attendance])
     util.rebuild_denorm_models([self.user_attendance.team])
     self.user_attendance.refresh_from_db()
     self.user_attendance.team.refresh_from_db()
     ContentType.objects.clear_cache(
     )  # https://groups.google.com/forum/#!topic/django-users/g88m9u8-ozs
示例#9
0
 def test_approve_am_payment(self):
     self.objs.payments.done_bill_ua2115.delete()
     util.rebuild_denorm_models([self.objs.userattendances.registered])
     queryset = models.UserAttendance.objects.all()
     payment = self.objs.payments.new_bill_2014
     self.assertEqual(payment.status, 1)
     actions.approve_am_payment(self.modeladmin, self.request, queryset)
     payment = models.Payment.objects.get(pk=self.objs.payments.new_bill_2014.pk)
     self.assertEqual(payment.status, 99)
     message = get_messages(self.request)._queued_messages[0].message
     self.assertEqual(str(message), "Platby potvrzeny")
示例#10
0
 def setUp(self):
     self.modeladmin = admin.ModelAdmin(models.UserAttendance, "")
     self.factory = RequestFactory()
     self.request = self.factory.get("")
     self.request.subdomain = "testing-campaign"
     self.request.user = models.User.objects.get(username="******")
     setattr(self.request, 'session', 'session')
     self.messages = FallbackStorage(self.request)
     setattr(self.request, '_messages', self.messages)
     call_command('denorm_init')
     util.rebuild_denorm_models(models.Team.objects.filter(pk=1))
示例#11
0
 def test_approve_am_payment(self):
     models.Payment.objects.get(pk=17).delete()
     util.rebuild_denorm_models(
         models.UserAttendance.objects.filter(pk=2115))
     queryset = models.UserAttendance.objects.all()
     payment = models.Payment.objects.get(pk=5)
     self.assertEquals(payment.status, 1)
     actions.approve_am_payment(self.modeladmin, self.request, queryset)
     payment = models.Payment.objects.get(pk=5)
     self.assertEquals(payment.status, 99)
     message = get_messages(self.request)._queued_messages[0].message
     self.assertEquals(str(message), "Platby potvrzeny")
示例#12
0
 def test_admin_draw_results_fq_lb_not_all_paying(self):
     models.Payment.objects.all().delete()
     util.rebuild_denorm_models(
         models.UserAttendance.objects.filter(id__in=[1115, 1015, 2115]))
     competition = models.Competition.objects.get(slug="FQ-LB")
     cr = models.CompetitionResult.objects.get(team_id=1,
                                               competition=competition)
     cr.result = 0.8
     cr.save()
     address = reverse('admin_draw_results',
                       kwargs={'competition_slug': "FQ-LB"})
     response = self.client.get(address)
     self.assertContains(response,
                         "Tato soutěž nemá žádné týmy splňující kritéria")
示例#13
0
 def test_admin_questionnaire_answers_no_permission(self):
     util.rebuild_denorm_models(
         models.UserAttendance.objects.filter(pk=2115))
     competition = models.Competition.objects.filter(slug="FQ-LB")
     competition.get().recalculate_results()
     cr = models.CompetitionResult.objects.get(
         competition=competition.get())
     address = "%s?uid=%s" % (reverse('admin_questionnaire_answers',
                                      kwargs={'competition_slug': "FQ-LB"
                                              }), cr.id)
     response = self.client.get(address)
     self.assertContains(
         response,
         "Soutěž je vypsána ve městě, pro které nemáte oprávnění.")
示例#14
0
    def test_get_userprofile_frequency(self):
        competition = mommy.make(
            'Competition',
            competition_type='frequency',
            competitor_type='team',
            campaign=self.testing_campaign,
            date_from=datetime.date(2017, 4, 3),
            date_to=datetime.date(2017, 5, 23),
            commute_modes=models.CommuteMode.objects.filter(
                slug__in=('bicycle', 'by_foot')),
        )

        util.rebuild_denorm_models([self.user_attendance])
        self.user_attendance.refresh_from_db()
        self.user_attendance.team.refresh_from_db()

        result = self.user_attendance.get_rides_count_denorm
        self.assertEquals(result, 3)

        result = self.user_attendance.get_working_rides_base_count()
        self.assertEquals(result, 48)

        result = self.user_attendance.frequency
        self.assertEquals(result, 0.0625)

        result = self.user_attendance.team.frequency
        self.assertEquals(result, 0.03125)

        result = self.user_attendance.team.get_rides_count_denorm
        self.assertEquals(result, 3)

        result = self.user_attendance.team.get_working_trips_count()
        self.assertEquals(result, 96)

        result = results.get_working_trips_count(self.user_attendance,
                                                 competition)
        self.assertEquals(result, 48)

        result = results.get_userprofile_frequency(self.user_attendance,
                                                   competition)
        self.assertEquals(result, (3, 48, 3 / 48.0))

        result = results.get_team_frequency(
            self.user_attendance.team.members(), competition)
        self.assertEquals(result, (3, 96, 3 / 96.0))
示例#15
0
 def test_admin_draw_results_fq_lb_not_all_paying(self):
     models.Payment.objects.all().delete()
     util.rebuild_denorm_models(
         models.UserAttendance.objects.filter(id__in=[
             self.objs.userattendances.userattendance.pk,
             self.objs.userattendances.userattendance2.pk,
             self.objs.userattendances.registered.pk,
         ], ), )
     competition = models.Competition.objects.get(slug="FQ-LB")
     cr = models.CompetitionResult.objects.get(
         team_id=self.objs.teams.basic.pk, competition=competition)
     cr.result = 0.8
     cr.save()
     address = reverse("admin_draw_results",
                       kwargs={"competition_slug": "FQ-LB"})
     response = self.client.get(address)
     self.assertContains(response,
                         "Tato soutěž nemá žádné týmy splňující kritéria")
示例#16
0
 def test_admin_draw_results_fq_lb(self):
     models.Payment.objects.create(user_attendance_id=1015,
                                   status=models.Status.DONE,
                                   amount=1)
     models.Payment.objects.create(user_attendance_id=2115,
                                   status=models.Status.DONE,
                                   amount=1)
     util.rebuild_denorm_models(
         models.UserAttendance.objects.filter(id__in=[1015, 2115]))
     competition = models.Competition.objects.get(slug="FQ-LB")
     cr = models.CompetitionResult.objects.get(team_id=1,
                                               competition=competition)
     cr.result = 0.8
     cr.save()
     address = reverse('admin_draw_results',
                       kwargs={'competition_slug': "FQ-LB"})
     response = self.client.get(address)
     self.assertContains(
         response,
         "<li>"
         "1. tah: Tým Testing team 1 z organizace Testing company"
         "<br/>"
         "pravidelnost jízd 80&nbsp;%"
         "   <br/>"
         "   Členové:"
         "      <ul>"
         "         <li>"
         "            Testing User: "******"         </li>"
         "      </ul>"
         "      <ul>"
         "         <li>"
         "            Testing User 1: "
         "         </li>"
         "      </ul>"
         "   "
         "      <ul>"
         "         <li>"
         "            Registered User 1: "
         "         </li>"
         "      </ul>"
         "</li>",
         html=True,
     )
示例#17
0
 def test_name_with_members(self):
     util.rebuild_denorm_models(models.Team.objects.filter(pk__in=[2, 3]))
     user_attendance = models.UserAttendance.objects.get(pk=1115)
     user_attendance.team.save()
     call_command('denorm_flush')
     self.assertEqual(
         user_attendance.team.name_with_members,
         "Testing team 1 (Nick, Registered User 1, Testing User 1)")
     self.assertEqual(user_attendance.team.unapproved_member_count, 0)
     self.assertEqual(user_attendance.team.member_count, 3)
     user_attendance.userprofile.nickname = "Testing nick"
     user_attendance.userprofile.save()
     call_command('denorm_flush')
     user_attendance = models.UserAttendance.objects.get(pk=1115)
     self.assertEqual(
         user_attendance.team.name_with_members,
         "Testing team 1 (Nick, Registered User 1, Testing nick)")
     self.assertEqual(user_attendance.team.unapproved_member_count, 0)
     self.assertEqual(user_attendance.team.member_count, 3)
示例#18
0
    def test_get_userprofile_length(self):
        competition = mommy.make(
            'Competition',
            competition_type='length',
            competitor_type='single_user',
            campaign=self.testing_campaign,
            date_from=datetime.date(2017, 4, 3),
            date_to=datetime.date(2017, 5, 23),
            commute_modes=models.CommuteMode.objects.filter(
                slug__in=('bicycle', 'by_foot')),
        )
        result = results.get_userprofile_length([self.user_attendance],
                                                competition)
        self.assertEquals(result, 5.0)

        util.rebuild_denorm_models([self.user_attendance])
        self.user_attendance.refresh_from_db()

        result = self.user_attendance.trip_length_total
        self.assertEquals(result, 5.0)
示例#19
0
    def test_get_userprofile_length_recreational(self):
        competition = mommy.make(
            "Competition",
            competition_type="length",
            competitor_type="single_user",
            campaign=self.testing_campaign,
            date_from=datetime.date(2017, 4, 3),
            date_to=datetime.date(2017, 5, 23),
            commute_modes=models.CommuteMode.objects.filter(
                slug__in=("bicycle", "by_foot")),
        )
        result = results.get_userprofile_length([self.user_attendance],
                                                competition,
                                                recreational=True)
        self.assertEqual(result, 8.0)

        util.rebuild_denorm_models([self.user_attendance])
        self.user_attendance.refresh_from_db()

        result = self.user_attendance.total_trip_length_including_recreational
        self.assertEqual(result, 8.0)
示例#20
0
 def setUp(self):
     self.objs = Fixtures({
         "userattendances",
         "campaigns",
         "payments",
         "phases",
         "price_levels",
         "teams",
         "invoices",
         "trips",
         "company_admins",
         "competitions",
     })
     self.modeladmin = admin.ModelAdmin(models.UserAttendance, "")
     self.factory = RequestFactory()
     self.request = self.factory.get("")
     self.request.subdomain = "testing-campaign"
     self.request.user = self.objs.users.user
     setattr(self.request, "session", "session")
     self.messages = FallbackStorage(self.request)
     setattr(self.request, "_messages", self.messages)
     call_command("denorm_init")
     util.rebuild_denorm_models([self.objs.teams.basic])
示例#21
0
    def setUp(self):
        super().setUp()
        self.campaign = CampaignRecipe.make(
            slug="testing-campaign",
            name='Testing campaign',
            mailing_list_type='campaign_monitor',
            mailing_list_id='12345abcde',
            pk=339,
            year=2019,
        )
        util.rebuild_denorm_models(models.Team.objects.filter(pk=1))
        self.client = Client(HTTP_HOST="testing-campaign.testserver")

        PriceLevelRecipe.make()
        self.user_attendance = UserAttendancePaidRecipe.make(
            approved_for_team='approved',
            personal_data_opt_in=True,
            userprofile__user__pk=1128,
            team__subsidiary__city__slug='testing-city',
            userprofile__mailing_opt_in=True,
            userprofile__sex='male',
            userprofile__user__email='*****@*****.**',
            userprofile__user__first_name='Testing',
            userprofile__user__last_name='User 1',
        )
        mommy.make(
            'CompanyAdmin',
            userprofile=self.user_attendance.userprofile,
            campaign=self.campaign,
            company_admin_approved='approved',
        )

        UserAttendancePaidRecipe.make(
            team=self.user_attendance.team,
            approved_for_team='approved',
        )
        UserAttendancePaidRecipe.make(
            team=self.user_attendance.team,
            approved_for_team='approved',
        )
        util.rebuild_denorm_models(models.UserAttendance.objects.all())
        util.rebuild_denorm_models(models.Team.objects.all())
        Token.objects.filter(
            user=self.user_attendance.userprofile.user).update(
                key='d201a3c9e88ecd433fdbbc3a2e451cbd3f80c4ba')
        self.user_attendance.refresh_from_db()
        self.user_attendance.team.refresh_from_db()
        self.user_attendance.userprofile.user.refresh_from_db()
        self.campaign.refresh_from_db()
示例#22
0
 def __init__(self, userattendances, teams, **kwargs):
     self.new_klub_pratel = mommy.make(  # was pk=9
         "dpnk.payment",
         amount=150,
         pay_type="am",
         user_attendance=userattendances.registered,
         status=1,
         created="2015-1-01",
     )
     self.new_bill_2014 = mommy.make(  # was pk=5
         "dpnk.payment",
         amount=150,
         pay_type="fc",
         trans_id="2055-1",
         session_id="2075-1J1455206453",
         user_attendance=userattendances.registered,
         status=1,
         created="2014-12-01",
     )
     self.no_status_ua1115 = mommy.make(  # was pk=3
         "dpnk.payment",
         amount=150,
         trans_id="2075-1",
         session_id="2075-1J1455206433",
         user_attendance=userattendances.userattendance,
     )
     self.done_bill_ua1115 = mommy.make(  # was pk=4
         "dpnk.payment",
         amount=145,
         pay_type="fc",
         trans_id="2075-2",
         session_id="2075-1J1455206444",
         user_attendance=userattendances.userattendance,
         status=99,
         realized="2010-11-01",
     )
     self.done_bill_ua1015 = mommy.make(  # was pk=16
         "dpnk.payment",
         amount=145,
         pay_type="fc",
         trans_id="2075-2",
         session_id="2075-1J145520666",
         user_attendance=userattendances.userattendance2,
         status=99,
         realized="2010-11-01",
     )
     self.done_bill_ua2115 = mommy.make(  # was pk=17
         "dpnk.payment",
         amount=145,
         pay_type="fc",
         trans_id="2075-3",
         session_id="2075-1J145520667",
         user_attendance=userattendances.registered,
         status=99,
         realized="2010-11-01",
     )
     self.done_bill_ua1016 = mommy.make(  # was pk=18
         "dpnk.payment",
         amount=145,
         pay_type="fc",
         trans_id="2075-3",
         session_id="2075-1J145520668",
         user_attendance=userattendances.null_userattendance,
         status=99,
         realized="2010-11-01",
     )
     util.rebuild_denorm_models([
         userattendances.null_userattendance,
         userattendances.registered,
         userattendances.userattendance2,
         userattendances.userattendance,
     ])
     util.rebuild_denorm_models([
         teams.basic,
         teams.last_year,
         teams.other_subsidiary,
     ])
 def __init__(self, users, teams, tshirt_sizes, campaigns, **kwargs):
     with suppress_autotime(UserAttendance, ["created", "updated"]):
         self.userattendance = mommy.make(  # was pk=1115
             "dpnk.userattendance",
             approved_for_team="approved",
             campaign=campaigns.c2010,
             created="2015-11-12T18:18:40.223",
             get_rides_count_denorm=0,
             t_shirt_size=tshirt_sizes.basic,
             team=teams.basic,
             updated="2015-11-12T18:18:40.223",
             payment_status="done",
             personal_data_opt_in=True,
             userprofile=users.userprofile,
         )
         self.userattendance2009 = mommy.make(  # was pk=1116
             "dpnk.userattendance",
             approved_for_team="approved",
             campaign=campaigns.c2009,
             created="2015-11-12T18:18:40.223",
             get_rides_count_denorm=0,
             t_shirt_size=tshirt_sizes.basic,
             team=teams.last_year,
             updated="2015-11-12T18:18:40.223",
             personal_data_opt_in=True,
             userprofile=users.userprofile,
         )
         self.userattendance2 = mommy.make(  # was pk=1015
             "dpnk.userattendance",
             approved_for_team="approved",
             campaign=campaigns.c2010,
             created="2015-11-12T18:18:40.223",
             get_rides_count_denorm=0,
             t_shirt_size=None,
             team=teams.basic,
             updated="2015-11-12T18:18:40.223",
             payment_status="done",
             personal_data_opt_in=True,
             userprofile=users.user2_userprofile,
         )
         self.null_userattendance = mommy.make(  # was pk=1016
             "dpnk.userattendance",
             approved_for_team="approved",
             campaign=campaigns.c2010,
             created="2015-11-12T18:18:40.223",
             get_rides_count_denorm=0,
             t_shirt_size=None,
             team=teams.other_subsidiary,
             updated="2015-11-12T18:18:40.223",
             userprofile=users.null_userprofile,
         )
         self.whithout_team = mommy.make(  # was pk=3
             "dpnk.userattendance",
             approved_for_team="undecided",
             campaign=campaigns.c2010,
             created="2015-11-12T18:18:40.223",
             distance=None,
             get_rides_count_denorm=0,
             t_shirt_size=None,
             team=None,
             updated="2015-11-12T18:18:40.223",
             userprofile=users.user_without_team_userprofile,
         )
         self.unapproved_userattendance = mommy.make(  # was pk=5
             "dpnk.userattendance",
             approved_for_team="undecided",
             campaign=campaigns.c2010,
             created="2015-11-12T18:18:40.223",
             get_rides_count_denorm=0,
             t_shirt_size=None,
             team=teams.other_subsidiary,
             updated="2015-11-12T18:18:40.223",
             userprofile=users.unapproved_user_userprofile,
         )
         self.todo_useraddendance_for_user_without_userattendance = (
             mommy.make(  # was pk=1027
                 "dpnk.userattendance",
                 approved_for_team="approved",
                 campaign=campaigns.c2009,
                 created="2015-11-12T18:18:40.223",
                 get_rides_count_denorm=0,
                 t_shirt_size=tshirt_sizes.basic,
                 team=None,
                 updated="2015-11-12T18:18:40.223",
                 userprofile=users.user_without_userattendance_userprofile,
             ))
         self.registered = mommy.make(  # was pk=2115
             "dpnk.userattendance",
             approved_for_team="approved",
             campaign=campaigns.c2010,
             created="2015-11-12T18:18:40.223",
             get_rides_count_denorm=0,
             t_shirt_size=tshirt_sizes.basic,
             team=teams.basic,
             updated="2015-11-12T18:18:40.223",
             payment_status="done",
             personal_data_opt_in=True,
             userprofile=users.registered_user_userprofile,
         )
     util.rebuild_denorm_models([self.userattendance, self.userattendance2])
示例#24
0
 def test_recalculate_results(self):
     util.rebuild_denorm_models(models.Team.objects.filter(pk__in=[2, 3]))
     queryset = models.UserAttendance.objects.all()
     actions.recalculate_results(self.modeladmin, self.request, queryset)
     message = get_messages(self.request)._queued_messages[0].message
     self.assertEquals(str(message), "Výsledky přepočítány")
示例#25
0
 def setUp(self):
     super().setUp()
     util.rebuild_denorm_models(
         models.Team.objects.filter(pk__in=[4, 3, 1]))
示例#26
0
 def setUp(self):
     super().setUp()
     util.rebuild_denorm_models(
         models.UserAttendance.objects.filter(pk__in=[1115, 2115, 1015]))
     util.rebuild_denorm_models(models.Team.objects.filter(pk=1))