<commit_before>from django.shortcuts import get_object_or_404, render
from django.core.urlresolvers import reverse
from django.http import HttpResponse, HttpResponseRedirect, HttpResponseForbidden
from django.contrib import messages

from .models import *
from Produkte.models import Kauf
from Grundgeruest.views import ListeMitMenue, DetailMitMenue, TemplateMitMenue


class ListeAlle(ListeMitMenue):
    """ Stellt Liste aller Veranstaltungen dar
    """
    template_name = 'Veranstaltungen/liste_veranstaltungen.html'
    context_object_name = 'veranstaltungen'
    paginate_by = 5
    model = Veranstaltung

def liste_veranstaltungen(request, art):
    if request.user.is_authenticated():
        template_name = 'Veranstaltungen/liste_veranstaltungen.html'
    else:
        template_name = 'Veranstaltungen/liste_veranstaltungen_gast.html'
    
    if "seite" in request.GET:
        return ListeArt.as_view(
            template_name=template_name,
            art=art)(request, page=request.GET.get('seite'))
    else:
        return ListeArt.as_view(
            template_name=template_name,
            art=art)(request)
 
class ListeArt(ListeAlle):
    """ Klasse zur Darstellung der Seminare oder Salons
    Bekommt als kwargs art übergeben und ob user.is_authenticated()
    """
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.art_model = get_object_or_404(
            ArtDerVeranstaltung, bezeichnung=self.art)
        veranstaltungen = Veranstaltung.objects.filter(
            datum__gte=date.today()).filter(
            art_veranstaltung=self.art_model).order_by('datum')
        self.extra_context = {
            'veranstaltungen': veranstaltungen, 
            'art_veranstaltung': self.art_model,
            'url_hier': {'Seminar': '/seminare', 'Salon': '/salons'}[self.art],
        }
    
    art = 'Salon'
    context_object_name = 'medien'
    paginate_by = 5
    def get_queryset(self, **kwargs):
        mit_medien = [v for v in Veranstaltung.objects.all()
            if v.art_veranstaltung==self.art_model
            and v.ist_vergangen()
            and v.hat_medien()]
        mit_medien.sort(key = lambda m: m.datum, reverse=True)
        return mit_medien

class VeranstaltungDetail(DetailMitMenue):
    template_name = 'Veranstaltungen/detail_veranstaltung.html'
    context_object_name = 'veranstaltung'
    def get_object(self, **kwargs):        
        art_name = self.kwargs['art']
        slug = self.kwargs['slug']
        
        # das in der Funktion weil Zugriff aus self, eig. Missbrauch
        self.url_hier = '/%s/%s' % (art_name.lower(), slug)
        
        # bestimmt die Instanz für den detail-view
        art = get_object_or_404(ArtDerVeranstaltung, bezeichnung=art_name)        
        return Veranstaltung.objects.filter(
            art_veranstaltung=art).get(slug=slug)
        
    def post(self, request, *args, **kwargs):
        if request.user.is_staff: 
            v = Veranstaltung.objects.get(pk = request.POST.get('pk'))
            kaeufe = list(Kauf.objects.filter(produkt_pk='%s+%s+%s' % ('veranstaltung', request.POST.get('pk'), 'teilnahme')))
            content = '<h1>Teilnehmer für %s</h1><ul>' % v
            for k in kaeufe:
                teilnehme = '<li>%s %s - Menge: %d</li>' % (k.nutzer.user.first_name, k.nutzer.user.last_name, k.menge)
                content += teilnehme
            content += '</ul>'
            return HttpResponse(content)#, content_type='text/plain')
        else:
            return HttpResponseForbidden()
