예제 #1
0
def store_feedback(gebruiker, op_pagina, bevinding, feedback):
    """ Deze functie wordt aangeroepen vanuit de view waarin de feedback van de gebruiker
        verzameld is. Deze functie slaat de feedback op in een database tabel.
    """

    # prevent double creation (double/triple-click button)
    obj, is_new = SiteFeedback.objects.get_or_create(
        site_versie=settings.SITE_VERSIE,
        gebruiker=gebruiker,
        op_pagina=op_pagina,
        feedback=feedback,
        is_afgehandeld=False,
        bevinding=bevinding)

    if is_new:
        obj.toegevoegd_op = timezone.now()
        obj.save()

    # maak taken aan om door te geven dat er nieuwe feedback is
    now = timezone.now()
    taak_log = "[%s] Taak aangemaakt" % now
    taak_deadline = now + datetime.timedelta(days=7)
    taak_tekst = "Er is nieuwe Site Feedback om te bekijken"

    for account in (Account.objects.filter(
            username__in=settings.TAAK_OVER_FEEDBACK_ACCOUNTS)):

        if not check_taak_bestaat(toegekend_aan=account,
                                  beschrijving=taak_tekst):
            maak_taak(
                toegekend_aan=account,
                deadline=taak_deadline,
                aangemaakt_door=None,  # systeem
                beschrijving=taak_tekst,
                log=taak_log)
예제 #2
0
    def test_maak_taak(self):
        self.assertEqual(0, Taak.objects.count())
        self.assertEqual(0, MailQueue.objects.count())

        deadline = datetime.date(2020, 12, 13)

        bestaat = taken.check_taak_bestaat(deadline=deadline)
        self.assertFalse(bestaat)

        taken.maak_taak(toegekend_aan=self.account_normaal,
                        deadline=deadline,
                        aangemaakt_door=None,
                        beschrijving="Tekst",
                        handleiding_pagina="Pagina",
                        log="Log")

        self.assertEqual(1, Taak.objects.count())
        self.assertEqual(1, MailQueue.objects.count())

        bestaat = taken.check_taak_bestaat(deadline=deadline)
        self.assertTrue(bestaat)

        taak = Taak.objects.all()[0]
        self.assertFalse(taak.is_afgerond)
        self.assertEqual(taak.toegekend_aan, self.account_normaal)
        self.assertEqual(taak.deadline, deadline)
        self.assertEqual(taak.aangemaakt_door, None)
        self.assertEqual(taak.beschrijving, "Tekst")
        self.assertEqual(taak.handleiding_pagina, "Pagina")
        self.assertEqual(taak.log, "Log")
        self.assertEqual(taak.deelcompetitie, None)

        mail = MailQueue.objects.all()[0]
        self.assertFalse(mail.is_verstuurd)
        self.assertEqual(mail.aantal_pogingen, 0)
        self.assertEqual(mail.mail_to, '*****@*****.**')

        # extra coverage
        self.assertTrue(str(taak) != "")
        taak.is_afgerond = True
        self.assertTrue(str(taak) != "")

        # maak nog een taak en controleer dat er weer meteen een email uit gaat
        taken.maak_taak(toegekend_aan=self.account_normaal,
                        deadline=deadline,
                        aangemaakt_door=None,
                        beschrijving="Tekst 2",
                        handleiding_pagina="Pagina 2",
                        log="Log 2")

        self.assertEqual(2, Taak.objects.count())
        self.assertEqual(2, MailQueue.objects.count())
예제 #3
0
    def _maak_taak_voor_bb(wedstrijd, msg):
        now = timezone.now()
        taak_deadline = now + datetime.timedelta(days=3)
        taak_log = "[%s] Taak aangemaakt" % now
        taak_tekst = msg % "%s van vereniging %s" % (repr(wedstrijd.titel), wedstrijd.organiserende_vereniging)
        taak_tekst += '\n\nGa naar de Wedstrijdkalender om deze wedstrijd te behandelen.'

        # maak de persoonlijke taak aan voor ieder account met is_BB vlag
        # FUTURE: omzetten naar taak voor rol BB
        for account in Account.objects.filter(is_BB=True):
            maak_taak(
                toegekend_aan=account,
                deadline=taak_deadline,
                beschrijving=taak_tekst,
                handleiding_pagina='',
                log=taak_log)
