Beispiel #1
0
    def test_post(self):
        self.client.login(username="******", password="******")
        get_veranstaltung("v")
        s, v1 = get_veranstaltung("vu")
        v1.anzahl = 42
        v1.sprache = "de"
        v1.save()
        v1.veranstalter.add(Person.objects.create(vorname="Pe", nachname="Ter", email="*****@*****.**"))
        v1.veranstalter.add(Person.objects.create(vorname="Pa", nachname="Ul", email="*****@*****.**"))
        mv = Mailvorlage.objects.create(subject="Testmail", body="Dies ist eine Testmail.")
        Einstellung.objects.create(name="bestellung_erlaubt", wert="0")

        params = {"uebernehmen": "x", "recipient": "cur_sem_missing_order", "subject": "abc", "body": "xyz"}

        # kein Semester angegeben
        response = self.client.post(self.path, params, **{"REMOTE_USER": "******"})
        self.assertEqual(response.status_code, 302)
        self.assertTrue(response["Location"].endswith("/intern/sendmail/"))

        # Vorlage übernehmen; Vorlage nicht angegeben
        params["semester"] = s.semester
        response = self.client.post(self.path, params, **{"REMOTE_USER": "******"})
        self.assertEqual(response.status_code, 302)
        self.assertTrue(response["Location"].endswith("/intern/sendmail/"))

        # Vorlage übernehmen; Vorlage ist angegeben
        params["vorlage"] = mv.id
        response = self.client.post(self.path, params, **{"REMOTE_USER": "******"})
        self.assertEqual(response.templates[0].name, "intern/sendmail.html")
        self.assertEqual(response.context["subject"], mv.subject)
        self.assertEqual(response.context["body"], mv.body)

        # Vorschau; Empfänger ist auf Veranstalter mit fehlenden Bestellungen eingestellt
        del params["uebernehmen"]
        params["vorschau"] = "x"
        response = self.client.post(self.path, params, **{"REMOTE_USER": "******"})
        self.assertIn("intern/sendmail_preview.html", (t.name for t in response.templates))
        self.assertTrue(response.context["vorschau"])

        # Vorschau; Empfänger ist auf Veranstaltungen mit Ergebnissen eingestellt
        params["recipient"] = "cur_sem_results"
        response = self.client.post(self.path, params, **{"REMOTE_USER": "******"})
        self.assertIn("intern/sendmail_preview.html", (t.name for t in response.templates))
        self.assertTrue(response.context["vorschau"])

        # Senden
        del params["vorschau"]
        params["senden"] = "x"
        params["recipient"] = "cur_sem_all"
        del params["vorlage"]
        response = self.client.post(self.path, params, **{"REMOTE_USER": "******"})
        self.assertEqual(response.status_code, 302)
        self.assertTrue(response["Location"], tests.LOGIN_URL)
        # Hier wird in Eclipse ein Fehler angezeigt; mail.outbox gibt es während der Testläufe
        # aber wirklich (siehe https://docs.djangoproject.com/en/1.4/topics/testing/#email-services)
        self.assertEqual(len(mail.outbox), 2)
Beispiel #2
0
 def setUp(self):
     self.s, self.vu = get_veranstaltung('vu')
     self.s, self.v = get_veranstaltung('v')
     self.eu = Ergebnis2009.objects.create(veranstaltung=self.vu, anzahl=5,
                                          v_gesamt=1, v_gesamt_count=2,
                                          ue_gesamt=2, ue_gesamt_count=3,
                                          v_feedbackpreis=3, v_feedbackpreis_count=4)
     self.e = Ergebnis2009.objects.create(veranstaltung=self.v, anzahl=5,
                                          v_gesamt=1, v_gesamt_count=2,
                                          ue_gesamt=2, ue_gesamt_count=3,
                                          v_feedbackpreis=3, v_feedbackpreis_count=4)
     self.parts_vl = [[None, 0], [1, 2]] + [[None, 0]] * 3
     self.parts_ue = [[2, 3]] + [[None, 0]] * 3
     self.parts_ue_empty = [[None, 0]] * 4
     self.parts_hidden = [[3, 4], [None, 0]]
Beispiel #3
0
 def setUp(self):
     self.s, self.vu = get_veranstaltung('vu')
     self.s, self.v = get_veranstaltung('v')
     self.eu = Ergebnis2009.objects.create(veranstaltung=self.vu, anzahl=5,
                                           v_gesamt=1, v_gesamt_count=2,
                                           ue_gesamt=2, ue_gesamt_count=3,
                                           v_feedbackpreis=3, v_feedbackpreis_count=4)
     self.e = Ergebnis2009.objects.create(veranstaltung=self.v, anzahl=5,
                                          v_gesamt=1, v_gesamt_count=2,
                                          ue_gesamt=2, ue_gesamt_count=3,
                                          v_feedbackpreis=3, v_feedbackpreis_count=4)
     self.parts_vl = [[None, 0], [1, 2]] + [[None, 0]] * 3
     self.parts_ue = [[2, 3]] + [[None, 0]] * 3
     self.parts_ue_empty = [[None, 0]] * 4
     self.parts_hidden = [[3, 4], [None, 0]]
Beispiel #4
0
    def setUp(self):
        self.p1 = Person.objects.create(vorname='Brian', nachname='Cohen')
        self.p2 = Person.objects.create(vorname='Bud',
                                        nachname='Spencer',
                                        email='[email protected]')
        self.p3 = Person.objects.create(vorname='Test',
                                        nachname='Tester',
                                        email='[email protected]',
                                        geschlecht='m')
        self.p4 = Person.objects.create(vorname='Test Zweitname',
                                        nachname='Tester')

        self.s1, self.v1 = get_veranstaltung('v')
        self.v1.veranstalter = [self.p1]

        self.s2 = Semester.objects.get_or_create(semester=20115,
                                                 fragebogen='2009',
                                                 sichtbarkeit='ADM')[0]
        default_params = {
            'semester': self.s2,
            'grundstudium': False,
            'evaluieren': True,
            'lv_nr': '321' + 'v'
        }
        self.v2 = Veranstaltung.objects.create(typ='v',
                                               name='CMS',
                                               **default_params)
        self.v2.veranstalter = [self.p4]
Beispiel #5
0
    def setUp(self):
        self.s, self.v = get_veranstaltung('vu')
        self.f = []
        self.f.append(Fragebogen2009.objects.create(veranstaltung=self.v))
        self.f.append(Fragebogen2009.objects.create(veranstaltung=self.v))
        self.f.append(
            Fragebogen2009.objects.create(veranstaltung=self.v,
                                          ue_gesamt=1,
                                          ue_e=2,
                                          ue_f=3,
                                          ue_a=4,
                                          ue_b=5,
                                          ue_c=1,
                                          ue_d=2,
                                          ue_g=3,
                                          ue_i=4,
                                          ue_j=5,
                                          ue_k=1))
        self.f.append(
            Fragebogen2009.objects.create(veranstaltung=self.v,
                                          ue_gesamt=2,
                                          ue_e=3,
                                          ue_f=4,
                                          ue_a=5,
                                          ue_b=1,
                                          ue_c=2,
                                          ue_d=3,
                                          ue_g=4,
                                          ue_i=5,
                                          ue_j=1,
                                          ue_k=2))

        # Evasys gibt auch den Wert int(0) zurück
        # siehe: https://www.fachschaft.informatik.tu-darmstadt.de/trac/fs/ticket/1192
        self.f2012 = []
        self.f2012.append(
            Fragebogen2012.objects.create(veranstaltung=self.v,
                                          ue_7=1,
                                          ue_9=1,
                                          ue_10=1))
        self.f2012.append(
            Fragebogen2012.objects.create(veranstaltung=self.v,
                                          ue_7=2,
                                          ue_9=2,
                                          ue_10=2))
        self.f2012.append(
            Fragebogen2012.objects.create(veranstaltung=self.v,
                                          ue_7=0,
                                          ue_9=2,
                                          ue_10=2))
        self.f2012.append(
            Fragebogen2012.objects.create(veranstaltung=self.v,
                                          ue_7=2,
                                          ue_9=0,
                                          ue_10=3))
        self.f2012.append(
            Fragebogen2012.objects.create(veranstaltung=self.v,
                                          ue_7=3,
                                          ue_9=3,
                                          ue_10=0))
