fix conflict issue

This commit is contained in:
bkfox
2016-05-26 01:56:09 +02:00
parent a989e53da4
commit 7402fc49b6
7 changed files with 32 additions and 27 deletions

View File

@ -113,8 +113,8 @@ class DiffusionAdmin (admin.ModelAdmin):
def get_queryset(self, request):
qs = super(DiffusionAdmin, self).get_queryset(request)
if '_changelist_filters' in request.GET or \
'type__exact' in request.GET and \
if ('_changelist_filters' in request.GET or \
'type__exact' in request.GET) and \
str(Diffusion.Type.unconfirmed) in request.GET['type__exact']:
return qs
return qs.exclude(type = Diffusion.Type.unconfirmed)

View File

@ -38,7 +38,7 @@ class Actions:
Return the number of conflicts
"""
conflicts = item.get_conflicts()
conflicts = list(item.get_conflicts())
for i, conflict in enumerate(conflicts):
if conflict.program == item.program:
item.do_not_save = True
@ -74,6 +74,7 @@ class Actions:
if manual:
Diffusion.objects.bulk_create(items)
else:
print('items: ', len(items))
for item in items:
count[1] += cl.__check_conflicts(item, saved_items)
if hasattr(item, 'do_not_save'):

View File

@ -639,8 +639,11 @@ class Diffusion(models.Model):
if station:
filter_args['program__station'] = station
if queryset is None:
queryset = cl.objects
if now:
return cl.objects.filter(
return queryset.filter(
models.Q(start__lte = date,
end__gte = date) |
models.Q(start__gte = date),
@ -648,18 +651,17 @@ class Diffusion(models.Model):
).order_by('start')
if next:
return cl.objects.filter(
return queryset.filter(
start__gte = date,
**filter_args
).order_by('start')
if prev:
return cl.objects.filter(
return queryset.filter(
end__lte = date,
**filter_args
).order_by('-start')
def is_date_in_my_range(self, date):
"""
Return true if the given date is in the diffusion's start-end
@ -672,10 +674,10 @@ class Diffusion(models.Model):
Return a list of conflictual diffusions, based on the scheduled duration.
"""
r = Diffusion.objects.filter(
models.Q(start__lte = self.start,
end__gte = self.start) |
models.Q(start__gte = self.start,
start__lte = self.end)
models.Q(start__lt = self.start,
end__gt = self.start) |
models.Q(start__gt = self.start,
start__lt = self.end)
)
return r