def update_series (self, request, obj, form): if 'update' in form.cleaned_data and form.cleaned_data['update'] == 'all': if obj.series: obj.series.title = obj.title obj.series.save() for updobj in obj.__class__.objects.filter(series=obj.series).exclude(id=obj.id): update_attrs(obj, updobj, ('start_dt', 'end_dt')) copy_many_to_many(obj, updobj) copy_inlines(obj, updobj)
def update_series (self, request, obj, form): if form.cleaned_data.has_key('update') and form.cleaned_data['update'] == 'all': if obj.series: obj.series.title = obj.title obj.series.save() for updobj in obj.__class__.objects.filter(series=obj.series).exclude(id=obj.id): update_attrs(obj, updobj, ('start_dt', 'end_dt')) copy_many_to_many(obj, updobj) copy_inlines(obj, updobj)
def save_new_series (self, request, obj, form): if 'repeat' in form.cleaned_data and form.cleaned_data['repeat'] != 'none': delta = None end_delta = None if obj.series is None: new_series = Series(title=obj.title) new_series.save() obj.series = new_series obj.save() if form['repeat'].data == '15': delta = datetime.timedelta(minutes=15) elif form['repeat'].data == '30': delta = datetime.timedelta(minutes=30) elif form['repeat'].data == 'hour': delta = datetime.timedelta(hours=1) elif form.cleaned_data['repeat'] == 'day': delta = datetime.timedelta(days=1) elif form.cleaned_data['repeat'] == 'week': delta = datetime.timedelta(days=7) elif form.cleaned_data['repeat'] == 'month': delta = datetime.timedelta(days=28) elif form.cleaned_data['repeat'] == 'month_num': delta = 'month' elif form.cleaned_data['repeat'] == 'year': delta = 'year' if obj.end_dt: end_delta = obj.end_dt - obj.start_dt if delta: start = obj.start_dt tz = timezone.get_current_timezone() old_dst = start.dst() while 1: if delta == 'year': start = start.replace(year=start.year + 1) elif delta == 'month': if start.month == 12: start = start.replace(year=start.year + 1, month=1) else: start = start.replace(month=start.month + 1) else: start += delta if start <= form.cleaned_data['repeat_until']: if tz.zone != 'UTC': start = tz.normalize(start) if old_dst != start.dst(): start = start + (old_dst - start.dst()) newobj = copy_model_instance(obj) newobj.start_dt = start if obj.end_dt: newobj.end_dt = newobj.start_dt + end_delta newobj.save() copy_many_to_many(obj, newobj) copy_inlines(obj, newobj) old_dst = start.dst() else: break
def save_new_series (self, request, obj, form): if form.cleaned_data.has_key('repeat') and form.cleaned_data['repeat'] != 'none': delta = None end_delta = None if obj.series is None: new_series = Series(title=obj.title) new_series.save() obj.series = new_series obj.save() if form['repeat'].data == '15': delta = datetime.timedelta(minutes=15) elif form['repeat'].data == '30': delta = datetime.timedelta(minutes=30) elif form['repeat'].data == 'hour': delta = datetime.timedelta(hours=1) elif form.cleaned_data['repeat'] == 'day': delta = datetime.timedelta(days=1) elif form.cleaned_data['repeat'] == 'week': delta = datetime.timedelta(days=7) elif form.cleaned_data['repeat'] == 'month': delta = datetime.timedelta(days=28) elif form.cleaned_data['repeat'] == 'month_num': delta = 'month' elif form.cleaned_data['repeat'] == 'year': delta = 'year' if obj.end_dt: end_delta = obj.end_dt - obj.start_dt if delta: start = obj.start_dt tz = timezone.get_current_timezone() old_dst = start.dst() while 1: if delta == 'year': start = start.replace(year=start.year + 1) elif delta == 'month': if start.month == 12: start = start.replace(year=start.year + 1, month=1) else: start = start.replace(month=start.month + 1) else: start += delta if start <= form.cleaned_data['repeat_until']: if tz.zone != 'UTC': start = tz.normalize(start) if old_dst != start.dst(): start = start + (old_dst - start.dst()) newobj = copy_model_instance(obj) newobj.start_dt = start if obj.end_dt: newobj.end_dt = newobj.start_dt + end_delta newobj.save() copy_many_to_many(obj, newobj) copy_inlines(obj, newobj) old_dst = start.dst() else: break