From a9d9854844e64af481ef2ab4fd679e8ec1ba01c8 Mon Sep 17 00:00:00 2001 From: "Casper V. Kristensen" Date: Thu, 28 May 2020 04:32:56 +0200 Subject: [PATCH] Add 'Backup' status. --- drakul/base/settings/common.py | 1 + drakul/base/static/css/main.css | 42 ++++++++++------- drakul/raids/forms.py | 45 ++++++++++--------- .../migrations/0009_auto_20200528_0410.py | 20 +++++++++ drakul/raids/models.py | 10 +++-- drakul/raids/templates/raids/raid_change.html | 41 ++++++++++------- 6 files changed, 102 insertions(+), 57 deletions(-) create mode 100644 drakul/raids/migrations/0009_auto_20200528_0410.py diff --git a/drakul/base/settings/common.py b/drakul/base/settings/common.py index 4b0b586..78b38e3 100755 --- a/drakul/base/settings/common.py +++ b/drakul/base/settings/common.py @@ -162,6 +162,7 @@ CRISPY_TEMPLATE_PACK = "bootstrap4" DEFAULT_ATTENDANCE = { "NO_RESPONSE": 0.0, "SIGNED_OFF": 0.0, + "BACKUP": 0.0, "SIGNED_UP": 1.0, "STANDBY": 1.0, "CONFIRMED": 1.0, diff --git a/drakul/base/static/css/main.css b/drakul/base/static/css/main.css index 900eb05..cfb077a 100644 --- a/drakul/base/static/css/main.css +++ b/drakul/base/static/css/main.css @@ -142,32 +142,42 @@ a.response-status-signed-off-bg:hover, a.response-status-1-bg:hover { background-color: #bd2130; } -.response-status-signed-up-bg, .response-status-2-bg { /* info */ - color: #fff; - background-color: #17a2b8; -} -a.response-status-signed-up-bg:focus, a.response-status-2-bg:focus, -a.response-status-signed-up-bg:hover, a.response-status-2-bg:hover { - color: #fff; - background-color: #117a8b; -} - -.response-status-standby-bg, .response-status-3-bg { /* warning */ +.response-status-backup-bg, .response-status-2-bg { /* warning */ color: #212529; background-color: #ffc107; } -a.response-status-standby-bg:focus, a.response-status-3-bg:focus, -a.response-status-standby-bg:hover, a.response-status-3-bg:hover { +a.response-status-backup-bg:focus, a.response-status-2-bg:focus, +a.response-status-backup-bg:hover, a.response-status-2-bg:hover { color: #212529; background-color: #d39e00; } -.response-status-confirmed-bg, .response-status-4-bg { /* success */ +.response-status-signed-up-bg, .response-status-3-bg { /* info */ + color: #fff; + background-color: #17a2b8; +} +a.response-status-signed-up-bg:focus, a.response-status-3-bg:focus, +a.response-status-signed-up-bg:hover, a.response-status-3-bg:hover { + color: #fff; + background-color: #117a8b; +} + +.response-status-standby-bg, .response-status-4-bg { /* warning */ + color: #212529; + background-color: #ffc107; +} +a.response-status-standby-bg:focus, a.response-status-4-bg:focus, +a.response-status-standby-bg:hover, a.response-status-4-bg:hover { + color: #212529; + background-color: #d39e00; +} + +.response-status-confirmed-bg, .response-status-5-bg { /* success */ color: #fff; background-color: #28a745; } -a.response-status-confirmed-bg:focus, a.response-status-4-bg:focus, -a.response-status-confirmed-bg:hover, a.response-status-4-bg:hover { +a.response-status-confirmed-bg:focus, a.response-status-5-bg:focus, +a.response-status-confirmed-bg:hover, a.response-status-5-bg:hover { color: #fff; background-color: #1e7e34; } diff --git a/drakul/raids/forms.py b/drakul/raids/forms.py index eb13f2a..5f6b34b 100644 --- a/drakul/raids/forms.py +++ b/drakul/raids/forms.py @@ -18,29 +18,34 @@ class RaidResponseForm(ModelForm): self.fields["role"].initial = user.main.role self.fields["status"].choices = RaidResponse.UserStatus.choices - self.helper = FormHelper() + is_signed_up = self.instance.status == RaidResponse.Status.SIGNED_UP - if self.instance.status <= RaidResponse.Status.SIGNED_OFF: - signup_button = StrictButton( - "Sign Up", - type="submit", - name="status", - value=RaidResponse.Status.SIGNED_UP, - css_class="btn-success btn-block" - ) - else: - signup_button = StrictButton( - "Change", - type="submit", - name="status", - value=RaidResponse.Status.SIGNED_UP, - css_class="btn-primary btn-block" - ) + self.helper = FormHelper() self.helper.layout = Layout( Row( Column("character", css_class="col-md-3"), - Column("role", css_class="col-md-3"), - Column(signup_button, css_class="col-md-3"), + Column("role", css_class="col-md-2"), + Column( + StrictButton( + "Sign Up" if not is_signed_up else "Change", + type="submit", + name="status", + value=RaidResponse.Status.SIGNED_UP, + css_class=f"btn-block {'btn-success' if not is_signed_up else 'btn-primary'}" + ), + css_class="col-md-3" + ), + Column( + StrictButton( + "Backup", + type="submit", + name="status", + value=RaidResponse.Status.BACKUP, + css_class="btn-warning btn-block", + disabled=self.instance.pk and self.instance.status == RaidResponse.Status.BACKUP + ), + css_class="col-md-2" + ), Column( StrictButton( "Sign Off", @@ -50,7 +55,7 @@ class RaidResponseForm(ModelForm): css_class="btn-danger btn-block", disabled=self.instance.pk and self.instance.status == RaidResponse.Status.SIGNED_OFF ), - css_class="col-md-3" + css_class="col-md-2" ), css_class="form-row" ) diff --git a/drakul/raids/migrations/0009_auto_20200528_0410.py b/drakul/raids/migrations/0009_auto_20200528_0410.py new file mode 100644 index 0000000..5713f24 --- /dev/null +++ b/drakul/raids/migrations/0009_auto_20200528_0410.py @@ -0,0 +1,20 @@ +# Generated by Django 3.0.2 on 2020-05-28 04:10 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('raids', '0008_auto_20200421_1753'), + ] + + # This migration is not complete, as we're introducing a new status 'backup' with the old value of 'signed up'. + # We should probably do a proper migration, but no one else is using this system, so we'll just do it manually. + operations = [ + migrations.AlterField( + model_name='raidresponse', + name='status', + field=models.PositiveSmallIntegerField(choices=[(0, 'No Response'), (1, 'Signed Off'), (2, 'Backup'), (3, 'Signed Up'), (4, 'Standby'), (5, 'Confirmed')]), + ), + ] diff --git a/drakul/raids/models.py b/drakul/raids/models.py index 48f5c89..038bcbc 100755 --- a/drakul/raids/models.py +++ b/drakul/raids/models.py @@ -65,9 +65,10 @@ class RaidResponse(models.Model): class Status(models.IntegerChoices): NO_RESPONSE = 0 SIGNED_OFF = 1 - SIGNED_UP = 2 - STANDBY = 3 - CONFIRMED = 4 + BACKUP = 2 + SIGNED_UP = 3 + STANDBY = 4 + CONFIRMED = 5 @property def default_attendance(self): @@ -75,7 +76,8 @@ class RaidResponse(models.Model): class UserStatus(models.IntegerChoices): SIGNED_OFF = 1 - SIGNED_UP = 2 + BACKUP = 2 + SIGNED_UP = 3 status = models.PositiveSmallIntegerField( choices=Status.choices diff --git a/drakul/raids/templates/raids/raid_change.html b/drakul/raids/templates/raids/raid_change.html index 058ee21..6784672 100644 --- a/drakul/raids/templates/raids/raid_change.html +++ b/drakul/raids/templates/raids/raid_change.html @@ -28,18 +28,20 @@