mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-06-10 22:44:47 +02:00
Merge branch 'main' into nmb/field-validation
This commit is contained in:
commit
b0debba4e6
14 changed files with 521 additions and 287 deletions
|
@ -0,0 +1,21 @@
|
||||||
|
# 14. Use existing Cloud.gov Pages site for content, Django app for registrar functionality
|
||||||
|
|
||||||
|
Date: 2022-10-04
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Proposed
|
||||||
|
|
||||||
|
## Context
|
||||||
|
|
||||||
|
Currently web infrastructure for the dotgov program is split between a [home site hosted on Cloud.gov Pages](https://home.dotgov.gov/) and the registrar/registry [hosted by Verisign](https://domains.dotgov.gov/dotgov-web/). The two sites provide very different experiences, confusingly different domains, and don’t share the same technical infrastructure. As we award a new contract that formally splits the registry/registrar functions, we have an opportunity to reimagine how users learn about .gov and how they register and manage domains.
|
||||||
|
|
||||||
|
## Decision
|
||||||
|
|
||||||
|
Keep the Cloud.gov Pages site for program content (About, Guides, News, Docs, etc.) and as the front page for program services. Use the Django application we are building to solely host the registrar behind login.gov. Move the Cloud.gov Pages site to get.gov, and host the Django site at the subdomain registrar.get.gov. Both will use USWDS with the same settings.
|
||||||
|
|
||||||
|
This allows us to manage content separately from our applicaiton code. This both lets us write content in a markdown format rather than HTML in our application and update content without rebuilding the application.
|
||||||
|
|
||||||
|
## Consequences
|
||||||
|
|
||||||
|
This means we have to maintain two systems: Cloud.gov Pages and the Django app running in our Cloud.gov organization. When we have to update style settings for one, we will have to update the settings for the other.
|
351
docs/compliance/Pipfile.lock
generated
351
docs/compliance/Pipfile.lock
generated
|
@ -18,11 +18,11 @@
|
||||||
"default": {
|
"default": {
|
||||||
"anyio": {
|
"anyio": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:413adf95f93886e442aea925f3ee43baa5a765a64a0f52c6081894f9992fdd0b",
|
"sha256:25ea0d673ae30af41a0c442f81cf3b38c7e79fdc7b60335a4c14e05eb0947421",
|
||||||
"sha256:cb29b9c70620506a9a8f87a309591713446953302d7d995344d0d7c6c0c9a7be"
|
"sha256:fbbe32bd270d2a2ef3ed1c5d45041250284e31fc0a4df4a5a6071842051a51e3"
|
||||||
],
|
],
|
||||||
"markers": "python_full_version >= '3.6.2'",
|
"markers": "python_full_version >= '3.6.2'",
|
||||||
"version": "==3.6.1"
|
"version": "==3.6.2"
|
||||||
},
|
},
|
||||||
"argcomplete": {
|
"argcomplete": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -42,58 +42,65 @@
|
||||||
},
|
},
|
||||||
"bcrypt": {
|
"bcrypt": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:0b0f0c7141622a31e9734b7f649451147c04ebb5122327ac0bd23744df84be90",
|
"sha256:089098effa1bc35dc055366740a067a2fc76987e8ec75349eb9484061c54f535",
|
||||||
"sha256:1c3334446fac200499e8bc04a530ce3cf0b3d7151e0e4ac5c0dddd3d95e97843",
|
"sha256:08d2947c490093a11416df18043c27abe3921558d2c03e2076ccb28a116cb6d0",
|
||||||
"sha256:2d0dd19aad87e4ab882ef1d12df505f4c52b28b69666ce83c528f42c07379227",
|
"sha256:0eaa47d4661c326bfc9d08d16debbc4edf78778e6aaba29c1bc7ce67214d4410",
|
||||||
"sha256:594780b364fb45f2634c46ec8d3e61c1c0f1811c4f2da60e8eb15594ecbf93ed",
|
"sha256:27d375903ac8261cfe4047f6709d16f7d18d39b1ec92aaf72af989552a650ebd",
|
||||||
"sha256:7c7dd6c1f05bf89e65261d97ac3a6520f34c2acb369afb57e3ea4449be6ff8fd",
|
"sha256:2b3ac11cf45161628f1f3733263e63194f22664bf4d0c0f3ab34099c02134665",
|
||||||
"sha256:845b1daf4df2dd94d2fdbc9454953ca9dd0e12970a0bfc9f3dcc6faea3fa96e4",
|
"sha256:2caffdae059e06ac23fce178d31b4a702f2a3264c20bfb5ff541b338194d8fab",
|
||||||
"sha256:8780e69f9deec9d60f947b169507d2c9816e4f11548f1f7ebee2af38b9b22ae4",
|
"sha256:3100851841186c25f127731b9fa11909ab7b1df6fc4b9f8353f4f1fd952fbf71",
|
||||||
"sha256:bf413f2a9b0a2950fc750998899013f2e718d20fa4a58b85ca50b6df5ed1bbf9",
|
"sha256:5ad4d32a28b80c5fa6671ccfb43676e8c1cc232887759d1cd7b6f56ea4355215",
|
||||||
"sha256:bfb67f6a6c72dfb0a02f3df51550aa1862708e55128b22543e2b42c74f3620d7",
|
"sha256:67a97e1c405b24f19d08890e7ae0c4f7ce1e56a712a016746c8b2d7732d65d4b",
|
||||||
"sha256:c59c170fc9225faad04dde1ba61d85b413946e8ce2e5f5f5ff30dfd67283f319",
|
"sha256:705b2cea8a9ed3d55b4491887ceadb0106acf7c6387699fca771af56b1cdeeda",
|
||||||
"sha256:dc6ec3dc19b1c193b2f7cf279d3e32e7caf447532fbcb7af0906fe4398900c33",
|
"sha256:8a68f4341daf7522fe8d73874de8906f3a339048ba406be6ddc1b3ccb16fc0d9",
|
||||||
"sha256:ede0f506554571c8eda80db22b83c139303ec6b595b8f60c4c8157bdd0bdee36"
|
"sha256:a522427293d77e1c29e303fc282e2d71864579527a04ddcfda6d4f8396c6c36a",
|
||||||
|
"sha256:ae88eca3024bb34bb3430f964beab71226e761f51b912de5133470b649d82344",
|
||||||
|
"sha256:b1023030aec778185a6c16cf70f359cbb6e0c289fd564a7cfa29e727a1c38f8f",
|
||||||
|
"sha256:b3b85202d95dd568efcb35b53936c5e3b3600c7cdcc6115ba461df3a8e89f38d",
|
||||||
|
"sha256:b57adba8a1444faf784394de3436233728a1ecaeb6e07e8c22c8848f179b893c",
|
||||||
|
"sha256:bf4fa8b2ca74381bb5442c089350f09a3f17797829d958fad058d6e44d9eb83c",
|
||||||
|
"sha256:ca3204d00d3cb2dfed07f2d74a25f12fc12f73e606fcaa6975d1f7ae69cacbb2",
|
||||||
|
"sha256:cbb03eec97496166b704ed663a53680ab57c5084b2fc98ef23291987b525cb7d",
|
||||||
|
"sha256:e9a51bbfe7e9802b5f3508687758b564069ba937748ad7b9e890086290d2f79e",
|
||||||
|
"sha256:fbdaec13c5105f0c4e5c52614d04f0bca5f5af007910daa8b6b12095edaa67b3"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '3.6'",
|
"markers": "python_version >= '3.6'",
|
||||||
"version": "==4.0.0"
|
"version": "==4.0.1"
|
||||||
},
|
},
|
||||||
"black": {
|
"black": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:0a12e4e1353819af41df998b02c6742643cfef58282915f781d0e4dd7a200411",
|
"sha256:14ff67aec0a47c424bc99b71005202045dc09270da44a27848d534600ac64fc7",
|
||||||
"sha256:0ad827325a3a634bae88ae7747db1a395d5ee02cf05d9aa7a9bd77dfb10e940c",
|
"sha256:197df8509263b0b8614e1df1756b1dd41be6738eed2ba9e9769f3880c2b9d7b6",
|
||||||
"sha256:32a4b17f644fc288c6ee2bafdf5e3b045f4eff84693ac069d87b1a347d861497",
|
"sha256:1e464456d24e23d11fced2bc8c47ef66d471f845c7b7a42f3bd77bf3d1789650",
|
||||||
"sha256:3b2c25f8dea5e8444bdc6788a2f543e1fb01494e144480bc17f806178378005e",
|
"sha256:2039230db3c6c639bd84efe3292ec7b06e9214a2992cd9beb293d639c6402edb",
|
||||||
"sha256:4a098a69a02596e1f2a58a2a1c8d5a05d5a74461af552b371e82f9fa4ada8342",
|
"sha256:21199526696b8f09c3997e2b4db8d0b108d801a348414264d2eb8eb2532e540d",
|
||||||
"sha256:5107ea36b2b61917956d018bd25129baf9ad1125e39324a9b18248d362156a27",
|
"sha256:2644b5d63633702bc2c5f3754b1b475378fbbfb481f62319388235d0cd104c2d",
|
||||||
"sha256:53198e28a1fb865e9fe97f88220da2e44df6da82b18833b588b1883b16bb5d41",
|
"sha256:432247333090c8c5366e69627ccb363bc58514ae3e63f7fc75c54b1ea80fa7de",
|
||||||
"sha256:5594efbdc35426e35a7defa1ea1a1cb97c7dbd34c0e49af7fb593a36bd45edab",
|
"sha256:444ebfb4e441254e87bad00c661fe32df9969b2bf224373a448d8aca2132b395",
|
||||||
"sha256:5b879eb439094751185d1cfdca43023bc6786bd3c60372462b6f051efa6281a5",
|
"sha256:5b9b29da4f564ba8787c119f37d174f2b69cdfdf9015b7d8c5c16121ddc054ae",
|
||||||
"sha256:78dd85caaab7c3153054756b9fe8c611efa63d9e7aecfa33e533060cb14b6d16",
|
"sha256:5cc42ca67989e9c3cf859e84c2bf014f6633db63d1cbdf8fdb666dcd9e77e3fa",
|
||||||
"sha256:792f7eb540ba9a17e8656538701d3eb1afcb134e3b45b71f20b25c77a8db7e6e",
|
"sha256:5d8f74030e67087b219b032aa33a919fae8806d49c867846bfacde57f43972ef",
|
||||||
"sha256:8ce13ffed7e66dda0da3e0b2eb1bdfc83f5812f66e09aca2b0978593ed636b6c",
|
"sha256:72ef3925f30e12a184889aac03d77d031056860ccae8a1e519f6cbb742736383",
|
||||||
"sha256:a05da0430bd5ced89176db098567973be52ce175a55677436a271102d7eaa3fe",
|
"sha256:819dc789f4498ecc91438a7de64427c73b45035e2e3680c92e18795a839ebb66",
|
||||||
"sha256:a983526af1bea1e4cf6768e649990f28ee4f4137266921c2c3cee8116ae42ec3",
|
"sha256:915ace4ff03fdfff953962fa672d44be269deb2eaf88499a0f8805221bc68c87",
|
||||||
"sha256:bc4d4123830a2d190e9cc42a2e43570f82ace35c3aeb26a512a2102bce5af7ec",
|
"sha256:9311e99228ae10023300ecac05be5a296f60d2fd10fff31cf5c1fa4ca4b1988d",
|
||||||
"sha256:c3a73f66b6d5ba7288cd5d6dad9b4c9b43f4e8a4b789a94bf5abfb878c663eb3",
|
"sha256:974308c58d057a651d182208a484ce80a26dac0caef2895836a92dd6ebd725e0",
|
||||||
"sha256:ce957f1d6b78a8a231b18e0dd2d94a33d2ba738cd88a7fe64f53f659eea49fdd",
|
"sha256:b8b49776299fece66bffaafe357d929ca9451450f5466e997a7285ab0fe28e3b",
|
||||||
"sha256:cea1b2542d4e2c02c332e83150e41e3ca80dc0fb8de20df3c5e98e242156222c",
|
"sha256:c957b2b4ea88587b46cf49d1dc17681c1e672864fd7af32fc1e9664d572b3458",
|
||||||
"sha256:d2c21d439b2baf7aa80d6dd4e3659259be64c6f49dfd0f32091063db0e006db4",
|
"sha256:e41a86c6c650bcecc6633ee3180d80a025db041a8e2398dcc059b3afa8382cd4",
|
||||||
"sha256:d839150f61d09e7217f52917259831fe2b689f5c8e5e32611736351b89bb2a90",
|
"sha256:f513588da599943e0cde4e32cc9879e825d58720d6557062d1098c5ad80080e1",
|
||||||
"sha256:dd82842bb272297503cbec1a2600b6bfb338dae017186f8f215c8958f8acf869",
|
"sha256:fba8a281e570adafb79f7755ac8721b6cf1bbf691186a287e990c7929c7692ff"
|
||||||
"sha256:e8166b7bfe5dcb56d325385bd1d1e0f635f24aae14b3ae437102dedc0c186747",
|
|
||||||
"sha256:e981e20ec152dfb3e77418fb616077937378b322d7b26aa1ff87717fb18b4875"
|
|
||||||
],
|
],
|
||||||
"markers": "python_full_version >= '3.6.2'",
|
"markers": "python_version >= '3.7'",
|
||||||
"version": "==22.8.0"
|
"version": "==22.10.0"
|
||||||
},
|
},
|
||||||
"certifi": {
|
"certifi": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:0aa1a42fbd57645fabeb6290a7687c21755b0344ecaeaa05f4e9f6207ae2e9a8",
|
"sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3",
|
||||||
"sha256:aa08c101214127b9b0472ca6338315113c9487d45376fd3e669201b477c71003"
|
"sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '3.6'",
|
"index": "pypi",
|
||||||
"version": "==2022.6.15.2"
|
"version": "==2022.12.7"
|
||||||
},
|
},
|
||||||
"cffi": {
|
"cffi": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -282,11 +289,11 @@
|
||||||
"http"
|
"http"
|
||||||
],
|
],
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:437d84345be5603a78e555f2febf35155dc0376277cd4458f49381eaa2514659",
|
"sha256:0a92afc78aff6ed6b7bc23401bdd376d9af765997af013b2c013ba735f3a6a4f",
|
||||||
"sha256:c61a0e18a32278490f2854ae13dda9097fb39fa116f47d209c3da0590d3ed2ab"
|
"sha256:d54e07fdf4650ba63f2379a0c95932bb71a4d279cec79252ada581294c4747f7"
|
||||||
],
|
],
|
||||||
"markers": "python_version < '4' and python_full_version >= '3.6.1'",
|
"markers": "python_version >= '3.7' and python_version < '4.0'",
|
||||||
"version": "==0.13.1"
|
"version": "==0.14.0"
|
||||||
},
|
},
|
||||||
"defusedxml": {
|
"defusedxml": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -301,15 +308,15 @@
|
||||||
"sha256:0f7569a4a6ff151958b64304071d370daa3243d15941a7beedf0c9fe5105603e",
|
"sha256:0f7569a4a6ff151958b64304071d370daa3243d15941a7beedf0c9fe5105603e",
|
||||||
"sha256:a851e51367fb93e9e1361732c1d60dab63eff98712e503ea7d92e6eccb109b4f"
|
"sha256:a851e51367fb93e9e1361732c1d60dab63eff98712e503ea7d92e6eccb109b4f"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '3.6' and python_version < '4'",
|
"markers": "python_version >= '3.6' and python_version < '4.0'",
|
||||||
"version": "==2.2.1"
|
"version": "==2.2.1"
|
||||||
},
|
},
|
||||||
"email-validator": {
|
"email-validator": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:6757aea012d40516357c0ac2b1a4c31219ab2f899d26831334c5d069e8b6c3d8",
|
"sha256:553a66f8be2ec2dea641ae1d3f29017ab89e9d603d4a25cdaac39eefa283d769",
|
||||||
"sha256:c8589e691cf73eb99eed8d10ce0e9cbb05a0886ba920c8bcb7c82873f4c5789c"
|
"sha256:816073f2a7cffef786b29928f58ec16cdac42710a53bb18aa94317e3e145ec5c"
|
||||||
],
|
],
|
||||||
"version": "==1.2.1"
|
"version": "==1.3.0"
|
||||||
},
|
},
|
||||||
"et-xmlfile": {
|
"et-xmlfile": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -334,26 +341,26 @@
|
||||||
},
|
},
|
||||||
"h11": {
|
"h11": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:36a3cb8c0a032f56e2da7084577878a035d3b61d104230d4bd49c0c6b555a9c6",
|
"sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d",
|
||||||
"sha256:47222cb6067e4a307d535814917cd98fd0a57b6788ce715755fa2b6c28b56042"
|
"sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '3.6'",
|
"markers": "python_version >= '3.7'",
|
||||||
"version": "==0.12.0"
|
"version": "==0.14.0"
|
||||||
},
|
},
|
||||||
"httpcore": {
|
"httpcore": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:1105b8b73c025f23ff7c36468e4432226cbb959176eab66864b8e31c4ee27fa6",
|
"sha256:52c79095197178856724541e845f2db86d5f1527640d9254b5b8f6f6cebfdee6",
|
||||||
"sha256:18b68ab86a3ccf3e7dc0f43598eaddcf472b602aba29f9aa6ab85fe2ada3980b"
|
"sha256:c35c5176dc82db732acfd90b581a3062c999a72305df30c0fc8fafd8e4aca068"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '3.7'",
|
"markers": "python_version >= '3.7'",
|
||||||
"version": "==0.15.0"
|
"version": "==0.16.2"
|
||||||
},
|
},
|
||||||
"httpx": {
|
"httpx": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:42974f577483e1e932c3cdc3cd2303e883cbfba17fe228b0f63589764d7b9c4b",
|
"sha256:0b9b1f0ee18b9978d637b0776bfd7f54e2ca278e063e3586d8f01cda89e042a8",
|
||||||
"sha256:f28eac771ec9eb4866d3fb4ab65abd42d38c424739e80c08d8d20570de60b0ef"
|
"sha256:202ae15319be24efe9a8bd4ed4360e68fde7b38bcc2ce87088d416f026667d19"
|
||||||
],
|
],
|
||||||
"version": "==0.23.0"
|
"version": "==0.23.1"
|
||||||
},
|
},
|
||||||
"idna": {
|
"idna": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -390,7 +397,7 @@
|
||||||
"sha256:6f62d78e2f89b4500b080fe3a81690850cd254227f27f75c3a0c491a1f351ba7",
|
"sha256:6f62d78e2f89b4500b080fe3a81690850cd254227f27f75c3a0c491a1f351ba7",
|
||||||
"sha256:e8443a5e7a020e9d7f97f1d7d9cd17c88bcb3bc7e218bf9cf5095fe550be2951"
|
"sha256:e8443a5e7a020e9d7f97f1d7d9cd17c88bcb3bc7e218bf9cf5095fe550be2951"
|
||||||
],
|
],
|
||||||
"markers": "python_version < '4' and python_full_version >= '3.6.1'",
|
"markers": "python_version < '4.0' and python_full_version >= '3.6.1'",
|
||||||
"version": "==5.10.1"
|
"version": "==5.10.1"
|
||||||
},
|
},
|
||||||
"jinja2": {
|
"jinja2": {
|
||||||
|
@ -495,82 +502,92 @@
|
||||||
},
|
},
|
||||||
"orjson": {
|
"orjson": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:02d638d43951ba346a80f0abd5942a872cc87db443e073f6f6fc530fee81e19b",
|
"sha256:0379ad4c0246281f136a93ed357e342f24070c7055f00aeff9a69c2352e38d10",
|
||||||
"sha256:03ed95814140ff09f550b3a42e6821f855d981c94d25b9cc83e8cca431525d70",
|
"sha256:0459893746dc80dbfb262a24c08fdba2a737d44d26691e85f27b2223cac8075f",
|
||||||
"sha256:1b1cd25acfa77935bb2e791b75211cec0cfc21227fe29387e553c545c3ff87e1",
|
"sha256:068febdc7e10655a68a381d2db714d0a90ce46dc81519a4962521a0af07697fb",
|
||||||
"sha256:2058653cc12b90e482beacb5c2d52dc3d7606f9e9f5a52c1c10ef49371e76f52",
|
"sha256:194aef99db88b450b0005406f259ad07df545e6c9632f2a64c04986a0faf2c68",
|
||||||
"sha256:2065b6d280dc58f131ffd93393737961ff68ae7eb6884b68879394074cc03c13",
|
"sha256:3497dde5c99dd616554f0dcb694b955a2dc3eb920fe36b150f88ce53e3be2a46",
|
||||||
"sha256:25b5e48fbb9f0b428a5e44cf740675c9281dd67816149fc33659803399adbbe8",
|
"sha256:37196a7f2219508c6d944d7d5ea0000a226818787dadbbed309bfa6174f0402b",
|
||||||
"sha256:2bdb1042970ca5f544a047d6c235a7eb4acdb69df75441dd1dfcbc406377ab37",
|
"sha256:3e9e54ff8c9253d7f01ebc5836a1308d0ebe8e5c2edee620867a49556a158484",
|
||||||
"sha256:2d81e6e56bbea44be0222fb53f7b255b4e7426290516771592738ca01dbd053b",
|
"sha256:4b0c13e05da5bc1a6b2e1d3b117cc669e2267ce0a131e94845056d506ef041c6",
|
||||||
"sha256:3c7225e8b08996d1a0c804d3a641a53e796685e8c9a9fd52bd428980032cad9a",
|
"sha256:4b587ec06ab7dd4fb5acf50af98314487b7d56d6e1a7f05d49d8367e0e0b23bc",
|
||||||
"sha256:3e2459d441ab8fd8b161aa305a73d5269b3cda13b5a2a39eba58b4dd3e394f49",
|
"sha256:4cd0bb7e843ceba759e4d4cc2ca9243d1a878dac42cdcfc2295883fbd5bd2400",
|
||||||
"sha256:4065906ce3ad6195ac4d1bddde862fe811a42d7be237a1ff762666c3a4bb2151",
|
"sha256:4fff44ca121329d62e48582850a247a487e968cfccd5527fab20bd5b650b78c3",
|
||||||
"sha256:5b072ef8520cfe7bd4db4e3c9972d94336763c2253f7c4718a49e8733bada7b8",
|
"sha256:52540572c349179e2a7b6a7b98d6e9320e0333533af809359a95f7b57a61c506",
|
||||||
"sha256:5edb93cdd3eb32977633fa7aaa6a34b8ab54d9c49cdcc6b0d42c247a29091b22",
|
"sha256:54f3ef512876199d7dacd348a0fc53392c6be15bdf857b2d67fa1b089d561b98",
|
||||||
"sha256:5f856279872a4449fc629924e6a083b9821e366cf98b14c63c308269336f7c14",
|
"sha256:65ea3336c2bda31bc938785b84283118dec52eb90a2946b140054873946f60a4",
|
||||||
"sha256:5fd6cac83136e06e538a4d17117eaeabec848c1e86f5742d4811656ad7ee475f",
|
"sha256:6bf425bba42a8cee49d611ddd50b7fea9e87787e77bf90b2cb9742293f319480",
|
||||||
"sha256:6433c956f4a18112342a18281e0bec67fcd8b90be3a5271556c09226e045d805",
|
"sha256:75de90c34db99c42ee7608ff88320442d3ce17c258203139b5a8b0afb4a9b43b",
|
||||||
"sha256:655d7387a1634a9a477c545eea92a1ee902ab28626d701c6de4914e2ed0fecd2",
|
"sha256:78d69020fa9cf28b363d2494e5f1f10210e8fecf49bf4a767fcffcce7b9d7f58",
|
||||||
"sha256:66c19399bb3b058e3236af7910b57b19a4fc221459d722ed72a7dc90370ca090",
|
"sha256:7f0ec0ca4e81492569057199e042607090ba48289c4f59f29bbc219282b8dc60",
|
||||||
"sha256:6a23b40c98889e9abac084ce5a1fb251664b41da9f6bdb40a4729e2288ed2ed4",
|
"sha256:83891e9c3a172841f63cae75ff9ce78f12e4c2c5161baec7af725b1d71d4de21",
|
||||||
"sha256:6e3da2e4bd27c3b796519ca74132c7b9e5348fb6746315e0f6c1592bc5cf1caf",
|
"sha256:8fe6188ea2a1165280b4ff5fab92753b2007665804e8214be3d00d0b83b5764e",
|
||||||
"sha256:6ea5fe20ef97545e14dd4d0263e4c5c3bc3d2248d39b4b0aed4b84d528dfc0af",
|
"sha256:94bd4295fadea984b6284dc55f7d1ea828240057f3b6a1d8ec3fe4d1ea596964",
|
||||||
"sha256:7536a2a0b41672f824912aeab545c2467a9ff5ca73a066ff04fb81043a0a177a",
|
"sha256:961bc1dcbc3a89b52e8979194b3043e7d28ffc979187e46ad23efa8ada612d04",
|
||||||
"sha256:7990a9caf3b34016ac30be5e6cfc4e7efd76aa85614a1215b0eae4f0c7e3db59",
|
"sha256:989bf5980fc8aca43a9d0a50ea0a0eee81257e812aaceb1e9c0dbd0856fc5230",
|
||||||
"sha256:7b0e72974a5d3b101226899f111368ec2c9824d3e9804af0e5b31567f53ad98a",
|
"sha256:a30503ee24fc3c59f768501d7a7ded5119a631c79033929a5035a4c91901eac7",
|
||||||
"sha256:87462791dd57de2e3e53068bf4b7169c125c50960f1bdda08ed30c797cb42a56",
|
"sha256:aa57fe8b32750a64c816840444ec4d1e4310630ecd9d1d7b3db4b45d248b5585",
|
||||||
"sha256:896a21a07f1998648d9998e881ab2b6b80d5daac4c31188535e9d50460edfcf7",
|
"sha256:b7018494a7a11bcd04da1173c3a38fa5a866f905c138326504552231824ac9c1",
|
||||||
"sha256:8b391d5c2ddc2f302d22909676b306cb6521022c3ee306c861a6935670291b2c",
|
"sha256:b70782258c73913eb6542c04b6556c841247eb92eeace5db2ee2e1d4cb6ffaa5",
|
||||||
"sha256:8f687776a03c19f40b982fb5c414221b7f3d19097841571be2223d1569a59877",
|
"sha256:ca61e6c5a86efb49b790c8e331ff05db6d5ed773dfc9b58667ea3b260971cfb2",
|
||||||
"sha256:9a93850a1bdc300177b111b4b35b35299f046148ba23020f91d6efd7bf6b9d20",
|
"sha256:cbdfbd49d58cbaabfa88fcdf9e4f09487acca3d17f144648668ea6ae06cc3183",
|
||||||
"sha256:9e6ac22cec72d5b39035b566e4b86c74b84866f12b5b0b6541506a080fb67d6d",
|
"sha256:cf3dad7dbf65f78fefca0eb385d606844ea58a64fe908883a32768dfaee0b952",
|
||||||
"sha256:a709c2249c1f2955dbf879506fd43fa08c31fdb79add9aeb891e3338b648bf60",
|
"sha256:d30d427a1a731157206ddb1e95620925298e4c7c3f93838f53bd19f6069be244",
|
||||||
"sha256:b68a42a31f8429728183c21fb440c21de1b62e5378d0d73f280e2d894ef8942e",
|
"sha256:d46241e63df2d39f4b7d44e2ff2becfb6646052b963afb1a99f4ef8c2a31aba0",
|
||||||
"sha256:be02f6acee33bb63862eeff80548cd6b8a62e2d60ad2d8dfd5a8824cc43d8887",
|
"sha256:d5870ced447a9fbeb5aeb90f362d9106b80a32f729a57b59c64684dbc9175e92",
|
||||||
"sha256:d189e2acb510e374700cb98cf11b54f0179916ee40f8453b836157ae293efa79",
|
"sha256:d746da1260bbe7cb06200813cc40482fb1b0595c4c09c3afffe34cfc408d0a4a",
|
||||||
"sha256:d2b5dafbe68237a792143137cba413447f60dd5df428e05d73dcba10c1ea6fcf",
|
"sha256:dbd74d2d3d0b7ac8ca968c3be51d4cfbecec65c6d6f55dabe95e975c234d0338",
|
||||||
"sha256:e1418feeb8b698b9224b1f024555895169d481604d5d884498c1838d7412794c",
|
"sha256:dc29ff612030f3c2e8d7c0bc6c74d18b76dde3726230d892524735498f29f4b2",
|
||||||
"sha256:e2defd9527651ad39ec20ae03c812adf47ef7662bdd6bc07dabb10888d70dc62",
|
"sha256:e570fdfa09b84cc7c42a3a6dd22dbd2177cb5f3798feefc430066b260886acae",
|
||||||
"sha256:e2f4a5542f50e3d336a18cb224fc757245ca66b1fd0b70b5dd4471b8ff5f2b0e",
|
"sha256:eda1534a5289168614f21422861cbfb1abb8a82d66c00a8ba823d863c0797178",
|
||||||
"sha256:e68c699471ea3e2dd1b35bfd71c6a0a0e4885b64abbe2d98fce1ef11e0afaff3",
|
"sha256:ef3b4c7931989eb973fbbcc38accf7711d607a2b0ed84817341878ec8effb9c5",
|
||||||
"sha256:f4b46dbdda2f0bd6480c39db90b21340a19c3b0fcf34bc4c6e465332930ca539",
|
"sha256:f06ef273d8d4101948ebc4262a485737bcfd440fb83dd4b125d3e5f4226117bc",
|
||||||
"sha256:fb42f7cf57d5804a9daa6b624e3490ec9e2631e042415f3aebe9f35a8492ba6c",
|
"sha256:f1612e08b8254d359f9b72c4a4099d46cdc0f58b574da48472625a0e80222b6e",
|
||||||
"sha256:ff13410ddbdda5d4197a4a4c09969cb78c722a67550f0a63c02c07aadc624833"
|
"sha256:f8ff793a3188c21e646219dc5e2c60a74dde25c26de3075f4c2e33cf25835340",
|
||||||
|
"sha256:faf44a709f54cf490a27ccb0fb1cb5a99005c36ff7cb127d222306bf84f5493f",
|
||||||
|
"sha256:ff96c61127550ae25caab325e1f4a4fba2740ca77f8e81640f1b8b575e95f784"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '3.7'",
|
"markers": "python_version >= '3.7'",
|
||||||
"version": "==3.8.0"
|
"version": "==3.8.3"
|
||||||
|
},
|
||||||
|
"packaging": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb",
|
||||||
|
"sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.6'",
|
||||||
|
"version": "==21.3"
|
||||||
},
|
},
|
||||||
"paramiko": {
|
"paramiko": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:003e6bee7c034c21fbb051bf83dc0a9ee4106204dd3c53054c71452cc4ec3938",
|
"sha256:376885c05c5d6aa6e1f4608aac2a6b5b0548b1add40274477324605903d9cd49",
|
||||||
"sha256:655f25dc8baf763277b933dfcea101d636581df8d6b9774d1fb653426b72c270"
|
"sha256:b2df1a6325f6996ef55a8789d0462f5b502ea83b3c990cbb5bbe57345c6812c4"
|
||||||
],
|
],
|
||||||
"version": "==2.11.0"
|
"version": "==2.12.0"
|
||||||
},
|
},
|
||||||
"pathspec": {
|
"pathspec": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:46846318467efc4556ccfd27816e004270a9eeeeb4d062ce5e6fc7a87c573f93",
|
"sha256:88c2606f2c1e818b978540f73ecc908e13999c6c3a383daf3705652ae79807a5",
|
||||||
"sha256:7ace6161b621d31e7902eb6b5ae148d12cfd23f4a249b9ffb6b9fee12084323d"
|
"sha256:8f6bf73e5758fd365ef5d58ce09ac7c27d2833a8d7da51712eac6e27e35141b0"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '3.7'",
|
"markers": "python_version >= '3.7'",
|
||||||
"version": "==0.10.1"
|
"version": "==0.10.2"
|
||||||
},
|
},
|
||||||
"platformdirs": {
|
"platformdirs": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:027d8e83a2d7de06bbac4e5ef7e023c02b863d7ea5d079477e722bb41ab25788",
|
"sha256:1a89a12377800c81983db6be069ec068eee989748799b946cce2a6e80dcc54ca",
|
||||||
"sha256:58c8abb07dcb441e6ee4b11d8df0ac856038f944ab98b7be6b27b2a3c7feef19"
|
"sha256:b46ffafa316e6b83b47489d240ce17173f123a9b9c83282141c3daf26ad9ac2e"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '3.7'",
|
"markers": "python_version >= '3.7'",
|
||||||
"version": "==2.5.2"
|
"version": "==2.6.0"
|
||||||
},
|
},
|
||||||
"prance": {
|
"prance": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:51ec41d10b317bf5d4e74782a7f7f0c0488c6042433b5b4fde2a988cd069d235",
|
"sha256:814a523bc1ff18383c12cb523ce44c90fe8792bf5f48d8cc33c9f658276658ed",
|
||||||
"sha256:ce06feef8814c3436645f3b094e91067b1a111bc860a51f239f93437a8d4b00e"
|
"sha256:c15e9ca889b56262e4c2aee354f52918ba5e54f46bb3da42b806d8bbd8255ee9"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '3.6'",
|
"markers": "python_version >= '3.6'",
|
||||||
"version": "==0.21.8.0"
|
"version": "==0.22.11.4.0"
|
||||||
},
|
},
|
||||||
"pycparser": {
|
"pycparser": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -640,6 +657,14 @@
|
||||||
"markers": "python_version >= '3.6'",
|
"markers": "python_version >= '3.6'",
|
||||||
"version": "==1.5.0"
|
"version": "==1.5.0"
|
||||||
},
|
},
|
||||||
|
"pyparsing": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb",
|
||||||
|
"sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"
|
||||||
|
],
|
||||||
|
"markers": "python_full_version >= '3.6.8'",
|
||||||
|
"version": "==3.0.9"
|
||||||
|
},
|
||||||
"pyrsistent": {
|
"pyrsistent": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:aa2ae1c2e496f4d6777f869ea5de7166a8ccb9c2e06ebcf6c7ff1b670c98c5ef"
|
"sha256:aa2ae1c2e496f4d6777f869ea5de7166a8ccb9c2e06ebcf6c7ff1b670c98c5ef"
|
||||||
|
@ -720,7 +745,7 @@
|
||||||
"sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983",
|
"sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983",
|
||||||
"sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349"
|
"sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '3.7' and python_version < '4'",
|
"markers": "python_version >= '3.7' and python_version < '4.0'",
|
||||||
"version": "==2.28.1"
|
"version": "==2.28.1"
|
||||||
},
|
},
|
||||||
"rfc3986": {
|
"rfc3986": {
|
||||||
|
@ -743,39 +768,43 @@
|
||||||
},
|
},
|
||||||
"ruamel.yaml.clib": {
|
"ruamel.yaml.clib": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:066f886bc90cc2ce44df8b5f7acfc6a7e2b2e672713f027136464492b0c34d7c",
|
"sha256:045e0626baf1c52e5527bd5db361bc83180faaba2ff586e763d3d5982a876a9e",
|
||||||
"sha256:0847201b767447fc33b9c235780d3aa90357d20dd6108b92be544427bea197dd",
|
"sha256:15910ef4f3e537eea7fe45f8a5d19997479940d9196f357152a09031c5be59f3",
|
||||||
"sha256:1070ba9dd7f9370d0513d649420c3b362ac2d687fe78c6e888f5b12bf8bc7bee",
|
"sha256:184faeaec61dbaa3cace407cffc5819f7b977e75360e8d5ca19461cd851a5fc5",
|
||||||
"sha256:1866cf2c284a03b9524a5cc00daca56d80057c5ce3cdc86a52020f4c720856f0",
|
"sha256:1f08fd5a2bea9c4180db71678e850b995d2a5f4537be0e94557668cf0f5f9497",
|
||||||
"sha256:1b4139a6ffbca8ef60fdaf9b33dec05143ba746a6f0ae0f9d11d38239211d335",
|
"sha256:2aa261c29a5545adfef9296b7e33941f46aa5bbd21164228e833412af4c9c75f",
|
||||||
"sha256:210c8fcfeff90514b7133010bf14e3bad652c8efde6b20e00c43854bf94fa5a6",
|
"sha256:3110a99e0f94a4a3470ff67fc20d3f96c25b13d24c6980ff841e82bafe827cac",
|
||||||
"sha256:221eca6f35076c6ae472a531afa1c223b9c29377e62936f61bc8e6e8bdc5f9e7",
|
"sha256:3243f48ecd450eddadc2d11b5feb08aca941b5cd98c9b1db14b2fd128be8c697",
|
||||||
"sha256:31ea73e564a7b5fbbe8188ab8b334393e06d997914a4e184975348f204790277",
|
"sha256:370445fd795706fd291ab00c9df38a0caed0f17a6fb46b0f607668ecb16ce763",
|
||||||
"sha256:3fb9575a5acd13031c57a62cc7823e5d2ff8bc3835ba4d94b921b4e6ee664104",
|
"sha256:40d030e2329ce5286d6b231b8726959ebbe0404c92f0a578c0e2482182e38282",
|
||||||
"sha256:4ff604ce439abb20794f05613c374759ce10e3595d1867764dd1ae675b85acbd",
|
"sha256:41d0f1fa4c6830176eef5b276af04c89320ea616655d01327d5ce65e50575c94",
|
||||||
"sha256:61bc5e5ca632d95925907c569daa559ea194a4d16084ba86084be98ab1cec1c6",
|
"sha256:4a4d8d417868d68b979076a9be6a38c676eca060785abaa6709c7b31593c35d1",
|
||||||
"sha256:6e7be2c5bcb297f5b82fee9c665eb2eb7001d1050deaba8471842979293a80b0",
|
"sha256:4b3a93bb9bc662fc1f99c5c3ea8e623d8b23ad22f861eb6fce9377ac07ad6072",
|
||||||
"sha256:72a2b8b2ff0a627496aad76f37a652bcef400fd861721744201ef1b45199ab78",
|
"sha256:5bc0667c1eb8f83a3752b71b9c4ba55ef7c7058ae57022dd9b29065186a113d9",
|
||||||
"sha256:77df077d32921ad46f34816a9a16e6356d8100374579bc35e15bab5d4e9377de",
|
"sha256:721bc4ba4525f53f6a611ec0967bdcee61b31df5a56801281027a3a6d1c2daf5",
|
||||||
"sha256:78988ed190206672da0f5d50c61afef8f67daa718d614377dcd5e3ed85ab4a99",
|
"sha256:763d65baa3b952479c4e972669f679fe490eee058d5aa85da483ebae2009d231",
|
||||||
"sha256:7b2927e92feb51d830f531de4ccb11b320255ee95e791022555971c466af4527",
|
"sha256:7bdb4c06b063f6fd55e472e201317a3bb6cdeeee5d5a38512ea5c01e1acbdd93",
|
||||||
"sha256:7f7ecb53ae6848f959db6ae93bdff1740e651809780822270eab111500842a84",
|
"sha256:8831a2cedcd0f0927f788c5bdf6567d9dc9cc235646a434986a852af1cb54b4b",
|
||||||
"sha256:825d5fccef6da42f3c8eccd4281af399f21c02b32d98e113dbc631ea6a6ecbc7",
|
"sha256:91a789b4aa0097b78c93e3dc4b40040ba55bef518f84a40d4442f713b4094acb",
|
||||||
"sha256:846fc8336443106fe23f9b6d6b8c14a53d38cef9a375149d61f99d78782ea468",
|
"sha256:92460ce908546ab69770b2e576e4f99fbb4ce6ab4b245345a3869a0a0410488f",
|
||||||
"sha256:89221ec6d6026f8ae859c09b9718799fea22c0e8da8b766b0b2c9a9ba2db326b",
|
"sha256:99e77daab5d13a48a4054803d052ff40780278240a902b880dd37a51ba01a307",
|
||||||
"sha256:9efef4aab5353387b07f6b22ace0867032b900d8e91674b5d8ea9150db5cae94",
|
"sha256:a234a20ae07e8469da311e182e70ef6b199d0fbeb6c6cc2901204dd87fb867e8",
|
||||||
"sha256:a32f8d81ea0c6173ab1b3da956869114cae53ba1e9f72374032e33ba3118c233",
|
"sha256:a7b301ff08055d73223058b5c46c55638917f04d21577c95e00e0c4d79201a6b",
|
||||||
"sha256:a49e0161897901d1ac9c4a79984b8410f450565bbad64dbfcbf76152743a0cdb",
|
"sha256:be2a7ad8fd8f7442b24323d24ba0b56c51219513cfa45b9ada3b87b76c374d4b",
|
||||||
"sha256:ada3f400d9923a190ea8b59c8f60680c4ef8a4b0dfae134d2f2ff68429adfab5",
|
"sha256:bf9a6bc4a0221538b1a7de3ed7bca4c93c02346853f44e1cd764be0023cd3640",
|
||||||
"sha256:bf75d28fa071645c529b5474a550a44686821decebdd00e21127ef1fd566eabe",
|
"sha256:c3ca1fbba4ae962521e5eb66d72998b51f0f4d0f608d3c0347a48e1af262efa7",
|
||||||
"sha256:cfdb9389d888c5b74af297e51ce357b800dd844898af9d4a547ffc143fa56751",
|
"sha256:d000f258cf42fec2b1bbf2863c61d7b8918d31ffee905da62dede869254d3b8a",
|
||||||
"sha256:d3c620a54748a3d4cf0bcfe623e388407c8e85a4b06b8188e126302bcab93ea8",
|
"sha256:d5859983f26d8cd7bb5c287ef452e8aacc86501487634573d260968f753e1d71",
|
||||||
"sha256:d67f273097c368265a7b81e152e07fb90ed395df6e552b9fa858c6d2c9f42502",
|
"sha256:d5e51e2901ec2366b79f16c2299a03e74ba4531ddcfacc1416639c557aef0ad8",
|
||||||
"sha256:dc6a613d6c74eef5a14a214d433d06291526145431c3b964f5e16529b1842bed",
|
"sha256:debc87a9516b237d0466a711b18b6ebeb17ba9f391eb7f91c649c5c4ec5006c7",
|
||||||
"sha256:de9c6b8a1ba52919ae919f3ae96abb72b994dd0350226e28f3686cb4f142165c"
|
"sha256:df5828871e6648db72d1c19b4bd24819b80a755c4541d3409f0f7acd0f335c80",
|
||||||
|
"sha256:ecdf1a604009bd35c674b9225a8fa609e0282d9b896c03dd441a91e5f53b534e",
|
||||||
|
"sha256:efa08d63ef03d079dcae1dfe334f6c8847ba8b645d08df286358b1f5293d24ab",
|
||||||
|
"sha256:f01da5790e95815eb5a8a138508c01c758e5f5bc0ce4286c4f7028b8dd7ac3d0",
|
||||||
|
"sha256:f34019dced51047d6f70cb9383b2ae2853b7fc4dce65129a5acd49f4f9256646"
|
||||||
],
|
],
|
||||||
"markers": "python_version < '3.11' and platform_python_implementation == 'CPython'",
|
"markers": "python_version < '3.11' and platform_python_implementation == 'CPython'",
|
||||||
"version": "==0.2.6"
|
"version": "==0.2.7"
|
||||||
},
|
},
|
||||||
"semver": {
|
"semver": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -787,11 +816,11 @@
|
||||||
},
|
},
|
||||||
"setuptools": {
|
"setuptools": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:2e24e0bec025f035a2e72cdd1961119f557d78ad331bb00ff82efb2ab8da8e82",
|
"sha256:57f6f22bde4e042978bcd50176fdb381d7c21a9efa4041202288d3737a0c6a54",
|
||||||
"sha256:7732871f4f7fa58fb6bdcaeadb0161b2bd046c85905dbaa066bdcbcc81953b57"
|
"sha256:a7620757bf984b58deaf32fc8a4577a9bbc0850cf92c20e1ce41c38c19e5fb75"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '3.7'",
|
"markers": "python_version >= '3.7'",
|
||||||
"version": "==65.3.0"
|
"version": "==65.6.3"
|
||||||
},
|
},
|
||||||
"six": {
|
"six": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -857,19 +886,19 @@
|
||||||
},
|
},
|
||||||
"typing-extensions": {
|
"typing-extensions": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:25642c956049920a5aa49edcdd6ab1e06d7e5d467fc00e0506c44ac86fbfca02",
|
"sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa",
|
||||||
"sha256:e6d2677a32f47fc7eb2795db1dd15c1f34eff616bcaf2cfb5e997f854fa1c4a6"
|
"sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '3.7'",
|
"markers": "python_version >= '3.7'",
|
||||||
"version": "==4.3.0"
|
"version": "==4.4.0"
|
||||||
},
|
},
|
||||||
"urllib3": {
|
"urllib3": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:3fa96cf423e6987997fc326ae8df396db2a8b7c667747d47ddd8ecba91f4a74e",
|
"sha256:47cc05d99aaa09c9e72ed5809b60e7ba354e64b59c9c173ac3018642d8bb41fc",
|
||||||
"sha256:b930dd878d5a8afb066a637fbb35144fe7901e3b209d1cd4f524bd0e9deee997"
|
"sha256:c083dd0dce68dbfbe1129d5271cb90f9447dea7d52097c6e0126120c521ddea8"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5' and python_version < '4'",
|
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'",
|
||||||
"version": "==1.26.12"
|
"version": "==1.26.13"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"develop": {}
|
"develop": {}
|
||||||
|
|
|
@ -2,7 +2,9 @@
|
||||||
Purpose: Clarify our focus for developing a new .gov TLD system and align it to the needs of its users, CISA's mission and standards, and the vision for the .gov program.
|
Purpose: Clarify our focus for developing a new .gov TLD system and align it to the needs of its users, CISA's mission and standards, and the vision for the .gov program.
|
||||||
|
|
||||||
## Product Vision
|
## Product Vision
|
||||||
_TBD - once we synthesize initial research and align as a product team_
|
|
||||||
|
CISA intends to create a modern, user-centered, responsive web application to enable .gov registrants to manage their domain’s registration lifecycle, DNS settings, and useful supporting services. The registrar should be the central .gov hub for CISA, supporting registrant management and tracking technical performance indicators for the TLD. For CISA and registrants, the registrar should help generate insights into the security of an organization’s internet-accessible systems.
|
||||||
|
|
||||||
|
|
||||||
## Primary, Secondary, Tertiary Users
|
## Primary, Secondary, Tertiary Users
|
||||||
### Primary:
|
### Primary:
|
||||||
|
@ -12,7 +14,9 @@ _TBD - once we synthesize initial research and align as a product team_
|
||||||
|
|
||||||
|
|
||||||
## Problem Statements
|
## Problem Statements
|
||||||
_TBD - once we synthesize initial research and prioritize areas of need_
|
U.S.-based government organizations and publicly controlled entities lack a clear, usable, and efficient way to apply, register, and a .gov domain and related infrastructure in order to build public trust of their website and communications.
|
||||||
|
|
||||||
|
CISA lacks a scalable, efficient, and secure method of managing the outreach and operations of .gov TLD program in order to facilitate government agencies building public trust of their website and communications.
|
||||||
|
|
||||||
## Short-term Success for .gov
|
## Short-term Success for .gov
|
||||||
* A production-ready, modern .gov registrar that can replace the current system with improved user experience and operational efficiency
|
* A production-ready, modern .gov registrar that can replace the current system with improved user experience and operational efficiency
|
||||||
|
@ -25,12 +29,6 @@ _TBD - once we synthesize initial research and prioritize areas of need_
|
||||||
* Develop services to support “the security, privacy, reliability, accessibility, and speed of registered .gov internet domains” (DOTGOV ACT)
|
* Develop services to support “the security, privacy, reliability, accessibility, and speed of registered .gov internet domains” (DOTGOV ACT)
|
||||||
* Sustainable long-term skills and capacity to scale up the program
|
* Sustainable long-term skills and capacity to scale up the program
|
||||||
|
|
||||||
## Problems .gov system needs to solve (now)
|
|
||||||
_TBD - once we synthesize initial research and align as a product team_
|
|
||||||
|
|
||||||
## Problems .gov system doesn’t need to solve (next or later)
|
|
||||||
_TBD - once we synthesize initial research and align as a product team_
|
|
||||||
|
|
||||||
## Risks
|
## Risks
|
||||||
_To be prioritized and posted_
|
_To be prioritized and posted_
|
||||||
|
|
||||||
|
|
30
src/Pipfile.lock
generated
30
src/Pipfile.lock
generated
|
@ -22,12 +22,6 @@
|
||||||
"markers": "python_version >= '3.7'",
|
"markers": "python_version >= '3.7'",
|
||||||
"version": "==3.5.2"
|
"version": "==3.5.2"
|
||||||
},
|
},
|
||||||
"beaker": {
|
|
||||||
"hashes": [
|
|
||||||
"sha256:2d5f427e3b13259c98c934cab0e428fc1c18a4c4b94acbdae930df7e7f51d1ec"
|
|
||||||
],
|
|
||||||
"version": "==1.12.0"
|
|
||||||
},
|
|
||||||
"cachetools": {
|
"cachetools": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:6a94c6402995a99c3970cc7e4884bb60b4a8639938157eeed436098bf9831757",
|
"sha256:6a94c6402995a99c3970cc7e4884bb60b4a8639938157eeed436098bf9831757",
|
||||||
|
@ -171,10 +165,10 @@
|
||||||
},
|
},
|
||||||
"dj-database-url": {
|
"dj-database-url": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:5f2f6b3f65786bac5d3b9e749bff1dcac83398d95778576909697f7b16aee6b9",
|
"sha256:5c2993b91801c0f78a8b19e642b497b90831124cbade0c265900d4c1037b4730",
|
||||||
"sha256:8be4253439d75412aaad4f82af7aecda956893c87fb8d10edc0adb2d34312527"
|
"sha256:b23b15046cb38180e0c95207bcc90fe5e9dbde8eef16065907dd85cf4ca7036c"
|
||||||
],
|
],
|
||||||
"version": "==1.1.0"
|
"version": "==1.2.0"
|
||||||
},
|
},
|
||||||
"dj-email-url": {
|
"dj-email-url": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -279,7 +273,7 @@
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:b1bead90b70cf6ec3f0710ae53a525360fa360d306a86583adc6bf83a4db537d"
|
"sha256:b1bead90b70cf6ec3f0710ae53a525360fa360d306a86583adc6bf83a4db537d"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'",
|
"markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2'",
|
||||||
"version": "==0.18.2"
|
"version": "==0.18.2"
|
||||||
},
|
},
|
||||||
"gunicorn": {
|
"gunicorn": {
|
||||||
|
@ -362,11 +356,11 @@
|
||||||
},
|
},
|
||||||
"oic": {
|
"oic": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:b82316c4b9633781b8fcb091a7d082ffc863f850a87d8725ead454746aeae677",
|
"sha256:1bb80d7717faed750f1d8d482c06616a45f1fa5b2295d0620049040b4b48b97e",
|
||||||
"sha256:c1a46dd5f803349f1eea7393d70a3f2bdbc97e73b96f3ebb54843e1dc190f5e4"
|
"sha256:6cd66c5203baa8cd90dd2b73d0cc83785e96c91fab67fa7b587549fcadb3c092"
|
||||||
],
|
],
|
||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
"version": "==1.4.0"
|
"version": "==1.5.0"
|
||||||
},
|
},
|
||||||
"orderedmultidict": {
|
"orderedmultidict": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -518,7 +512,7 @@
|
||||||
"sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86",
|
"sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86",
|
||||||
"sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"
|
"sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
|
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'",
|
||||||
"version": "==2.8.2"
|
"version": "==2.8.2"
|
||||||
},
|
},
|
||||||
"python-dotenv": {
|
"python-dotenv": {
|
||||||
|
@ -550,7 +544,7 @@
|
||||||
"sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926",
|
"sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926",
|
||||||
"sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"
|
"sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
|
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'",
|
||||||
"version": "==1.16.0"
|
"version": "==1.16.0"
|
||||||
},
|
},
|
||||||
"sqlparse": {
|
"sqlparse": {
|
||||||
|
@ -859,7 +853,7 @@
|
||||||
"sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926",
|
"sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926",
|
||||||
"sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"
|
"sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
|
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'",
|
||||||
"version": "==1.16.0"
|
"version": "==1.16.0"
|
||||||
},
|
},
|
||||||
"smmap": {
|
"smmap": {
|
||||||
|
@ -899,7 +893,7 @@
|
||||||
"sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc",
|
"sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc",
|
||||||
"sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"
|
"sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"
|
||||||
],
|
],
|
||||||
"markers": "python_full_version < '3.11.0a7'",
|
"markers": "python_version < '3.11'",
|
||||||
"version": "==2.0.1"
|
"version": "==2.0.1"
|
||||||
},
|
},
|
||||||
"types-cachetools": {
|
"types-cachetools": {
|
||||||
|
@ -960,7 +954,7 @@
|
||||||
"sha256:73aae30359291c14fa3b956f8b5ca31960e420c28c1bec002547fb04928cf89b",
|
"sha256:73aae30359291c14fa3b956f8b5ca31960e420c28c1bec002547fb04928cf89b",
|
||||||
"sha256:b64ef5141be559cfade448f044fa45c2260351edcb6a8ef6b7e00c7dcef0c323"
|
"sha256:b64ef5141be559cfade448f044fa45c2260351edcb6a8ef6b7e00c7dcef0c323"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
|
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'",
|
||||||
"version": "==1.8.7"
|
"version": "==1.8.7"
|
||||||
},
|
},
|
||||||
"webtest": {
|
"webtest": {
|
||||||
|
|
12
src/package-lock.json
generated
12
src/package-lock.json
generated
|
@ -1485,9 +1485,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/decode-uri-component": {
|
"node_modules/decode-uri-component": {
|
||||||
"version": "0.2.0",
|
"version": "0.2.2",
|
||||||
"resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
|
||||||
"integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==",
|
"integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=0.10"
|
"node": ">=0.10"
|
||||||
|
@ -8084,9 +8084,9 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"decode-uri-component": {
|
"decode-uri-component": {
|
||||||
"version": "0.2.0",
|
"version": "0.2.2",
|
||||||
"resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
|
||||||
"integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==",
|
"integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"default-compare": {
|
"default-compare": {
|
||||||
|
|
|
@ -81,17 +81,22 @@ class OrganizationContactForm(RegistrarForm):
|
||||||
required=False,
|
required=False,
|
||||||
choices=DomainApplication.AGENCY_CHOICES,
|
choices=DomainApplication.AGENCY_CHOICES,
|
||||||
)
|
)
|
||||||
organization_name = forms.CharField(label="Organization name")
|
organization_name = forms.CharField(label="Organization Name")
|
||||||
address_line1 = forms.CharField(label="Address line 1")
|
address_line1 = forms.CharField(label="Street address")
|
||||||
address_line2 = forms.CharField(
|
address_line2 = forms.CharField(
|
||||||
required=False,
|
required=False,
|
||||||
label="Address line 2",
|
label="Street address line 2",
|
||||||
)
|
)
|
||||||
|
city = forms.CharField(label="City")
|
||||||
state_territory = forms.ChoiceField(
|
state_territory = forms.ChoiceField(
|
||||||
label="State/territory",
|
label="State, territory, or military post",
|
||||||
choices=[("", "--Select--")] + DomainApplication.StateTerritoryChoices.choices,
|
choices=[("", "--Select--")] + DomainApplication.StateTerritoryChoices.choices,
|
||||||
)
|
)
|
||||||
zipcode = forms.CharField(label="ZIP code")
|
zipcode = forms.CharField(label="ZIP code")
|
||||||
|
urbanization = forms.CharField(
|
||||||
|
required=False,
|
||||||
|
label="Urbanization (Puerto Rico only)",
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class AuthorizingOfficialForm(RegistrarForm):
|
class AuthorizingOfficialForm(RegistrarForm):
|
||||||
|
@ -480,6 +485,10 @@ class ApplicationWizard(LoginRequiredMixin, NamedUrlSessionWizardView):
|
||||||
context["form_titles"] = TITLES
|
context["form_titles"] = TITLES
|
||||||
if self.steps.current == Step.ORGANIZATION_CONTACT:
|
if self.steps.current == Step.ORGANIZATION_CONTACT:
|
||||||
context["is_federal"] = self._is_federal()
|
context["is_federal"] = self._is_federal()
|
||||||
|
if self.steps.current == Step.REVIEW:
|
||||||
|
context["step_cls"] = Step
|
||||||
|
application = self.get_application_object()
|
||||||
|
context["application"] = application
|
||||||
return context
|
return context
|
||||||
|
|
||||||
def get_application_object(self) -> DomainApplication:
|
def get_application_object(self) -> DomainApplication:
|
||||||
|
@ -502,9 +511,7 @@ class ApplicationWizard(LoginRequiredMixin, NamedUrlSessionWizardView):
|
||||||
self.storage.extra_data["application_id"] = application.id
|
self.storage.extra_data["application_id"] = application.id
|
||||||
return application
|
return application
|
||||||
|
|
||||||
def forms_to_database(
|
def form_to_database(self, form: RegistrarForm) -> DomainApplication:
|
||||||
self, forms: dict = None, form: RegistrarForm = None
|
|
||||||
) -> DomainApplication:
|
|
||||||
"""
|
"""
|
||||||
Unpack the form responses onto the model object properties.
|
Unpack the form responses onto the model object properties.
|
||||||
|
|
||||||
|
@ -512,14 +519,6 @@ class ApplicationWizard(LoginRequiredMixin, NamedUrlSessionWizardView):
|
||||||
"""
|
"""
|
||||||
application = self.get_application_object()
|
application = self.get_application_object()
|
||||||
|
|
||||||
if forms:
|
|
||||||
itr = forms
|
|
||||||
elif form:
|
|
||||||
itr = {"form": form}
|
|
||||||
else:
|
|
||||||
raise TypeError("forms and form cannot both be None")
|
|
||||||
|
|
||||||
for form in itr.values():
|
|
||||||
if form is not None and hasattr(form, "to_database"):
|
if form is not None and hasattr(form, "to_database"):
|
||||||
form.to_database(application)
|
form.to_database(application)
|
||||||
|
|
||||||
|
@ -532,7 +531,7 @@ class ApplicationWizard(LoginRequiredMixin, NamedUrlSessionWizardView):
|
||||||
Do not manipulate the form data here.
|
Do not manipulate the form data here.
|
||||||
"""
|
"""
|
||||||
# save progress
|
# save progress
|
||||||
self.forms_to_database(form=form)
|
self.form_to_database(form=form)
|
||||||
return self.get_form_step_data(form)
|
return self.get_form_step_data(form)
|
||||||
|
|
||||||
def get_form(self, step=None, data=None, files=None):
|
def get_form(self, step=None, data=None, files=None):
|
||||||
|
@ -572,7 +571,7 @@ class ApplicationWizard(LoginRequiredMixin, NamedUrlSessionWizardView):
|
||||||
|
|
||||||
def done(self, form_list, form_dict, **kwargs):
|
def done(self, form_list, form_dict, **kwargs):
|
||||||
"""Called when the data for every form is submitted and validated."""
|
"""Called when the data for every form is submitted and validated."""
|
||||||
application = self.forms_to_database(forms=form_dict)
|
application = self.get_application_object()
|
||||||
application.submit() # change the status to submitted
|
application.submit() # change the status to submitted
|
||||||
application.save()
|
application.save()
|
||||||
logger.debug("Application object saved: %s", application.id)
|
logger.debug("Application object saved: %s", application.id)
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
# Generated by Django 4.1.3 on 2022-12-12 21:00
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
("registrar", "0004_domainapplication_federal_agency"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name="domainapplication",
|
||||||
|
name="city",
|
||||||
|
field=models.TextField(blank=True, help_text="City", null=True),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name="domainapplication",
|
||||||
|
name="urbanization",
|
||||||
|
field=models.TextField(blank=True, help_text="Urbanization", null=True),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="domainapplication",
|
||||||
|
name="federal_agency",
|
||||||
|
field=models.TextField(
|
||||||
|
blank=True, help_text="Top level federal agency", null=True
|
||||||
|
),
|
||||||
|
),
|
||||||
|
]
|
|
@ -42,9 +42,14 @@ class Contact(models.Model):
|
||||||
db_index=True,
|
db_index=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def get_formatted_name(self):
|
||||||
|
"""Returns the contact's name in Western order."""
|
||||||
|
names = [n for n in [self.first_name, self.middle_name, self.last_name] if n]
|
||||||
|
return " ".join(names) if names else "Unknown"
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
if self.first_name or self.last_name:
|
if self.first_name or self.last_name:
|
||||||
return f"{self.title or ''} {self.first_name or ''} {self.last_name or ''}"
|
return self.get_formatted_name()
|
||||||
elif self.email:
|
elif self.email:
|
||||||
return self.email
|
return self.email
|
||||||
elif self.pk:
|
elif self.pk:
|
||||||
|
|
|
@ -28,62 +28,69 @@ class DomainApplication(TimeStampedModel):
|
||||||
]
|
]
|
||||||
|
|
||||||
class StateTerritoryChoices(models.TextChoices):
|
class StateTerritoryChoices(models.TextChoices):
|
||||||
ALABAMA = "AL", "Alabama"
|
ALABAMA = "AL", "Alabama (AL)"
|
||||||
ALASKA = "AK", "Alaska"
|
ALASKA = "AK", "Alaska (AK)"
|
||||||
ARIZONA = "AZ", "Arizona"
|
AMERICAN_SAMOA = "AS", "American Samoa (AS)"
|
||||||
ARKANSAS = "AR", "Arkansas"
|
ARIZONA = "AZ", "Arizona (AZ)"
|
||||||
CALIFORNIA = "CA", "California"
|
ARKANSAS = "AR", "Arkansas (AR)"
|
||||||
COLORADO = "CO", "Colorado"
|
CALIFORNIA = "CA", "California (CA)"
|
||||||
CONNECTICUT = "CT", "Connecticut"
|
COLORADO = "CO", "Colorado (CO)"
|
||||||
DELAWARE = "DE", "Delaware"
|
CONNECTICUT = "CT", "Connecticut (CT)"
|
||||||
DISTRICT_OF_COLUMBIA = "DC", "District of Columbia"
|
DELAWARE = "DE", "Delaware (DE)"
|
||||||
FLORIDA = "FL", "Florida"
|
DISTRICT_OF_COLUMBIA = "DC", "District of Columbia (DC)"
|
||||||
GEORGIA = "GA", "Georgia"
|
FLORIDA = "FL", "Florida (FL)"
|
||||||
HAWAII = "HI", "Hawaii"
|
GEORGIA = "GA", "Georgia (GA)"
|
||||||
IDAHO = "ID", "Idaho"
|
GUAM = "GU", "Guam (GU)"
|
||||||
ILLINOIS = "IL", "Illinois"
|
HAWAII = "HI", "Hawaii (HI)"
|
||||||
INDIANA = "IN", "Indiana"
|
IDAHO = "ID", "Idaho (ID)"
|
||||||
IOWA = "IA", "Iowa"
|
ILLINOIS = "IL", "Illinois (IL)"
|
||||||
KANSAS = "KS", "Kansas"
|
INDIANA = "IN", "Indiana (IN)"
|
||||||
KENTUCKY = "KY", "Kentucky"
|
IOWA = "IA", "Iowa (IA)"
|
||||||
LOUISIANA = "LA", "Louisiana"
|
KANSAS = "KS", "Kansas (KS)"
|
||||||
MAINE = "ME", "Maine"
|
KENTUCKY = "KY", "Kentucky (KY)"
|
||||||
MARYLAND = "MD", "Maryland"
|
LOUISIANA = "LA", "Louisiana (LA)"
|
||||||
MASSACHUSETTS = "MA", "Massachusetts"
|
MAINE = "ME", "Maine (ME)"
|
||||||
MICHIGAN = "MI", "Michigan"
|
MARYLAND = "MD", "Maryland (MD)"
|
||||||
MINNESOTA = "MN", "Minnesota"
|
MASSACHUSETTS = "MA", "Massachusetts (MA)"
|
||||||
MISSISSIPPI = "MS", "Mississippi"
|
MICHIGAN = "MI", "Michigan (MI)"
|
||||||
MISSOURI = "MO", "Missouri"
|
MINNESOTA = "MN", "Minnesota (MN)"
|
||||||
MONTANA = "MT", "Montana"
|
MISSISSIPPI = "MS", "Mississippi (MS)"
|
||||||
NEBRASKA = "NE", "Nebraska"
|
MISSOURI = "MO", "Missouri (MO)"
|
||||||
NEVADA = "NV", "Nevada"
|
MONTANA = "MT", "Montana (MT)"
|
||||||
NEW_HAMPSHIRE = "NH", "New Hampshire"
|
NEBRASKA = "NE", "Nebraska (NE)"
|
||||||
NEW_JERSEY = "NJ", "New Jersey"
|
NEVADA = "NV", "Nevada (NV)"
|
||||||
NEW_MEXICO = "NM", "New Mexico"
|
NEW_HAMPSHIRE = "NH", "New Hampshire (NH)"
|
||||||
NEW_YORK = "NY", "New York"
|
NEW_JERSEY = "NJ", "New Jersey (NJ)"
|
||||||
NORTH_CAROLINA = "NC", "North Carolina"
|
NEW_MEXICO = "NM", "New Mexico (NM)"
|
||||||
NORTH_DAKOTA = "ND", "North Dakota"
|
NEW_YORK = "NY", "New York (NY)"
|
||||||
OHIO = "OH", "Ohio"
|
NORTH_CAROLINA = "NC", "North Carolina (NC)"
|
||||||
OKLAHOMA = "OK", "Oklahoma"
|
NORTH_DAKOTA = "ND", "North Dakota (ND)"
|
||||||
OREGON = "OR", "Oregon"
|
NORTHERN_MARIANA_ISLANDS = "MP", "Northern Mariana Islands (MP)"
|
||||||
PENNSYLVANIA = "PA", "Pennsylvania"
|
OHIO = "OH", "Ohio (OH)"
|
||||||
RHODE_ISLAND = "RI", "Rhode Island"
|
OKLAHOMA = "OK", "Oklahoma (OK)"
|
||||||
SOUTH_CAROLINA = "SC", "South Carolina"
|
OREGON = "OR", "Oregon (OR)"
|
||||||
SOUTH_DAKOTA = "SD", "South Dakota"
|
PENNSYLVANIA = "PA", "Pennsylvania (PA)"
|
||||||
TENNESSEE = "TN", "Tennessee"
|
PUERTO_RICO = "PR", "Puerto Rico (PR)"
|
||||||
TEXAS = "TX", "Texas"
|
RHODE_ISLAND = "RI", "Rhode Island (RI)"
|
||||||
UTAH = "UT", "Utah"
|
SOUTH_CAROLINA = "SC", "South Carolina (SC)"
|
||||||
VERMONT = "VT", "Vermont"
|
SOUTH_DAKOTA = "SD", "South Dakota (SD)"
|
||||||
VIRGINIA = "VA", "Virginia"
|
TENNESSEE = "TN", "Tennessee (TN)"
|
||||||
WASHINGTON = "WA", "Washington"
|
TEXAS = "TX", "Texas (TX)"
|
||||||
WEST_VIRGINIA = "WV", "West Virginia"
|
UNITED_STATES_MINOR_OUTLYING_ISLANDS = (
|
||||||
WISCONSIN = "WI", "Wisconsin"
|
"UM",
|
||||||
WYOMING = "WY", "Wyoming"
|
"United States Minor Outlying Islands (UM)",
|
||||||
AMERICAN_SAMOA = "AS", "American Samoa"
|
)
|
||||||
GUAM = "GU", "Guam"
|
UTAH = "UT", "Utah (UT)"
|
||||||
NORTHERN_MARIANA_ISLANDS = "MP", "Northern Mariana Islands"
|
VERMONT = "VT", "Vermont (VT)"
|
||||||
PUERTO_RICO = "PR", "Puerto Rico"
|
VIRGIN_ISLANDS = "VI", "Virgin Islands (VI)"
|
||||||
VIRGIN_ISLANDS = "VI", "Virgin Islands"
|
VIRGINIA = "VA", "Virginia (VA)"
|
||||||
|
WASHINGTON = "WA", "Washington (WA)"
|
||||||
|
WEST_VIRGINIA = "WV", "West Virginia (WV)"
|
||||||
|
WISCONSIN = "WI", "Wisconsin (WI)"
|
||||||
|
WYOMING = "WY", "Wyoming (WY)"
|
||||||
|
ARMED_FORCES_AA = "AA", "Armed Forces Americas (AA)"
|
||||||
|
ARMED_FORCES_AE = "AE", "Armed Forces Africa, Canada, Europe, Middle East (AE)"
|
||||||
|
ARMED_FORCES_AP = "AP", "Armed Forces Pacific (AP)"
|
||||||
|
|
||||||
class OrganizationChoices(models.TextChoices):
|
class OrganizationChoices(models.TextChoices):
|
||||||
FEDERAL = "federal", "Federal: a federal agency"
|
FEDERAL = "federal", "Federal: a federal agency"
|
||||||
|
@ -280,7 +287,7 @@ class DomainApplication(TimeStampedModel):
|
||||||
|
|
||||||
federal_agency = models.TextField(
|
federal_agency = models.TextField(
|
||||||
null=True,
|
null=True,
|
||||||
blank=False,
|
blank=True,
|
||||||
help_text="Top level federal agency",
|
help_text="Top level federal agency",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -315,6 +322,11 @@ class DomainApplication(TimeStampedModel):
|
||||||
blank=True,
|
blank=True,
|
||||||
help_text="Address line 2",
|
help_text="Address line 2",
|
||||||
)
|
)
|
||||||
|
city = models.TextField(
|
||||||
|
null=True,
|
||||||
|
blank=True,
|
||||||
|
help_text="City",
|
||||||
|
)
|
||||||
state_territory = models.CharField(
|
state_territory = models.CharField(
|
||||||
max_length=2,
|
max_length=2,
|
||||||
null=True,
|
null=True,
|
||||||
|
@ -328,6 +340,11 @@ class DomainApplication(TimeStampedModel):
|
||||||
help_text="ZIP code",
|
help_text="ZIP code",
|
||||||
db_index=True,
|
db_index=True,
|
||||||
)
|
)
|
||||||
|
urbanization = models.TextField(
|
||||||
|
null=True,
|
||||||
|
blank=True,
|
||||||
|
help_text="Urbanization",
|
||||||
|
)
|
||||||
|
|
||||||
authorizing_official = models.ForeignKey(
|
authorizing_official = models.ForeignKey(
|
||||||
"registrar.Contact",
|
"registrar.Contact",
|
||||||
|
|
|
@ -8,16 +8,87 @@
|
||||||
{{ wizard.management_form }}
|
{{ wizard.management_form }}
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
|
|
||||||
{% for this_step in wizard.steps.all|slice:":-1" %}
|
{% for step in wizard.steps.all|slice:":-1" %}
|
||||||
<div class="review__step margin-top-2">
|
<section class="review__step margin-top-205">
|
||||||
|
<hr />
|
||||||
<div class="review__step__title display-flex flex-justify">
|
<div class="review__step__title display-flex flex-justify">
|
||||||
<span class="review__step__name">{{ form_titles|get_item:this_step }}</span>
|
|
||||||
<a href="{% url wizard.url_name step=this_step %}">Edit </a>
|
|
||||||
</div>
|
|
||||||
<div class="review__step__value">
|
<div class="review__step__value">
|
||||||
<Answer value>
|
<div class="review__step__name">{{ form_titles|get_item:step }}</div>
|
||||||
|
<div>
|
||||||
|
{% if step == step_cls.ORGANIZATION_TYPE %}
|
||||||
|
{{ application.get_organization_type_display|default:"Incomplete" }}
|
||||||
|
{% endif %}
|
||||||
|
{% if step == step_cls.ORGANIZATION_FEDERAL %}
|
||||||
|
{{ application.get_federal_type_display|default:"Incomplete" }}
|
||||||
|
{% endif %}
|
||||||
|
{% if step == step_cls.ORGANIZATION_ELECTION %}
|
||||||
|
{{ application.is_election_board|yesno:"Yes,No,Incomplete" }}
|
||||||
|
{% endif %}
|
||||||
|
{% if step == step_cls.ORGANIZATION_CONTACT %}
|
||||||
|
{% if application.organization_name %}
|
||||||
|
{% include "includes/organization_address.html" with organization=application %}
|
||||||
|
{% else %}
|
||||||
|
Incomplete
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
{% if step == step_cls.AUTHORIZING_OFFICIAL %}
|
||||||
|
{% if application.authorizing_official %}
|
||||||
|
{% include "includes/contact.html" with contact=application.authorizing_official %}
|
||||||
|
{% else %}
|
||||||
|
Incomplete
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
{% if step == step_cls.CURRENT_SITES %}
|
||||||
|
<ul class="add-list-reset">
|
||||||
|
{% for site in application.current_websites.all %}
|
||||||
|
<li>{{ site.website }}</li>
|
||||||
|
{% empty %}
|
||||||
|
<li>None</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
{% endif %}
|
||||||
|
{% if step == step_cls.DOTGOV_DOMAIN %}
|
||||||
|
<ul class="add-list-reset">
|
||||||
|
<li>{{ application.requested_domain.name|default:"Incomplete" }}</li>
|
||||||
|
{% for site in application.alternative_domains.all %}
|
||||||
|
<li>{{ site.website }}</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
{% endif %}
|
||||||
|
{% if step == step_cls.PURPOSE %}
|
||||||
|
{{ application.purpose|default:"Incomplete" }}
|
||||||
|
{% endif %}
|
||||||
|
{% if step == step_cls.YOUR_CONTACT %}
|
||||||
|
{% if application.submitter %}
|
||||||
|
{% include "includes/contact.html" with contact=application.submitter %}
|
||||||
|
{% else %}
|
||||||
|
Incomplete
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
{% if step == step_cls.OTHER_CONTACTS %}
|
||||||
|
{% for other in application.other_contacts.all %}
|
||||||
|
{% include "includes/contact.html" with contact=other %}
|
||||||
|
{% empty %}
|
||||||
|
None
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
{% if step == step_cls.SECURITY_EMAIL %}
|
||||||
|
{{ application.security_email|default:"None" }}
|
||||||
|
{% endif %}
|
||||||
|
{% if step == step_cls.ANYTHING_ELSE %}
|
||||||
|
{{ application.anything_else|default:"No" }}
|
||||||
|
{% endif %}
|
||||||
|
{% if step == step_cls.REQUIREMENTS %}
|
||||||
|
{{ application.is_policy_acknowledged|yesno:"Agree,Do not agree,Do not agree" }}
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<a
|
||||||
|
aria-describedby="review_step_title__{{step}}"
|
||||||
|
href="{% url wizard.url_name step=step %}"
|
||||||
|
>Edit<span class="sr-only"> {{ form_titles|get_item:step }}</span></a>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
{{ block.super }}
|
{{ block.super }}
|
||||||
|
|
6
src/registrar/templates/includes/contact.html
Normal file
6
src/registrar/templates/includes/contact.html
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
<address>
|
||||||
|
{{ contact.get_formatted_name }}<br />
|
||||||
|
{% if contact.title %}{{ contact.title }}<br />{% endif %}
|
||||||
|
{% if contact.email %}{{ contact.email }}<br />{% endif %}
|
||||||
|
{% if contact.phone %}{{ contact.phone }}{% endif %}
|
||||||
|
</address>
|
25
src/registrar/templates/includes/organization_address.html
Normal file
25
src/registrar/templates/includes/organization_address.html
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
<address>
|
||||||
|
{% if organization.organization_name %}
|
||||||
|
{{ organization.organization_name }}
|
||||||
|
{% endif %}
|
||||||
|
{% if organization.address_line1 %}
|
||||||
|
<br />{{ organization.address_line1 }}
|
||||||
|
{% endif %}
|
||||||
|
{% if organization.address_line2 %}
|
||||||
|
<br />{{ organization.address_line2 }}
|
||||||
|
{% endif %}
|
||||||
|
{% if organization.city %}
|
||||||
|
<br />{{ organization.city }}{% if organization.state_territory %},
|
||||||
|
{% else %}<br />
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
{% if organization.state_territory %}
|
||||||
|
{{ organization.state_territory }}
|
||||||
|
{% endif %}
|
||||||
|
{% if organization.zipcode %}
|
||||||
|
<br />{{ organization.zipcode }}
|
||||||
|
{% endif %}
|
||||||
|
{% if organization.urbanization %}
|
||||||
|
<br />{{ organization.urbanization }}
|
||||||
|
{% endif %}
|
||||||
|
</address>
|
|
@ -183,8 +183,11 @@ class DomainApplicationTests(TestWithUser, WebTest):
|
||||||
org_contact_form = org_contact_page.form
|
org_contact_form = org_contact_page.form
|
||||||
org_contact_form["organization_contact-organization_name"] = "Testorg"
|
org_contact_form["organization_contact-organization_name"] = "Testorg"
|
||||||
org_contact_form["organization_contact-address_line1"] = "address 1"
|
org_contact_form["organization_contact-address_line1"] = "address 1"
|
||||||
|
org_contact_form["organization_contact-address_line2"] = "address 2"
|
||||||
|
org_contact_form["organization_contact-city"] = "NYC"
|
||||||
org_contact_form["organization_contact-state_territory"] = "NY"
|
org_contact_form["organization_contact-state_territory"] = "NY"
|
||||||
org_contact_form["organization_contact-zipcode"] = "10002"
|
org_contact_form["organization_contact-zipcode"] = "10002"
|
||||||
|
org_contact_form["organization_contact-urbanization"] = "URB Royal Oaks"
|
||||||
|
|
||||||
# test saving the page
|
# test saving the page
|
||||||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||||
|
@ -195,8 +198,11 @@ class DomainApplicationTests(TestWithUser, WebTest):
|
||||||
application = DomainApplication.objects.get() # there's only one
|
application = DomainApplication.objects.get() # there's only one
|
||||||
self.assertEquals(application.organization_name, "Testorg")
|
self.assertEquals(application.organization_name, "Testorg")
|
||||||
self.assertEquals(application.address_line1, "address 1")
|
self.assertEquals(application.address_line1, "address 1")
|
||||||
|
self.assertEquals(application.address_line2, "address 2")
|
||||||
|
self.assertEquals(application.city, "NYC")
|
||||||
self.assertEquals(application.state_territory, "NY")
|
self.assertEquals(application.state_territory, "NY")
|
||||||
self.assertEquals(application.zipcode, "10002")
|
self.assertEquals(application.zipcode, "10002")
|
||||||
|
self.assertEquals(application.urbanization, "URB Royal Oaks")
|
||||||
|
|
||||||
# test next button
|
# test next button
|
||||||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||||
|
@ -212,8 +218,8 @@ class DomainApplicationTests(TestWithUser, WebTest):
|
||||||
# Follow the redirect to the next form page
|
# Follow the redirect to the next form page
|
||||||
ao_page = org_contact_result.follow()
|
ao_page = org_contact_result.follow()
|
||||||
ao_form = ao_page.form
|
ao_form = ao_page.form
|
||||||
ao_form["authorizing_official-first_name"] = "Testy"
|
ao_form["authorizing_official-first_name"] = "Testy ATO"
|
||||||
ao_form["authorizing_official-last_name"] = "Tester"
|
ao_form["authorizing_official-last_name"] = "Tester ATO"
|
||||||
ao_form["authorizing_official-title"] = "Chief Tester"
|
ao_form["authorizing_official-title"] = "Chief Tester"
|
||||||
ao_form["authorizing_official-email"] = "testy@town.com"
|
ao_form["authorizing_official-email"] = "testy@town.com"
|
||||||
ao_form["authorizing_official-phone"] = "(555) 555 5555"
|
ao_form["authorizing_official-phone"] = "(555) 555 5555"
|
||||||
|
@ -225,8 +231,8 @@ class DomainApplicationTests(TestWithUser, WebTest):
|
||||||
self.assertEquals(result["Location"], "/register/authorizing_official/")
|
self.assertEquals(result["Location"], "/register/authorizing_official/")
|
||||||
# should see results in db
|
# should see results in db
|
||||||
application = DomainApplication.objects.get() # there's only one
|
application = DomainApplication.objects.get() # there's only one
|
||||||
self.assertEquals(application.authorizing_official.first_name, "Testy")
|
self.assertEquals(application.authorizing_official.first_name, "Testy ATO")
|
||||||
self.assertEquals(application.authorizing_official.last_name, "Tester")
|
self.assertEquals(application.authorizing_official.last_name, "Tester ATO")
|
||||||
self.assertEquals(application.authorizing_official.title, "Chief Tester")
|
self.assertEquals(application.authorizing_official.title, "Chief Tester")
|
||||||
self.assertEquals(application.authorizing_official.email, "testy@town.com")
|
self.assertEquals(application.authorizing_official.email, "testy@town.com")
|
||||||
self.assertEquals(application.authorizing_official.phone, "(555) 555 5555")
|
self.assertEquals(application.authorizing_official.phone, "(555) 555 5555")
|
||||||
|
@ -294,7 +300,7 @@ class DomainApplicationTests(TestWithUser, WebTest):
|
||||||
# Follow the redirect to the next form page
|
# Follow the redirect to the next form page
|
||||||
purpose_page = dotgov_result.follow()
|
purpose_page = dotgov_result.follow()
|
||||||
purpose_form = purpose_page.form
|
purpose_form = purpose_page.form
|
||||||
purpose_form["purpose-purpose"] = "Purpose of the site"
|
purpose_form["purpose-purpose"] = "For all kinds of things."
|
||||||
|
|
||||||
# test saving the page
|
# test saving the page
|
||||||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||||
|
@ -303,7 +309,7 @@ class DomainApplicationTests(TestWithUser, WebTest):
|
||||||
self.assertEquals(result["Location"], "/register/purpose/")
|
self.assertEquals(result["Location"], "/register/purpose/")
|
||||||
# should see results in db
|
# should see results in db
|
||||||
application = DomainApplication.objects.get() # there's only one
|
application = DomainApplication.objects.get() # there's only one
|
||||||
self.assertEquals(application.purpose, "Purpose of the site")
|
self.assertEquals(application.purpose, "For all kinds of things.")
|
||||||
|
|
||||||
# test next button
|
# test next button
|
||||||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||||
|
@ -413,7 +419,7 @@ class DomainApplicationTests(TestWithUser, WebTest):
|
||||||
anything_else_page = security_email_result.follow()
|
anything_else_page = security_email_result.follow()
|
||||||
anything_else_form = anything_else_page.form
|
anything_else_form = anything_else_page.form
|
||||||
|
|
||||||
anything_else_form["anything_else-anything_else"] = "No"
|
anything_else_form["anything_else-anything_else"] = "Nothing else."
|
||||||
|
|
||||||
# test saving the page
|
# test saving the page
|
||||||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||||
|
@ -422,7 +428,7 @@ class DomainApplicationTests(TestWithUser, WebTest):
|
||||||
self.assertEquals(result["Location"], "/register/anything_else/")
|
self.assertEquals(result["Location"], "/register/anything_else/")
|
||||||
# should see results in db
|
# should see results in db
|
||||||
application = DomainApplication.objects.get() # there's only one
|
application = DomainApplication.objects.get() # there's only one
|
||||||
self.assertEquals(application.anything_else, "No")
|
self.assertEquals(application.anything_else, "Nothing else.")
|
||||||
|
|
||||||
# test next button
|
# test next button
|
||||||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||||
|
@ -458,9 +464,42 @@ class DomainApplicationTests(TestWithUser, WebTest):
|
||||||
|
|
||||||
# ---- REVIEW AND FINSIHED PAGES ----
|
# ---- REVIEW AND FINSIHED PAGES ----
|
||||||
# Follow the redirect to the next form page
|
# Follow the redirect to the next form page
|
||||||
|
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||||
review_page = requirements_result.follow()
|
review_page = requirements_result.follow()
|
||||||
review_form = review_page.form
|
review_form = review_page.form
|
||||||
|
|
||||||
|
# Review page contains all the previously entered data
|
||||||
|
self.assertContains(review_page, "Federal")
|
||||||
|
self.assertContains(review_page, "Executive")
|
||||||
|
self.assertContains(review_page, "Testorg")
|
||||||
|
self.assertContains(review_page, "address 1")
|
||||||
|
self.assertContains(review_page, "address 2")
|
||||||
|
self.assertContains(review_page, "NYC")
|
||||||
|
self.assertContains(review_page, "NY")
|
||||||
|
self.assertContains(review_page, "10002")
|
||||||
|
self.assertContains(review_page, "URB Royal Oaks")
|
||||||
|
self.assertContains(review_page, "Testy ATO")
|
||||||
|
self.assertContains(review_page, "Tester ATO")
|
||||||
|
self.assertContains(review_page, "Chief Tester")
|
||||||
|
self.assertContains(review_page, "testy@town.com")
|
||||||
|
self.assertContains(review_page, "(555) 555 5555")
|
||||||
|
self.assertContains(review_page, "city.com")
|
||||||
|
self.assertContains(review_page, "city.gov")
|
||||||
|
self.assertContains(review_page, "city1.gov")
|
||||||
|
self.assertContains(review_page, "For all kinds of things.")
|
||||||
|
self.assertContains(review_page, "Testy you")
|
||||||
|
self.assertContains(review_page, "Tester you")
|
||||||
|
self.assertContains(review_page, "Admin Tester")
|
||||||
|
self.assertContains(review_page, "testy-admin@town.com")
|
||||||
|
self.assertContains(review_page, "(555) 555 5556")
|
||||||
|
self.assertContains(review_page, "Testy2")
|
||||||
|
self.assertContains(review_page, "Tester2")
|
||||||
|
self.assertContains(review_page, "Another Tester")
|
||||||
|
self.assertContains(review_page, "testy2@town.com")
|
||||||
|
self.assertContains(review_page, "(555) 555 5557")
|
||||||
|
self.assertContains(review_page, "security@city.com")
|
||||||
|
self.assertContains(review_page, "Nothing else.")
|
||||||
|
|
||||||
# test saving the page
|
# test saving the page
|
||||||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||||
result = review_page.form.submit("submit_button", value="save")
|
result = review_page.form.submit("submit_button", value="save")
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue