Code cleanup using panda-bears
This commit is contained in:
2
.coafile
2
.coafile
@@ -5,4 +5,4 @@ language = python
|
||||
bears = PEP8Bear,PyLintBear,PyUnusedCodeBear
|
||||
use_spaces = True
|
||||
pylint_cli_options = --load-plugins pylint_django
|
||||
pylint_disable = E1101,R0201,R0901,R0903
|
||||
#pylint_disable = E1101,R0201,R0901,R0903
|
||||
|
||||
2
Makefile
2
Makefile
@@ -16,7 +16,7 @@ all: cleanup migrate testserver
|
||||
|
||||
venv: $(VENV_PATH)/bin/activate
|
||||
$(VENV_PATH)/bin/activate:
|
||||
@test -d $(VENV_PATH) || python3.5 -m venv --clear $(VENV_PATH)
|
||||
@test -d $(VENV_PATH) || python3 -m venv --clear $(VENV_PATH)
|
||||
|
||||
dev-requirements: venv ${DEV_REQUIREMENTS}
|
||||
${PYTHON} -m pip install -qU pip
|
||||
|
||||
@@ -5,6 +5,7 @@ from django.core.cache import cache
|
||||
from . import models
|
||||
from utils import STATUS_PUBLISHED
|
||||
|
||||
|
||||
def content_menus(request):
|
||||
""" Generate the menu tree and add these info to the template context.
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: kasu.content\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2019-01-12 16:27+0100\n"
|
||||
"POT-Creation-Date: 2019-12-13 23:38+0100\n"
|
||||
"PO-Revision-Date: 2018-01-12 15:25+0105\n"
|
||||
"Last-Translator: b'Christian Berg <kasu@xendynastie.at>'\n"
|
||||
"Language-Team: Deutsch <>\n"
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: kasu.events\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2019-01-12 16:27+0100\n"
|
||||
"POT-Creation-Date: 2019-12-13 23:38+0100\n"
|
||||
"PO-Revision-Date: 2018-01-12 15:25+0105\n"
|
||||
"Last-Translator: b'Christian Berg <kasu@xendynastie.at>'\n"
|
||||
"Language-Team: Kasu <verein@kasu.at>\n"
|
||||
|
||||
@@ -5,7 +5,8 @@ from django.contrib.auth import get_user_model
|
||||
from django.contrib.auth.mixins import PermissionRequiredMixin
|
||||
from django.urls import reverse
|
||||
from django.db.models import Q
|
||||
from django.http import HttpResponse, Http404
|
||||
from django.http import Http404
|
||||
from django.http import HttpResponse
|
||||
from django.shortcuts import redirect
|
||||
from django.utils import timezone
|
||||
from django.utils.translation import ugettext as _
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: kasu.utils\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2019-01-12 16:27+0100\n"
|
||||
"POT-Creation-Date: 2019-12-13 23:38+0100\n"
|
||||
"PO-Revision-Date: 2018-12-30 11:14+0105\n"
|
||||
"Last-Translator: b' <kasu@xendynastie.at>'\n"
|
||||
"Language-Team: Kasu <verein@kasu.at>\n"
|
||||
|
||||
@@ -14,8 +14,8 @@ if VENV_PATH not in sys.path:
|
||||
if SOURCE_PATH not in sys.path:
|
||||
sys.path.append(SOURCE_PATH)
|
||||
|
||||
from django.core.wsgi import get_wsgi_application # Ignore PyLintBear (C0413) # Ignore PyLintBear (C0413)
|
||||
from django.core.wsgi import get_wsgi_application
|
||||
|
||||
os.environ['DJANGO_SETTINGS_MODULE'] = 'kasu.settings'
|
||||
|
||||
application = get_wsgi_application() # Ignore PyLintBear (C0103) # Ignore PyLintBear (C0103)
|
||||
application = get_wsgi_application()
|
||||
|
||||
@@ -80,7 +80,8 @@ class Workbook(object):
|
||||
:rtype: object
|
||||
"""
|
||||
self.workbook = openpyxl.Workbook()
|
||||
[self.workbook.add_named_style(style) for style in XLSX_STYLES.values()]
|
||||
[self.workbook.add_named_style(style)
|
||||
for style in XLSX_STYLES.values()]
|
||||
[self.workbook.remove(sheet) for sheet in self.workbook.worksheets]
|
||||
|
||||
def generate_sheet(self, title, columns_settings, object_list,
|
||||
@@ -135,7 +136,8 @@ class Workbook(object):
|
||||
|
||||
# write table footer
|
||||
for column, settings in enumerate(columns_settings, 1):
|
||||
cell = ws.cell(column=column, row=row, value=settings.get('footer'))
|
||||
cell = ws.cell(column=column, row=row,
|
||||
value=settings.get('footer'))
|
||||
cell.style = settings['style']
|
||||
row += 1
|
||||
|
||||
|
||||
@@ -21,6 +21,8 @@ def recalculate(modeladmin, request, queryset): # Ignore PyLintBear (W0613)
|
||||
for ladder_ranking in queryset:
|
||||
set_dirty(user=ladder_ranking.user_id,
|
||||
season=ladder_ranking.season)
|
||||
|
||||
|
||||
recalculate.short_description = _("Recalculate")
|
||||
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: kasu.mahjong_ranking\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2019-01-12 16:27+0100\n"
|
||||
"POT-Creation-Date: 2019-12-13 23:38+0100\n"
|
||||
"PO-Revision-Date: 2018-05-08 00:20+0105\n"
|
||||
"Last-Translator: b'Christian Berg <kasu@xendynastie.at>'\n"
|
||||
"Language-Team: Kasu <verein@kasu.at>\n"
|
||||
|
||||
@@ -3,11 +3,13 @@ Rest all dan points to 0 at a given date.
|
||||
"""
|
||||
|
||||
from django.core.management.base import BaseCommand
|
||||
from datetime import date, datetime, time
|
||||
from datetime import datetime
|
||||
from datetime import time
|
||||
from mahjong_ranking import models
|
||||
from django.utils.dateparse import parse_date
|
||||
from django.utils import timezone
|
||||
|
||||
|
||||
class Command(BaseCommand):
|
||||
""" Recalculate all Kyu/Dan Rankings """
|
||||
|
||||
@@ -17,12 +19,13 @@ class Command(BaseCommand):
|
||||
parser.add_argument('reset_date', type=parse_date)
|
||||
|
||||
def handle(self, *args, **options):
|
||||
legacy_attrs = [ key for key in models.KyuDanRanking.__dict__.keys()
|
||||
if key.startswith('legacy') ]
|
||||
legacy_attrs = [key for key in models.KyuDanRanking.__dict__.keys()
|
||||
if key.startswith('legacy')]
|
||||
legacy_attrs.remove('legacy_date')
|
||||
reset_date = timezone.make_aware(datetime.combine(
|
||||
options.get('reset_date'), time(23, 59, 59)))
|
||||
models.KyuDanRanking.objects.update(until=reset_date, force_recalc=True)
|
||||
models.KyuDanRanking.objects.update(
|
||||
until=reset_date, force_recalc=True)
|
||||
for ranking in models.KyuDanRanking.objects.filter(dan__gt=0):
|
||||
print(ranking)
|
||||
ranking.dan = 1
|
||||
|
||||
@@ -32,7 +32,7 @@ class HanchanManager(models.Manager):
|
||||
hanchans = hanchans.filter(start__lte=until)
|
||||
return hanchans
|
||||
|
||||
def dan_hanchans(self, user, since = None, **filter_args):
|
||||
def dan_hanchans(self, user, since=None, **filter_args):
|
||||
""" Return all Hanchans where a specific user has participated and had
|
||||
gain dan points and make his gamestats availabale.
|
||||
|
||||
@@ -53,7 +53,7 @@ class HanchanManager(models.Manager):
|
||||
[hanchan.get_playerdata(user) for hanchan in queryset]
|
||||
return queryset
|
||||
|
||||
def kyu_hanchans(self, user, since = None, **filter_args):
|
||||
def kyu_hanchans(self, user, since=None, **filter_args):
|
||||
""" Return all Hanchans where a specific user has participated and had
|
||||
gain kyū points and make his gamestats availabale.
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ from mahjong_ranking import models
|
||||
from . import LOGGER
|
||||
from . import LOGGER
|
||||
|
||||
|
||||
class DenormalizationUpdateMiddleware:
|
||||
"""To recalculate everything in the queues at the end of a POST request."""
|
||||
|
||||
|
||||
@@ -29,7 +29,8 @@ class EventRanking(models.Model):
|
||||
Sie beschränken sich aber auf einen Event und werden nur dann angestossen,
|
||||
wenn der Event als Turnier markiert wurde.
|
||||
"""
|
||||
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.PROTECT)
|
||||
user = models.ForeignKey(settings.AUTH_USER_MODEL,
|
||||
on_delete=models.PROTECT)
|
||||
event = models.ForeignKey(Event, on_delete=models.CASCADE)
|
||||
placement = models.PositiveIntegerField(blank=True, null=True)
|
||||
avg_placement = models.FloatField(default=4)
|
||||
@@ -428,7 +429,8 @@ class KyuDanRanking(models.Model):
|
||||
).order_by('-start')
|
||||
last_hanchan_this_event = hanchans_this_event[0]
|
||||
# Das braucht nur am Ende eines Turnieres gemacht werden.
|
||||
if hanchan != last_hanchan_this_event: return False
|
||||
if hanchan != last_hanchan_this_event:
|
||||
return False
|
||||
event_ranking = EventRanking.objects.get(
|
||||
user=self.user,
|
||||
event=hanchan.event
|
||||
@@ -603,7 +605,8 @@ class KyuDanRanking(models.Model):
|
||||
|
||||
|
||||
class SeasonRanking(models.Model):
|
||||
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.PROTECT)
|
||||
user = models.ForeignKey(settings.AUTH_USER_MODEL,
|
||||
on_delete=models.PROTECT)
|
||||
season = models.PositiveSmallIntegerField(_('Season'))
|
||||
placement = models.PositiveIntegerField(blank=True, null=True)
|
||||
avg_placement = models.FloatField(blank=True, null=True)
|
||||
|
||||
@@ -36,4 +36,3 @@ urlpatterns = [ # Ignore PyLintBear (C0103)
|
||||
url(r'^mahjong/(?P<order_by>[\+\-][a-z_]+)/$',
|
||||
views.KyuDanRankingList.as_view(), name="kyudanranking-list"),
|
||||
]
|
||||
|
||||
|
||||
@@ -125,7 +125,7 @@ class EventHanchanForm(EventDetailMixin, PermissionRequiredMixin,
|
||||
"""Display a Formset to add and Edit Hanchans of the specific Event."""
|
||||
permission_required = 'mahjong_ranking.add_hanchan'
|
||||
template_name = 'mahjong_ranking/eventhanchan_form.html'
|
||||
model=models.Hanchan
|
||||
model = models.Hanchan
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
self.event = models.Event.objects.get(pk=self.kwargs['event'])
|
||||
@@ -160,7 +160,6 @@ class EventHanchanForm(EventDetailMixin, PermissionRequiredMixin,
|
||||
return self.render_to_response(context)
|
||||
|
||||
|
||||
|
||||
class EventHanchanList(EventDetailMixin, generic.ListView):
|
||||
"List all hanchans played on a given event."
|
||||
model = models.Hanchan
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: kasu.mahjong_ranking\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2019-01-12 16:27+0100\n"
|
||||
"POT-Creation-Date: 2019-12-13 23:38+0100\n"
|
||||
"PO-Revision-Date: 2016-09-28 00:24+0200\n"
|
||||
"Last-Translator: Christian Berg <xeniac.at@gmail.com>\n"
|
||||
"Language-Team: Kasu <verein@kasu.at>\n"
|
||||
|
||||
@@ -149,7 +149,8 @@ class Game(models.Model):
|
||||
|
||||
class Ranking(models.Model):
|
||||
"""the player scores in the ladder for one season. """
|
||||
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.PROTECT)
|
||||
user = models.ForeignKey(settings.AUTH_USER_MODEL,
|
||||
on_delete=models.PROTECT)
|
||||
season = models.PositiveSmallIntegerField(_("Season"))
|
||||
placement = models.PositiveIntegerField(blank=True, null=True)
|
||||
avg_placement = models.PositiveSmallIntegerField(blank=True, null=True)
|
||||
|
||||
@@ -5,7 +5,6 @@ from django.urls import reverse
|
||||
from events.models import Event
|
||||
|
||||
|
||||
|
||||
class MaistarGamesSitemap(GenericSitemap):
|
||||
@staticmethod
|
||||
def items():
|
||||
|
||||
@@ -51,17 +51,22 @@ def clear_personal_data(modeladmin, request, queryset):
|
||||
raise PermissionDenied
|
||||
for membership in queryset:
|
||||
if membership.membership == False:
|
||||
[ setattr(membership, fieldname, None) for fieldname in membership.nullable_personal_data ]
|
||||
[ setattr(membership, fieldname, "") for fieldname in membership.blankable_personal_data ]
|
||||
[setattr(membership, fieldname, None)
|
||||
for fieldname in membership.nullable_personal_data]
|
||||
[setattr(membership, fieldname, "")
|
||||
for fieldname in membership.blankable_personal_data]
|
||||
membership.is_active = False
|
||||
membership.confirmed = False
|
||||
membership.membership = False
|
||||
membership.save()
|
||||
cleared_memberships += 1
|
||||
else:
|
||||
modeladmin.message_user(request, _("Can't remove personal data from active member %s.") % membership.username, messages.ERROR)
|
||||
modeladmin.message_user(request, _(
|
||||
"Can't remove personal data from active member %s.") % membership.username, messages.ERROR)
|
||||
if cleared_memberships > 0:
|
||||
modeladmin.message_user(request, _("Cleared %d personal data profiles.") % cleared_memberships, messages.INFO)
|
||||
modeladmin.message_user(request, _(
|
||||
"Cleared %d personal data profiles.") % cleared_memberships, messages.INFO)
|
||||
|
||||
|
||||
clear_personal_data.short_description = _("Clear personal Data")
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ Created on 03.10.2011
|
||||
|
||||
@author: Christian
|
||||
"""
|
||||
from datetime import date, timedelta
|
||||
from datetime import date
|
||||
from captcha.fields import ReCaptchaField
|
||||
from django import forms
|
||||
from django.conf import settings
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: kasu.membership\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2019-01-12 16:27+0100\n"
|
||||
"POT-Creation-Date: 2019-12-13 23:38+0100\n"
|
||||
"PO-Revision-Date: 2018-05-08 00:19+0105\n"
|
||||
"Last-Translator: b'Christian Berg <kasu@xendynastie.at>'\n"
|
||||
"Language-Team: Kasu <verein@kasu.at>\n"
|
||||
|
||||
@@ -9,7 +9,7 @@ from django.conf.urls import url
|
||||
from . import views
|
||||
|
||||
urlpatterns = [
|
||||
url(r'^$',views.MembershipDetail.as_view()),
|
||||
url(r'^$', views.MembershipDetail.as_view()),
|
||||
url(r'^activate/(?P<activation_key>[\d\w]+)/$',
|
||||
views.ActivateRegistration.as_view(),
|
||||
name='membership-activate-registration'),
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: kasu.utils\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2019-01-12 16:27+0100\n"
|
||||
"POT-Creation-Date: 2019-12-13 23:38+0100\n"
|
||||
"PO-Revision-Date: 2016-09-28 00:24+0200\n"
|
||||
"Last-Translator: Christian Berg <xeniac@posteo.at>\n"
|
||||
"Language-Team: Kasu <verein@kasu.at>\n"
|
||||
|
||||
@@ -13,7 +13,6 @@ class CompressHtmlMiddleware:
|
||||
:param get_response:
|
||||
"""
|
||||
self.get_response = get_response
|
||||
regex = ">[\s]*<"
|
||||
|
||||
def __call__(self, request):
|
||||
"""
|
||||
@@ -24,7 +23,6 @@ class CompressHtmlMiddleware:
|
||||
|
||||
# Code to be executed for each request before
|
||||
# the view (and later middleware) are called.
|
||||
|
||||
response = self.get_response(request)
|
||||
if 'text/html' in response['Content-Type']:
|
||||
response.content = strip_spaces_between_tags(
|
||||
|
||||
Reference in New Issue
Block a user