Beispiel #6
0
    def setUp(self):
        self.s, self.v = get_veranstaltung('vu')
        self.f = []
        self.f.append(Fragebogen2009.objects.create(veranstaltung=self.v))
        self.f.append(Fragebogen2009.objects.create(veranstaltung=self.v))
        self.f.append(Fragebogen2009.objects.create(veranstaltung=self.v, ue_gesamt=1,
                                                    ue_e=2, ue_f=3,
                                                    ue_a=4, ue_b=5, ue_c=1, ue_d=2,
                                                    ue_g=3, ue_i=4, ue_j=5, ue_k=1))
        self.f.append(Fragebogen2009.objects.create(veranstaltung=self.v, ue_gesamt=2,
                                                    ue_e=3, ue_f=4,
                                                    ue_a=5, ue_b=1, ue_c=2, ue_d=3,
                                                    ue_g=4, ue_i=5, ue_j=1, ue_k=2))

        # Evasys gibt auch den Wert int(0) zurück
        # siehe: https://www.fachschaft.informatik.tu-darmstadt.de/trac/fs/ticket/1192
        self.f2012 = []
        self.f2012.append(Fragebogen2012.objects.create(veranstaltung=self.v,
                                                    ue_7= 1, ue_9=1, ue_10=1))
        self.f2012.append(Fragebogen2012.objects.create(veranstaltung=self.v,
                                                    ue_7= 2, ue_9=2, ue_10=2))
        self.f2012.append(Fragebogen2012.objects.create(veranstaltung=self.v,
                                                    ue_7= 0, ue_9=2, ue_10=2))
        self.f2012.append(Fragebogen2012.objects.create(veranstaltung=self.v,
                                                    ue_7= 2, ue_9=0, ue_10=3))
        self.f2012.append(Fragebogen2012.objects.create(veranstaltung=self.v,
                                                    ue_7= 3, ue_9=3, ue_10=0))
Beispiel #7
0
 def setUp(self):
     self.b = VeranstalterBackend()
     self.u = User.objects.create_user(username=settings.USERNAME_VERANSTALTER)
     self.p = Person.objects.create(vorname='Brian', nachname='Cohen')
     self.s, self.v = get_veranstaltung('v')
     self.v.access_token = '0123456789abcdef'
     self.v.veranstalter.add(self.p)
     self.v.save()
Beispiel #8
0
 def setUp(self):
     self.s, self.v = get_veranstaltung('v')
     self.p = []
     self.p.append(Person.objects.create(vorname='Brian', nachname='Cohen'))
     self.p.append(Person.objects.create(vorname='The', nachname='Crowd'))
     self.k = Kommentar.objects.create(veranstaltung=self.v,
                                       autor=self.p[0],
                                       text='You are all individuals!')
Beispiel #9
0
 def setUp(self):
     self.time = now()
     self.s, self.v = get_veranstaltung('v')
     self.log = Log.objects.create(veranstaltung=self.v,
                                   timestamp=self.time,
                                   status=Veranstaltung.STATUS_GEDRUCKT,
                                   verursacher='Person',
                                   interface='Django Admin')
Beispiel #10
0
 def setUp(self):
     self.b = VeranstalterBackend()
     self.u = User.objects.create_user(
         username=settings.USERNAME_VERANSTALTER)
     self.p = Person.objects.create(vorname='Brian', nachname='Cohen')
     self.s, self.v = get_veranstaltung('v')
     self.v.access_token = '0123456789abcdef'
     self.v.veranstalter.add(self.p)
     self.v.save()
Beispiel #11
0
    def setUp(self):
        super(InternVvEditUsersTest, self).setUp()
        self.path = '/intern/import_vv_edit_users/'

        self.p0 = Person.objects.create(vorname='Je', nachname='Mand')
        self.p1 = Person.objects.create(vorname='Auch Je', nachname='Mand')
        Person.objects.create(vorname='Je', nachname='Mand Anderes')
        Person.objects.create(vorname='Noch Je', nachname='Mand', geschlecht='m', email='*****@*****.**')
        _, self.v = get_veranstaltung('vu')
        self.v.veranstalter.add(self.p0)
        self.v.veranstalter.add(self.p1)
Beispiel #12
0
    def setUp(self):
        User.objects.create_user(settings.USERNAME_VERANSTALTER)
        self.s, self.v = get_veranstaltung('vu')
        self.p = Person.objects.create(vorname="v1",
                                       nachname="n1",
                                       email="*****@*****.**",
                                       anschrift="Strasse")
        self.p2 = Person.objects.create(vorname="v2", nachname="n2")
        self.p3 = Person.objects.create(vorname="v3", nachname="n3")

        self.v.veranstalter.add(self.p)
        self.v.veranstalter.add(self.p2)

        self.v.ergebnis_empfaenger.add(self.p)
        self.v.ergebnis_empfaenger.add(self.p2)

        self.v.primaerdozent = self.p
        self.v.verantwortlich = self.p
        self.v.save()

        self.s2, self.v_wo_excercises = get_veranstaltung('v')
        self.v_wo_excercises.veranstalter.add(self.p3)
Beispiel #13
0
    def setUp(self):
        super(InternVvEditUsersTest, self).setUp()
        self.path = '/intern/import_vv_edit_users/'

        self.p0 = Person.objects.create(vorname='Je', nachname='Mand')
        self.p1 = Person.objects.create(vorname='Auch Je', nachname='Mand')

        self.path_save_p0 = self.path + str(self.p0.id) + '/'
        self.path_save_p1 = self.path + str(self.p1.id) + '/'
        self.path_save_p2 = self.path + str(self.p0.id) + '/namecheck/'

        _, self.v = get_veranstaltung('vu')
        self.v.veranstalter.add(self.p0)
        self.v.veranstalter.add(self.p1)
Beispiel #14
0
    def setUp(self):
        User.objects.create_superuser('supers', None, 'pw')

        self.p1 = Person.objects.create(vorname='Brian', nachname='Cohen')
        self.p2 = Person.objects.create(vorname='Bud', nachname='Spencer', email='[email protected]')
        self.p3 = Person.objects.create(vorname='Test', nachname='Tester', email='[email protected]', geschlecht='m')
        self.p4 = Person.objects.create(vorname='Test Zweitname', nachname='Tester')

        self.s1, self.v1 = get_veranstaltung('v')
        self.v1.veranstalter.add(self.p1)

        self.s2 = Semester.objects.get_or_create(semester=20115, fragebogen='2009', sichtbarkeit='ADM')[0]
        default_params = {'semester': self.s2, 'grundstudium': False, 'evaluieren': True, 'lv_nr': '321' + 'v'}
        self.v2 = Veranstaltung.objects.create(typ='v', name='CMS', **default_params)
        self.v2.veranstalter.add(self.p4)

        self.fachgebiet1 = Fachgebiet.objects.create(name="Fachgebiet1", kuerzel="FB1")
        FachgebietEmail.objects.create(fachgebiet=self.fachgebiet1)

        self.fb_p1 = Person.objects.create(vorname="Max1", nachname="Mustername",
                                           email="*****@*****.**")
