Diverse Code Cleanups

*Code wurde PEP-8 gerecht formatiert
* Kleine Fehler die der PyCharm Inspector beanstandet wurden korrigiert
This commit is contained in:
Christian Berg
2014-11-26 16:04:52 +01:00
committed by Christian Berg
parent f34281089d
commit 86a0db050d
76 changed files with 619 additions and 528 deletions

View File

@@ -1,8 +1,8 @@
'''
"""
Created on 19.09.2011
@author: christian
'''
"""
# import stuff we need from django
from django.contrib import admin
from membership.models import Membership, ActivationRequest
@@ -15,6 +15,8 @@ def activate_user(modeladmin, request, queryset):
membership = Membership.objects.get(username=activation.user.username)
membership.save()
activation.activate()
activate_user.short_description = _('Activate selected User')
@@ -22,6 +24,8 @@ def cleanup_activation(modeladmin, request, queryset):
for activation in queryset:
if activation.expired:
activation.user.delete()
cleanup_activation.short_description = _("Cleanup selected Activation Requests")
@@ -39,24 +43,28 @@ class MembershipAdmin(admin.ModelAdmin):
)
list_editable = ('confirmed', 'paid_until',)
list_display_links = ('nickname',)
fieldsets = ((None, {
'fields': ('gender', ('first_name', 'last_name'), ('email', 'website'))
fieldsets = (
(None, {
'fields': ('gender', ('first_name', 'last_name'), ('email', 'website'))
}),
(_('Membership'), {
'classes': ('collapse',),
'fields': (('membership', 'confirmed'), 'birthday', 'telephone',
'street_name', ('post_code', 'city'))
'street_name', ('post_code', 'city'))
}),
)
ordering = ('nickname',)
search_fields = ('nickname', 'first_name', 'last_name',)
admin.site.register(Membership, MembershipAdmin)
class RegistrationAdmin(admin.ModelAdmin):
list_display = ('username', 'first_name', 'last_name', 'email',
'registration_date', 'expired')
'registration_date', 'expired')
search_fields = ('user__username', 'user__first_name')
actions = [cleanup_activation, activate_user]
admin.site.register(ActivationRequest, RegistrationAdmin)

View File

@@ -1,11 +1,11 @@
'''
"""
Created on 03.10.2011
@author: Christian
'''
"""
from . import models
from django.conf import settings
from django.contrib.auth.models import User
from django.contrib import auth
from django.contrib.sites.models import Site
from django.utils.translation import ugettext_lazy as _
from utils.html5 import forms
@@ -26,29 +26,25 @@ class MembershipForm(forms.ModelForm):
)
def clean_birthday(self):
if self.cleaned_data['membership'] \
and not self.cleaned_data['birthday']:
if self.cleaned_data['membership'] and not self.cleaned_data['birthday']:
raise forms.ValidationError(_('For your membership, we need this. \
Please fill out this field yet.'))
return self.cleaned_data['birthday']
def clean_telephone(self):
if self.cleaned_data['membership'] \
and not self.cleaned_data['telephone']:
if self.cleaned_data['membership'] and not self.cleaned_data['telephone']:
raise forms.ValidationError(_('For your membership, we need this. \
Please fill out this field yet.'))
return self.cleaned_data['telephone']
def clean_street_name(self):
if self.cleaned_data['membership'] \
and not self.cleaned_data['street_name']:
if self.cleaned_data['membership'] and not self.cleaned_data['street_name']:
raise forms.ValidationError(_('For your membership, we need this. \
Please fill out this field yet.'))
return self.cleaned_data['street_name']
def clean_post_code(self):
if self.cleaned_data['membership'] \
and not self.cleaned_data['post_code']:
if self.cleaned_data['membership'] and not self.cleaned_data['post_code']:
raise forms.ValidationError(_('For your membership, we need this. \
Please fill out this field yet.'))
return self.cleaned_data['post_code']
@@ -71,41 +67,43 @@ class RegistrationForm(forms.ModelForm):
required_css_class = 'required'
first_name = forms.CharField(max_length=30, required=True,
label=_('Given Name'))
label=_('Given Name'))
last_name = forms.CharField(max_length=30, required=True,
label=_('Last Name'))
label=_('Last Name'))
username = forms.SlugField(required=True, max_length=30,
label=_('Username'),
help_text=_("The Username can only contain the letters from A to Z, \
label=_('Username'),
help_text=_("The Username can only contain the letters from A to Z, \
Numbers, and the underscore. It must be at least 2 characters long, \
and cannot be longer the 30. The first character must be a letter."))
email = forms.EmailField(required=True)
password1 = forms.CharField(widget=forms.PasswordInput(),
label=_('password'))
label=_('password'))
password2 = forms.CharField(widget=forms.PasswordInput(),
label=_('password (again)'))
label=_('password (again)'))
recaptcha = forms.ReCaptchaField()
class Meta:
model = User
model = auth.get_user_model()
fields = ('first_name', 'last_name', 'username', 'email',)
def clean_username(self):
'''
"""
Validate that the username is not already in use.
'''
"""
try:
User.objects.get(username__iexact=self.cleaned_data['username'])
except User.DoesNotExist:
auth.get_user_model().objects.get(
username__iexact=self.cleaned_data['username']
)
except auth.get_user_model().DoesNotExist:
return self.cleaned_data['username']
raise forms.ValidationError(_(u'This username is already taken. \
Please choose another.'))
def clean_email(self):
'''
"""
Validate that the supplied email address is unique for the site.
'''
if User.objects.filter(email__iexact=self.cleaned_data['email']):
"""
if auth.get_user_model().objects.filter(email__iexact=self.cleaned_data['email']):
raise forms.ValidationError(_(u'This email address is already in \
use. Please supply a different email address.'))
return self.cleaned_data['email']

View File

@@ -1,15 +1,13 @@
# -*- coding: utf-8 -*-
from django.contrib.auth.models import User
from django.core.management.base import BaseCommand
from django.utils.translation import ugettext_lazy as _
from membership.models import ActivationRequest
class Command(BaseCommand):
help = "Delete all expired user registrations from the database"
def handle(self, *args, **options):
for activation in ActivationRequest.objects.expired():
activation.user.delete()

View File

@@ -8,10 +8,10 @@ It might help your debugging to know or you might want to contact the user to
tell them you have fixed the problem.
"""
from django.contrib.auth.models import User
from django.conf import settings
from django.contrib import auth
from django.contrib.sessions.models import Session
from django.core.management.base import BaseCommand, CommandError
from django.utils.translation import ugettext_lazy as _
from django.core.management.base import BaseCommand
from optparse import make_option
@@ -19,33 +19,36 @@ class Command(BaseCommand):
args = '<session_key session_key ...>'
help = 'If the session still exists find it and show the related User'
option_list = BaseCommand.option_list + (
make_option('--delete',
make_option(
'--delete',
action='store_true',
dest='delete',
default=False,
help='Delete the Useraccount'),
make_option('--ban',
help='Delete the Useraccount'
),
make_option(
'--ban',
action='store_true',
dest='ban',
default=False,
help='Ban the Useraccount'),
)
help='Ban the Useraccount'
),
)
def handle(self, *args, **options):
for session_key in args:
try:
session = Session.objects.get(session_key=session_key)
uid = session.get_decoded().get('_auth_user_id')
user = User.objects.get(pk=uid)
user = auth.get_user_model().objects.get(pk=uid)
except Session.DoesNotExist:
self.stderr.write('Session "%s" does not exist' % session_key)
continue
except User.DoesNotExist:
except settings.AUTH_USER_MODEL.DoesNotExist:
self.stderr.write('Session "%s" has no registed User' % session_key)
continue
if options['delete']:
self.stdout.write('deleting %s'% user.username)
self.stdout.write('deleting %s' % user.username)
user.delete()
elif options['ban']:
self.stdout.write('banning %s' % user.username)

