[damned-lies] refactor: fix few linter issues in people
- From: Claude Paroz <claudep src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [damned-lies] refactor: fix few linter issues in people
- Date: Sat, 24 Apr 2021 08:42:17 +0000 (UTC)
commit 0b5bc57fb1813f6abb774b5a701370edb18a2565
Author: Guillaume Bernard <associations guillaume-bernard fr>
Date: Sun Apr 18 10:37:06 2021 +0200
refactor: fix few linter issues in people
people/admin.py | 2 ++
people/forms.py | 32 ++++++++++++++++----------------
people/models.py | 31 ++++++++++++++++++-------------
people/templatetags/people.py | 1 -
people/views.py | 13 ++++++++++---
5 files changed, 46 insertions(+), 33 deletions(-)
---
diff --git a/people/admin.py b/people/admin.py
index 659182a9..1c1ff24b 100644
--- a/people/admin.py
+++ b/people/admin.py
@@ -3,10 +3,12 @@ from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User
from people.models import Person
+
class PersonAdmin(admin.ModelAdmin):
search_fields = ('username', 'first_name', 'last_name', 'email')
list_display = ('username', 'first_name', 'last_name', 'email')
+
UserAdmin.list_display = ('username', 'email', 'last_name', 'first_name', 'is_active', 'last_login')
admin.site.unregister(User)
diff --git a/people/forms.py b/people/forms.py
index 4faa41e7..e79a0416 100644
--- a/people/forms.py
+++ b/people/forms.py
@@ -1,7 +1,10 @@
-import hashlib, random
+import hashlib
+import random
from http.client import InvalidURL
from urllib.request import urlopen
+from PIL import ImageFile
+
from django import forms
from django.conf import settings
from django.contrib.auth.forms import AuthenticationForm
@@ -69,13 +72,11 @@ class RegistrationForm(forms.Form):
new_user.is_active = False
new_user.save()
# Send activation email
- message = _("This is a confirmation that your registration on %s succeeded. To activate your
account, please click on the link below or copy and paste it in a browser.") % settings.SITE_DOMAIN
- message += "\n\nhttps://%s%s\n\n" % (
- settings.SITE_DOMAIN,
- str(reverse("register_activation", kwargs={'key': activation_key}))
- )
- message += _("Administrators of %s" % settings.SITE_DOMAIN)
-
+ site_domain = settings.SITE_DOMAIN
+ activation_url = str(reverse("register_activation", kwargs={'key': activation_key}))
+ message = _("This is a confirmation that your registration on %s succeeded. To activate your
account, please click on the link below or copy and paste it in a browser.") % site_domain
+ message += "\n\nhttps://%s%s\n\n" % (site_domain, activation_url)
+ message += _("Administrators of %s" % site_domain)
send_mail(_('Account activation'), message, to=[email])
return new_user
@@ -99,12 +100,13 @@ class DetailForm(forms.ModelForm):
def clean_image(self):
url = self.cleaned_data['image']
- if not url:
- return
- size = get_image_size(url)
- if size[0]>100 or size[1]>100:
- raise ValidationError(_("Image too high or too wide (%(width)d×%(height)d, maximum is 100×100
pixels)") % {
- 'width': size[0], 'height': size[1]})
+ if url:
+ size = get_image_size(url)
+ if size[0] > 100 or size[1] > 100:
+ raise ValidationError(_(
+ "Image too high or too wide (%(width)d×%(height)d, maximum is 100×100 pixels)") % {
+ 'width': size[0], 'height': size[1]
+ })
return url
@@ -123,8 +125,6 @@ class TeamJoinForm(forms.Form):
def get_image_size(url):
""" Returns width and height (as tuple) of the image poited at by the url
Code partially copied from http://effbot.org/zone/pil-image-size.htm """
- from PIL import ImageFile
-
try:
im_file = urlopen(url)
except (IOError, InvalidURL, EOFError, ValueError):
diff --git a/people/models.py b/people/models.py
index 60e02239..ebdde369 100644
--- a/people/models.py
+++ b/people/models.py
@@ -11,6 +11,7 @@ from django.utils.html import escape
from django.utils.safestring import mark_safe
from django.utils.translation import gettext_lazy as _
+
AVATAR_SERVICES = {
'gravatar.com': 'https://secure.gravatar.com/avatar/{hash}.jpg?{qs}',
# See https://wiki.libravatar.org/api/
@@ -31,11 +32,13 @@ class Person(User):
auth_token = models.CharField(_("Authentication Token"), max_length=40, blank=True)
svn_account = models.SlugField(max_length=20, null=True, blank=True)
- image = models.URLField(_("Image"), null=True, blank=True,
- help_text=_("URL to an image file (.jpg, .png, …) of an hackergotchi (max.
100×100 pixels)"))
+ image = models.URLField(
+ _("Image"), null=True, blank=True,
+ help_text=_("URL to an image file (.jpg, .png, …) of an hackergotchi (max. 100×100 pixels)")
+ )
avatar_service = models.CharField(
_("Avatar provider"), max_length=50, blank=True,
- choices=((name, name) for name in AVATAR_SERVICES.keys())
+ choices=((name, name) for name in AVATAR_SERVICES)
)
webpage_url = models.URLField(_("Web page"), null=True, blank=True)
irc_nick = models.SlugField(_("IRC nickname"), max_length=20, null=True, blank=True)
@@ -50,8 +53,10 @@ class Person(User):
@classmethod
def clean_unactivated_accounts(cls):
- accounts = cls.objects.filter(activation_key__isnull=False,
-
date_joined__lt=(datetime.datetime.now()-datetime.timedelta(days=10))).exclude(activation_key='')
+ accounts = cls.objects.filter(
+ activation_key__isnull=False,
+ date_joined__lt=(datetime.datetime.now()-datetime.timedelta(days=10))
+ ).exclude(activation_key='')
for account in accounts:
account.delete()
@@ -116,8 +121,7 @@ class Person(User):
def name(self):
if self.first_name or self.last_name:
return " ".join([name for name in [self.first_name, self.last_name] if name])
- else:
- return self.username
+ return self.username
def __str__(self):
return self.name
@@ -129,6 +133,8 @@ class Person(User):
return reverse('person_detail_username', args=[self.username])
def coordinates_teams(self):
+ # Class imported here to avoid cyclic import
+ # pylint: disable=import-outside-toplevel
from teams.models import Team
return Team.objects.filter(role__person__id=self.id).all()
@@ -139,12 +145,11 @@ class Person(User):
"""
if team == 'any':
return self.role_set.filter(role='coordinator').exists()
- else:
- try:
- self.role_set.get(team__id=team.id, role='coordinator')
- return True
- except (ObjectDoesNotExist, AttributeError):
- return False
+ try:
+ self.role_set.get(team__id=team.id, role='coordinator')
+ return True
+ except (ObjectDoesNotExist, AttributeError):
+ return False
def is_committer(self, team):
try:
diff --git a/people/templatetags/people.py b/people/templatetags/people.py
index a67054d8..820be09c 100644
--- a/people/templatetags/people.py
+++ b/people/templatetags/people.py
@@ -1,7 +1,6 @@
import hashlib
from django import template
-from django.conf import settings
from django.templatetags.static import static
from django.utils.html import format_html, format_html_join
from django.utils.http import urlencode
diff --git a/people/views.py b/people/views.py
index c6a31957..52d08b7f 100644
--- a/people/views.py
+++ b/people/views.py
@@ -28,6 +28,7 @@ class PeopleListView(ListView):
context['pageSection'] = "teams"
return context
+
class PersonDetailView(DetailView):
model = Person
slug_field = 'username'
@@ -36,7 +37,9 @@ class PersonDetailView(DetailView):
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
states = State.objects.filter(action__person=self.object).distinct()
- all_languages = [(lg[0], LANG_INFO.get(lg[0], {'name_local': lg[1]})['name_local']) for lg in
settings.LANGUAGES]
+ all_languages = [
+ (lg[0], LANG_INFO.get(lg[0], {'name_local': lg[1]})['name_local']) for lg in settings.LANGUAGES
+ ]
all_languages = lc_sorted(all_languages, key=itemgetter(1))
context.update({
'pageSection': "teams",
@@ -46,26 +49,28 @@ class PersonDetailView(DetailView):
})
return context
+
class PersonEditView(UpdateView):
model = Person
slug_field = 'username'
form_class = DetailForm
template_name = 'people/person_detail_change_form.html'
- def get_object(self):
+ def get_object(self, **kwargs):
self.kwargs['slug'] = self.request.user.username
return super().get_object()
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['pageSection'] = "teams"
- context['on_own_page'] = self.object.username == self.request.user.username,
+ context['on_own_page'] = self.object.username == self.request.user.username
return context
def form_invalid(self, form):
messages.error(self.request, _("Sorry, the form is not valid."))
return super().form_invalid(form)
+
@login_required
def person_team_join(request):
"""Handle the form to join a team"""
@@ -97,6 +102,7 @@ def person_team_join(request):
}
return render(request, 'people/person_team_join_form.html', context)
+
@login_required
@require_POST
def person_team_leave(request, team_slug):
@@ -114,6 +120,7 @@ def person_team_leave(request, team_slug):
reverse('person_detail_username', args=(person.username,))
)
+
@login_required
def person_password_change(request):
"""Handle the generic form to change the password"""
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]