Beispiel #15
0
 def setUp(self):
     super(SyncErgebnisseTest, self).setUp()
     self.path = '/intern/sync_ergebnisse/'
     self.s, self.v = get_veranstaltung('v')
Beispiel #16
0
    def test_export_veranstaltungen_post_primaerdozent(self):
        path = '/intern/export_veranstaltungen/'
        self.client.login(username='******', password='******')

        s, v = get_veranstaltung('v')
        p1 = Person.objects.create(vorname='Je',
                                   nachname='Mand',
                                   email='*****@*****.**',
                                   geschlecht='w')
        p2 = Person.objects.create(vorname='Prim',
                                   nachname='Ardozent',
                                   email='*****@*****.**',
                                   geschlecht='m')
        p3 = Person.objects.create(vorname='Je1',
                                   nachname='Mand1',
                                   email='*****@*****.**',
                                   geschlecht='m')

        v.veranstalter.add(p1)
        v.veranstalter.add(p2)
        v.veranstalter.add(p3)
        v.ergebnis_empfaenger.add(p1)
        v.ergebnis_empfaenger.add(p2)
        v.ergebnis_empfaenger.add(p3)

        v.grundstudium = True
        v.sprache = 'en'
        v.verantwortlich = p1
        v.primaerdozent = p2
        v.anzahl = 42
        v.auswertungstermin = date(2011, 1, 1)
        v.save()

        response = self.client.post(path, {'semester': s.semester},
                                    **{'REMOTE_USER': '******'})
        self.assertRegex(response['Content-Disposition'],
                         r'^attachment; filename="[a-zA-Z0-9_-]+\.xml"$')
        test_xml = '''<?xml version="1.0" encoding="UTF-8"?>
        <EvaSys xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="http://evaluation.tu-darmstadt.de/evasys/doc/xml-import.xsd">
        <Lecture key="lv-1">
	    <dozs>
		<doz>
		    <EvaSysRef type="Person" key="pe-2" />
                </doz>
	        <doz>
		    <EvaSysRef type="Person" key="pe-1" />
	    	</doz>
		<doz>
		    <EvaSysRef type="Person" key="pe-3" />
	    	</doz>
	    </dozs>
	    <name>Stoning I</name>
	    <orgroot>FB 20</orgroot>
            <short>123v-SS11</short>
            <period>SS11</period>
            <type>Vorlesung</type>
		<turnout>42</turnout>
		<p_o_study>Informatik</p_o_study>
                <survey>
		    <EvaSysRef type="Survey" key="su-1" />
		</survey>
            <external_id>lv-1</external_id>
	</Lecture>
	<Task key="close-su-1">
	<type>close_survey</type>
	<datetime>2011-01-01 08:00</datetime>
	<dispatch_report>1</dispatch_report>
	</Task>
        <Survey key="su-1">
            <survey_form>FB20Vv3e</survey_form>
	    <survey_period>SS11</survey_period>
            <survey_type>coversheet</survey_type>
	    <survey_verify>0</survey_verify>
	    <survey_tasks>
	        <survey_task>
	            <EvaSysRef type="Task" key="close-su-1"/>
	        </survey_task>
        	</survey_tasks>
        </Survey>
        <Person key="pe-1">
	    <firstname>Je</firstname>
	    <lastname>Mand</lastname>
            <email>[email protected]</email>
	    <gender>f</gender>
	    <external_id>pe-1</external_id>
        </Person>
        <Person key="pe-2">
	    <firstname>Prim</firstname>
            <lastname>Ardozent</lastname>	
            <email>[email protected]</email>
	    <gender>m</gender>
	    <external_id>pe-2</external_id>
	</Person>
        <Person key="pe-3">
            <firstname>Je1</firstname>
            <lastname>Mand1</lastname>
            <email>[email protected]</email>
            <gender>m</gender>
            <external_id>pe-3</external_id>
	</Person>
</EvaSys>'''

        self.checkXMLEqual(test_xml, response.content.decode('utf-8'))
Beispiel #17
0
 def setUp(self):
     _, self.v = get_veranstaltung('vu')
     User.objects.create_user(settings.USERNAME_VERANSTALTER)
Beispiel #18
0
 def setUp(self):
     self.time = now()
     self.s, self.v = get_veranstaltung('v')
     self.scanner = BarcodeScanner.objects.create(token="aa", description="description")
     self.log = Log.objects.create(veranstaltung=self.v, timestamp=self.time, status=Veranstaltung.STATUS_GEDRUCKT,
                                   user=None, scanner=self.scanner, interface=Log.ADMIN)
