agendas: rename flag on exception sourced from settings (#47966)
This commit is contained in:
parent
bdfeccafac
commit
06220c72e2
|
@ -0,0 +1,16 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11.18 on 2020-10-27 09:32
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('agendas', '0067_auto_20201021_1746'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(model_name='timeperiodexception', name='external',),
|
||||
]
|
|
@ -1479,7 +1479,6 @@ class TimePeriodExceptionSource(models.Model):
|
|||
label=label,
|
||||
start_datetime=start_datetime,
|
||||
end_datetime=end_datetime,
|
||||
external=True,
|
||||
)
|
||||
self.enabled = True
|
||||
self.save()
|
||||
|
@ -1553,7 +1552,10 @@ class TimePeriodException(models.Model):
|
|||
end_datetime = models.DateTimeField(_('Exception end time'))
|
||||
update_datetime = models.DateTimeField(auto_now=True)
|
||||
recurrence_id = models.PositiveIntegerField(_('Recurrence ID'), default=0)
|
||||
external = models.BooleanField(_('Exception comes from external source'), default=False)
|
||||
|
||||
@property
|
||||
def from_settings(self):
|
||||
return self.source and self.source.settings_slug
|
||||
|
||||
class Meta:
|
||||
ordering = ['start_datetime']
|
||||
|
@ -1583,7 +1585,7 @@ class TimePeriodException(models.Model):
|
|||
)
|
||||
|
||||
if self.label:
|
||||
label = _(self.label) if self.external else self.label
|
||||
label = _(self.label) if self.from_settings else self.label
|
||||
exc_repr = u'%s (%s)' % (label, exc_repr)
|
||||
|
||||
return exc_repr
|
||||
|
|
|
@ -73,9 +73,9 @@
|
|||
{% url 'chrono-manager-agenda-add-time-period-exception' agenda_pk=object.pk pk=desk.pk as add_time_period_exception_url %}
|
||||
<li><a><strong>{% trans 'Exceptions' %}</strong></a><a class="link-action-icon settings" rel="popup" href="{% url 'chrono-manager-desk-add-import-time-period-exceptions' pk=desk.pk %}" title="{% trans 'Manage exception sources' %}">{% trans 'manage exceptions' %}</a></li>
|
||||
{% for exception in desk.get_exceptions_within_two_weeks %}
|
||||
<li><a rel="popup" {% if not exception.external %}href="{% url 'chrono-manager-time-period-exception-edit' pk=exception.pk %}"{% endif %}>
|
||||
<li><a rel="popup" {% if not exception.from_settings%}href="{% url 'chrono-manager-time-period-exception-edit' pk=exception.pk %}"{% endif %}>
|
||||
{{ exception }}
|
||||
{% if not exception.external %}
|
||||
{% if not exception.from_settings%}
|
||||
<a rel="popup" class="delete" href="{% url 'chrono-manager-time-period-exception-delete' pk=exception.id %}">{% trans "remove" %}</a>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
|
|
@ -20,8 +20,8 @@
|
|||
<ul class="objects-list single-links">
|
||||
{% for exception in object_list %}
|
||||
<li>
|
||||
<a {% if user_can_manage and not exception.external %}href="{% url 'chrono-manager-time-period-exception-edit' pk=exception.id %}"{% endif %}>{{ exception }}</a>
|
||||
{% if user_can_manage and not exception.external %}<a rel="popup" class="delete" href="{% url 'chrono-manager-time-period-exception-delete' pk=exception.id %}{% if not page_obj %}?from_popup{% endif %}">{% trans "remove" %}</a>{% endif %}
|
||||
<a {% if user_can_manage and not exception.from_settings%}href="{% url 'chrono-manager-time-period-exception-edit' pk=exception.id %}"{% endif %}>{{ exception }}</a>
|
||||
{% if user_can_manage and not exception.from_settings%}<a rel="popup" class="delete" href="{% url 'chrono-manager-time-period-exception-delete' pk=exception.id %}{% if not page_obj %}?from_popup{% endif %}">{% trans "remove" %}</a>{% endif %}
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
|
|
@ -1937,7 +1937,7 @@ class TimePeriodExceptionListView(ManagedDeskMixin, ListView):
|
|||
paginate_by = 20
|
||||
|
||||
def get_queryset(self):
|
||||
return self.model.objects.filter(desk=self.desk, end_datetime__gte=now())
|
||||
return self.model.objects.filter(desk=self.desk, end_datetime__gte=now()).select_related('source')
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super(TimePeriodExceptionListView, self).get_context_data(**kwargs)
|
||||
|
@ -1976,7 +1976,7 @@ class TimePeriodExceptionDeleteView(ManagedTimePeriodExceptionMixin, DeleteView)
|
|||
return success_url
|
||||
|
||||
def get_queryset(self):
|
||||
return super().get_queryset().filter(external=False)
|
||||
return super().get_queryset().filter(source__settings_slug__isnull=True)
|
||||
|
||||
|
||||
time_period_exception_delete = TimePeriodExceptionDeleteView.as_view()
|
||||
|
|
|
@ -2257,6 +2257,9 @@ def test_meetings_agenda_delete_time_period_exception(app, admin_user):
|
|||
assert resp.request.url.endswith('/manage/time-period-exceptions/%d/exception-list' % desk.pk)
|
||||
|
||||
|
||||
@override_settings(
|
||||
EXCEPTIONS_SOURCES={'holidays': {'class': 'workalendar.europe.France', 'label': 'Holidays'},}
|
||||
)
|
||||
def test_exception_list(app, admin_user):
|
||||
agenda = Agenda.objects.create(label='Foo bar', kind='meetings')
|
||||
desk = Desk.objects.create(agenda=agenda, label='Desk A')
|
||||
|
@ -2299,6 +2302,15 @@ def test_exception_list(app, admin_user):
|
|||
assert '/manage/time-period-exceptions/%d/edit' % current_exception.pk in resp.text
|
||||
assert '/manage/time-period-exceptions/%d/edit' % future_exception.pk in resp.text
|
||||
|
||||
with CaptureQueriesContext(connection) as ctx:
|
||||
app.get("/manage/time-period-exceptions/%d/exception-list" % desk.pk)
|
||||
assert len(ctx.captured_queries) == 6
|
||||
|
||||
desk.import_timeperiod_exceptions_from_settings(enable=True)
|
||||
with CaptureQueriesContext(connection) as ctx:
|
||||
app.get("/manage/time-period-exceptions/%d/exception-list" % desk.pk)
|
||||
assert len(ctx.captured_queries) == 6
|
||||
|
||||
|
||||
def test_agenda_import_time_period_exception_from_ics(app, admin_user):
|
||||
agenda = Agenda.objects.create(label='Example', kind='meetings')
|
||||
|
|
Loading…
Reference in New Issue