1. from django.db.migrations.operations.base import Operation
    
  2. 
    
  3. 
    
  4. class TestOperation(Operation):
    
  5.     def __init__(self):
    
  6.         pass
    
  7. 
    
  8.     def deconstruct(self):
    
  9.         return (self.__class__.__name__, [], {})
    
  10. 
    
  11.     @property
    
  12.     def reversible(self):
    
  13.         return True
    
  14. 
    
  15.     def state_forwards(self, app_label, state):
    
  16.         pass
    
  17. 
    
  18.     def database_forwards(self, app_label, schema_editor, from_state, to_state):
    
  19.         pass
    
  20. 
    
  21.     def state_backwards(self, app_label, state):
    
  22.         pass
    
  23. 
    
  24.     def database_backwards(self, app_label, schema_editor, from_state, to_state):
    
  25.         pass
    
  26. 
    
  27. 
    
  28. class CreateModel(TestOperation):
    
  29.     pass
    
  30. 
    
  31. 
    
  32. class ArgsOperation(TestOperation):
    
  33.     def __init__(self, arg1, arg2):
    
  34.         self.arg1, self.arg2 = arg1, arg2
    
  35. 
    
  36.     def deconstruct(self):
    
  37.         return (self.__class__.__name__, [self.arg1, self.arg2], {})
    
  38. 
    
  39. 
    
  40. class KwargsOperation(TestOperation):
    
  41.     def __init__(self, kwarg1=None, kwarg2=None):
    
  42.         self.kwarg1, self.kwarg2 = kwarg1, kwarg2
    
  43. 
    
  44.     def deconstruct(self):
    
  45.         kwargs = {}
    
  46.         if self.kwarg1 is not None:
    
  47.             kwargs["kwarg1"] = self.kwarg1
    
  48.         if self.kwarg2 is not None:
    
  49.             kwargs["kwarg2"] = self.kwarg2
    
  50.         return (self.__class__.__name__, [], kwargs)
    
  51. 
    
  52. 
    
  53. class ArgsKwargsOperation(TestOperation):
    
  54.     def __init__(self, arg1, arg2, kwarg1=None, kwarg2=None):
    
  55.         self.arg1, self.arg2 = arg1, arg2
    
  56.         self.kwarg1, self.kwarg2 = kwarg1, kwarg2
    
  57. 
    
  58.     def deconstruct(self):
    
  59.         kwargs = {}
    
  60.         if self.kwarg1 is not None:
    
  61.             kwargs["kwarg1"] = self.kwarg1
    
  62.         if self.kwarg2 is not None:
    
  63.             kwargs["kwarg2"] = self.kwarg2
    
  64.         return (
    
  65.             self.__class__.__name__,
    
  66.             [self.arg1, self.arg2],
    
  67.             kwargs,
    
  68.         )
    
  69. 
    
  70. 
    
  71. class ExpandArgsOperation(TestOperation):
    
  72.     serialization_expand_args = ["arg"]
    
  73. 
    
  74.     def __init__(self, arg):
    
  75.         self.arg = arg
    
  76. 
    
  77.     def deconstruct(self):
    
  78.         return (self.__class__.__name__, [self.arg], {})