Beispiel #19
0
    def test_post(self):
        self.client.login(username='******', password='******')

        s, v1 = get_veranstaltung('vu')
        v1.anzahl = 42
        v1.sprache = 'de'
        v1.save()

        default_params = {
            'semester': s,
            'status': Veranstaltung.STATUS_BESTELLUNG_LIEGT_VOR,
            'grundstudium': False,
            'evaluieren': True,
            'sprache': 'de',
            'anzahl': 44,
            'lv_nr': '234vu'
        }
        v2 = Veranstaltung.objects.create(typ='vu',
                                          name='Stoning III',
                                          **default_params)
        v2.save()

        fg1 = Fachgebiet.objects.create(name="Fachgebiet1", kuerzel="FB1")
        fg2 = Fachgebiet.objects.create(name="Fachgebiet2", kuerzel="FB2")
        suf1 = EmailEndung.objects.create(fachgebiet=fg1, domain="fg1.com")
        suf2 = EmailEndung.objects.create(fachgebiet=fg2, domain="fg2.com")
        FachgebietEmail.objects.create(fachgebiet=fg1,
                                       email_sekretaerin="*****@*****.**")
        FachgebietEmail.objects.create(fachgebiet=fg2,
                                       email_sekretaerin="*****@*****.**")

        p1 = Person.objects.create(vorname='Peter',
                                   nachname='Pan',
                                   email='*****@*****.**',
                                   fachgebiet=fg1)
        p2 = Person.objects.create(vorname='Pan',
                                   nachname='Peter',
                                   email='*****@*****.**',
                                   fachgebiet=fg2)

        v1.veranstalter.add(p1)
        v2.veranstalter.add(p2)

        mv = Mailvorlage.objects.create(subject='Testmail',
                                        body='Dies ist eine Testmail.')
        Einstellung.objects.create(name='bestellung_erlaubt', wert='0')
        Tutor.objects.create(nummer=1,
                             vorname='Max',
                             nachname='Mux',
                             email='*****@*****.**',
                             anmerkung='',
                             veranstaltung=v1)

        post_data = {
            'uebernehmen': 'x',
            'recipient': [Veranstaltung.STATUS_BESTELLUNG_GEOEFFNET],
            'tutoren': 'False',
            'subject': 'abc',
            'body': 'xyz'
        }

        # ----- kein Semester angegeben ----- #
        response = self.client.post(self.path, post_data,
                                    **{'REMOTE_USER': '******'})

        self.assertEqual(response.status_code, 302)
        self.assertTrue(response['Location'].endswith('/intern/sendmail/'))

        # ----- Vorlage übernehmen; Vorlage nicht angegeben ----- #
        post_data['semester'] = s.semester

        response = self.client.post(self.path, post_data,
                                    **{'REMOTE_USER': '******'})

        self.assertEqual(response.status_code, 302)
        self.assertTrue(response['Location'].endswith('/intern/sendmail/'))

        # ----- Vorlage übernehmen; Vorlage ist angegeben, Empfanger nicht angegeben ----- #
        post_data['vorlage'] = mv.id
        recipient = post_data.pop('recipient', None)

        response = self.client.post(self.path, post_data,
                                    **{'REMOTE_USER': '******'})

        self.assertEqual(response.status_code, 200)

        # ----- Vorlage übernehmen; Vorlage ist angegeben ----- #
        post_data['recipient'] = recipient

        response = self.client.post(self.path, post_data,
                                    **{'REMOTE_USER': '******'})

        self.assertEqual(response.templates[0].name, 'intern/sendmail.html')
        self.assertEqual(response.context['subject'], mv.subject)
        self.assertEqual(response.context['body'], mv.body)

        # ----- Vorschau; Empfänger ist auf Veranstalter mit fehlenden Bestellungen eingestellt ----- #
        del post_data['uebernehmen']
        post_data['vorschau'] = 'x'

        response = self.client.post(self.path, post_data,
                                    **{'REMOTE_USER': '******'})

        self.assertIn('intern/sendmail_preview.html',
                      (t.name for t in response.templates))
        self.assertTrue(response.context['vorschau'])

        # ----- Vorschau; Empfänger ist auf Veranstaltungen mit Ergebnissen eingestellt ----- #
        post_data['recipient'] = [Veranstaltung.STATUS_ERGEBNISSE_VERSANDT]

        response = self.client.post(self.path, post_data,
                                    **{'REMOTE_USER': '******'})

        self.assertIn('intern/sendmail_preview.html',
                      (t.name for t in response.templates))
        self.assertTrue(response.context['vorschau'])

        # ----- Vorschau: Check if the replacements are highlighted ----- #
        color_span = '<span style="color:blue">{}</span>'
        self.assertEqual(
            color_span.format('Grundlagen der Agrarphilosophie I'),
            response.context['veranstaltung'])
        link_veranstalter = 'https://www.fachschaft.informatik.tu-darmstadt.de%s' % reverse(
            'veranstalter-login')
        link_suffix_format = '?vid=%d&token=%s'
        self.assertEqual(
            color_span.format(link_veranstalter +
                              (link_suffix_format %
                               (1337, '0123456789abcdef'))),
            response.context['link_veranstalter'])

        # ----- Senden an alle Veranstaltungen ohne Tutoren ----- #
        del post_data['vorschau']
        post_data['senden'] = 'x'
        post_data['recipient'] = [
            0
        ]  # 0 ist hierbei der Code für alle Veranstaltungen
        del post_data['vorlage']

        response = self.client.post(self.path, post_data,
                                    **{'REMOTE_USER': '******'})
        self.assertEqual(response.status_code, 302)
        self.assertTrue(response['Location'], tests.LOGIN_URL)

        # Hier wird in Eclipse ein Fehler angezeigt; mail.outbox gibt es während der Testläufe
        # aber wirklich (siehe https://docs.djangoproject.com/en/1.4/topics/testing/#email-services)
        self.assertEqual(len(mail.outbox),
                         3)  # an 2 Veranstalter und Kopie an Feedback-Team
        self.assertEqual(len(mail.outbox[0].to),
                         2)  # an Veranstalter und Sekretaerin
        self.assertEqual(len(mail.outbox[1].to), 2)

        # ----- Senden an eine bestimmte Veranstaltung ohne Tutoren ----- #
        del mail.outbox[:]
        post_data['recipient'] = Veranstaltung.STATUS_BESTELLUNG_GEOEFFNET

        response = self.client.post(self.path, post_data,
                                    **{'REMOTE_USER': '******'})

        self.assertEqual(response.status_code, 302)
        self.assertTrue(response['Location'], tests.LOGIN_URL)
        self.assertEqual(len(mail.outbox),
                         2)  # an 1 Veranstalter und Kopie an Feedback-Team
        self.assertEqual(len(mail.outbox[0].to),
                         2)  # an Veranstalter und Sekretaerin

        # ----- Senden an eine bestimmte Veranstaltung mit Tutoren ==> ohne Sekretaerin ----- #
        del mail.outbox[:]
        post_data['recipient'] = Veranstaltung.STATUS_BESTELLUNG_GEOEFFNET
        post_data['tutoren'] = 'True'

        response = self.client.post(self.path, post_data,
                                    **{'REMOTE_USER': '******'})

        self.assertEqual(response.status_code, 302)
        self.assertTrue(response['Location'], tests.LOGIN_URL)
        self.assertEqual(len(mail.outbox),
                         2)  # an 1 Veranstalter und Kopie an Feedback-Team
        self.assertEqual(len(mail.outbox[0].to),
                         2)  # an Veranstalter und Tutor
        self.assertEqual(mail.outbox[0].to[1],
                         '*****@*****.**')  # E-Mail Adresse des Tutors
Beispiel #20
0
 def setUp(self):
     self.s, self.v = get_veranstaltung('v')
     self.f = Fragebogen2009.objects.create(veranstaltung=self.v, v_gesamt=1)
 def setUp(self):
     User.objects.create_user(settings.USERNAME_VERANSTALTER)
     self.s, self.v = get_veranstaltung('vu')
     self.p = Person.objects.create()
     self.v.veranstalter.add(self.p)
Beispiel #22
0
 def setUp(self):
     self.s, self.v = get_veranstaltung('v')
     self.f = Fragebogen2009.objects.create(veranstaltung=self.v, v_gesamt=1)
Beispiel #23
0
 def setUp(self):
     self.s, self.v = get_veranstaltung('v')
     self.p = []
     self.p.append(Person.objects.create(vorname='Brian', nachname='Cohen'))
     self.p.append(Person.objects.create(vorname='The', nachname='Crowd'))
     self.k = Kommentar.objects.create(veranstaltung=self.v, autor=self.p[0], text='You are all individuals!')
Beispiel #24
0
 def setUp(self):
     super(SyncErgebnisseTest, self).setUp()
     self.path = "/intern/sync_ergebnisse/"
     self.s, self.v = get_veranstaltung("v")
