virtual agenda: don't check deleted meeting types (#46974)
This commit is contained in:
parent
c7d442f97a
commit
d7a75f172c
|
@ -515,6 +515,7 @@ class VirtualMember(models.Model):
|
|||
label=meetingtype.label,
|
||||
slug=meetingtype.slug,
|
||||
duration=meetingtype.duration,
|
||||
deleted=False,
|
||||
)
|
||||
except MeetingType.DoesNotExist:
|
||||
error = True
|
||||
|
@ -531,7 +532,8 @@ class VirtualMember(models.Model):
|
|||
num_virt_meetingtypes = len(virtual_meetingtypes)
|
||||
if (
|
||||
num_virt_meetingtypes
|
||||
and num_virt_meetingtypes != MeetingType.objects.filter(agenda=self.real_agenda).count()
|
||||
and num_virt_meetingtypes
|
||||
!= MeetingType.objects.filter(agenda=self.real_agenda, deleted=False).count()
|
||||
):
|
||||
extra_qs = MeetingType.objects.filter(agenda=self.real_agenda)
|
||||
for virt_meetingtype in virtual_meetingtypes:
|
||||
|
|
|
@ -17,7 +17,6 @@ from django.urls import reverse
|
|||
from django.utils.encoding import force_text
|
||||
from django.utils.timezone import make_aware, now, localtime
|
||||
|
||||
import datetime
|
||||
import freezegun
|
||||
import pytest
|
||||
import requests
|
||||
|
@ -3431,7 +3430,7 @@ def test_virtual_agenda_settings_include(app, admin_user):
|
|||
agenda = Agenda.objects.create(label='My Virtual agenda', kind='virtual')
|
||||
Agenda.objects.create(label='Event agenda', kind='events')
|
||||
meeting_agenda_1 = Agenda.objects.create(label='Meeting agenda 1', kind='meetings')
|
||||
mt1 = MeetingType.objects.create(label='MT', duration=30, agenda=meeting_agenda_1)
|
||||
MeetingType.objects.create(label='MT', duration=30, agenda=meeting_agenda_1)
|
||||
Agenda.objects.create(label='Meeting agenda 2', kind='meetings')
|
||||
|
||||
app = login(app)
|
||||
|
@ -3516,8 +3515,7 @@ def test_virtual_agenda_settings_include_incompatible_agenda(app, admin_user):
|
|||
|
||||
# refused because different slug
|
||||
mt = MeetingType.objects.create(agenda=meeting_agenda_2, label='MT', slug='mtt', duration=10)
|
||||
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
||||
resp = resp.click('Include Agenda')
|
||||
resp = app.get('/manage/agendas/%s/add-virtual-member' % agenda.pk)
|
||||
resp.form['real_agenda'].value = meeting_agenda_2.pk
|
||||
resp = resp.form.submit()
|
||||
assert 'This agenda does not have the same meeting types provided by the virtual agenda.' in resp.text
|
||||
|
@ -3527,8 +3525,7 @@ def test_virtual_agenda_settings_include_incompatible_agenda(app, admin_user):
|
|||
|
||||
# refused because different duration
|
||||
mt = MeetingType.objects.create(agenda=meeting_agenda_2, label='MT', slug='mt', duration=15)
|
||||
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
||||
resp = resp.click('Include Agenda')
|
||||
resp = app.get('/manage/agendas/%s/add-virtual-member' % agenda.pk)
|
||||
resp.form['real_agenda'].value = meeting_agenda_2.pk
|
||||
resp = resp.form.submit()
|
||||
assert 'This agenda does not have the same meeting types provided by the virtual agenda.' in resp.text
|
||||
|
@ -3538,32 +3535,39 @@ def test_virtual_agenda_settings_include_incompatible_agenda(app, admin_user):
|
|||
|
||||
# refused because different label
|
||||
mt = MeetingType.objects.create(agenda=meeting_agenda_2, label='MTT', slug='mt', duration=10)
|
||||
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
||||
resp = resp.click('Include Agenda')
|
||||
resp = app.get('/manage/agendas/%s/add-virtual-member' % agenda.pk)
|
||||
resp.form['real_agenda'].value = meeting_agenda_2.pk
|
||||
resp = resp.form.submit()
|
||||
assert 'This agenda does not have the same meeting types provided by the virtual agenda.' in resp.text
|
||||
assert 'Meeting type "MT" (10 minutes) (identifier: mt) does no exist.' in resp.text
|
||||
assert meeting_agenda_2.virtual_agendas.count() == 0
|
||||
mt.delete()
|
||||
|
||||
# refused because has one more meeting type
|
||||
mt = MeetingType.objects.create(agenda=meeting_agenda_2, label='MT', slug='mt', duration=10)
|
||||
mt2 = MeetingType.objects.create(agenda=meeting_agenda_2, label='AA', slug='aa', duration=30)
|
||||
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
||||
resp = resp.click('Include Agenda')
|
||||
resp = app.get('/manage/agendas/%s/add-virtual-member' % agenda.pk)
|
||||
resp.form['real_agenda'].value = meeting_agenda_2.pk
|
||||
resp = resp.form.submit()
|
||||
assert 'This agenda does not have the same meeting types provided by the virtual agenda.' in resp.text
|
||||
assert 'Extra meeting type, "AA".' in resp.text
|
||||
assert meeting_agenda_2.virtual_agendas.count() == 0
|
||||
|
||||
# ok because mt2 is marked as deleted
|
||||
mt2.deleted = True
|
||||
mt2.save()
|
||||
resp = app.get('/manage/agendas/%s/add-virtual-member' % agenda.pk)
|
||||
resp.form['real_agenda'].value = meeting_agenda_2.pk
|
||||
resp = resp.form.submit()
|
||||
assert meeting_agenda_2.virtual_agendas.count() == 1
|
||||
VirtualMember.objects.filter(real_agenda=meeting_agenda_2).delete()
|
||||
mt.delete()
|
||||
mt2.delete()
|
||||
|
||||
# refused because has one less meeting type
|
||||
mt = MeetingType.objects.create(agenda=meeting_agenda_2, label='MT', slug='mt', duration=10)
|
||||
mt2 = MeetingType.objects.create(agenda=meeting_agenda_1, label='AA', slug='aa', duration=30)
|
||||
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
||||
resp = resp.click('Include Agenda')
|
||||
resp = app.get('/manage/agendas/%s/add-virtual-member' % agenda.pk)
|
||||
resp.form['real_agenda'].value = meeting_agenda_2.pk
|
||||
resp = resp.form.submit()
|
||||
assert 'This agenda does not have the same meeting types provided by the virtual agenda.' in resp.text
|
||||
|
@ -3572,6 +3576,16 @@ def test_virtual_agenda_settings_include_incompatible_agenda(app, admin_user):
|
|||
mt.delete()
|
||||
mt2.delete()
|
||||
|
||||
# deleted meeting type is not checked
|
||||
mt = MeetingType.objects.create(agenda=meeting_agenda_2, label='MT', slug='mt', duration=10, deleted=True)
|
||||
resp = app.get('/manage/agendas/%s/add-virtual-member' % agenda.pk)
|
||||
resp.form['real_agenda'].value = meeting_agenda_2.pk
|
||||
resp = resp.form.submit()
|
||||
assert 'This agenda does not have the same meeting types provided by the virtual agenda.' in resp.text
|
||||
assert 'Meeting type "MT" (10 minutes) (identifier: mt) does no exist.' in resp.text
|
||||
assert meeting_agenda_2.virtual_agendas.count() == 0
|
||||
mt.delete()
|
||||
|
||||
|
||||
def test_cant_delete_meetingtype_used_by_virtual_agenda(app, admin_user):
|
||||
agenda = Agenda.objects.create(label='My Virtual agenda', kind='virtual')
|
||||
|
|
Loading…
Reference in New Issue