| @@ -1,26 +1,40 @@ | |||||
| from django.contrib import admin | from django.contrib import admin | ||||
| from .models import Betrieb, Partei, PresidentCandidate, Question | from .models import Betrieb, Partei, PresidentCandidate, Question | ||||
| from startpage.models import Banned | |||||
| def ban_ip(modeladmin, request, queryset): | |||||
| for obj in queryset: | |||||
| banned = Banned(ip_address=obj.ip_address, | |||||
| reason="") | |||||
| banned.save() | |||||
| modeladmin.message_user(request, "Ausgewählte Urheber erfolgreich verbannt.") | |||||
| ban_ip.short_description = "Urheber ausgewählter Eintrage verbannen" | |||||
| # Register your models here. | # Register your models here. | ||||
| class BetriebAdmin(admin.ModelAdmin): | class BetriebAdmin(admin.ModelAdmin): | ||||
| list_display = ('name', 'manager', 'confirmed') | list_display = ('name', 'manager', 'confirmed') | ||||
| list_filter = ('confirmed',) | list_filter = ('confirmed',) | ||||
| actions = [ban_ip] | |||||
| class ParteiAdmin(admin.ModelAdmin): | class ParteiAdmin(admin.ModelAdmin): | ||||
| list_display = ('name', 'abbreviation', 'chef', 'description', 'confirmed') | list_display = ('name', 'abbreviation', 'chef', 'description', 'confirmed') | ||||
| list_filter = ('confirmed',) | list_filter = ('confirmed',) | ||||
| actions = ('ban_ip',) | |||||
| class PresidentAdmin(admin.ModelAdmin): | class PresidentAdmin(admin.ModelAdmin): | ||||
| list_display = ('name', 'confirmed') | list_display = ('name', 'confirmed') | ||||
| list_filter = ('confirmed',) | list_filter = ('confirmed',) | ||||
| actions = ('ban_ip',) | |||||
| class QuestionAdmin(admin.ModelAdmin): | class QuestionAdmin(admin.ModelAdmin): | ||||
| list_display = ('subject', 'answered') | list_display = ('subject', 'answered') | ||||
| list_filter = ('answered',) | list_filter = ('answered',) | ||||
| actions = ('ban_ip',) | |||||
| admin.site.register(Betrieb, BetriebAdmin) | admin.site.register(Betrieb, BetriebAdmin) | ||||
| admin.site.register(Partei, ParteiAdmin) | admin.site.register(Partei, ParteiAdmin) | ||||
| @@ -7,6 +7,7 @@ class Betrieb(models.Model): | |||||
| manager = models.CharField('Betriebsleiter', max_length=200) | manager = models.CharField('Betriebsleiter', max_length=200) | ||||
| email = models.EmailField('Kontakt Email') | email = models.EmailField('Kontakt Email') | ||||
| business_idea = models.TextField('Idee') | business_idea = models.TextField('Idee') | ||||
| ip_address = models.CharField('IP Adresse', max_length=50, blank=True) | |||||
| confirmed = models.BooleanField('Bestätigt', default=False) | confirmed = models.BooleanField('Bestätigt', default=False) | ||||
| def __str__(self): | def __str__(self): | ||||
| @@ -23,6 +24,7 @@ class Partei(models.Model): | |||||
| chef = models.CharField('Parteivorsitzende', max_length=200) | chef = models.CharField('Parteivorsitzende', max_length=200) | ||||
| email = models.EmailField('Kontakt Email') | email = models.EmailField('Kontakt Email') | ||||
| description = models.TextField('Beschreibung (Ziele etc.)') | description = models.TextField('Beschreibung (Ziele etc.)') | ||||
| ip_address = models.CharField('IP Adresse', max_length=50, blank=True) | |||||
| confirmed = models.BooleanField('Bestätigt', default=False) | confirmed = models.BooleanField('Bestätigt', default=False) | ||||
| def __str__(self): | def __str__(self): | ||||
| @@ -37,6 +39,7 @@ class PresidentCandidate(models.Model): | |||||
| name = models.CharField('Name', max_length=100) | name = models.CharField('Name', max_length=100) | ||||
| email = models.EmailField('Kontakt Email') | email = models.EmailField('Kontakt Email') | ||||
| motivation = models.TextField('Motivation') | motivation = models.TextField('Motivation') | ||||
| ip_address = models.CharField('IP Adresse', max_length=50, blank=True) | |||||
| confirmed = models.BooleanField('Bestätigt', default=False) | confirmed = models.BooleanField('Bestätigt', default=False) | ||||
| def __str__(self): | def __str__(self): | ||||
| @@ -51,6 +54,7 @@ class Question(models.Model): | |||||
| subject = models.CharField('Betreff', max_length=100) | subject = models.CharField('Betreff', max_length=100) | ||||
| email = models.EmailField('Kontakt Email') | email = models.EmailField('Kontakt Email') | ||||
| content = models.TextField('Inhalt') | content = models.TextField('Inhalt') | ||||
| ip_address = models.CharField('IP Adresse', max_length=50, blank=True) | |||||
| answered = models.BooleanField('Beantwortet', default=False) | answered = models.BooleanField('Beantwortet', default=False) | ||||
| def __str__(self): | def __str__(self): | ||||
| @@ -48,6 +48,7 @@ def betrieb_new(request): | |||||
| manager=form.cleaned_data.get('manager'), | manager=form.cleaned_data.get('manager'), | ||||
| email=form.cleaned_data.get('email'), | email=form.cleaned_data.get('email'), | ||||
| business_idea=form.cleaned_data.get('business_idea'), | business_idea=form.cleaned_data.get('business_idea'), | ||||
| ip_address=get_client_ip(request), | |||||
| confirmed=False) | confirmed=False) | ||||
| betrieb.save() | betrieb.save() | ||||
| return render_confirmation(request) | return render_confirmation(request) | ||||
| @@ -105,3 +106,12 @@ def question_new(request): | |||||
| def render_confirmation(request): | def render_confirmation(request): | ||||
| return render(request, "meingoethopia/confirmed.html") | return render(request, "meingoethopia/confirmed.html") | ||||
| def get_client_ip(request): | |||||
| x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR') | |||||
| if x_forwarded_for: | |||||
| ip = x_forwarded_for.split(',')[0] | |||||
| else: | |||||
| ip = request.META.get('REMOTE_ADDR') | |||||
| return ip | |||||
| @@ -1,3 +1,9 @@ | |||||
| from django.contrib import admin | from django.contrib import admin | ||||
| from .models import Banned | |||||
| class BanAdmin(admin.ModelAdmin): | |||||
| list_display = ('ip_address', 'reason') | |||||
| # Register your models here. | # Register your models here. | ||||
| admin.site.register(Banned, BanAdmin) | |||||
| @@ -1,3 +1,11 @@ | |||||
| from django.db import models | from django.db import models | ||||
| # Create your models here. | # Create your models here. | ||||
| class Banned(models.Model): | |||||
| ip_address = models.CharField('IP Adresse', max_length=50) | |||||
| reason = models.TextField('Grund') | |||||
| class Meta: | |||||
| verbose_name = 'Verbannte' | |||||
| verbose_name_plural = 'Verbannte' | |||||