Beispiel #25
0
    def test_export_veranstaltungen_post(self):
        path = "/intern/export_veranstaltungen/"
        self.client.login(username="******", password="******")
        self.client.login(username="******", password="******")

        _, v1 = get_veranstaltung("v")
        s, v2 = get_veranstaltung("vu")
        p = Person.objects.create(vorname="Je", nachname="Mand", email="*****@*****.**", geschlecht="w")
        v1.veranstalter.add(p)
        v2.veranstalter.add(p)

        v1.grundstudium = True
        v1.sprache = "en"
        v1.verantwortlich = p
        v1.save()

        # kein Semester angegeben
        response = self.client.post(path, **{"REMOTE_USER": "******"})
        self.assertEqual(response.status_code, 302)
        self.assertTrue(response["Location"].endswith("/intern/export_veranstaltungen/"))

        # keine Bestellung vorhanden
        response = self.client.post(path, {"semester": s.semester}, **{"REMOTE_USER": "******"})
        self.assertEqual(response.status_code, 302)
        self.assertTrue(response["Location"].endswith("/intern/export_veranstaltungen/"))

        # niemand als Verantwortlicher eingetragen
        v1.anzahl = 42
        v1.save()
        v2.anzahl = 23
        v2.save()
        response = self.client.post(path, {"semester": s.semester}, **{"REMOTE_USER": "******"})
        self.assertEqual(response.status_code, 302)
        self.assertTrue(response["Location"].endswith("/intern/export_veranstaltungen/"))

        # keine Sprache angegeben
        v2.verantwortlich = p
        v2.save()
        response = self.client.post(path, {"semester": s.semester}, **{"REMOTE_USER": "******"})
        self.assertEqual(response.status_code, 302)
        self.assertTrue(response["Location"].endswith("/intern/export_veranstaltungen/"))

        # alles OK
        v2.sprache = "de"
        v2.save()
        response = self.client.post(path, {"semester": s.semester}, **{"REMOTE_USER": "******"})
        self.assertRegexpMatches(response["Content-Disposition"], r'^attachment; filename="[a-zA-Z0-9_-]+\.xml"$')

        # TODO: Use SimpleTestCase.assertXMLEqual when Django is on newer version
        self.assertEqual(
            response.content,
            """<?xml version="1.0" encoding="UTF-8"?>
<EvaSys xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
\txsi:noNamespaceSchemaLocation="http://evaluation.tu-darmstadt.de/evasys/doc/xml-import.xsd">
\t<Lecture key="lv-1">
\t\t<dozs>
\t\t\t
\t\t</dozs>
\t\t<name>Stoning I</name>
\t\t<orgroot>FB 20</orgroot>
\t\t<short>123v-SS11</short>
\t\t<period>SS11</period>
\t\t<type>Vorlesung</type>
\t\t<turnout>42</turnout>
\t\t<p_o_study>Informatik</p_o_study>
\t\t<survey>
\t\t\t<EvaSysRef type="Survey" key="su-1" />
\t\t\t
\t\t</survey>
\t\t<external_id>lv-1</external_id>
\t</Lecture>
\t<Survey key="su-1">
\t\t<survey_form>FB20Vv1e</survey_form>
\t\t<survey_period>SS11</survey_period>
\t\t<survey_type>coversheet</survey_type>
\t\t<survey_verify>0</survey_verify>
\t</Survey>
\t
\t<Lecture key="lv-2">
\t\t<dozs>
\t\t\t
\t\t</dozs>
\t\t<name>Stoning I</name>
\t\t<orgroot>FB 20</orgroot>
\t\t<short>123vu-SS11</short>
\t\t<period>SS11</period>
\t\t<type>Vorlesung + Übung</type>
\t\t<turnout>23</turnout>
\t\t<p_o_study>Informatik</p_o_study>
\t\t<survey>
\t\t\t<EvaSysRef type="Survey" key="su-2" />
\t\t\t<EvaSysRef type="Survey" key="su-2-u" />
\t\t</survey>
\t\t<external_id>lv-2</external_id>
\t</Lecture>
\t<Survey key="su-2">
\t\t<survey_form>FB20Vv1</survey_form>
\t\t<survey_period>SS11</survey_period>
\t\t<survey_type>coversheet</survey_type>
\t\t<survey_verify>0</survey_verify>
\t</Survey>
\t
\t<Survey key="su-2-u">
\t\t<survey_form>FB20Üv1</survey_form>
\t\t<survey_period>SS11</survey_period>
\t\t<survey_type>coversheet</survey_type>
\t\t<survey_verify>0</survey_verify>
\t</Survey>
\t
\t
\t
</EvaSys>
""",
        )
Beispiel #26
0
 def setUp(self):
     self.client.login(username='******', password='******')
     self.s, self.v = get_veranstaltung('vu')
Beispiel #27
0
    def test_post(self):
        self.client.login(username='******', password='******')
        s, v = get_veranstaltung('v')
        p0 = Person.objects.create(vorname='Je',
                                   nachname='Mand',
                                   email='*****@*****.**',
                                   geschlecht='w',
                                   anschrift='S202 D120')
        p1 = Person.objects.create(vorname='Noch Je',
                                   nachname='Mand',
                                   email='*****@*****.**',
                                   geschlecht='m')
        v.veranstalter.add(p0)
        v.veranstalter.add(p1)
        v.verantwortlich = p0

        # kein Semester angegeben
        response = self.client.post(self.path, **{'REMOTE_USER': '******'})
        self.assertEqual(response.status_code, 302)
        self.assertTrue(
            response['Location'].endswith('/intern/generate_letters/'))

        # kein Abgabedatum angegeben
        response = self.client.post(self.path, {'semester': s.semester},
                                    **{'REMOTE_USER': '******'})
        self.assertEqual(response.status_code, 302)
        self.assertTrue(
            response['Location'].endswith('/intern/generate_letters/'))

        # keine zu evaluierenden Veranstaltungen
        ad = '10. - 11. November 2011'

        response = self.client.post(self.path, {
            'semester': s.semester,
            'erhebungswoche': ad
        }, **{'REMOTE_USER': '******'})
        self.assertEqual(response.status_code, 302)
        self.assertTrue(
            response['Location'].endswith('/intern/generate_letters/'))

        # alles OK
        v.anzahl = 42
        v.sprache = 'en'
        v.save()

        self._delete_erhebungswoche_file()

        response = self.client.post(
            self.path, {
                'semester': s.semester,
                'erhebungswoche': '10. - 11. November 2011',
                'vorlage': 'Anschreiben'
            }, **{'REMOTE_USER': '******'})
        self.assertEqual(response.status_code, 200)
        self.assertRegexpMatches(
            response['Content-Disposition'],
            r'^attachment; filename=[a-zA-Z0-9_-]+\.pdf$')
        self.assertEqual(ad, self._get_erhebungswoche())
        with open(settings.LATEX_PATH + 'veranstalter.adr', 'r') as f:
            self.assertEqual(
                f.readline().strip(),
                '\\adrentry{Je Mand}{S202 D120}{Stoning I}{42}{en}{Vorlesung}{2000000001005}{}{}'
            )

            # test Aufkleber
        response = self.client.post(
            self.path, {
                'semester': s.semester,
                'erhebungswoche': '10. - 11. November 2011',
                'vorlage': 'Aufkleber'
            }, **{'REMOTE_USER': '******'})
        self.assertEqual(response.status_code, 200)
        self.assertRegexpMatches(
            response['Content-Disposition'],
            r'^attachment; filename=[a-zA-Z0-9_-]+\.pdf$')
        self.assertEqual(ad, self._get_erhebungswoche())
        with open(settings.LATEX_PATH + '../aufkleber/' + 'veranstalter.adr',
                  'r') as f:
            self.assertEqual(
                f.readline().strip(),
                '\\adrentry{Je Mand}{S202 D120}{Stoning I}{42}{en}{Vorlesung}{2000000001005}{}{}'
            )

        with self.settings(TEST_LATEX_ERROR=True):
            response = self.client.post(
                self.path, {
                    'semester': s.semester,
                    'erhebungswoche': '10. - 11. November 2011',
                    'vorlage': 'Anschreiben'
                }, **{'REMOTE_USER': '******'})
        self.assertEqual(response.templates[0].name,
                         'intern/generate_letters.html')

        # test Aufkleber fuer grosse Veranstaltungen
        response = self.client.post(
            self.path, {
                'semester': s.semester,
                'erhebungswoche': '10. - 11. November 2011',
                'vorlage': 'Grossaufkleber'
            }, **{'REMOTE_USER': '******'})
        self.assertEqual(response.status_code, 302)
        v.anzahl = 86
        v.save()
        response = self.client.post(
            self.path, {
                'semester': s.semester,
                'erhebungswoche': '10. - 11. November 2011',
                'vorlage': 'Grossaufkleber'
            }, **{'REMOTE_USER': '******'})
        self.assertEqual(response.status_code, 200)
        self.assertRegexpMatches(
            response['Content-Disposition'],
            r'^attachment; filename=[a-zA-Z0-9_-]+\.pdf$')
        self.assertEqual(ad, self._get_erhebungswoche())
        with open(settings.LATEX_PATH + '../aufkleber/' + 'veranstalter.adr',
                  'r') as f:
            self.assertEqual(
                f.readline().strip(),
                '\\adrentry{Je Mand}{S202 D120}{Stoning I}{86}{en}{Vorlesung}{2000000001005}{}{}'
            )

        with self.settings(TEST_LATEX_ERROR=True):
            response = self.client.post(
                self.path, {
                    'semester': s.semester,
                    'erhebungswoche': '10. - 11. November 2011',
                    'vorlage': 'Anschreiben'
                }, **{'REMOTE_USER': '******'})
        self.assertEqual(response.templates[0].name,
                         'intern/generate_letters.html')
 def setUp(self):
     super(InternAuthTest, self).setUp()
     _, self.v = get_veranstaltung('vu')
