Example #1
0
    def test_get_value_on_delete(self):

        # First validate the FK fields with on_delete options
        o_set_null_on_delete = HorribleModel._meta.get_field_by_name("o_set_null_on_delete")[0]
        o_cascade_delete = HorribleModel._meta.get_field_by_name("o_cascade_delete")[0]
        o_protect = HorribleModel._meta.get_field_by_name("o_protect")[0]
        o_default_on_delete = HorribleModel._meta.get_field_by_name("o_default_on_delete")[0]
        o_set_on_delete_function = HorribleModel._meta.get_field_by_name("o_set_on_delete_function")[0]
        o_set_on_delete_value = HorribleModel._meta.get_field_by_name("o_set_on_delete_value")[0]
        o_no_action_on_delete = HorribleModel._meta.get_field_by_name("o_no_action_on_delete")[0]
        # TODO this is repeated from the introspection_details in modelsinspector:
        # better to refactor that so we can reference these settings, in case they
        # must change at some point.
        on_delete = [
            "rel.on_delete",
            {"default": models.CASCADE, "is_django_function": True, "converter": convert_on_delete_handler},
        ]

        # Foreign Key cascade update/delete
        self.assertRaises(IsDefault, get_value, o_cascade_delete, on_delete)
        self.assertEqual(get_value(o_protect, on_delete), "models.PROTECT")
        self.assertEqual(get_value(o_no_action_on_delete, on_delete), "models.DO_NOTHING")
        self.assertEqual(get_value(o_set_null_on_delete, on_delete), "models.SET_NULL")
        self.assertEqual(get_value(o_default_on_delete, on_delete), "models.SET_DEFAULT")
        # For now o_set_on_delete raises, see modelsinspector.py
        # self.assertEqual(
        #    get_value(o_set_on_delete_function, on_delete),
        #    "models.SET(get_sentinel_object)",
        # )
        self.assertRaises(ValueError, get_value, o_set_on_delete_function, on_delete)
        self.assertEqual(
            get_value(o_set_on_delete_value, on_delete), "models.SET(%s)" % value_clean(get_sentinel_object())
        )
Example #2
0
    def test_get_value_on_delete(self):

        # First validate the FK fields with on_delete options
        o_set_null_on_delete = HorribleModel._meta.get_field_by_name("o_set_null_on_delete")[0]
        o_cascade_delete = HorribleModel._meta.get_field_by_name("o_cascade_delete")[0]
        o_protect = HorribleModel._meta.get_field_by_name("o_protect")[0]
        o_default_on_delete = HorribleModel._meta.get_field_by_name("o_default_on_delete")[0]
        o_set_on_delete_function = HorribleModel._meta.get_field_by_name("o_set_on_delete_function")[0]
        o_set_on_delete_value = HorribleModel._meta.get_field_by_name("o_set_on_delete_value")[0]
        o_no_action_on_delete = HorribleModel._meta.get_field_by_name("o_no_action_on_delete")[0]
        # TODO this is repeated from the introspection_details in modelsinspector:
        # better to refactor that so we can reference these settings, in case they
        # must change at some point.
        on_delete = ["rel.on_delete", {"default": models.CASCADE, "is_django_function": True, "converter": convert_on_delete_handler, }]
        
        # Foreign Key cascade update/delete
        self.assertRaises(
            IsDefault,
            get_value,
            o_cascade_delete,
            on_delete,
        )
        self.assertEqual(
            get_value(o_protect, on_delete),
            "models.PROTECT",
        )
        self.assertEqual(
            get_value(o_no_action_on_delete, on_delete),
            "models.DO_NOTHING",
        )
        self.assertEqual(
            get_value(o_set_null_on_delete, on_delete),
            "models.SET_NULL",
        )
        self.assertEqual(
            get_value(o_default_on_delete, on_delete),
            "models.SET_DEFAULT",
        )
        # For now o_set_on_delete raises, see modelsinspector.py
        #self.assertEqual(
        #    get_value(o_set_on_delete_function, on_delete),
        #    "models.SET(get_sentinel_object)",
        #)
        self.assertRaises(
            ValueError,
            get_value,
            o_set_on_delete_function,
            on_delete,
        )
        self.assertEqual(
            get_value(o_set_on_delete_value, on_delete),
            "models.SET(%s)" % value_clean(get_sentinel_object()),
        )
        
Example #3
0
 def add_one_time_default(self, field, field_def):
     # OK, they want to pick their own one-time default. Who are we to refuse?
     print(" ? Please enter Python code for your one-off default value.")
     print(" ? The datetime module is available, so you can do e.g. datetime.date.today()")
     while True:
         code = raw_input(" >>> ")
         if not code:
             print(" ! Please enter some code, or 'exit' (with no quotes) to exit.")
         elif code == "exit":
             sys.exit(1)
         else:
             try:
                 result = eval(code, {}, {"datetime": datetime_utils})
             except (SyntaxError, NameError) as e:
                 print(" ! Invalid input: %s" % e)
             else:
                 break
     # Right, add the default in.
     field_def[2]['default'] = value_clean(result)
Example #4
0
 def add_one_time_default(self, field, field_def):
     # OK, they want to pick their own one-time default. Who are we to refuse?
     print(" ? Please enter Python code for your one-off default value.")
     print(" ? The datetime module is available, so you can do e.g. datetime.date.today()")
     while True:
         code = raw_input(" >>> ")
         if not code:
             print(" ! Please enter some code, or 'exit' (with no quotes) to exit.")
         elif code == "exit":
             sys.exit(1)
         else:
             try:
                 result = eval(code, {}, {"datetime": datetime_utils})
             except (SyntaxError, NameError) as e:
                 print(" ! Invalid input: %s" % e)
             else:
                 break
     # Right, add the default in.
     field_def[2]['default'] = value_clean(result)
Example #5
0
        print " ? The datetime module is available, so you can do e.g. datetime.date.today()"
        while True:
            code = raw_input(" >>> ")
            if not code:
                print " ! Please enter some code, or 'exit' (with no quotes) to exit."
            elif code == "exit":
                sys.exit(1)
            else:
                try:
                    result = eval(code, {}, {"datetime": datetime_utils})
                except (SyntaxError, NameError), e:
                    print " ! Invalid input: %s" % e
                else:
                    break
        # Right, add the default in.
        field_def[2]['default'] = value_clean(result)

    def irreversable_code(self, field):
        return self.IRREVERSIBLE_TEMPLATE % {
            "model_name": self.model._meta.object_name,
            "table_name": self.model._meta.db_table,
            "field_name": field.name,
            "field_column": field.column,
        }
    
    
class AddField(Action, _NullIssuesField):
    """
    Adds a field to a model. Takes a Model class and the field name.
    """
Example #6
0
        print " ? The datetime module is available, so you can do e.g. datetime.date.today()"
        while True:
            code = raw_input(" >>> ")
            if not code:
                print " ! Please enter some code, or 'exit' (with no quotes) to exit."
            elif code == "exit":
                sys.exit(1)
            else:
                try:
                    result = eval(code, {}, {"datetime": datetime_utils})
                except (SyntaxError, NameError), e:
                    print " ! Invalid input: %s" % e
                else:
                    break
        # Right, add the default in.
        field_def[2]['default'] = value_clean(result)

    def irreversable_code(self, field):
        return self.IRREVERSIBLE_TEMPLATE % {
            "model_name": self.model._meta.object_name,
            "table_name": self.model._meta.db_table,
            "field_name": field.name,
            "field_column": field.column,
        }


class AddField(Action, _NullIssuesField):
    """
    Adds a field to a model. Takes a Model class and the field name.
    """