Changing field to for routine, place and club classes.
continuous-integration/drone/push Build is passing Details

This commit is contained in:
Gregory Trullemans 2022-01-09 11:07:01 +01:00
parent bc1eb90c6e
commit 7713feca0d
10 changed files with 113 additions and 24 deletions

View File

@ -58,10 +58,11 @@
</div>
<div class="row">
<div class="col-md-4">
<div class="col-md-3">
<div class="card">
<div class="card-header">
<h4><i class="fal fa-calendar-alt"></i> Next Events</h4>
<h4><i class="fal fa-calendar-alt text-warning"></i> Next Events</h4>
</div>
<div class="card-body">
{% if event_list %}
@ -80,10 +81,31 @@
</div>
</div>
<div class="col-md-4">
<div class="col-md-3">
<div class="card">
<div class="card-header">
<h4><i class="fal fa-highlighter"></i> Last updated gymnasts</h4>
<h4><i class="fal fa-exclamation-triangle text-danger"></i> Updated needed</h4>
</div>
<div class="card-body">
{% if waiting_update_gymnast %}
<table class="table tablesorter table-striped table-condensed" data-sort="table" id="gymnast_table">
{% for gymnast in waiting_update_gymnast %}
<tr>
<td class="text-left"><a href="{% url 'gymnast_details' gymnast.id %}">{{ gymnast }}</a></td>
</tr>
{% endfor %}
</table>
{% else %}
No update needed.
{% endif %}
</div>
</div>
</div>
<div class="col-md-3">
<div class="card">
<div class="card-header">
<h4><i class="fal fa-highlighter text-success"></i> Last updated gymnasts</h4>
</div>
<div class="card-body">
{% if last_updated_gymnast %}
@ -101,10 +123,10 @@
</div>
</div>
<div class="col-md-4">
<div class="col-md-3">
<div class="card">
<div class="card-header">
<h4><i class="fal fa-birthday-cake"></i> Next birthday</h4>
<h4><i class="fal fa-birthday-cake text-info"></i> Next birthday</h4>
</div>
<div class="card-body">
{% if birthday_list %}
@ -123,6 +145,7 @@
</div>
</div>
</div>
</div>
{% endblock %}

View File

