Added a MeetingRegistration.attended field, to keep apart meeting attendence and meeting registration before attendance.
- Legacy-Id: 17954
This commit is contained in:
parent
59487f5627
commit
8a6026ce6e
31
ietf/stats/migrations/0003_meetingregistration_attended.py
Normal file
31
ietf/stats/migrations/0003_meetingregistration_attended.py
Normal file
|
@ -0,0 +1,31 @@
|
|||
# Generated by Django 2.0.13 on 2020-06-09 04:39
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
def forward(apps, schema_editor):
|
||||
MeetingRegistration = apps.get_model('stats', 'MeetingRegistration')
|
||||
# Set attended=True on all existing records,
|
||||
#
|
||||
# Going forward, this will be unset on registration
|
||||
# (ietf.api.views.api_new_meeting_registration()), and set on attendee
|
||||
# import (ietf.stats.utils.get_meeting_registration_data() )
|
||||
MeetingRegistration.objects.update(attended=True)
|
||||
|
||||
def reverse(apps, schema_editor):
|
||||
pass
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('stats', '0002_add_meetingregistration_fields'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='meetingregistration',
|
||||
name='attended',
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
migrations.RunPython(forward, reverse),
|
||||
]
|
|
@ -61,6 +61,7 @@ class MeetingRegistration(models.Model):
|
|||
email = models.EmailField(blank=True, null=True)
|
||||
reg_type = models.CharField(blank=True, max_length=255)
|
||||
ticket_type = models.CharField(blank=True, max_length=255)
|
||||
attended = models.BooleanField(default=False)
|
||||
|
||||
def __str__(self):
|
||||
return "{} {}".format(self.first_name, self.last_name)
|
||||
|
|
|
@ -123,9 +123,9 @@ class StatisticsTests(TestCase):
|
|||
def test_meeting_stats(self):
|
||||
# create some data for the statistics
|
||||
meeting = MeetingFactory(type_id='ietf', date=datetime.date.today(), number="96")
|
||||
MeetingRegistration.objects.create(first_name='John', last_name='Smith', country_code='US', email="john.smith@example.us", meeting=meeting)
|
||||
MeetingRegistration.objects.create(first_name='John', last_name='Smith', country_code='US', email="john.smith@example.us", meeting=meeting, attended=True)
|
||||
CountryAlias.objects.get_or_create(alias="US", country=CountryName.objects.get(slug="US"))
|
||||
MeetingRegistration.objects.create(first_name='Jaume', last_name='Guillaume', country_code='FR', email="jaume.guillaume@example.fr", meeting=meeting)
|
||||
MeetingRegistration.objects.create(first_name='Jaume', last_name='Guillaume', country_code='FR', email="jaume.guillaume@example.fr", meeting=meeting, attended=True)
|
||||
CountryAlias.objects.get_or_create(alias="FR", country=CountryName.objects.get(slug="FR"))
|
||||
|
||||
# check redirect
|
||||
|
|
|
@ -253,13 +253,13 @@ def get_meeting_registration_data(meeting):
|
|||
created = False
|
||||
else:
|
||||
object = MeetingRegistration.objects.create(meeting_id=meeting.pk, email=address)
|
||||
object.first_name=first_name[:200]
|
||||
object.last_name=last_name[:200]
|
||||
object.affiliation=affiliation
|
||||
object.country_code=country_code
|
||||
object.attended = True
|
||||
object.save()
|
||||
created = True
|
||||
object.first_name=first_name[:200]
|
||||
object.last_name=last_name[:200]
|
||||
object.affiliation=affiliation
|
||||
object.country_code=country_code
|
||||
object.attended = True
|
||||
object.save()
|
||||
|
||||
# Add a Person object to MeetingRegistration object
|
||||
# if valid email is available
|
||||
|
|
|
@ -811,7 +811,7 @@ def meeting_stats(request, num=None, stats_type=None):
|
|||
return email.utils.formataddr(((r.first_name + " " + r.last_name).strip(), r.email))
|
||||
|
||||
if meeting and any(stats_type == t[0] for t in possible_stats_types):
|
||||
attendees = MeetingRegistration.objects.filter(meeting=meeting)
|
||||
attendees = MeetingRegistration.objects.filter(meeting=meeting, attended=True)
|
||||
|
||||
if stats_type == "country":
|
||||
stats_title = "Number of attendees for {} {} per country".format(meeting.type.name, meeting.number)
|
||||
|
@ -883,7 +883,7 @@ def meeting_stats(request, num=None, stats_type=None):
|
|||
elif not meeting and any(stats_type == t[0] for t in possible_stats_types):
|
||||
template_name = "overview"
|
||||
|
||||
attendees = MeetingRegistration.objects.filter(meeting__type="ietf").select_related('meeting')
|
||||
attendees = MeetingRegistration.objects.filter(meeting__type="ietf", attended=True).select_related('meeting')
|
||||
|
||||
if stats_type == "overview":
|
||||
stats_title = "Number of attendees per meeting"
|
||||
|
|
Loading…
Reference in a new issue