View File

@@ -4,7 +4,6 @@ from . import PAID_MEMBERSHIP_GROUP
from datetime import timedelta
from django.utils import timezone
from django.conf import settings
from django.contrib.auth.models import User
from django.core.exceptions import FieldError
from django.core.urlresolvers import reverse
from django.db import models
@@ -23,29 +22,29 @@ GENDER_CHOICES = (
def get_upload_path(instance, filename):
'''
"""
Erstellt den Pfad und Dateinamen für den Upload dynmisch.
@param instance: The Membership Object for the uploaded image
@param filename: the filename of the uploaded image
'''
"""
extension = path.splitext(filename)[1]
return 'membership/%s%s' % (instance.user.username, extension)
class ActivationManager(models.Manager):
'''
"""
Manages pending user registrations
'''
"""
def activate(self, activation_key):
'''
"""
searches the pending registrations for the given activation key.
Set the corresponding user to active, if the key was found
and the key has not expired yet.s
@param activation_key: the key found in the activation email
'''
"""
try:
activation_request = self.get(activation_key=activation_key)
if activation_request.expired():
@@ -61,10 +60,10 @@ class ActivationManager(models.Manager):
return False
def create_pending_registration(self, user):
'''
"""
creates a PendingActivation instance with an random activation key.
@param user: the user that requests activation.
'''
"""
salt = str(random.random())
activation_key = hashlib.sha1(salt + user.username).hexdigest()
@@ -78,12 +77,16 @@ class ActivationManager(models.Manager):
class ActivationRequest(models.Model):
'''
"""
Each ActivationRequest contains an activation key and an user.
The key will be send by email to the user
if the user clicks on the link he can activate his in_active account.
'''
user = models.ForeignKey(User, unique=True, verbose_name=_('user'))
"""
user = models.ForeignKey(
settings.AUTH_USER_MODEL,
unique=True,
verbose_name=_('user')
)
activation_key = models.CharField(_('activation key'), max_length=40)
objects = ActivationManager()
@@ -115,6 +118,7 @@ class ActivationRequest(models.Model):
return True
else:
return False
expired.boolean = True
@property
@@ -135,28 +139,26 @@ class ActivationRequest(models.Model):
class MembershipManager(models.Manager):
def get(self, *args, **kwargs):
'''
"""
First try's to fetch the requested Membership Object from the Database,
if the requestetd Membership does not Exists (yet) try to fetch the
corresponding User, and create the Membership with the filled in
Userdata.
'''
"""
try:
if 'username' in kwargs:
return models.Manager.get(self,
user__username=kwargs['username']
)
user__username=kwargs['username'])
else:
return models.Manager.get(self, *args, **kwargs)
except FieldError:
user = User.objects.get(*args, **kwargs)
user = settings.AUTH_USER_MODEL.objects.get(*args, **kwargs)
except Membership.DoesNotExist:
if 'user' in kwargs:
user = User.objects.get(pk=kwargs['user'].id)
user = settings.AUTH_USER_MODEL.objects.get(pk=kwargs['user'].id)
else:
user = User.objects.get(*args, **kwargs)
user = settings.AUTH_USER_MODEL.objects.get(*args, **kwargs)
membership = Membership(
user=user,
@@ -169,7 +171,10 @@ class MembershipManager(models.Manager):
class Membership(models.Model):
user = models.OneToOneField(User)
user = models.ForeignKey(
settings.AUTH_USER_MODEL,
unique=True
)
nickname = models.SlugField(_('Nickname'), unique=True)
gender = models.CharField(
_("Gender"),
@@ -186,39 +191,46 @@ class Membership(models.Model):
blank=True,
null=True
)
membership = models.BooleanField(_('Membership'),
membership = models.BooleanField(
_('Membership'),
default=False,
help_text=_('Yes, I confirm that I am in agreement with the statutes \
and would like to become a member.')
)
birthday = models.DateField(_("Birthday Date"), blank=True, null=True)
telephone = models.CharField(_("Telephone"),
telephone = models.CharField(
_("Telephone"),
max_length=30,
blank=True,
null=True
)
street_name = models.CharField(_("Address"),
street_name = models.CharField(
_("Address"),
max_length=75,
blank=True,
null=True
)
post_code = models.PositiveSmallIntegerField(_("Postcode"),
post_code = models.PositiveSmallIntegerField(
_("Postcode"),
blank=True,
null=True
)
city = models.CharField(_("Town/City"),
city = models.CharField(
_("Town/City"),
max_length=75,
blank=True,
null=True
)
deposit = models.PositiveSmallIntegerField(default=0, editable=False)
registration_date = models.DateField(auto_now_add=True, editable=False)
paid_until = models.DateField(_('Paid until'),
paid_until = models.DateField(
_('Paid until'),
blank=True,
null=True,
editable=True
)
confirmed = models.BooleanField(_('Confirmed'),
confirmed = models.BooleanField(
_('Confirmed'),
default=False,
help_text=_('This person has paid the membership fee.')
)
@@ -258,7 +270,8 @@ class Membership(models.Model):
self.email = self.user.email
def get_absolute_url(self):
return reverse('membership-details',
return reverse(
'membership-details',
kwargs={'username': self.user.username}
)

View File

@@ -1,21 +1,24 @@
from imagekit.specs import ImageSpec
from imagekit import processors
class ResizeThumbnail(processors.Resize):
width = 60
height = 60
crop = True
class ResizeProfile(processors.Resize):
width = 140
height = 140
crop = True
class Thumbnail(ImageSpec):
pre_cache = True
processors = (ResizeThumbnail,)
class Profile(ImageSpec):
pre_cache = False
processors = (ResizeProfile,)

View File

@@ -2,7 +2,7 @@
<table>
<thead><tr>
<th>{% trans 'Start' %}<//th>
<th>{% trans 'Start' %}</th>
<th>{% trans 'Event' %}</th>
<th colspan="4">{% trans 'Players' %}</th>
<th>{% trans 'Kyu Points' %}</th>

View File

@@ -1,14 +1,15 @@
'''
"""
Created on 03.10.2011
@author: christian
'''
"""
from django.conf.urls import * # @UnusedWildImport
from . import views
urlpatterns = patterns('',
urlpatterns = patterns(
'',
url('', include('social.apps.django_app.urls', namespace='social')),
url('', include('django.contrib.auth.urls')),
url(r'^register/$',

View File

@@ -4,16 +4,17 @@ from django.contrib import auth, messages
from django.core.urlresolvers import reverse
from django.utils.translation import ugettext as _
from django.views import generic
from mahjong_ranking.models import KyuDanRanking, LadderRanking, LadderSeason
import forms
import models
from utils import mixins
from . import forms, models
class ActivateRegistration(generic.DetailView):
'''
"""
Activates the Registration of an User and logs him in
'''
"""
template_name = 'membership/activation_error.html'
def get(self, request, **kwargs):
@@ -79,7 +80,7 @@ class MembershipDetail(mixins.LoginRequiredMixin, generic.DetailView):
def get_object(self, queryset=None):
if self.kwargs.get('username'):
return models.Membership.objects.get(username=self.kwargs['username'])
return models.Membership.objects.get_or_create(username=self.kwargs['username'])[0]
elif self.request.user.is_authenticated():
return models.Membership.objects.get(user=self.request.user)
@@ -88,13 +89,13 @@ class MembershipDetail(mixins.LoginRequiredMixin, generic.DetailView):
try:
context['kyu_dan_ranking'] = KyuDanRanking.objects.get(
user_id=self.object.user_id)
except:
except KyuDanRanking.DoesNotExist:
context['kyu_dan_ranking'] = None
try:
context['ladder_ranking'] = LadderRanking.objects.get(
user_id=self.object.user_id,
season=LadderSeason.objects.current())
except:
except LadderRanking.DoesNotExist:
context['ladder_ranking'] = LadderRanking(user=self.object.user)
return context