manager: get snapshots to compare from application version (#87653)
gitea/chrono/pipeline/head This commit looks good Details

This commit is contained in:
Lauréline Guérin 2024-03-01 15:03:06 +01:00
parent 1f23f85b3d
commit 1896c33f29
No known key found for this signature in database
GPG Key ID: 1FAB9B9B4F93D473
2 changed files with 174 additions and 0 deletions

View File

@ -54,7 +54,38 @@ class InstanceWithSnapshotHistoryView(ListView):
class InstanceWithSnapshotHistoryCompareView(DetailView):
def get_snapshots_from_application(self):
version1 = self.request.GET.get('version1')
version2 = self.request.GET.get('version2')
if not version1 or not version2:
raise Http404
snapshot_for_app1 = (
self.model.get_snapshot_model()
.objects.filter(
instance=self.object,
application_slug=self.request.GET['application'],
application_version=self.request.GET['version1'],
)
.order_by('timestamp')
.last()
)
snapshot_for_app2 = (
self.model.get_snapshot_model()
.objects.filter(
instance=self.object,
application_slug=self.request.GET['application'],
application_version=self.request.GET['version2'],
)
.order_by('timestamp')
.last()
)
return snapshot_for_app1, snapshot_for_app2
def get_snapshots(self):
if 'application' in self.request.GET:
return self.get_snapshots_from_application()
id1 = self.request.GET.get('version1')
id2 = self.request.GET.get('version2')
if not id1 or not id2:

View File

@ -28,6 +28,7 @@ def test_agenda_history(settings, app, admin_user):
agenda.description = 'Foo Bar'
agenda.save()
snapshot2 = agenda.take_snapshot()
snapshot2.application_slug = 'foobar'
snapshot2.application_version = '42.0'
snapshot2.save()
assert AgendaSnapshot.objects.count() == 2
@ -68,6 +69,32 @@ def test_agenda_history(settings, app, admin_user):
assert resp.text.count('diff_add') == 16
assert resp.text.count('diff_chg') == 0
# check compare on application version number
snapshot1.application_slug = 'foobar'
snapshot1.application_version = '41.0'
snapshot1.save()
# application not found
resp = app.get(
'/manage/agendas/%s/history/compare/?application=foobaz&version1=41.0&version2=42.0' % agenda.pk
)
assert resp.location == '/manage/agendas/%s/history/' % agenda.pk
# version1 not found
resp = app.get(
'/manage/agendas/%s/history/compare/?application=foobar&version1=40.0&version2=42.0' % agenda.pk
)
assert resp.location == '/manage/agendas/%s/history/' % agenda.pk
# version2 not found
resp = app.get(
'/manage/agendas/%s/history/compare/?application=foobar&version1=41.0&version2=43.0' % agenda.pk
)
assert resp.location == '/manage/agendas/%s/history/' % agenda.pk
# ok
resp = app.get(
'/manage/agendas/%s/history/compare/?application=foobar&version1=41.0&version2=42.0' % agenda.pk
)
assert 'Snapshot (%s) - (Version 41.0)' % snapshot1.pk in resp
assert 'Snapshot (%s) - (Version 42.0)' % snapshot2.pk in resp
def test_agenda_history_as_manager(app, manager_user):
agenda = Agenda.objects.create(slug='foo', label='Foo')
@ -101,6 +128,7 @@ def test_category_history(settings, app, admin_user):
category.label = 'Bar'
category.save()
snapshot2 = category.take_snapshot()
snapshot2.application_slug = 'foobar'
snapshot2.application_version = '42.0'
snapshot2.save()
assert CategorySnapshot.objects.count() == 2
@ -141,6 +169,32 @@ def test_category_history(settings, app, admin_user):
assert resp.text.count('diff_add') == 0
assert resp.text.count('diff_chg') == 2
# check compare on application version number
snapshot1.application_slug = 'foobar'
snapshot1.application_version = '41.0'
snapshot1.save()
# application not found
resp = app.get(
'/manage/category/%s/history/compare/?application=foobaz&version1=41.0&version2=42.0' % category.pk
)
assert resp.location == '/manage/category/%s/history/' % category.pk
# version1 not found
resp = app.get(
'/manage/category/%s/history/compare/?application=foobar&version1=40.0&version2=42.0' % category.pk
)
assert resp.location == '/manage/category/%s/history/' % category.pk
# version2 not found
resp = app.get(
'/manage/category/%s/history/compare/?application=foobar&version1=41.0&version2=43.0' % category.pk
)
assert resp.location == '/manage/category/%s/history/' % category.pk
# ok
resp = app.get(
'/manage/category/%s/history/compare/?application=foobar&version1=41.0&version2=42.0' % category.pk
)
assert 'Snapshot (%s) - (Version 41.0)' % snapshot1.pk in resp
assert 'Snapshot (%s) - (Version 42.0)' % snapshot2.pk in resp
def test_events_type_history(settings, app, admin_user):
events_type = EventsType.objects.create(slug='foo', label='Foo')
@ -148,6 +202,7 @@ def test_events_type_history(settings, app, admin_user):
events_type.label = 'Bar'
events_type.save()
snapshot2 = events_type.take_snapshot()
snapshot2.application_slug = 'foobar'
snapshot2.application_version = '42.0'
snapshot2.save()
assert EventsTypeSnapshot.objects.count() == 2
@ -188,6 +243,36 @@ def test_events_type_history(settings, app, admin_user):
assert resp.text.count('diff_add') == 0
assert resp.text.count('diff_chg') == 2
# check compare on application version number
snapshot1.application_slug = 'foobar'
snapshot1.application_version = '41.0'
snapshot1.save()
# application not found
resp = app.get(
'/manage/events-type/%s/history/compare/?application=foobaz&version1=41.0&version2=42.0'
% events_type.pk
)
assert resp.location == '/manage/events-type/%s/history/' % events_type.pk
# version1 not found
resp = app.get(
'/manage/events-type/%s/history/compare/?application=foobar&version1=40.0&version2=42.0'
% events_type.pk
)
assert resp.location == '/manage/events-type/%s/history/' % events_type.pk
# version2 not found
resp = app.get(
'/manage/events-type/%s/history/compare/?application=foobar&version1=41.0&version2=43.0'
% events_type.pk
)
assert resp.location == '/manage/events-type/%s/history/' % events_type.pk
# ok
resp = app.get(
'/manage/events-type/%s/history/compare/?application=foobar&version1=41.0&version2=42.0'
% events_type.pk
)
assert 'Snapshot (%s) - (Version 41.0)' % snapshot1.pk in resp
assert 'Snapshot (%s) - (Version 42.0)' % snapshot2.pk in resp
def test_resource_history(settings, app, admin_user):
resource = Resource.objects.create(slug='foo', label='Foo')
@ -195,6 +280,7 @@ def test_resource_history(settings, app, admin_user):
resource.label = 'Bar'
resource.save()
snapshot2 = resource.take_snapshot()
snapshot2.application_slug = 'foobar'
snapshot2.application_version = '42.0'
snapshot2.save()
assert ResourceSnapshot.objects.count() == 2
@ -235,6 +321,32 @@ def test_resource_history(settings, app, admin_user):
assert resp.text.count('diff_add') == 0
assert resp.text.count('diff_chg') == 2
# check compare on application version number
snapshot1.application_slug = 'foobar'
snapshot1.application_version = '41.0'
snapshot1.save()
# application not found
resp = app.get(
'/manage/resource/%s/history/compare/?application=foobaz&version1=41.0&version2=42.0' % resource.pk
)
assert resp.location == '/manage/resource/%s/history/' % resource.pk
# version1 not found
resp = app.get(
'/manage/resource/%s/history/compare/?application=foobar&version1=40.0&version2=42.0' % resource.pk
)
assert resp.location == '/manage/resource/%s/history/' % resource.pk
# version2 not found
resp = app.get(
'/manage/resource/%s/history/compare/?application=foobar&version1=41.0&version2=43.0' % resource.pk
)
assert resp.location == '/manage/resource/%s/history/' % resource.pk
# ok
resp = app.get(
'/manage/resource/%s/history/compare/?application=foobar&version1=41.0&version2=42.0' % resource.pk
)
assert 'Snapshot (%s) - (Version 41.0)' % snapshot1.pk in resp
assert 'Snapshot (%s) - (Version 42.0)' % snapshot2.pk in resp
def test_unavailability_calendar_history(settings, app, admin_user):
unavailability_calendar = UnavailabilityCalendar.objects.create(slug='foo', label='Foo')
@ -242,6 +354,7 @@ def test_unavailability_calendar_history(settings, app, admin_user):
unavailability_calendar.label = 'Bar'
unavailability_calendar.save()
snapshot2 = unavailability_calendar.take_snapshot()
snapshot2.application_slug = 'foobar'
snapshot2.application_version = '42.0'
snapshot2.save()
assert UnavailabilityCalendarSnapshot.objects.count() == 2
@ -282,6 +395,36 @@ def test_unavailability_calendar_history(settings, app, admin_user):
assert resp.text.count('diff_add') == 0
assert resp.text.count('diff_chg') == 2
# check compare on application version number
snapshot1.application_slug = 'foobar'
snapshot1.application_version = '41.0'
snapshot1.save()
# application not found
resp = app.get(
'/manage/unavailability-calendar/%s/history/compare/?application=foobaz&version1=41.0&version2=42.0'
% unavailability_calendar.pk
)
assert resp.location == '/manage/unavailability-calendar/%s/history/' % unavailability_calendar.pk
# version1 not found
resp = app.get(
'/manage/unavailability-calendar/%s/history/compare/?application=foobar&version1=40.0&version2=42.0'
% unavailability_calendar.pk
)
assert resp.location == '/manage/unavailability-calendar/%s/history/' % unavailability_calendar.pk
# version2 not found
resp = app.get(
'/manage/unavailability-calendar/%s/history/compare/?application=foobar&version1=41.0&version2=43.0'
% unavailability_calendar.pk
)
assert resp.location == '/manage/unavailability-calendar/%s/history/' % unavailability_calendar.pk
# ok
resp = app.get(
'/manage/unavailability-calendar/%s/history/compare/?application=foobar&version1=41.0&version2=42.0'
% unavailability_calendar.pk
)
assert 'Snapshot (%s) - (Version 41.0)' % snapshot1.pk in resp
assert 'Snapshot (%s) - (Version 42.0)' % snapshot2.pk in resp
def test_unavailability_calendar_history_as_manager(app, manager_user):
unavailability_calendar = UnavailabilityCalendar.objects.create(slug='foo', label='Foo')