0001_initial.py 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. # Generated by Django 4.1.3 on 2022-11-06 13:16
  2. from django.db import migrations, models
  3. import django.db.models.deletion
  4. class Migration(migrations.Migration):
  5. initial = True
  6. dependencies = [
  7. ("contenttypes", "0002_remove_content_type_name"),
  8. ]
  9. operations = [
  10. migrations.CreateModel(
  11. name="Category",
  12. fields=[
  13. (
  14. "id",
  15. models.BigAutoField(
  16. auto_created=True,
  17. primary_key=True,
  18. serialize=False,
  19. verbose_name="ID",
  20. ),
  21. ),
  22. ("created_at", models.DateTimeField(auto_now_add=True, null=True)),
  23. ("modified_at", models.DateTimeField(auto_now=True)),
  24. ("name", models.CharField(max_length=150)),
  25. (
  26. "type",
  27. models.CharField(
  28. choices=[
  29. ("Fixed", "Fixed expense"),
  30. ("Variable", "Variable expense"),
  31. ],
  32. default="Variable",
  33. max_length=20,
  34. ),
  35. ),
  36. ],
  37. options={
  38. "verbose_name": "Category",
  39. "verbose_name_plural": "Categories",
  40. "ordering": ("name", "type"),
  41. },
  42. ),
  43. migrations.CreateModel(
  44. name="RawExpense",
  45. fields=[
  46. (
  47. "id",
  48. models.BigAutoField(
  49. auto_created=True,
  50. primary_key=True,
  51. serialize=False,
  52. verbose_name="ID",
  53. ),
  54. ),
  55. ("name", models.CharField(max_length=150)),
  56. ("date", models.DateField()),
  57. ("amount", models.DecimalField(decimal_places=2, max_digits=10)),
  58. ],
  59. ),
  60. migrations.CreateModel(
  61. name="Source",
  62. fields=[
  63. (
  64. "id",
  65. models.BigAutoField(
  66. auto_created=True,
  67. primary_key=True,
  68. serialize=False,
  69. verbose_name="ID",
  70. ),
  71. ),
  72. ("created_at", models.DateTimeField(auto_now_add=True, null=True)),
  73. ("modified_at", models.DateTimeField(auto_now=True)),
  74. ("name", models.CharField(max_length=150)),
  75. ],
  76. options={
  77. "abstract": False,
  78. },
  79. ),
  80. migrations.CreateModel(
  81. name="LoneExpense",
  82. fields=[
  83. (
  84. "rawexpense_ptr",
  85. models.OneToOneField(
  86. auto_created=True,
  87. on_delete=django.db.models.deletion.CASCADE,
  88. parent_link=True,
  89. primary_key=True,
  90. serialize=False,
  91. to="expenses.rawexpense",
  92. ),
  93. ),
  94. ("created_at", models.DateTimeField(auto_now_add=True, null=True)),
  95. ("modified_at", models.DateTimeField(auto_now=True)),
  96. (
  97. "category",
  98. models.ForeignKey(
  99. on_delete=django.db.models.deletion.PROTECT,
  100. related_name="%(app_label)s_%(class)s_related",
  101. to="expenses.category",
  102. ),
  103. ),
  104. (
  105. "source",
  106. models.ForeignKey(
  107. on_delete=django.db.models.deletion.PROTECT,
  108. related_name="%(app_label)s_%(class)s_related",
  109. to="expenses.source",
  110. ),
  111. ),
  112. ],
  113. options={
  114. "verbose_name": "LoneExpense",
  115. "verbose_name_plural": "LoneExpenses",
  116. "ordering": ("name", "date", "amount"),
  117. },
  118. bases=("expenses.rawexpense", models.Model),
  119. ),
  120. migrations.CreateModel(
  121. name="OnlineSource",
  122. fields=[
  123. (
  124. "source_ptr",
  125. models.OneToOneField(
  126. auto_created=True,
  127. on_delete=django.db.models.deletion.CASCADE,
  128. parent_link=True,
  129. primary_key=True,
  130. serialize=False,
  131. to="expenses.source",
  132. ),
  133. ),
  134. ("url", models.URLField()),
  135. ],
  136. options={
  137. "abstract": False,
  138. },
  139. bases=("expenses.source",),
  140. ),
  141. migrations.CreateModel(
  142. name="PhysicalSource",
  143. fields=[
  144. (
  145. "source_ptr",
  146. models.OneToOneField(
  147. auto_created=True,
  148. on_delete=django.db.models.deletion.CASCADE,
  149. parent_link=True,
  150. primary_key=True,
  151. serialize=False,
  152. to="expenses.source",
  153. ),
  154. ),
  155. ("latitude", models.FloatField()),
  156. ("longitude", models.FloatField()),
  157. ],
  158. options={
  159. "abstract": False,
  160. },
  161. bases=("expenses.source",),
  162. ),
  163. migrations.CreateModel(
  164. name="Expense",
  165. fields=[
  166. (
  167. "id",
  168. models.BigAutoField(
  169. auto_created=True,
  170. primary_key=True,
  171. serialize=False,
  172. verbose_name="ID",
  173. ),
  174. ),
  175. ("object_id", models.PositiveIntegerField()),
  176. (
  177. "content_type",
  178. models.ForeignKey(
  179. on_delete=django.db.models.deletion.CASCADE,
  180. related_name="%(app_label)s_%(class)s_related",
  181. to="contenttypes.contenttype",
  182. ),
  183. ),
  184. ],
  185. options={
  186. "verbose_name": "Expense",
  187. "verbose_name_plural": "Expenses",
  188. },
  189. ),
  190. migrations.CreateModel(
  191. name="MultiplePaymentExepense",
  192. fields=[
  193. (
  194. "loneexpense_ptr",
  195. models.OneToOneField(
  196. auto_created=True,
  197. on_delete=django.db.models.deletion.CASCADE,
  198. parent_link=True,
  199. primary_key=True,
  200. serialize=False,
  201. to="expenses.loneexpense",
  202. ),
  203. ),
  204. ("number_of_payment", models.PositiveIntegerField()),
  205. (
  206. "payments",
  207. models.ManyToManyField(
  208. related_name="multiple_payment_expense",
  209. to="expenses.rawexpense",
  210. ),
  211. ),
  212. ],
  213. options={
  214. "verbose_name": "MultiplePaymentExpense",
  215. "verbose_name_plural": "MultiplePaymentExpenses",
  216. "ordering": ("name", "date", "amount"),
  217. },
  218. bases=("expenses.loneexpense",),
  219. ),
  220. ]