ソースを参照

allow banning

master
erichhasl 8年前
コミット
3a678016d1
5個のファイルの変更42行の追加0行の削除
  1. +14
    -0
      web_dev/sas_web/meingoethopia/admin.py
  2. +4
    -0
      web_dev/sas_web/meingoethopia/models.py
  3. +10
    -0
      web_dev/sas_web/meingoethopia/views.py
  4. +6
    -0
      web_dev/sas_web/startpage/admin.py
  5. +8
    -0
      web_dev/sas_web/startpage/models.py

+ 14
- 0
web_dev/sas_web/meingoethopia/admin.py ファイルの表示

@@ -1,26 +1,40 @@
from django.contrib import admin
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.
class BetriebAdmin(admin.ModelAdmin):
list_display = ('name', 'manager', 'confirmed')
list_filter = ('confirmed',)
actions = [ban_ip]


class ParteiAdmin(admin.ModelAdmin):
list_display = ('name', 'abbreviation', 'chef', 'description', 'confirmed')
list_filter = ('confirmed',)
actions = ('ban_ip',)


class PresidentAdmin(admin.ModelAdmin):
list_display = ('name', 'confirmed')
list_filter = ('confirmed',)
actions = ('ban_ip',)


class QuestionAdmin(admin.ModelAdmin):
list_display = ('subject', 'answered')
list_filter = ('answered',)
actions = ('ban_ip',)

admin.site.register(Betrieb, BetriebAdmin)
admin.site.register(Partei, ParteiAdmin)


+ 4
- 0
web_dev/sas_web/meingoethopia/models.py ファイルの表示

@@ -7,6 +7,7 @@ class Betrieb(models.Model):
manager = models.CharField('Betriebsleiter', max_length=200)
email = models.EmailField('Kontakt Email')
business_idea = models.TextField('Idee')
ip_address = models.CharField('IP Adresse', max_length=50, blank=True)
confirmed = models.BooleanField('Bestätigt', default=False)

def __str__(self):
@@ -23,6 +24,7 @@ class Partei(models.Model):
chef = models.CharField('Parteivorsitzende', max_length=200)
email = models.EmailField('Kontakt Email')
description = models.TextField('Beschreibung (Ziele etc.)')
ip_address = models.CharField('IP Adresse', max_length=50, blank=True)
confirmed = models.BooleanField('Bestätigt', default=False)

def __str__(self):
@@ -37,6 +39,7 @@ class PresidentCandidate(models.Model):
name = models.CharField('Name', max_length=100)
email = models.EmailField('Kontakt Email')
motivation = models.TextField('Motivation')
ip_address = models.CharField('IP Adresse', max_length=50, blank=True)
confirmed = models.BooleanField('Bestätigt', default=False)

def __str__(self):
@@ -51,6 +54,7 @@ class Question(models.Model):
subject = models.CharField('Betreff', max_length=100)
email = models.EmailField('Kontakt Email')
content = models.TextField('Inhalt')
ip_address = models.CharField('IP Adresse', max_length=50, blank=True)
answered = models.BooleanField('Beantwortet', default=False)

def __str__(self):


+ 10
- 0
web_dev/sas_web/meingoethopia/views.py ファイルの表示

@@ -48,6 +48,7 @@ def betrieb_new(request):
manager=form.cleaned_data.get('manager'),
email=form.cleaned_data.get('email'),
business_idea=form.cleaned_data.get('business_idea'),
ip_address=get_client_ip(request),
confirmed=False)
betrieb.save()
return render_confirmation(request)
@@ -105,3 +106,12 @@ def question_new(request):

def render_confirmation(request):
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

+ 6
- 0
web_dev/sas_web/startpage/admin.py ファイルの表示

@@ -1,3 +1,9 @@
from django.contrib import admin
from .models import Banned


class BanAdmin(admin.ModelAdmin):
list_display = ('ip_address', 'reason')

# Register your models here.
admin.site.register(Banned, BanAdmin)

+ 8
- 0
web_dev/sas_web/startpage/models.py ファイルの表示

@@ -1,3 +1,11 @@
from django.db import models


# 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'

読み込み中…
キャンセル
保存