Example #1
0
    def post(self, request):
        context = self.common(request)
        if not request.user.has_perm('openorg_timeseries.add_timeseries'):
            return self.lacking_privilege('create a new time-series')
        form, archive_formset = context['form'], context['archive_formset']
        if not (form.is_valid() and archive_formset.is_valid()):
            return self.render(request, context, 'timeseries-admin/create')

        time_series = TimeSeries(**self.filtered_dict(form.cleaned_data,
                                                      TimeSeries.common_fields))
        if time_series.is_virtual:
            time_series.equation = form.cleaned_data['equation']
        else:
            config = self.filtered_dict(form.cleaned_data, TimeSeries.config_fields)
            config['archives'] = [f.cleaned_data for f in archive_formset.forms if f.is_valid() and f.cleaned_data]
            time_series.config = config

        try:
            time_series.save()
        except IntegrityError:
            form.errors['slug'] = ErrorList(["A time-series with this slug already exists."])
            return self.get(request, context)
        return HttpResponseSeeOther(time_series.get_admin_url())