Example #1
0
def add(request):  # brace yourself traveler, scary code ahead

    if request.method == 'POST':
        form = NewRuleForm(request.POST)

        if form.is_valid():

            rule = Rule()
            rule.name = form.cleaned_data["name"]

            for app in core.get_apps():
                for model in app.get_models():
                    for inst in model.objects.all():
                        if inst == form.cleaned_data["origin_instance"]:
                            rule.origin_device_type = ContentType.objects.get(app_label=app.name, model=model.__name__.lower())
                            break

            rule.option = form.cleaned_data["option"]
            # rule.origin_object_id = rule.origin_device_type.get_object_for_this_type().__cls__.objects.filter(name=form.cleaned_data["origin_instance"].name)
            rule.origin_object_id = form.cleaned_data["origin_instance"].pk
            rule.origin_attribute = form.cleaned_data["origin_attribute"]

            for app in core.get_apps():
                for model in app.get_models():
                    for inst in model.objects.all():
                        if inst == form.cleaned_data["destination_instance"]:
                            rule.destination_device_type = ContentType.objects.get(app_label=app.name, model=model.__name__.lower())
                            break

            rule.destination_object_id = form.cleaned_data["destination_instance"].pk
            rule.destination_method = form.cleaned_data["destination_method"]

            rule.save()

            return HttpResponseRedirect('/rule/')
        else:
            # TODO: a bit hacky
            request.include_form = True
            return index(request)

    else:
        return HttpResponseRedirect('/rule/')