Beispiel #29
0
    def test_post(self):
        self.client.login(username='******', password='******')
        get_veranstaltung('v')
        s, v1 = get_veranstaltung('vu')
        v1.anzahl = 42
        v1.sprache = 'de'
        v1.save()
        v1.veranstalter.add(
            Person.objects.create(vorname='Pe',
                                  nachname='Ter',
                                  email='*****@*****.**'))
        v1.veranstalter.add(
            Person.objects.create(vorname='Pa',
                                  nachname='Ul',
                                  email='*****@*****.**'))
        mv = Mailvorlage.objects.create(subject='Testmail',
                                        body='Dies ist eine Testmail.')
        Einstellung.objects.create(name='bestellung_erlaubt', wert='0')

        params = {
            'uebernehmen': 'x',
            'recipient': 'cur_sem_missing_order',
            'subject': 'abc',
            'body': 'xyz'
        }

        # kein Semester angegeben
        response = self.client.post(self.path, params,
                                    **{'REMOTE_USER': '******'})
        self.assertEqual(response.status_code, 302)
        self.assertTrue(response['Location'].endswith('/intern/sendmail/'))

        # Vorlage übernehmen; Vorlage nicht angegeben
        params['semester'] = s.semester
        response = self.client.post(self.path, params,
                                    **{'REMOTE_USER': '******'})
        self.assertEqual(response.status_code, 302)
        self.assertTrue(response['Location'].endswith('/intern/sendmail/'))

        # Vorlage übernehmen; Vorlage ist angegeben
        params['vorlage'] = mv.id
        response = self.client.post(self.path, params,
                                    **{'REMOTE_USER': '******'})
        self.assertEqual(response.templates[0].name, 'intern/sendmail.html')
        self.assertEqual(response.context['subject'], mv.subject)
        self.assertEqual(response.context['body'], mv.body)

        # Vorschau; Empfänger ist auf Veranstalter mit fehlenden Bestellungen eingestellt
        del params['uebernehmen']
        params['vorschau'] = 'x'
        response = self.client.post(self.path, params,
                                    **{'REMOTE_USER': '******'})
        self.assertIn('intern/sendmail_preview.html',
                      (t.name for t in response.templates))
        self.assertTrue(response.context['vorschau'])

        # Vorschau; Empfänger ist auf Veranstaltungen mit Ergebnissen eingestellt
        params['recipient'] = 'cur_sem_results'
        response = self.client.post(self.path, params,
                                    **{'REMOTE_USER': '******'})
        self.assertIn('intern/sendmail_preview.html',
                      (t.name for t in response.templates))
        self.assertTrue(response.context['vorschau'])

        # Senden
        del params['vorschau']
        params['senden'] = 'x'
        params['recipient'] = 'cur_sem_all'
        del params['vorlage']
        response = self.client.post(self.path, params,
                                    **{'REMOTE_USER': '******'})
        self.assertEqual(response.status_code, 302)
        self.assertTrue(response['Location'], tests.LOGIN_URL)
        # Hier wird in Eclipse ein Fehler angezeigt; mail.outbox gibt es während der Testläufe
        # aber wirklich (siehe https://docs.djangoproject.com/en/1.4/topics/testing/#email-services)
        self.assertEqual(len(mail.outbox), 2)
Beispiel #30
0
    def test_export_veranstaltungen_post(self):
        path = '/intern/export_veranstaltungen/'
        self.client.login(username='******', password='******')
        self.client.login(username='******', password='******')

        _, v1 = get_veranstaltung('v')
        s, v2 = get_veranstaltung('vu')
        p = Person.objects.create(vorname='Je',
                                  nachname='Mand',
                                  email='*****@*****.**',
                                  geschlecht='w')
        v1.veranstalter.add(p)
        v2.veranstalter.add(p)

        v1.grundstudium = True
        v1.sprache = 'en'
        v1.verantwortlich = p
        v1.save()

        # kein Semester angegeben
        response = self.client.post(path, **{'REMOTE_USER': '******'})
        self.assertEqual(response.status_code, 302)
        self.assertTrue(
            response['Location'].endswith('/intern/export_veranstaltungen/'))

        # keine Bestellung vorhanden
        response = self.client.post(path, {'semester': s.semester},
                                    **{'REMOTE_USER': '******'})
        self.assertEqual(response.status_code, 302)
        self.assertTrue(
            response['Location'].endswith('/intern/export_veranstaltungen/'))

        # niemand als Verantwortlicher eingetragen
        v1.anzahl = 42
        v1.save()
        v2.anzahl = 23
        v2.save()
        response = self.client.post(path, {'semester': s.semester},
                                    **{'REMOTE_USER': '******'})
        self.assertEqual(response.status_code, 302)
        self.assertTrue(
            response['Location'].endswith('/intern/export_veranstaltungen/'))

        # keine Sprache angegeben
        v2.verantwortlich = p
        v2.save()
        response = self.client.post(path, {'semester': s.semester},
                                    **{'REMOTE_USER': '******'})
        self.assertEqual(response.status_code, 302)
        self.assertTrue(
            response['Location'].endswith('/intern/export_veranstaltungen/'))

        # alles OK
        v2.sprache = 'de'
        v2.save()
        response = self.client.post(path, {'semester': s.semester},
                                    **{'REMOTE_USER': '******'})
        self.assertRegexpMatches(
            response['Content-Disposition'],
            r'^attachment; filename="[a-zA-Z0-9_-]+\.xml"$')

        # TODO: Use SimpleTestCase.assertXMLEqual when Django is on newer version
        self.assertEqual(
            response.content, '''<?xml version="1.0" encoding="UTF-8"?>
<EvaSys xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
\txsi:noNamespaceSchemaLocation="http://evaluation.tu-darmstadt.de/evasys/doc/xml-import.xsd">
\t<Lecture key="lv-1">
\t\t<dozs>
\t\t\t
\t\t</dozs>
\t\t<name>Stoning I</name>
\t\t<orgroot>FB 20</orgroot>
\t\t<short>123v-SS11</short>
\t\t<period>SS11</period>
\t\t<type>Vorlesung</type>
\t\t<turnout>42</turnout>
\t\t<p_o_study>Informatik</p_o_study>
\t\t<survey>
\t\t\t<EvaSysRef type="Survey" key="su-1" />
\t\t\t
\t\t</survey>
\t\t<external_id>lv-1</external_id>
\t</Lecture>
\t<Survey key="su-1">
\t\t<survey_form>FB20Vv1e</survey_form>
\t\t<survey_period>SS11</survey_period>
\t\t<survey_type>coversheet</survey_type>
\t\t<survey_verify>0</survey_verify>
\t</Survey>
\t
\t<Lecture key="lv-2">
\t\t<dozs>
\t\t\t
\t\t</dozs>
\t\t<name>Stoning I</name>
\t\t<orgroot>FB 20</orgroot>
\t\t<short>123vu-SS11</short>
\t\t<period>SS11</period>
\t\t<type>Vorlesung + Übung</type>
\t\t<turnout>23</turnout>
\t\t<p_o_study>Informatik</p_o_study>
\t\t<survey>
\t\t\t<EvaSysRef type="Survey" key="su-2" />
\t\t\t<EvaSysRef type="Survey" key="su-2-u" />
\t\t</survey>
\t\t<external_id>lv-2</external_id>
\t</Lecture>
\t<Survey key="su-2">
\t\t<survey_form>FB20Vv1</survey_form>
\t\t<survey_period>SS11</survey_period>
\t\t<survey_type>coversheet</survey_type>
\t\t<survey_verify>0</survey_verify>
\t</Survey>
\t
\t<Survey key="su-2-u">
\t\t<survey_form>FB20Üv1</survey_form>
\t\t<survey_period>SS11</survey_period>
\t\t<survey_type>coversheet</survey_type>
\t\t<survey_verify>0</survey_verify>
\t</Survey>
\t
\t
\t
</EvaSys>
''')
 def setUp(self):
     _, self.v = get_veranstaltung('vu')
     User.objects.create_user(settings.USERNAME_VERANSTALTER)
