forked from rc/aircox
fix conflict issue
This commit is contained in:
@ -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)
|
||||
|
@ -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'):
|
||||
|
@ -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
|
||||
|
||||
|
Reference in New Issue
Block a user