def eine_veranstaltung(request, slug):
    # gedoppelter code, aber die url /veranstaltungen/... wird eh bald obsolet?
    if request.method == 'POST':
        print(request.post)
    if request.user.is_authenticated():
        return DetailMitMenue.as_view(<commit_msg>Teilnehmerliste Fix<commit_after>from django.shortcuts import get_object_or_404, render
from django.core.urlresolvers import reverse
from django.http import HttpResponse, HttpResponseRedirect, HttpResponseForbidden
from django.contrib import messages

from .models import *
from Produkte.models import Kauf
from Grundgeruest.views import ListeMitMenue, DetailMitMenue, TemplateMitMenue


class ListeAlle(ListeMitMenue):
    """ Stellt Liste aller Veranstaltungen dar
    """
    template_name = 'Veranstaltungen/liste_veranstaltungen.html'
    context_object_name = 'veranstaltungen'
    paginate_by = 5
    model = Veranstaltung

def liste_veranstaltungen(request, art):
    if request.user.is_authenticated():
        template_name = 'Veranstaltungen/liste_veranstaltungen.html'
    else:
        template_name = 'Veranstaltungen/liste_veranstaltungen_gast.html'
    
    if "seite" in request.GET:
        return ListeArt.as_view(
            template_name=template_name,
            art=art)(request, page=request.GET.get('seite'))
    else:
        return ListeArt.as_view(
            template_name=template_name,
            art=art)(request)
 
class ListeArt(ListeAlle):
    """ Klasse zur Darstellung der Seminare oder Salons
    Bekommt als kwargs art übergeben und ob user.is_authenticated()
    """
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.art_model = get_object_or_404(
            ArtDerVeranstaltung, bezeichnung=self.art)
        veranstaltungen = Veranstaltung.objects.filter(
            datum__gte=date.today()).filter(
            art_veranstaltung=self.art_model).order_by('datum')
        self.extra_context = {
            'veranstaltungen': veranstaltungen, 
            'art_veranstaltung': self.art_model,
            'url_hier': {'Seminar': '/seminare', 'Salon': '/salons'}[self.art],
        }
    
    art = 'Salon'
    context_object_name = 'medien'
    paginate_by = 5
    def get_queryset(self, **kwargs):
        mit_medien = [v for v in Veranstaltung.objects.all()
            if v.art_veranstaltung==self.art_model
            and v.ist_vergangen()
            and v.hat_medien()]
        mit_medien.sort(key = lambda m: m.datum, reverse=True)
        return mit_medien

class VeranstaltungDetail(DetailMitMenue):
    template_name = 'Veranstaltungen/detail_veranstaltung.html'
    context_object_name = 'veranstaltung'
    def get_object(self, **kwargs):        
        art_name = self.kwargs['art']
        slug = self.kwargs['slug']
        
        # das in der Funktion weil Zugriff aus self, eig. Missbrauch
        self.url_hier = '/%s/%s' % (art_name.lower(), slug)
        
        # bestimmt die Instanz für den detail-view
        art = get_object_or_404(ArtDerVeranstaltung, bezeichnung=art_name)        
        return Veranstaltung.objects.filter(
            art_veranstaltung=art).get(slug=slug)
        
    def post(self, request, *args, **kwargs):
        if request.user.is_staff: 
            v = Veranstaltung.objects.get(pk = request.POST.get('pk'))
            kaeufe = list(Kauf.objects.filter(produkt_pk='%s+%s+%s' % ('veranstaltung', request.POST.get('pk'), 'teilnahme')))
            content = '<h1>Teilnehmer für %s</h1><ul>' % v
            for k in kaeufe:
                teilnehme = '<li>%s %s - Menge: %d</li>' % (k.nutzer.user.first_name, k.nutzer.user.last_name, k.menge)
                content += teilnehme
            content += '</ul>'
            return HttpResponse(content)#, content_type='text/plain')
        else:
            return HttpResponseForbidden()
def eine_veranstaltung(request, slug):
    # gedoppelter code, aber die url /veranstaltungen/... wird eh bald obsolet?
    if request.user.is_authenticated():
        return DetailMitMenue.as_view(
{'fraction_non_alphanumeric': 0.1080267120597093, 'fraction_numerical': 0.0034044781982453844, 'mean_word_length': 2.8401206636500755, 'pattern_counts': {'":': 0, '<': 15, '<?xml version=': 0, '>': 15, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '737416', 'n_tokens_mistral': 2491, 'n_tokens_neox': 2543, 'n_words': 480}