manager: duplicate event from agenda settings view (#68259)
This commit is contained in:
parent
34ba59e925
commit
25ddefb06f
|
@ -384,6 +384,13 @@ ul.objects-list.single-links li a.link-action-icon.refresh {
|
|||
}
|
||||
}
|
||||
|
||||
ul.objects-list.single-links li a.link-action-icon.duplicate {
|
||||
margin-right: 3em;
|
||||
&::before {
|
||||
content: "\f24d"; /* clone */
|
||||
}
|
||||
}
|
||||
|
||||
div.ui-dialog form p span.datetime input {
|
||||
width: auto;
|
||||
}
|
||||
|
|
|
@ -52,6 +52,7 @@
|
|||
</span>
|
||||
</a>
|
||||
{% if view_mode == 'settings_view' %}
|
||||
<a rel="popup" class="link-action-icon duplicate" href="{% url 'chrono-manager-event-duplicate' pk=agenda.pk event_pk=event.pk %}">{% trans 'Duplicate' %}</a>
|
||||
<a rel="popup" class="delete" href="{% url 'chrono-manager-event-delete' pk=agenda.pk event_pk=event.pk %}?next=settings">{% trans "remove" %}</a>
|
||||
{% elif agenda.booking_form_url %}
|
||||
<a class="link-action-text" href="{{ event.get_booking_form_url }}&ReturnURL={{ request.build_absolute_uri }}">{% trans "Booking form" %}</a>
|
||||
|
|
|
@ -20,9 +20,6 @@
|
|||
{% if not object.primary_event %}
|
||||
<a rel="popup" href="{% url 'chrono-manager-event-delete' pk=object.agenda.id event_pk=object.id %}?next={{view.request.GET.next}}">{% trans 'Delete' %}</a>
|
||||
{% endif %}
|
||||
{% if not object.primary_event %}
|
||||
<a rel="popup" href="{% url 'chrono-manager-event-duplicate' pk=object.agenda.id event_pk=object.id %}">{% trans 'Duplicate' %}</a>
|
||||
{% endif %}
|
||||
</span>
|
||||
{% else %}
|
||||
<h2>{% trans "New Event" %}</h2>
|
||||
|
|
|
@ -2488,7 +2488,7 @@ def test_event_check_primary_booking(app, admin_user):
|
|||
|
||||
|
||||
def test_duplicate_event(app, admin_user):
|
||||
agenda = Agenda.objects.create(label='Foo Bar', slug='foo-bar', kind='meetings')
|
||||
agenda = Agenda.objects.create(label='Foo Bar', slug='foo-bar', kind='events')
|
||||
event = Event.objects.create(
|
||||
agenda=agenda,
|
||||
start_datetime=now(),
|
||||
|
@ -2508,8 +2508,8 @@ def test_duplicate_event(app, admin_user):
|
|||
)
|
||||
|
||||
app = login(app)
|
||||
resp = app.get(f'/manage/agendas/{agenda.pk}/events/{event.pk}/edit')
|
||||
resp = resp.click('Duplicate')
|
||||
resp = app.get(f'/manage/agendas/{agenda.pk}/settings')
|
||||
resp = resp.click('Duplicate', href='events')
|
||||
resp.form['label'] = "Bar"
|
||||
resp.form['start_datetime_0'] = str(new_datetime.date())
|
||||
resp.form['start_datetime_1'] = '17:00'
|
||||
|
@ -2532,7 +2532,7 @@ def test_duplicate_event(app, admin_user):
|
|||
|
||||
|
||||
def test_duplicate_event_creates_recurrences(app, admin_user):
|
||||
agenda = Agenda.objects.create(label='Foo Bar', slug='foo-bar', kind='meetings')
|
||||
agenda = Agenda.objects.create(label='Foo Bar', slug='foo-bar', kind='events')
|
||||
event_start = now().replace(hour=1, minute=0)
|
||||
recurring_event = Event.objects.create(
|
||||
agenda=agenda,
|
||||
|
@ -2546,8 +2546,8 @@ def test_duplicate_event_creates_recurrences(app, admin_user):
|
|||
assert Event.objects.count() == 1
|
||||
|
||||
app = login(app)
|
||||
resp = app.get(f'/manage/agendas/{agenda.pk}/events/{recurring_event.pk}/edit')
|
||||
resp = resp.click('Duplicate')
|
||||
resp = app.get(f'/manage/agendas/{agenda.pk}/settings')
|
||||
resp = resp.click('Duplicate', href='events')
|
||||
resp.form['label'] = "Bar"
|
||||
resp.form['start_datetime_0'] = str(event_start.date())
|
||||
resp.form['start_datetime_1'] = '17:00'
|
||||
|
@ -2559,26 +2559,5 @@ def test_duplicate_event_creates_recurrences(app, admin_user):
|
|||
assert duplicate != recurring_event
|
||||
assert duplicate.recurrences.count() == 6
|
||||
|
||||
|
||||
def test_cannot_duplicate_secondary_event(app, admin_user):
|
||||
agenda = Agenda.objects.create(label='Foo Bar', slug='foo-bar', kind='meetings')
|
||||
recurring_event = Event.objects.create(
|
||||
agenda=agenda,
|
||||
start_datetime=now(),
|
||||
places=10,
|
||||
label='Foo',
|
||||
)
|
||||
# this event was created automatically as part of a recurring event
|
||||
# it can't be duplicated
|
||||
event = Event.objects.create(
|
||||
agenda=agenda,
|
||||
start_datetime=now(),
|
||||
places=10,
|
||||
primary_event=recurring_event,
|
||||
)
|
||||
|
||||
app = login(app)
|
||||
resp = app.get(f'/manage/agendas/{agenda.pk}/events/{event.pk}/edit')
|
||||
assert 'Duplicate' not in resp.text
|
||||
|
||||
app.get(f'/manage/agendas/{agenda.pk}/events/{event.pk}/duplicate', status=404)
|
||||
event_recurrence = duplicate.recurrences.first()
|
||||
app.get(f'/manage/agendas/{agenda.pk}/events/{event_recurrence.pk}/duplicate', status=404)
|
||||
|
|
Loading…
Reference in New Issue