예제 #4
0
    def _maak_taak_voor_hwl(wedstrijd, msg):
        now = timezone.now()
        taak_deadline = now + datetime.timedelta(days=3)
        taak_log = "[%s] Taak aangemaakt" % now
        taak_tekst = msg % repr(wedstrijd.titel)
        taak_tekst += '\n\nGa naar de Wedstrijdkalender om deze wedstrijd te behandelen.'

        functie_hwl = wedstrijd.organiserende_vereniging.functie_set.filter(rol='HWL')[0]

        # maak de persoonlijke taak aan voor ieder account gekoppeld aan deze functie
        # FUTURE: omzetten naar taak voor rol HWL
        for account in functie_hwl.accounts.all():
            maak_taak(
                toegekend_aan=account,
                deadline=taak_deadline,
                beschrijving=taak_tekst,
                handleiding_pagina='',
                log=taak_log)
예제 #5
0
    def test_maak_taak_optout(self):
        self.assertEqual(0, Taak.objects.count())
        self.assertEqual(0, MailQueue.objects.count())

        deadline = datetime.date(2020, 12, 13)

        # maak een taak aan en controleer dat er geen mail uit gaat, want: opt-out
        email = self.account_normaal.accountemail_set.all()[0]
        email.optout_nieuwe_taak = True
        email.save()
        taken.maak_taak(toegekend_aan=self.account_normaal,
                        deadline=deadline,
                        aangemaakt_door=None,
                        beschrijving="Tekst",
                        handleiding_pagina="Pagina",
                        log="Log")

        self.assertEqual(1, Taak.objects.count())
        self.assertEqual(0, MailQueue.objects.count())

        # controleer dat alle velden van de taak goed ingevuld zijn
        taak = Taak.objects.all()[0]
        self.assertFalse(taak.is_afgerond)
        self.assertEqual(taak.toegekend_aan, self.account_normaal)
        self.assertEqual(taak.deadline, deadline)
        self.assertEqual(taak.aangemaakt_door, None)
        self.assertEqual(taak.beschrijving, "Tekst")
        self.assertEqual(taak.handleiding_pagina, "Pagina")
        self.assertEqual(taak.log, "Log")
        self.assertEqual(taak.deelcompetitie, None)

        # controleer dat de herinnering geen mail stuurt na opt-out
        email.optout_nieuwe_taak = False
        email.optout_herinnering_taken = True
        email.save()
        taken.herinner_aan_taken()
        self.assertEqual(0, MailQueue.objects.count())
예제 #6
0
    def test_herinner_aan_taken(self):

        deadline = datetime.date(2000, 1, 1)

        self.assertEqual(0, Taak.objects.count())
        self.assertEqual(0, MailQueue.objects.count())

        # maak 3 taken aan voor 2 accounts
        taken.maak_taak(toegekend_aan=self.account_normaal,
                        deadline=deadline,
                        beschrijving="Tekst 1")

        taken.maak_taak(toegekend_aan=self.account_normaal,
                        deadline=deadline,
                        beschrijving="Tekst 2")

        taken.maak_taak(toegekend_aan=self.testdata.account_admin,
                        deadline=deadline,
                        beschrijving="Tekst 3")

        self.assertEqual(3, Taak.objects.count())
        self.assertEqual(3, MailQueue.objects.count())

        # vraag nu om herinneringen te sturen
        email = self.testdata.account_admin.accountemail_set.all()[0]
        email.laatste_email_over_taken = None
        email.save()

        taken.herinner_aan_taken()
        self.assertEqual(4, MailQueue.objects.count())

        # controleer dat de herinnering pas gestuurd worden na 7 dagen
        email.laatste_email_over_taken = timezone.now() - datetime.timedelta(
            days=7) + datetime.timedelta(hours=1)
        email.save()

        taken.herinner_aan_taken()
        self.assertEqual(4, MailQueue.objects.count())

        email.laatste_email_over_taken = timezone.now() - datetime.timedelta(
            days=7) - datetime.timedelta(hours=1)
        email.save()

        taken.herinner_aan_taken()
        self.assertEqual(5, MailQueue.objects.count())