Beispiel #32
0
 def setUp(self):
     super(InternAuthTest, self).setUp()
     _, self.v = get_veranstaltung('vu')
 def setUp(self):
     User.objects.create_user(settings.USERNAME_VERANSTALTER)
     self.s, self.v = get_veranstaltung('vu')
     self.p = Person.objects.create()
     self.v.veranstalter.add(self.p)
Beispiel #34
0
    def test_post(self):
        self.client.login(username='******', password='******')
        s, v = get_veranstaltung('v')
        p0 = Person.objects.create(vorname='Je', nachname='Mand', email='*****@*****.**', geschlecht='w', anschrift='S202 D120')
        p1 = Person.objects.create(vorname='Noch Je', nachname='Mand', email='*****@*****.**', geschlecht='m')
        v.veranstalter.add(p0)
        v.veranstalter.add(p1)
        v.verantwortlich = p0

        # kein Semester angegeben
        response = self.client.post(self.path, **{'REMOTE_USER':'******'})
        self.assertEqual(response.status_code, 302)
        self.assertTrue(response['Location'].endswith('/intern/generate_letters/'))

        # kein Abgabedatum angegeben
        response = self.client.post(self.path, {'semester': s.semester}, **{'REMOTE_USER':'******'})
        self.assertEqual(response.status_code, 302)
        self.assertTrue(response['Location'].endswith('/intern/generate_letters/'))

        # keine zu evaluierenden Veranstaltungen
        ad = '10. - 11. November 2011'

        response = self.client.post(self.path,
                                    {'semester': s.semester, 'erhebungswoche': ad}, **{'REMOTE_USER':'******'})
        self.assertEqual(response.status_code, 302)
        self.assertTrue(response['Location'].endswith('/intern/generate_letters/'))

        # alles OK
        v.anzahl = 42
        v.sprache = 'en'
        v.save()

        self._delete_erhebungswoche_file()

        response = self.client.post(self.path,
                                   {'semester': s.semester, 'erhebungswoche': '10. - 11. November 2011', 'vorlage': 'Anschreiben'}, **{'REMOTE_USER':'******'})
        self.assertEqual(response.status_code, 200)
        self.assertRegexpMatches(response['Content-Disposition'],
                                r'^attachment; filename=[a-zA-Z0-9_-]+\.pdf$')
        self.assertEqual(ad, self._get_erhebungswoche())
        with open(settings.LATEX_PATH + 'veranstalter.adr', 'r') as f:
           self.assertEqual(f.readline().strip(),
                        '\\adrentry{Je Mand}{S202 D120}{Stoning I}{42}{en}{Vorlesung}{2000000001005}{}{}')

       #test Aufkleber
        response = self.client.post(self.path,
                                   {'semester': s.semester, 'erhebungswoche': '10. - 11. November 2011', 'vorlage': 'Aufkleber'}, **{'REMOTE_USER':'******'})
        self.assertEqual(response.status_code, 200)
        self.assertRegexpMatches(response['Content-Disposition'],
                                r'^attachment; filename=[a-zA-Z0-9_-]+\.pdf$')
        self.assertEqual(ad, self._get_erhebungswoche())
        with open(settings.LATEX_PATH+'../aufkleber/' + 'veranstalter.adr', 'r') as f:
           self.assertEqual(f.readline().strip(),
                        '\\adrentry{Je Mand}{S202 D120}{Stoning I}{42}{en}{Vorlesung}{2000000001005}{}{}')

        with self.settings(TEST_LATEX_ERROR=True):
           response = self.client.post(self.path,
                                   {'semester': s.semester, 'erhebungswoche': '10. - 11. November 2011', 'vorlage': 'Anschreiben'}, **{'REMOTE_USER':'******'})
        self.assertEqual(response.templates[0].name, 'intern/generate_letters.html')

        #test Aufkleber fuer grosse Veranstaltungen
        response = self.client.post(self.path,
                                   {'semester': s.semester, 'erhebungswoche': '10. - 11. November 2011', 'vorlage': 'Grossaufkleber'}, **{'REMOTE_USER':'******'})
        self.assertEqual(response.status_code, 302)
        v.anzahl = 86
        v.save()
        response = self.client.post(self.path,
                                   {'semester': s.semester, 'erhebungswoche': '10. - 11. November 2011', 'vorlage': 'Grossaufkleber'}, **{'REMOTE_USER':'******'})
        self.assertEqual(response.status_code, 200)
        self.assertRegexpMatches(response['Content-Disposition'],
                                r'^attachment; filename=[a-zA-Z0-9_-]+\.pdf$')
        self.assertEqual(ad, self._get_erhebungswoche())
        with open(settings.LATEX_PATH+'../aufkleber/' + 'veranstalter.adr', 'r') as f:
           self.assertEqual(f.readline().strip(),
                        '\\adrentry{Je Mand}{S202 D120}{Stoning I}{86}{en}{Vorlesung}{2000000001005}{}{}')

        with self.settings(TEST_LATEX_ERROR=True):
           response = self.client.post(self.path,
                                   {'semester': s.semester, 'erhebungswoche': '10. - 11. November 2011', 'vorlage': 'Anschreiben'}, **{'REMOTE_USER':'******'})
        self.assertEqual(response.templates[0].name, 'intern/generate_letters.html')
