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)
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())
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)
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)
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())
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())