コード例 #1
0
def sync_ergebnisse(request):
    if request.method in ('HEAD', 'GET'):
        data = {'semester': Semester.objects.all()}
        return render(request, 'intern/sync_ergebnisse.html', data)

    try:
        semester = Semester.objects.get(semester=request.POST['semester'])
    except (Semester.DoesNotExist, KeyError):
        return HttpResponseRedirect(reverse('sync_ergebnisse'))

    fragebogen = get_model('Fragebogen', semester)
    ergebnis = get_model('Ergebnis', semester)
    ergebnis.objects.filter(veranstaltung__semester=semester).delete()

    found_something = False
    if semester.fragebogen == '2016':
        for v in Veranstaltung.objects.filter(semester=semester):
            fbs = fragebogen.objects.filter(veranstaltung=v)
            erg = FragebogenUE2016.objects.filter(veranstaltung=v)
            if len(fbs):
                found_something = True
                data = {'veranstaltung': v, 'anzahl': len(fbs)}
                for part in ergebnis.parts + ergebnis.hidden_parts:
                    result, count = tools.get_average(ergebnis, fbs, part[0])
                    data[part[0]] = result
                    data[part[0]+'_count'] = count
                for part in ergebnis.parts_ue:
                    result, count = tools.get_average(ergebnis, erg, part[0])
                    data[part[0]] = result
                    data[part[0]+'_count'] = count
                ergebnis.objects.create(**data)

    else:
        for v in Veranstaltung.objects.filter(semester=semester):
            fbs = fragebogen.objects.filter(veranstaltung=v)
            if len(fbs):
                found_something = True
                data = {'veranstaltung': v, 'anzahl': len(fbs)}
                for part in ergebnis.parts + ergebnis.hidden_parts:
                    result, count = tools.get_average(ergebnis, fbs, part[0])
                    data[part[0]] = result
                    data[part[0]+'_count'] = count
                ergebnis.objects.create(**data)

    if not found_something:
        messages.warning(request, 'Für das %s liegen keine Ergebnisse vor.' % semester)
    else:
        messages.success(request, 'Das Ranking für das %s wurde erfolgreich berechnet.' % semester)
    return HttpResponseRedirect(reverse('sync_ergebnisse'))
コード例 #2
0
ファイル: __init__.py プロジェクト: d120/pyfeedback
def sync_ergebnisse(request):
    if request.method in ("HEAD", "GET"):
        data = {"semester": Semester.objects.all()}
        return render(request, "intern/sync_ergebnisse.html", data)

    try:
        semester = Semester.objects.get(semester=request.POST["semester"])
    except (Semester.DoesNotExist, KeyError):
        return HttpResponseRedirect(reverse("sync_ergebnisse"))

    Fragebogen = get_model("Fragebogen", semester)
    Ergebnis = get_model("Ergebnis", semester)
    Ergebnis.objects.filter(veranstaltung__semester=semester).delete()

    found_something = False
    for v in Veranstaltung.objects.filter(semester=semester):
        fbs = Fragebogen.objects.filter(veranstaltung=v)
        if len(fbs):
            found_something = True
            data = {"veranstaltung": v, "anzahl": len(fbs)}
            for part in Ergebnis.parts + Ergebnis.hidden_parts:
                result, count = tools.get_average(Ergebnis, fbs, part[0])
                data[part[0]] = result
                data[part[0] + "_count"] = count
            Ergebnis.objects.create(**data)

    if not found_something:
        messages.warning(request, u"Für das %s liegen keine Ergebnisse vor." % semester)
    else:
        messages.success(request, u"Das Ranking für das %s wurde erfolgreich berechnet." % semester)
    return HttpResponseRedirect(reverse("sync_ergebnisse"))
コード例 #3
0
ファイル: test_tools.py プロジェクト: d120/pyfeedback
 def test_empty_sheets(self):
     self.assertSequenceEqual(get_average(Ergebnis2009, [], 'v_feedbackpreis'), [None, 0])
     self.assertSequenceEqual(get_average(Ergebnis2009, self.f[:2], 'v_feedbackpreis'), [None, 0])
コード例 #4
0
ファイル: test_tools.py プロジェクト: d120/pyfeedback
 def test_weighted_parts(self):
     self.assertSequenceEqual(get_average(Ergebnis2009, self.f, 'ue_feedbackpreis'), [2.25, 2])
コード例 #5
0
ファイル: test_tools.py プロジェクト: d120/pyfeedback
 def test_multiple_parts(self):
     self.assertSequenceEqual(get_average(Ergebnis2009, self.f, 'ue_betreuung'), [3, 2])
     self.assertSequenceEqual(get_average(Ergebnis2012, self.f2012, 'ue_betreuung'), [2, 5])
コード例 #6
0
ファイル: test_tools.py プロジェクト: d120/pyfeedback
 def test_single_part(self):
     self.assertSequenceEqual(get_average(Ergebnis2009, self.f, 'ue_gesamt'), [1.5, 2])
コード例 #7
0
ファイル: test_tools.py プロジェクト: 0xpr03/pyfeedback
 def test_empty_sheets(self):
     self.assertSequenceEqual(
         get_average(Ergebnis2009, [], 'v_feedbackpreis'), [None, 0])
     self.assertSequenceEqual(
         get_average(Ergebnis2009, self.f[:2], 'v_feedbackpreis'),
         [None, 0])
コード例 #8
0
ファイル: test_tools.py プロジェクト: 0xpr03/pyfeedback
 def test_weighted_parts(self):
     self.assertSequenceEqual(
         get_average(Ergebnis2009, self.f, 'ue_feedbackpreis'), [2.25, 2])
コード例 #9
0
ファイル: test_tools.py プロジェクト: 0xpr03/pyfeedback
 def test_multiple_parts(self):
     self.assertSequenceEqual(
         get_average(Ergebnis2009, self.f, 'ue_betreuung'), [3, 2])
     self.assertSequenceEqual(
         get_average(Ergebnis2012, self.f2012, 'ue_betreuung'), [2, 5])
コード例 #10
0
ファイル: test_tools.py プロジェクト: 0xpr03/pyfeedback
 def test_single_part(self):
     self.assertSequenceEqual(
         get_average(Ergebnis2009, self.f, 'ue_gesamt'), [1.5, 2])