Beispiel #35
0
    def test_export_veranstaltungen_post(self):
        path = '/intern/export_veranstaltungen/'
        self.client.login(username='******', password='******')
        self.client.login(username='******', password='******')

        _, v1 = get_veranstaltung('v')
        s, v2 = get_veranstaltung('vu')
        empty_semester = Semester.objects.create(semester=20120,
                                                 fragebogen='2009',
                                                 sichtbarkeit='ADM')

        p = Person.objects.create(vorname='Je',
                                  nachname='Mand',
                                  email='*****@*****.**',
                                  geschlecht='w')
        v1.veranstalter.add(p)
        v2.veranstalter.add(p)

        v1.grundstudium = True
        v1.sprache = 'en'
        v1.verantwortlich = p
        v1.auswertungstermin = date(2011, 1, 1)
        v1.save()

        # kein Semester angegeben
        response = self.client.post(path, **{'REMOTE_USER': '******'})
        self.assertEqual(response.status_code, 302)
        self.assertTrue(
            response['Location'].endswith('/intern/export_veranstaltungen/'))

        # keine Bestellung vorhanden
        response = self.client.post(path, {'semester': s.semester},
                                    **{'REMOTE_USER': '******'})
        self.assertEqual(response.status_code, 302)
        self.assertTrue(
            response['Location'].endswith('/intern/export_veranstaltungen/'))

        # niemand als Verantwortlicher eingetragen
        v1.anzahl = 42
        v1.save()
        v2.anzahl = 23
        v2.save()
        response = self.client.post(path, {'semester': s.semester},
                                    **{'REMOTE_USER': '******'})
        self.assertEqual(response.status_code, 302)
        self.assertTrue(
            response['Location'].endswith('/intern/export_veranstaltungen/'))

        response = self.client.post(path, {
            'semester': empty_semester.semester,
            'xml_ubung': True
        }, **{'REMOTE_USER': '******'})
        self.assertEqual(response.status_code, 302)
        self.assertTrue(
            response['Location'].endswith('/intern/export_veranstaltungen/'))

        # keine Sprache angegeben
        v2.verantwortlich = p
        v2.save()
        response = self.client.post(path, {'semester': s.semester},
                                    **{'REMOTE_USER': '******'})
        self.assertEqual(response.status_code, 302)
        self.assertTrue(
            response['Location'].endswith('/intern/export_veranstaltungen/'))

        # alles OK
        v2.sprache = 'de'
        v2.auswertungstermin = date(2011, 1, 1)
        v2.save()

        response = self.client.post(path, {'semester': s.semester},
                                    **{'REMOTE_USER': '******'})
        self.assertRegex(response['Content-Disposition'],
                         r'^attachment; filename="[a-zA-Z0-9_-]+\.xml"$')
        test_xml = '''<?xml version="1.0" encoding="UTF-8"?>
                        <EvaSys xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://evaluation.tu-darmstadt.de/evasys/doc/xml-import.xsd">
                            <Lecture key="lv-1">
                                <dozs></dozs>
                                <name>Stoning I</name>
                                <orgroot>FB 20</orgroot>
                                <short>123v-SS11</short>
                                <period>SS11</period>
                                <type>Vorlesung</type>
                                <turnout>42</turnout>
                                <p_o_study>Informatik</p_o_study>
                                <survey><EvaSysRef type="Survey" key="su-1" /></survey>
                                <external_id>lv-1</external_id>
                            </Lecture>
                            <Task key="close-su-1">                                                                                                                              
                                <type>close_survey</type>
                                <datetime>2011-01-01 08:00</datetime>
                                <dispatch_report>1</dispatch_report>
                            </Task>
                            <Survey key="su-1">
                                <survey_form>FB20Vv3e</survey_form>
                                <survey_period>SS11</survey_period>
                                <survey_type>coversheet</survey_type>
                                <survey_verify>0</survey_verify>
                                <survey_tasks>
                                    <survey_task>
                                        <EvaSysRef type="Task" key="close-su-1"/>
                                    </survey_task>
                                </survey_tasks>
                            </Survey>
                            <Lecture key="lv-2">
                                <dozs></dozs>
                                <name>Stoning I</name>
                                <orgroot>FB 20</orgroot>
                                <short>123vu-SS11</short>
                                <period>SS11</period>
                                <type>Vorlesung + Übung</type>
                                <turnout>23</turnout>
                                <p_o_study>Informatik</p_o_study>
                                <survey><EvaSysRef type="Survey" key="su-2" /></survey>
                                <external_id>lv-2</external_id>
                            </Lecture>
                            <Task key="close-su-2">
                                <type>close_survey</type>
                                <datetime>2011-01-01 08:00</datetime>
                                <dispatch_report>1</dispatch_report>
                            </Task>
                            <Survey key="su-2">
                                <survey_form>FB20Vv3</survey_form>
                                <survey_period>SS11</survey_period>
                                <survey_type>coversheet</survey_type>
                                <survey_verify>0</survey_verify>
                                <survey_tasks>
                                    <survey_task>
                                        <EvaSysRef type="Task" key="close-su-2"/>
                                    </survey_task>
                                </survey_tasks>
                            </Survey>
                        </EvaSys>'''
        self.checkXMLEqual(test_xml, response.content.decode('utf-8'))

        response = self.client.post(path, {
            'semester': s.semester,
            'xml_ubung': True
        }, **{'REMOTE_USER': '******'})
        self.assertRegex(response['Content-Disposition'],
                         r'^attachment; filename="[a-zA-Z0-9_-]+\.xml"$')
        test_xml = '''<?xml version="1.0" encoding="UTF-8"?>
                        <EvaSys xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                        xsi:noNamespaceSchemaLocation="http://evaluation.tu-darmstadt.de/evasys/doc/xml-import.xsd">
                        <Lecture key="lv-2">
                        <dozs>
                        </dozs>
                        <name>Stoning I</name>
                        <orgroot>FB 20</orgroot>
                        <short>123vu-SS11</short>
                        <period>SS11</period>
                        <type>Vorlesung + Übung</type>
                        <turnout>23</turnout>
                        <p_o_study>Informatik</p_o_study>
                        <survey>
                        <EvaSysRef type="Survey" key="su-2-u" />
                        </survey>
                        <external_id>lv-2</external_id>
                        </Lecture>
                        <Task key="close-su-2-u">
                                <type>close_survey</type>
                                <datetime>2011-01-01 08:00</datetime>
                                <dispatch_report>1</dispatch_report>
                        </Task>
                        <Survey key="su-2-u">
                        <survey_form>FB20Üv2</survey_form>
                        <survey_period>SS11</survey_period>
                        <survey_type>coversheet</survey_type>
                        <survey_verify>0</survey_verify>
                        <survey_tasks>
                                    <survey_task>
                                        <EvaSysRef type="Task" key="close-su-2-u"/>
                                    </survey_task>
                        </survey_tasks>
                        </Survey>
                        </EvaSys>
                        '''
        self.checkXMLEqual(test_xml, response.content.decode('utf-8'))

        # check whether digital evaluation is correctly handled
        v1.digitale_eval = True
        v1.save()

        response = self.client.post(path, {'semester': s.semester},
                                    **{'REMOTE_USER': '******'})
        self.assertRegex(response['Content-Disposition'],
                         r'^attachment; filename="[a-zA-Z0-9_-]+\.xml"$')
        test_xml = '''<?xml version="1.0" encoding="UTF-8"?>
                        <EvaSys xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://evaluation.tu-darmstadt.de/evasys/doc/xml-import.xsd">
                            <Lecture key="lv-1">
                                <dozs></dozs>
                                <name>Stoning I</name>
                                <orgroot>FB 20</orgroot>
                                <short>123v-SS11</short>
                                <period>SS11</period>
                                <type>Vorlesung</type>
                                <turnout>42</turnout>
                                <p_o_study>Informatik</p_o_study>
                                <survey><EvaSysRef type="Survey" key="su-1" /></survey>
                                <external_id>lv-1</external_id>
                            </Lecture>
                            <Task key="close-su-1">
                                    <type>close_survey</type>
                                    <datetime>2011-01-01 08:00</datetime>
                                    <dispatch_report>1</dispatch_report>
                            </Task>
                            <Survey key="su-1">
                                <survey_form>FB20Vv3e</survey_form>
                                <survey_period>SS11</survey_period>
                                <survey_type>online</survey_type>
                                <survey_verify>0</survey_verify>
                                <survey_tasks>
                                            <survey_task>
                                                <EvaSysRef type="Task" key="close-su-1"/>
                                            </survey_task>
                                </survey_tasks>
                            </Survey>
                            <Lecture key="lv-2">
                                <dozs></dozs>
                                <name>Stoning I</name>
                                <orgroot>FB 20</orgroot>
                                <short>123vu-SS11</short>
                                <period>SS11</period>
                                <type>Vorlesung + Übung</type>
                                <turnout>23</turnout>
                                <p_o_study>Informatik</p_o_study>
                                <survey><EvaSysRef type="Survey" key="su-2" /></survey>
                                <external_id>lv-2</external_id>
                            </Lecture>
                            <Task key="close-su-2">
                                    <type>close_survey</type>
                                    <datetime>2011-01-01 08:00</datetime>
                                    <dispatch_report>1</dispatch_report>
                            </Task>
                            <Survey key="su-2">
                                <survey_form>FB20Vv3</survey_form>
                                <survey_period>SS11</survey_period>
                                <survey_type>coversheet</survey_type>
                                <survey_verify>0</survey_verify>
                                <survey_tasks>
                                            <survey_task>
                                                <EvaSysRef type="Task" key="close-su-2"/>
                                            </survey_task>
                                </survey_tasks>
                            </Survey>
                        </EvaSys>'''
        self.checkXMLEqual(test_xml, response.content.decode('utf-8'))