@ -1,4 +1,4 @@
from datetime import datetime
from datetime import datetime, timedelta
from django.db.models import Q
from django.shortcuts import render
@ -39,7 +39,7 @@ def login(request):
request.session["is_sidebar_minified"] = profile.is_sidebar_minified
except Exception:
pass
request.session["clubid"] = request.POST.get("clubid", None)
# request.session["clubid"] = request.POST.get("clubid", None)
return HttpResponseRedirect("/")
context = {"message": "Account disabled."}
@ -89,6 +89,15 @@ def home(request):
| Q(known_skills__created_at__gt=request.user.last_login)
).distinct()
limit_date = timezone.now() - timedelta(days=14)
waiting_update_gymnast = Gymnast.objects.filter(
Q(mindstate__created_at__gt=limit_date)
| Q(points__created_at__gt=limit_date)
| Q(chronos__created_at__gt=limit_date)
| Q(accident__created_at__gt=limit_date)
| Q(known_skills__created_at__gt=limit_date)
).distinct()
nb_active_gymnast = Gymnast.objects.filter(is_active=True).count()
nb_event = Event.objects.all().count()
nb_skill = Skill.objects.all().count()
@ -117,6 +126,7 @@ def home(request):
context = {
"event_list": event_list,
"last_updated_gymnast": last_updated_gymnast,
"waiting_update_gymnast": waiting_update_gymnast,
"nb_active_gymnast": nb_active_gymnast,
"nb_event": nb_event,
"nb_skill": nb_skill,

View File

@ -13,9 +13,9 @@ class CountryAdmin(admin.ModelAdmin):
class ClubAdmin(admin.ModelAdmin):
model = Club
list_display = ("name", "acronym", "place", "active")
list_display = ("name", "acronym", "place", "is_active")
ordering = ("name",)
list_filter = ("active",)
list_filter = ("is_active",)
search_fields = ("name",)
autocomplete_fields = ("place",)
@ -23,9 +23,9 @@ class ClubAdmin(admin.ModelAdmin):
class PlaceAdmin(admin.ModelAdmin):
model = Place
list_display = ("name", "address", "postal", "city", "active")
list_display = ("name", "address", "postal", "city", "is_active")
ordering = ("name",)
list_filter = ("active",)
list_filter = ("is_active",)
search_fields = ("name", "address", "postal", "city")
autocomplete_fields = ("country",)

View File

@ -15,7 +15,7 @@ class PlaceForm(forms.ModelForm):
"country",
# "nbkm",
# "timing",
"active",
"is_active",
)
widgets = {
"name": forms.TextInput(
@ -37,7 +37,7 @@ class PlaceForm(forms.ModelForm):
# "timing": forms.TextInput(
# attrs={"class": "form-control", "placeholder": "Travel time"}
# ),
"active": forms.CheckboxInput(
"is_active": forms.CheckboxInput(
attrs={"class": "form-control form-check-input ml-0 mt-0"}
),
}

View File

@ -0,0 +1,23 @@
# Generated by Django 3.2.8 on 2022-01-09 10:01
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('location', '0002_alter_club_acronym'),
]
operations = [
migrations.RenameField(
model_name='club',
old_name='active',
new_name='is_active',
),
migrations.RenameField(
model_name='place',
old_name='active',
new_name='is_active',
),
]

View File

@ -43,7 +43,7 @@ class Place(models.Model):
)
# nbkm = models.PositiveIntegerField(blank=True, null=True, help_text="in km")
# timing = models.PositiveIntegerField(blank=True, null=True, help_text="in minutes")
active = models.BooleanField(default=1, verbose_name="Active")
is_active = models.BooleanField(default=1, verbose_name="Active")
def __str__(self):
return "%s (%s)" % (self.name, self.city if self.city else "?")
@ -68,7 +68,7 @@ class Club(models.Model):
)
name = models.CharField(max_length=255, verbose_name="Name")
acronym = models.CharField(max_length=6, verbose_name="Acronym")
active = models.BooleanField(default=1, verbose_name="Active")
is_active = models.BooleanField(default=1, verbose_name="Active")
def __str__(self):
return "%s (%s)" % (self.name, self.place.city if self.place.city else "?")

View File

@ -101,21 +101,32 @@ class RoutineAdmin(admin.ModelAdmin):
"rank",
"educatives",
"prerequisites",
"age_boy",
"age_girl",
"active",
"age_boy_with_help",
"age_boy_without_help",
"age_boy_chained",
"age_boy_masterised",
"age_girl_with_help",
"age_girl_without_help",
"age_girl_chained",
"age_girl_masterised",
"is_active",
"is_competitive",
)
list_display = (
"long_label",
"short_label",
"is_competitive",
"active",
"is_active",
"level",
"rank",
"difficulty",
)
list_filter = ("level", "difficulty", "is_competitive", "active")
list_filter = (
('level', DropdownFilter),
"difficulty",
"is_competitive",
"is_active"
)
search_fields = (
"long_label",
"short_label",

View File

@ -11,7 +11,7 @@ class RoutineForm(forms.ModelForm):
"short_label",
"difficulty",
"level",
"active",
"is_active",
"informations",
)
widgets = {
@ -29,5 +29,5 @@ class RoutineForm(forms.ModelForm):
),
"difficulty": forms.HiddenInput(),
"level": forms.HiddenInput(),
"active": forms.HiddenInput(),
"is_active": forms.HiddenInput(),
}

View File

@ -0,0 +1,22 @@
# Generated by Django 3.2.8 on 2022-01-09 10:01
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('objective', '0009_auto_20220108_1956'),
]
operations = [
migrations.RemoveField(
model_name='routine',
name='active',
),
migrations.AddField(
model_name='routine',
name='is_active',
field=models.BooleanField(default=True),
),
]

View File

@ -224,10 +224,10 @@ class Routine(Educative):
verbose_name = "Routine"
verbose_name_plural = "Routines"
active = models.BooleanField()
jumps = models.ManyToManyField(
Skill, through="RoutineSkill", verbose_name="routine"
)
is_active = models.BooleanField(default=True)
is_competitive = models.BooleanField(default=False)
def __str__(self):