/tests/openwisp2/sample_pki/migrations/0001_initial.py

https://github.com/openwisp/openwisp-controller · Python · 396 lines · 387 code · 8 blank · 1 comment · 0 complexity · 63c1392941dc5f7e1814d1f9060731e0 MD5 · raw file

  1. # Generated by Django 3.0.6 on 2020-05-10 18:14
  2. import collections
  3. import django.db.models.deletion
  4. import django.utils.timezone
  5. import django_x509.base.models
  6. import jsonfield.fields
  7. import model_utils.fields
  8. from django.db import migrations, models
  9. import openwisp_users.mixins
  10. class Migration(migrations.Migration):
  11. initial = True
  12. dependencies = [
  13. ('openwisp_users', '0007_unique_email'),
  14. ]
  15. operations = [
  16. migrations.CreateModel(
  17. name='Ca',
  18. fields=[
  19. (
  20. 'id',
  21. models.AutoField(
  22. auto_created=True,
  23. primary_key=True,
  24. serialize=False,
  25. verbose_name='ID',
  26. ),
  27. ),
  28. ('name', models.CharField(max_length=64)),
  29. ('notes', models.TextField(blank=True)),
  30. (
  31. 'key_length',
  32. models.CharField(
  33. blank=True,
  34. choices=[
  35. ('', ''),
  36. ('512', '512'),
  37. ('1024', '1024'),
  38. ('2048', '2048'),
  39. ('4096', '4096'),
  40. ],
  41. default=django_x509.base.models.default_key_length,
  42. help_text='bits',
  43. max_length=6,
  44. verbose_name='key length',
  45. ),
  46. ),
  47. (
  48. 'digest',
  49. models.CharField(
  50. blank=True,
  51. choices=[
  52. ('', ''),
  53. ('sha1', 'SHA1'),
  54. ('sha224', 'SHA224'),
  55. ('sha256', 'SHA256'),
  56. ('sha384', 'SHA384'),
  57. ('sha512', 'SHA512'),
  58. ],
  59. default=django_x509.base.models.default_digest_algorithm,
  60. help_text='bits',
  61. max_length=8,
  62. verbose_name='digest algorithm',
  63. ),
  64. ),
  65. (
  66. 'validity_start',
  67. models.DateTimeField(
  68. blank=True,
  69. default=django_x509.base.models.default_validity_start,
  70. null=True,
  71. ),
  72. ),
  73. (
  74. 'validity_end',
  75. models.DateTimeField(
  76. blank=True,
  77. default=django_x509.base.models.default_ca_validity_end,
  78. null=True,
  79. ),
  80. ),
  81. ('country_code', models.CharField(blank=True, max_length=2)),
  82. (
  83. 'state',
  84. models.CharField(
  85. blank=True, max_length=64, verbose_name='state or province'
  86. ),
  87. ),
  88. (
  89. 'city',
  90. models.CharField(blank=True, max_length=64, verbose_name='city'),
  91. ),
  92. (
  93. 'organization_name',
  94. models.CharField(
  95. blank=True, max_length=64, verbose_name='organization'
  96. ),
  97. ),
  98. (
  99. 'organizational_unit_name',
  100. models.CharField(
  101. blank=True,
  102. max_length=64,
  103. verbose_name='organizational unit name',
  104. ),
  105. ),
  106. (
  107. 'email',
  108. models.EmailField(
  109. blank=True, max_length=254, verbose_name='email address'
  110. ),
  111. ),
  112. (
  113. 'common_name',
  114. models.CharField(
  115. blank=True, max_length=64, verbose_name='common name'
  116. ),
  117. ),
  118. (
  119. 'extensions',
  120. jsonfield.fields.JSONField(
  121. blank=True,
  122. default=list,
  123. dump_kwargs={'indent': 4},
  124. help_text='additional x509 certificate extensions',
  125. load_kwargs={'object_pairs_hook': collections.OrderedDict},
  126. verbose_name='extensions',
  127. ),
  128. ),
  129. (
  130. 'serial_number',
  131. models.CharField(
  132. blank=True,
  133. help_text='leave blank to determine automatically',
  134. max_length=48,
  135. null=True,
  136. verbose_name='serial number',
  137. ),
  138. ),
  139. (
  140. 'certificate',
  141. models.TextField(
  142. blank=True, help_text='certificate in X.509 PEM format'
  143. ),
  144. ),
  145. (
  146. 'private_key',
  147. models.TextField(
  148. blank=True, help_text='private key in X.509 PEM format'
  149. ),
  150. ),
  151. (
  152. 'created',
  153. model_utils.fields.AutoCreatedField(
  154. default=django.utils.timezone.now,
  155. editable=False,
  156. verbose_name='created',
  157. ),
  158. ),
  159. (
  160. 'modified',
  161. model_utils.fields.AutoLastModifiedField(
  162. default=django.utils.timezone.now,
  163. editable=False,
  164. verbose_name='modified',
  165. ),
  166. ),
  167. (
  168. 'passphrase',
  169. models.CharField(
  170. blank=True,
  171. help_text='Passphrase for the private key, if present',
  172. max_length=64,
  173. ),
  174. ),
  175. ('details', models.CharField(blank=True, max_length=64, null=True)),
  176. (
  177. 'organization',
  178. models.ForeignKey(
  179. blank=True,
  180. null=True,
  181. on_delete=django.db.models.deletion.CASCADE,
  182. to='openwisp_users.Organization',
  183. verbose_name='organization',
  184. ),
  185. ),
  186. ],
  187. options={
  188. 'verbose_name': 'CA',
  189. 'verbose_name_plural': 'CAs',
  190. 'abstract': False,
  191. },
  192. bases=(openwisp_users.mixins.ValidateOrgMixin, models.Model),
  193. ),
  194. migrations.CreateModel(
  195. name='Cert',
  196. fields=[
  197. (
  198. 'id',
  199. models.AutoField(
  200. auto_created=True,
  201. primary_key=True,
  202. serialize=False,
  203. verbose_name='ID',
  204. ),
  205. ),
  206. ('name', models.CharField(max_length=64)),
  207. ('notes', models.TextField(blank=True)),
  208. (
  209. 'key_length',
  210. models.CharField(
  211. blank=True,
  212. choices=[
  213. ('', ''),
  214. ('512', '512'),
  215. ('1024', '1024'),
  216. ('2048', '2048'),
  217. ('4096', '4096'),
  218. ],
  219. default=django_x509.base.models.default_key_length,
  220. help_text='bits',
  221. max_length=6,
  222. verbose_name='key length',
  223. ),
  224. ),
  225. (
  226. 'digest',
  227. models.CharField(
  228. blank=True,
  229. choices=[
  230. ('', ''),
  231. ('sha1', 'SHA1'),
  232. ('sha224', 'SHA224'),
  233. ('sha256', 'SHA256'),
  234. ('sha384', 'SHA384'),
  235. ('sha512', 'SHA512'),
  236. ],
  237. default=django_x509.base.models.default_digest_algorithm,
  238. help_text='bits',
  239. max_length=8,
  240. verbose_name='digest algorithm',
  241. ),
  242. ),
  243. (
  244. 'validity_start',
  245. models.DateTimeField(
  246. blank=True,
  247. default=django_x509.base.models.default_validity_start,
  248. null=True,
  249. ),
  250. ),
  251. (
  252. 'validity_end',
  253. models.DateTimeField(
  254. blank=True,
  255. default=django_x509.base.models.default_cert_validity_end,
  256. null=True,
  257. ),
  258. ),
  259. ('country_code', models.CharField(blank=True, max_length=2)),
  260. (
  261. 'state',
  262. models.CharField(
  263. blank=True, max_length=64, verbose_name='state or province'
  264. ),
  265. ),
  266. (
  267. 'city',
  268. models.CharField(blank=True, max_length=64, verbose_name='city'),
  269. ),
  270. (
  271. 'organization_name',
  272. models.CharField(
  273. blank=True, max_length=64, verbose_name='organization'
  274. ),
  275. ),
  276. (
  277. 'organizational_unit_name',
  278. models.CharField(
  279. blank=True,
  280. max_length=64,
  281. verbose_name='organizational unit name',
  282. ),
  283. ),
  284. (
  285. 'email',
  286. models.EmailField(
  287. blank=True, max_length=254, verbose_name='email address'
  288. ),
  289. ),
  290. (
  291. 'common_name',
  292. models.CharField(
  293. blank=True, max_length=64, verbose_name='common name'
  294. ),
  295. ),
  296. (
  297. 'extensions',
  298. jsonfield.fields.JSONField(
  299. blank=True,
  300. default=list,
  301. dump_kwargs={'indent': 4},
  302. help_text='additional x509 certificate extensions',
  303. load_kwargs={'object_pairs_hook': collections.OrderedDict},
  304. verbose_name='extensions',
  305. ),
  306. ),
  307. (
  308. 'serial_number',
  309. models.CharField(
  310. blank=True,
  311. help_text='leave blank to determine automatically',
  312. max_length=48,
  313. null=True,
  314. verbose_name='serial number',
  315. ),
  316. ),
  317. (
  318. 'certificate',
  319. models.TextField(
  320. blank=True, help_text='certificate in X.509 PEM format'
  321. ),
  322. ),
  323. (
  324. 'private_key',
  325. models.TextField(
  326. blank=True, help_text='private key in X.509 PEM format'
  327. ),
  328. ),
  329. (
  330. 'created',
  331. model_utils.fields.AutoCreatedField(
  332. default=django.utils.timezone.now,
  333. editable=False,
  334. verbose_name='created',
  335. ),
  336. ),
  337. (
  338. 'modified',
  339. model_utils.fields.AutoLastModifiedField(
  340. default=django.utils.timezone.now,
  341. editable=False,
  342. verbose_name='modified',
  343. ),
  344. ),
  345. (
  346. 'passphrase',
  347. models.CharField(
  348. blank=True,
  349. help_text='Passphrase for the private key, if present',
  350. max_length=64,
  351. ),
  352. ),
  353. ('revoked', models.BooleanField(default=False, verbose_name='revoked')),
  354. (
  355. 'revoked_at',
  356. models.DateTimeField(
  357. blank=True, default=None, null=True, verbose_name='revoked at'
  358. ),
  359. ),
  360. ('details', models.CharField(blank=True, max_length=64, null=True)),
  361. (
  362. 'ca',
  363. models.ForeignKey(
  364. on_delete=django.db.models.deletion.CASCADE,
  365. to='sample_pki.Ca',
  366. verbose_name='CA',
  367. ),
  368. ),
  369. (
  370. 'organization',
  371. models.ForeignKey(
  372. blank=True,
  373. null=True,
  374. on_delete=django.db.models.deletion.CASCADE,
  375. to='openwisp_users.Organization',
  376. verbose_name='organization',
  377. ),
  378. ),
  379. ],
  380. options={
  381. 'verbose_name': 'certificate',
  382. 'verbose_name_plural': 'certificates',
  383. 'abstract': False,
  384. 'unique_together': {('ca', 'serial_number')},
  385. },
  386. bases=(openwisp_users.mixins.ValidateOrgMixin, models.Model),
  387. ),
  388. ]