Compare commits

...

19 Commits

Author SHA1 Message Date
f4fc74dc76 fixed for flake 2025-06-12 12:32:59 +02:00
ebe2a46cda fixed for flake 2025-06-12 11:31:07 +02:00
14e37a5017 fixed author permissions for comment 2025-06-12 09:57:03 +02:00
e442eac8a5 fixed author permission on issue 2025-06-12 09:44:43 +02:00
8778a088e6 added flake, report, updated requirements 2025-06-10 16:07:12 +02:00
6ffd3ed533 fixed style 2025-06-10 15:41:07 +02:00
a4c876132e clean responses messages; create doc 2025-06-10 15:33:30 +02:00
e8c62e9a83 remove test, queryset on /project ok 2025-06-06 15:52:44 +02:00
b8ad1961d1 just test exceptions for a wrong value in query 2025-06-06 13:55:09 +02:00
79e577acd2 fix call to removed viewset, fix filter on comment 2025-06-06 11:55:41 +02:00
5eb0be8003 removed Contributor`s viewset 2025-06-06 10:54:28 +02:00
c171a98a30 fixed patch issue 2025-06-06 10:17:14 +02:00
c059b88101 refactor permissions 2025-06-06 08:28:45 +02:00
b94c058598 querystring validation ok 2025-05-30 11:16:03 +02:00
3636d4a72b working on permission is_contributor; checkpoint 2025-05-30 10:24:01 +02:00
776ba21695 project model create and add contributors 2025-05-26 20:08:34 +02:00
278ea3ed0a renamed Contributor`s FK to user more explicit 2025-05-25 21:26:11 +02:00
80a2eb5b5d added active to Project 2025-05-25 21:21:41 +02:00
635ad35c55 user ok 2025-05-24 13:47:37 +02:00
80 changed files with 7254 additions and 47 deletions

15
Pipfile Normal file
View File

@@ -0,0 +1,15 @@
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"
[packages]
django = "*"
djangorestframework = "*"
djangorestframework-simplejwt = "*"
requests = "*"
[dev-packages]
[requires]
python_version = "3.10"

211
Pipfile.lock generated Normal file
View File

@@ -0,0 +1,211 @@
{
"_meta": {
"hash": {
"sha256": "509028d446b2c9fe27b4bc6e6456cf0d861abb7bee972433e88387bb6f11aa2e"
},
"pipfile-spec": 6,
"requires": {
"python_version": "3.10"
},
"sources": [
{
"name": "pypi",
"url": "https://pypi.org/simple",
"verify_ssl": true
}
]
},
"default": {
"asgiref": {
"hashes": [
"sha256:3e1e3ecc849832fe52ccf2cb6686b7a55f82bb1d6aee72a58826471390335e47",
"sha256:c343bd80a0bec947a9860adb4c432ffa7db769836c64238fc34bdc3fec84d590"
],
"markers": "python_version >= '3.8'",
"version": "==3.8.1"
},
"certifi": {
"hashes": [
"sha256:0a816057ea3cdefcef70270d2c515e4506bbc954f417fa5ade2021213bb8f0c6",
"sha256:30350364dfe371162649852c63336a15c70c6510c2ad5015b21c2345311805f3"
],
"markers": "python_version >= '3.6'",
"version": "==2025.4.26"
},
"charset-normalizer": {
"hashes": [
"sha256:005fa3432484527f9732ebd315da8da8001593e2cf46a3d817669f062c3d9ed4",
"sha256:046595208aae0120559a67693ecc65dd75d46f7bf687f159127046628178dc45",
"sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7",
"sha256:0c8c57f84ccfc871a48a47321cfa49ae1df56cd1d965a09abe84066f6853b9c0",
"sha256:0f5d9ed7f254402c9e7d35d2f5972c9bbea9040e99cd2861bd77dc68263277c7",
"sha256:18dd2e350387c87dabe711b86f83c9c78af772c748904d372ade190b5c7c9d4d",
"sha256:1b1bde144d98e446b056ef98e59c256e9294f6b74d7af6846bf5ffdafd687a7d",
"sha256:1c95a1e2902a8b722868587c0e1184ad5c55631de5afc0eb96bc4b0d738092c0",
"sha256:1cad5f45b3146325bb38d6855642f6fd609c3f7cad4dbaf75549bf3b904d3184",
"sha256:21b2899062867b0e1fde9b724f8aecb1af14f2778d69aacd1a5a1853a597a5db",
"sha256:24498ba8ed6c2e0b56d4acbf83f2d989720a93b41d712ebd4f4979660db4417b",
"sha256:25a23ea5c7edc53e0f29bae2c44fcb5a1aa10591aae107f2a2b2583a9c5cbc64",
"sha256:289200a18fa698949d2b39c671c2cc7a24d44096784e76614899a7ccf2574b7b",
"sha256:28a1005facc94196e1fb3e82a3d442a9d9110b8434fc1ded7a24a2983c9888d8",
"sha256:32fc0341d72e0f73f80acb0a2c94216bd704f4f0bce10aedea38f30502b271ff",
"sha256:36b31da18b8890a76ec181c3cf44326bf2c48e36d393ca1b72b3f484113ea344",
"sha256:3c21d4fca343c805a52c0c78edc01e3477f6dd1ad7c47653241cf2a206d4fc58",
"sha256:3fddb7e2c84ac87ac3a947cb4e66d143ca5863ef48e4a5ecb83bd48619e4634e",
"sha256:43e0933a0eff183ee85833f341ec567c0980dae57c464d8a508e1b2ceb336471",
"sha256:4a476b06fbcf359ad25d34a057b7219281286ae2477cc5ff5e3f70a246971148",
"sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a",
"sha256:50bf98d5e563b83cc29471fa114366e6806bc06bc7a25fd59641e41445327836",
"sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e",
"sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63",
"sha256:5bf4545e3b962767e5c06fe1738f951f77d27967cb2caa64c28be7c4563e162c",
"sha256:6333b3aa5a12c26b2a4d4e7335a28f1475e0e5e17d69d55141ee3cab736f66d1",
"sha256:65c981bdbd3f57670af8b59777cbfae75364b483fa8a9f420f08094531d54a01",
"sha256:68a328e5f55ec37c57f19ebb1fdc56a248db2e3e9ad769919a58672958e8f366",
"sha256:6a0289e4589e8bdfef02a80478f1dfcb14f0ab696b5a00e1f4b8a14a307a3c58",
"sha256:6b66f92b17849b85cad91259efc341dce9c1af48e2173bf38a85c6329f1033e5",
"sha256:6c9379d65defcab82d07b2a9dfbfc2e95bc8fe0ebb1b176a3190230a3ef0e07c",
"sha256:6fc1f5b51fa4cecaa18f2bd7a003f3dd039dd615cd69a2afd6d3b19aed6775f2",
"sha256:70f7172939fdf8790425ba31915bfbe8335030f05b9913d7ae00a87d4395620a",
"sha256:721c76e84fe669be19c5791da68232ca2e05ba5185575086e384352e2c309597",
"sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b",
"sha256:75d10d37a47afee94919c4fab4c22b9bc2a8bf7d4f46f87363bcf0573f3ff4f5",
"sha256:76af085e67e56c8816c3ccf256ebd136def2ed9654525348cfa744b6802b69eb",
"sha256:770cab594ecf99ae64c236bc9ee3439c3f46be49796e265ce0cc8bc17b10294f",
"sha256:7a6ab32f7210554a96cd9e33abe3ddd86732beeafc7a28e9955cdf22ffadbab0",
"sha256:7c48ed483eb946e6c04ccbe02c6b4d1d48e51944b6db70f697e089c193404941",
"sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0",
"sha256:8075c35cd58273fee266c58c0c9b670947c19df5fb98e7b66710e04ad4e9ff86",
"sha256:8272b73e1c5603666618805fe821edba66892e2870058c94c53147602eab29c7",
"sha256:82d8fd25b7f4675d0c47cf95b594d4e7b158aca33b76aa63d07186e13c0e0ab7",
"sha256:844da2b5728b5ce0e32d863af26f32b5ce61bc4273a9c720a9f3aa9df73b1455",
"sha256:8755483f3c00d6c9a77f490c17e6ab0c8729e39e6390328e42521ef175380ae6",
"sha256:915f3849a011c1f593ab99092f3cecfcb4d65d8feb4a64cf1bf2d22074dc0ec4",
"sha256:926ca93accd5d36ccdabd803392ddc3e03e6d4cd1cf17deff3b989ab8e9dbcf0",
"sha256:982bb1e8b4ffda883b3d0a521e23abcd6fd17418f6d2c4118d257a10199c0ce3",
"sha256:98f862da73774290f251b9df8d11161b6cf25b599a66baf087c1ffe340e9bfd1",
"sha256:9cbfacf36cb0ec2897ce0ebc5d08ca44213af24265bd56eca54bee7923c48fd6",
"sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981",
"sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c",
"sha256:aa6af9e7d59f9c12b33ae4e9450619cf2488e2bbe9b44030905877f0b2324980",
"sha256:aa88ca0b1932e93f2d961bf3addbb2db902198dca337d88c89e1559e066e7645",
"sha256:aaeeb6a479c7667fbe1099af9617c83aaca22182d6cf8c53966491a0f1b7ffb7",
"sha256:aaf27faa992bfee0264dc1f03f4c75e9fcdda66a519db6b957a3f826e285cf12",
"sha256:b2680962a4848b3c4f155dc2ee64505a9c57186d0d56b43123b17ca3de18f0fa",
"sha256:b2d318c11350e10662026ad0eb71bb51c7812fc8590825304ae0bdd4ac283acd",
"sha256:b33de11b92e9f75a2b545d6e9b6f37e398d86c3e9e9653c4864eb7e89c5773ef",
"sha256:b3daeac64d5b371dea99714f08ffc2c208522ec6b06fbc7866a450dd446f5c0f",
"sha256:be1e352acbe3c78727a16a455126d9ff83ea2dfdcbc83148d2982305a04714c2",
"sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d",
"sha256:c72fbbe68c6f32f251bdc08b8611c7b3060612236e960ef848e0a517ddbe76c5",
"sha256:c9e36a97bee9b86ef9a1cf7bb96747eb7a15c2f22bdb5b516434b00f2a599f02",
"sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3",
"sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd",
"sha256:d11b54acf878eef558599658b0ffca78138c8c3655cf4f3a4a673c437e67732e",
"sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214",
"sha256:d524ba3f1581b35c03cb42beebab4a13e6cdad7b36246bd22541fa585a56cccd",
"sha256:daac4765328a919a805fa5e2720f3e94767abd632ae410a9062dff5412bae65a",
"sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c",
"sha256:dc7039885fa1baf9be153a0626e337aa7ec8bf96b0128605fb0d77788ddc1681",
"sha256:dccab8d5fa1ef9bfba0590ecf4d46df048d18ffe3eec01eeb73a42e0d9e7a8ba",
"sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f",
"sha256:e45ba65510e2647721e35323d6ef54c7974959f6081b58d4ef5d87c60c84919a",
"sha256:e53efc7c7cee4c1e70661e2e112ca46a575f90ed9ae3fef200f2a25e954f4b28",
"sha256:e635b87f01ebc977342e2697d05b56632f5f879a4f15955dfe8cef2448b51691",
"sha256:e70e990b2137b29dc5564715de1e12701815dacc1d056308e2b17e9095372a82",
"sha256:e8082b26888e2f8b36a042a58307d5b917ef2b1cacab921ad3323ef91901c71a",
"sha256:e8323a9b031aa0393768b87f04b4164a40037fb2a3c11ac06a03ffecd3618027",
"sha256:e92fca20c46e9f5e1bb485887d074918b13543b1c2a1185e69bb8d17ab6236a7",
"sha256:eb30abc20df9ab0814b5a2524f23d75dcf83cde762c161917a2b4b7b55b1e518",
"sha256:eba9904b0f38a143592d9fc0e19e2df0fa2e41c3c3745554761c5f6447eedabf",
"sha256:ef8de666d6179b009dce7bcb2ad4c4a779f113f12caf8dc77f0162c29d20490b",
"sha256:efd387a49825780ff861998cd959767800d54f8308936b21025326de4b5a42b9",
"sha256:f0aa37f3c979cf2546b73e8222bbfa3dc07a641585340179d768068e3455e544",
"sha256:f4074c5a429281bf056ddd4c5d3b740ebca4d43ffffe2ef4bf4d2d05114299da",
"sha256:f69a27e45c43520f5487f27627059b64aaf160415589230992cec34c5e18a509",
"sha256:fb707f3e15060adf5b7ada797624a6c6e0138e2a26baa089df64c68ee98e040f",
"sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a",
"sha256:fdb20a30fe1175ecabed17cbf7812f7b804b8a315a25f24678bcdf120a90077f"
],
"markers": "python_version >= '3.7'",
"version": "==3.4.2"
},
"django": {
"hashes": [
"sha256:57fe1f1b59462caed092c80b3dd324fd92161b620d59a9ba9181c34746c97284",
"sha256:a9b680e84f9a0e71da83e399f1e922e1ab37b2173ced046b541c72e1589a5961"
],
"index": "pypi",
"markers": "python_version >= '3.10'",
"version": "==5.2.1"
},
"djangorestframework": {
"hashes": [
"sha256:bea7e9f6b96a8584c5224bfb2e4348dfb3f8b5e34edbecb98da258e892089361",
"sha256:f022ff46613584de994c0c6a4aebbace5fd700555fbe9d33b865ebf173eba6c9"
],
"index": "pypi",
"markers": "python_version >= '3.9'",
"version": "==3.16.0"
},
"djangorestframework-simplejwt": {
"hashes": [
"sha256:474a1b737067e6462b3609627a392d13a4da8a08b1f0574104ac6d7b1406f90e",
"sha256:4ef6b38af20cdde4a4a51d1fd8e063cbbabb7b45f149cc885d38d905c5a62edb"
],
"index": "pypi",
"markers": "python_version >= '3.9'",
"version": "==5.5.0"
},
"idna": {
"hashes": [
"sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9",
"sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"
],
"markers": "python_version >= '3.6'",
"version": "==3.10"
},
"pyjwt": {
"hashes": [
"sha256:3b02fb0f44517787776cf48f2ae25d8e14f300e6d7545a4315cee571a415e850",
"sha256:7e1e5b56cc735432a7369cbfa0efe50fa113ebecdc04ae6922deba8b84582d0c"
],
"markers": "python_version >= '3.8'",
"version": "==2.9.0"
},
"requests": {
"hashes": [
"sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760",
"sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"
],
"index": "pypi",
"markers": "python_version >= '3.8'",
"version": "==2.32.3"
},
"sqlparse": {
"hashes": [
"sha256:09f67787f56a0b16ecdbde1bfc7f5d9c3371ca683cfeaa8e6ff60b4807ec9272",
"sha256:cf2196ed3418f3ba5de6af7e82c694a9fbdbfecccdfc72e281548517081f16ca"
],
"markers": "python_version >= '3.8'",
"version": "==0.5.3"
},
"typing-extensions": {
"hashes": [
"sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c",
"sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef"
],
"markers": "python_version >= '3.8'",
"version": "==4.13.2"
},
"urllib3": {
"hashes": [
"sha256:414bc6535b787febd7567804cc015fee39daab8ad86268f1310a9250697de466",
"sha256:4e16665048960a0900c702d4a66415956a584919c03361cac9f1df5c5dd7e813"
],
"markers": "python_version >= '3.9'",
"version": "==2.4.0"
}
},
"develop": {}
}

303
README.md
View File

@@ -53,12 +53,308 @@ python manage.py migrate
``` ```
python manage.py runserver python manage.py runserver
``` ```
## Use ___
## Usage
URL is : http://127.0.0.1:8000 **URL:** http://127.0.0.1:8000
Endpoints and methods are coming soon
**Authentication :**
Without authentication (no token):
- you can create a user
- you can get the project's list
For any other action a token is required
To get details of a project you must be contributor
To create/get detail of issue or to create/get detail of comment you must be contributor to the project
User's management:
-----
### *User create:*
-> `POST /api/user/create/`
<- `201_CREATED` ; `400_BAD_REQUEST`
```
params:
{
"username": str,
"email": str,
"password": str,
"password2": str,
"age": int,
"can_be_contacted": boolean,
"can_data_be_shared": boolean
}
```
### *User info:*
*token required*
-> `GET /api/user/`
<- `200_OK / data`
### *User update:*
*token required*
-> `PATCH /api/user/`
<- `201_CREATED`; `400_BAD_REQUEST`
```
params:
{
"email": str,
"can_be_contacted": boolean,
"can_data_be_shared": boolean
}
```
### *Password update:*
-> `GET /api/user/password-update/`
<- `204_NO_CONTENT`; `400_BAD_REQUEST`
```
params:
{
"old_password": str,
"new_password": str,
}
```
### *Delete a user*
*token required*
-> `DELETE /api/user/`
<- `204_NO_CONTENT`; `401_UNAUTHORIZED`
```
params:
{
"user": str
}
```
### *Get token*
-> `POST /api/token/`
<- `200_OK`
```
params
{
"username": str,
"password": str,
}
response
{
"refresh": "xxxxx",
"access": "xxxx"
}
```
### *Refresh token*
-> `POST /api/token/refresh/`
<- `200_OK`
```
params
{
"username": str,
"password": str,
"refresh": "xxxxxx"
}
response
{
"refresh": "xxxxx",
"access": "xxxx"
}
```
Project:
---
### *Retrieve the list of projects*
-> `GET /api/project/`
<- `200_OK / data`; `403_FORBIDDEN`
```
querystrings
?contributor={user}
?author={user}
```
### *Create a project*
-> `POST /api/project/`
<- `200_OK / data`; `403_FORBIDDEN`
```
params:
{
"title": str,
"type":
"choices": [
{
"value": "BackEnd",
},
{
"value": "FrontEnd",
},
{
"value": "iOS",
},
{
"value": "Android",
},
"description": str,
}
```
### *Get project's detail*
*token required*
-> `GET /api/project/{id}/`
<- `200_OK / data`; `403_FORBIDDEN`
### *Update a project*
*token required*
-> `PATCH /api/project/{id}/`
<- `200_OK / data`; `403_FORBIDDEN`
```
params:
{
"title": str,
"type":
"choices": [
{
"value": "BackEnd",
},
{
"value": "FrontEnd",
},
{
"value": "iOS",
},
{
"value": "Android",
},
"description": str,
}
```
### *Add a contributor to a project*
*token required*
-> `PATCH /api/project/{id}/contributor/`
<- `202_ACCEPTED`; `403_FORBIDDEN`
```
params:
{
"contributor": {username}
}
```
### *Delete a project*
*token required*
-> `DELETE /api/project/{id}/`
<- `204_NO_CONTENT`; `403_FORBIDDEN`
Issue:
---
### *List issues (where requestor is contributor)*
*token required*
-> `GET /api/issue/`
<- `200_OK`
### *Create an issue*
*token required*
-> `POST /api/issue/`
<- `201_CREATED / data`; `403_FORBIDDEN`
```
params:
{
"title": str,
"project": int,
"description": str,
"priority":
"choices": [
{
"value": "Low",
},
{
"value": "Medium",
},
{
"value": "High",
}
]
"tag":
"choices": [
{
"value": "Bug",
},
{
"value": "Feature",
},
{
"value": "Task",
}
]
"status":
"choices": [
{
"value": "ToDo",
},
{
"value": "In Progress",
},
{
"value": "Finished",,
}
]
}
```
### *Update an issue*
*token required*
-> `PATCH /api/issue/{id}/`
<- `200_OK / data`; `403_FORBIDDEN`
/!\ Only the author of an issue can affect it
(update to another author)
### *Delete an issue*
*token required*
-> `DELETE /api/issue/{id}/`
<- `204_NO_CONTENT`; `403_FORBIDDEN`
### *Retrieve contributors for a given issue*
*token required*
-> `GET /api/issue/{id}/contributors/`
<- `200_OK`; `403_FORBIDDEN`
Comment:
---
### *Create a comment*
*token required*
-> `POST /api/comment/`
<- `201_CREATED / data`; `403_FORBIDDEN`
```
params:
{
"title": str,
"issue": int,
"description": str
}
```
### *Update a comment*
*token required*
-> `PATCH /api/comment/{id}/`
<- `200_OK / data`; `403_FORBIDDEN`
### *Delete a comment*
*token required*
-> `DELETE /api/comment/{id}/`
<- `204_NO_CONTENT`; `403_FORBIDDEN`
___
## Author ## Author
YaL <yann@needsome.coffee> YaL <yann@needsome.coffee>
@@ -67,3 +363,4 @@ YaL <yann@needsome.coffee>
MIT License MIT License
Copyright (c) 2025 Copyright (c) 2025

73
flake-report/back.svg Normal file
View File

@@ -0,0 +1,73 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="32"
height="48"
viewBox="0 0 32 48"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="back.svg">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#3d3d3d"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:zoom="4"
inkscape:cx="47.245066"
inkscape:cy="13.218734"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
width="32px"
inkscape:window-width="1535"
inkscape:window-height="876"
inkscape:window-x="65"
inkscape:window-y="24"
inkscape:window-maximized="1" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-1004.3622)">
<g
id="g5305"
transform="translate(0,-3.5)">
<path
inkscape:connector-curvature="0"
id="path5301"
d="M 15.577993,1039.1732 4.7040093,1028.3079 15.469253,1017.5512"
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path5303"
d="m 4.921489,1028.3622 26.53252,0"
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

64
flake-report/file.svg Normal file
View File

@@ -0,0 +1,64 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="32"
height="48"
viewBox="0 0 32 48"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="file.svg">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#3d3d3d"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:zoom="1"
inkscape:cx="24.812518"
inkscape:cy="18.901073"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
width="32px"
inkscape:window-width="1535"
inkscape:window-height="876"
inkscape:window-x="65"
inkscape:window-y="24"
inkscape:window-maximized="1" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-1004.3622)">
<path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 4.1360619,1007.3622 0,34.375 23.7278761,0 0,-29.9038 -4.471158,-4.4712 -19.2567181,0 z m 18.5469091,0.6084 4.471159,4.4712 -4.471159,0 0,-4.4712 z m -16.6202866,7.8079 19.8746316,0 0,1.8252 -19.8746316,0 0,-1.8252 z m 0,3.2448 19.8746316,0 0,1.8253 -19.8746316,0 0,-1.8253 z m 0,6.0841 19.8746316,0 0,1.8252 -19.8746316,0 0,-1.8252 z m 0,8.2135 19.8746316,0 0,1.8252 -19.8746316,0 0,-1.8252 z"
id="path4749"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

209
flake-report/index.html Normal file
View File

@@ -0,0 +1,209 @@
<!DOCTYPE html>
<html>
<head>
<title>flake8 violations</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div id="masthead" class="sev-1"></div>
<div id="page">
<h1>flake8 violations</h1>
<p id="versions">Generated on 2025-06-10 16:06
with Installed plugins: flake8-html: 0.4.3, mccabe: 0.7.0, pycodestyle: 2.13.0, pyflakes: 3.3.2
</p>
<ul id="index">
<li>
<a href="softdesk.authentication.tests.report.html">
<span class="count sev-1">
1
</span>
softdesk/authentication/tests.py
</a>
</li>
<li>
<a href="softdesk.support.tests.report.html">
<span class="count sev-1">
1
</span>
softdesk/support/tests.py
</a>
</li>
<li>
<a href="softdesk.support.migrations.0001_initial.report.html">
<span class="count sev-2">
17
</span>
softdesk/support/migrations/0001_initial.py
</a>
</li>
<li>
<a href="softdesk.authentication.migrations.0001_initial.report.html">
<span class="count sev-2">
13
</span>
softdesk/authentication/migrations/0001_initial.py
</a>
</li>
<li>
<a href="softdesk.softdesk.settings.report.html">
<span class="count sev-2">
11
</span>
softdesk/softdesk/settings.py
</a>
</li>
<li>
<a href="softdesk.support.migrations.0010_alter_comment_author_alter_issue_author_and_more.report.html">
<span class="count sev-2">
7
</span>
softdesk/support/migrations/0010_alter_comment_author_alter_issue_author_and_more.py
</a>
</li>
<li>
<a href="softdesk.support.admin.report.html">
<span class="count sev-2">
3
</span>
softdesk/support/admin.py
</a>
</li>
<li>
<a href="softdesk.support.migrations.0011_alter_issue_priority_alter_issue_status_and_more.report.html">
<span class="count sev-2">
3
</span>
softdesk/support/migrations/0011_alter_issue_priority_alter_issue_status_and_more.py
</a>
</li>
<li>
<a href="softdesk.support.migrations.0012_alter_issue_priority_alter_issue_status.report.html">
<span class="count sev-2">
2
</span>
softdesk/support/migrations/0012_alter_issue_priority_alter_issue_status.py
</a>
</li>
<li>
<a href="softdesk.support.migrations.0016_alter_issue_author_alter_project_author.report.html">
<span class="count sev-2">
2
</span>
softdesk/support/migrations/0016_alter_issue_author_alter_project_author.py
</a>
</li>
<li>
<a href="softdesk.authentication.admin.report.html">
<span class="count sev-2">
1
</span>
softdesk/authentication/admin.py
</a>
</li>
<li>
<a href="softdesk.support.migrations.0002_project_active_alter_issue_project.report.html">
<span class="count sev-2">
1
</span>
softdesk/support/migrations/0002_project_active_alter_issue_project.py
</a>
</li>
<li>
<a href="softdesk.support.migrations.0004_alter_project_author.report.html">
<span class="count sev-2">
1
</span>
softdesk/support/migrations/0004_alter_project_author.py
</a>
</li>
<li>
<a href="softdesk.support.migrations.0005_alter_project_author.report.html">
<span class="count sev-2">
1
</span>
softdesk/support/migrations/0005_alter_project_author.py
</a>
</li>
<li>
<a href="softdesk.support.migrations.0006_alter_project_author.report.html">
<span class="count sev-2">
1
</span>
softdesk/support/migrations/0006_alter_project_author.py
</a>
</li>
<li>
<a href="softdesk.support.migrations.0007_contributor_active_alter_project_author.report.html">
<span class="count sev-2">
1
</span>
softdesk/support/migrations/0007_contributor_active_alter_project_author.py
</a>
</li>
<li>
<a href="softdesk.support.migrations.0013_alter_issue_project.report.html">
<span class="count sev-2">
1
</span>
softdesk/support/migrations/0013_alter_issue_project.py
</a>
</li>
<li>
<a href="softdesk.support.migrations.0014_alter_issue_project.report.html">
<span class="count sev-2">
1
</span>
softdesk/support/migrations/0014_alter_issue_project.py
</a>
</li>
<li>
<a href="softdesk.support.migrations.0015_alter_project_author.report.html">
<span class="count sev-2">
1
</span>
softdesk/support/migrations/0015_alter_project_author.py
</a>
</li>
<li>
<a href="softdesk.support.migrations.0017_alter_projectcontributor_contributor.report.html">
<span class="count sev-2">
1
</span>
softdesk/support/migrations/0017_alter_projectcontributor_contributor.py
</a>
</li>
<li>
<a href="softdesk.support.permissions.report.html">
<span class="count sev-2">
1
</span>
softdesk/support/permissions.py
</a>
</li>
</ul>
</div>
</body>
</html>

View File

@@ -0,0 +1,73 @@
<!DOCTYPE html>
<html>
<head>
<title>flake8 violations: softdesk/authentication/admin.py</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
<script>
function bindHandler(link) {
var code = link.getAttribute('data-code');
var key = location.pathname + '#' + code;
var ul = link.parentNode.querySelector('.details');
if (sessionStorage[key] != 'open') {
ul.style.display = 'none';
}
link.addEventListener('click', function (event) {
if (!ul.style.display || ul.style.display == 'none') {
ul.style.display = 'block';
sessionStorage[key] = 'open';
} else {
ul.style.display = 'none';
sessionStorage[key] = 'closed';
}
});
}
window.addEventListener('DOMContentLoaded', function () {
var links = document.querySelectorAll('#index > li > a');
for (var i = 0; i < links.length; i++) {
bindHandler(links[i]);
}
});
</script>
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<p id="srclink">
<a title="View full annotated source"
href="softdesk.authentication.admin.source.html">
<img src="file.svg" alt="&#x2261;">
</a></p>
<h1>
<a href="index.html">
<img src="back.svg" alt="&#x2B05;">
softdesk/authentication/admin.py
</a>
</h1>
<ul id="index">
<li>
<a data-code="E265">
<span class="count sev-2">
1
</span>
<strong>E265:</strong> block comment should start with '# '
</a>
<ul class="details">
<li>
<a href="softdesk.authentication.admin.source.html#l1">
<tt><i>1</i> <span class="c1">#from django.contrib import admin</span></tt>
</a>
</li>
</ul>
</li>
</ul>
</div>
</body>
</html>

View File

@@ -0,0 +1,41 @@
<!DOCTYPE html>
<html>
<head>
<title>softdesk/authentication/admin.py - flake8 annotated source</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<h1>
<a href="softdesk.authentication.admin.report.html">
<img src="back.svg" alt="&#x2B05;">
softdesk/authentication/admin.py source
</a>
</h1>
<div id="doc">
<div id="l1"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E265
</span>
Block comment should start with '# '</li>
</ul><tt><i>1</i> <span class="c1">#from django.contrib import admin</span></tt>
</div>
<div id="l2"
class="code sev- "><tt><i>2</i> &nbsp;</tt>
</div>
<div id="l3"
class="code sev- "><tt><i>3</i> <span class="c1"># Register your models here.</span></tt>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,161 @@
<!DOCTYPE html>
<html>
<head>
<title>flake8 violations: softdesk/authentication/migrations/0001_initial.py</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
<script>
function bindHandler(link) {
var code = link.getAttribute('data-code');
var key = location.pathname + '#' + code;
var ul = link.parentNode.querySelector('.details');
if (sessionStorage[key] != 'open') {
ul.style.display = 'none';
}
link.addEventListener('click', function (event) {
if (!ul.style.display || ul.style.display == 'none') {
ul.style.display = 'block';
sessionStorage[key] = 'open';
} else {
ul.style.display = 'none';
sessionStorage[key] = 'closed';
}
});
}
window.addEventListener('DOMContentLoaded', function () {
var links = document.querySelectorAll('#index > li > a');
for (var i = 0; i < links.length; i++) {
bindHandler(links[i]);
}
});
</script>
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<p id="srclink">
<a title="View full annotated source"
href="softdesk.authentication.migrations.0001_initial.source.html">
<img src="file.svg" alt="&#x2261;">
</a></p>
<h1>
<a href="index.html">
<img src="back.svg" alt="&#x2B05;">
softdesk/authentication/migrations/0001_initial.py
</a>
</h1>
<ul id="index">
<li>
<a data-code="E501">
<span class="count sev-2">
13
</span>
<strong>E501:</strong> line too long (117 > 79 characters)
(and 10 similar)
</a>
<ul class="details">
<li>
<p>Line too long (117 > 79 characters):</p>
<a href="softdesk.authentication.migrations.0001_initial.source.html#l21">
<tt><i>21</i> <span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">BigAutoField</span><span class="p">(</span><span class="n">auto_created</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">primary_key</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">serialize</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;ID&#39;</span><span class="p">)),</span></tt>
</a>
</li><li>
<p>Line too long (88 > 79 characters):</p>
<a href="softdesk.authentication.migrations.0001_initial.source.html#l22">
<tt><i>22</i> <span class="p">(</span><span class="s1">&#39;password&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">128</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;password&#39;</span><span class="p">)),</span></tt>
</a>
</li><li>
<p>Line too long (103 > 79 characters):</p>
<a href="softdesk.authentication.migrations.0001_initial.source.html#l23">
<tt><i>23</i> <span class="p">(</span><span class="s1">&#39;last_login&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">DateTimeField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;last login&#39;</span><span class="p">)),</span></tt>
</a>
</li><li>
<p>Line too long (196 > 79 characters):</p>
<a href="softdesk.authentication.migrations.0001_initial.source.html#l24">
<tt><i>24</i> <span class="p">(</span><span class="s1">&#39;is_superuser&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">help_text</span><span class="o">=</span><span class="s1">&#39;Designates that this user has all permissions without explicitly assigning them.&#39;</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;superuser status&#39;</span><span class="p">)),</span></tt>
</a>
</li><li>
<p>Line too long (329 > 79 characters):</p>
<a href="softdesk.authentication.migrations.0001_initial.source.html#l25">
<tt><i>25</i> <span class="p">(</span><span class="s1">&#39;username&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">error_messages</span><span class="o">=</span><span class="p">{</span><span class="s1">&#39;unique&#39;</span><span class="p">:</span> <span class="s1">&#39;A user with that username already exists.&#39;</span><span class="p">},</span> <span class="n">help_text</span><span class="o">=</span><span class="s1">&#39;Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.&#39;</span><span class="p">,</span> <span class="n">max_length</span><span class="o">=</span><span class="mi">150</span><span class="p">,</span> <span class="n">unique</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">validators</span><span class="o">=</span><span class="p">[</span><span class="n">django</span><span class="o">.</span><span class="n">contrib</span><span class="o">.</span><span class="n">auth</span><span class="o">.</span><span class="n">validators</span><span class="o">.</span><span class="n">UnicodeUsernameValidator</span><span class="p">()],</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;username&#39;</span><span class="p">)),</span></tt>
</a>
</li><li>
<p>Line too long (104 > 79 characters):</p>
<a href="softdesk.authentication.migrations.0001_initial.source.html#l26">
<tt><i>26</i> <span class="p">(</span><span class="s1">&#39;first_name&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">max_length</span><span class="o">=</span><span class="mi">150</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;first name&#39;</span><span class="p">)),</span></tt>
</a>
</li><li>
<p>Line too long (102 > 79 characters):</p>
<a href="softdesk.authentication.migrations.0001_initial.source.html#l27">
<tt><i>27</i> <span class="p">(</span><span class="s1">&#39;last_name&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">max_length</span><span class="o">=</span><span class="mi">150</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;last name&#39;</span><span class="p">)),</span></tt>
</a>
</li><li>
<p>Line too long (103 > 79 characters):</p>
<a href="softdesk.authentication.migrations.0001_initial.source.html#l28">
<tt><i>28</i> <span class="p">(</span><span class="s1">&#39;email&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">EmailField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">max_length</span><span class="o">=</span><span class="mi">254</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;email address&#39;</span><span class="p">)),</span></tt>
</a>
</li><li>
<p>Line too long (165 > 79 characters):</p>
<a href="softdesk.authentication.migrations.0001_initial.source.html#l29">
<tt><i>29</i> <span class="p">(</span><span class="s1">&#39;is_staff&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">help_text</span><span class="o">=</span><span class="s1">&#39;Designates whether the user can log into this admin site.&#39;</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;staff status&#39;</span><span class="p">)),</span></tt>
</a>
</li><li>
<p>Line too long (203 > 79 characters):</p>
<a href="softdesk.authentication.migrations.0001_initial.source.html#l30">
<tt><i>30</i> <span class="p">(</span><span class="s1">&#39;is_active&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">help_text</span><span class="o">=</span><span class="s1">&#39;Designates whether this user should be treated as active. Unselect this instead of deleting accounts.&#39;</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;active&#39;</span><span class="p">)),</span></tt>
</a>
</li><li>
<p>Line too long (117 > 79 characters):</p>
<a href="softdesk.authentication.migrations.0001_initial.source.html#l31">
<tt><i>31</i> <span class="p">(</span><span class="s1">&#39;date_joined&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">DateTimeField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;date joined&#39;</span><span class="p">)),</span></tt>
</a>
</li><li>
<p>Line too long (266 > 79 characters):</p>
<a href="softdesk.authentication.migrations.0001_initial.source.html#l35">
<tt><i>35</i> <span class="p">(</span><span class="s1">&#39;groups&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">help_text</span><span class="o">=</span><span class="s1">&#39;The groups this user belongs to. A user will get all permissions granted to each of their groups.&#39;</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;user_set&#39;</span><span class="p">,</span> <span class="n">related_query_name</span><span class="o">=</span><span class="s1">&#39;user&#39;</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="s1">&#39;auth.group&#39;</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;groups&#39;</span><span class="p">)),</span></tt>
</a>
</li><li>
<p>Line too long (229 > 79 characters):</p>
<a href="softdesk.authentication.migrations.0001_initial.source.html#l36">
<tt><i>36</i> <span class="p">(</span><span class="s1">&#39;user_permissions&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">help_text</span><span class="o">=</span><span class="s1">&#39;Specific permissions for this user.&#39;</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;user_set&#39;</span><span class="p">,</span> <span class="n">related_query_name</span><span class="o">=</span><span class="s1">&#39;user&#39;</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="s1">&#39;auth.permission&#39;</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;user permissions&#39;</span><span class="p">)),</span></tt>
</a>
</li>
</ul>
</li>
</ul>
</div>
</body>
</html>

View File

@@ -0,0 +1,281 @@
<!DOCTYPE html>
<html>
<head>
<title>softdesk/authentication/migrations/0001_initial.py - flake8 annotated source</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<h1>
<a href="softdesk.authentication.migrations.0001_initial.report.html">
<img src="back.svg" alt="&#x2B05;">
softdesk/authentication/migrations/0001_initial.py source
</a>
</h1>
<div id="doc">
<div id="l1"
class="code sev- "><tt><i>1</i> <span class="c1"># Generated by Django 5.2.1 on 2025-05-23 03:58</span></tt>
</div>
<div id="l2"
class="code sev- "><tt><i>2</i> &nbsp;</tt>
</div>
<div id="l3"
class="code sev- "><tt><i>3</i> <span class="kn">import</span><span class="w"> </span><span class="nn">django.contrib.auth.models</span></tt>
</div>
<div id="l4"
class="code sev- "><tt><i>4</i> <span class="kn">import</span><span class="w"> </span><span class="nn">django.contrib.auth.validators</span></tt>
</div>
<div id="l5"
class="code sev- "><tt><i>5</i> <span class="kn">import</span><span class="w"> </span><span class="nn">django.utils.timezone</span></tt>
</div>
<div id="l6"
class="code sev- "><tt><i>6</i> <span class="kn">from</span><span class="w"> </span><span class="nn">django.db</span><span class="w"> </span><span class="kn">import</span> <span class="n">migrations</span><span class="p">,</span> <span class="n">models</span></tt>
</div>
<div id="l7"
class="code sev- "><tt><i>7</i> &nbsp;</tt>
</div>
<div id="l8"
class="code sev- "><tt><i>8</i> &nbsp;</tt>
</div>
<div id="l9"
class="code sev- "><tt><i>9</i> <span class="k">class</span><span class="w"> </span><span class="nc">Migration</span><span class="p">(</span><span class="n">migrations</span><span class="o">.</span><span class="n">Migration</span><span class="p">):</span></tt>
</div>
<div id="l10"
class="code sev- "><tt><i>10</i> &nbsp;</tt>
</div>
<div id="l11"
class="code sev- "><tt><i>11</i> <span class="n">initial</span> <span class="o">=</span> <span class="kc">True</span></tt>
</div>
<div id="l12"
class="code sev- "><tt><i>12</i> &nbsp;</tt>
</div>
<div id="l13"
class="code sev- "><tt><i>13</i> <span class="n">dependencies</span> <span class="o">=</span> <span class="p">[</span></tt>
</div>
<div id="l14"
class="code sev- "><tt><i>14</i> <span class="p">(</span><span class="s1">&#39;auth&#39;</span><span class="p">,</span> <span class="s1">&#39;0012_alter_user_first_name_max_length&#39;</span><span class="p">),</span></tt>
</div>
<div id="l15"
class="code sev- "><tt><i>15</i> <span class="p">]</span></tt>
</div>
<div id="l16"
class="code sev- "><tt><i>16</i> &nbsp;</tt>
</div>
<div id="l17"
class="code sev- "><tt><i>17</i> <span class="n">operations</span> <span class="o">=</span> <span class="p">[</span></tt>
</div>
<div id="l18"
class="code sev- "><tt><i>18</i> <span class="n">migrations</span><span class="o">.</span><span class="n">CreateModel</span><span class="p">(</span></tt>
</div>
<div id="l19"
class="code sev- "><tt><i>19</i> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;User&#39;</span><span class="p">,</span></tt>
</div>
<div id="l20"
class="code sev- "><tt><i>20</i> <span class="n">fields</span><span class="o">=</span><span class="p">[</span></tt>
</div>
<div id="l21"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (117 > 79 characters)</li>
</ul><tt><i>21</i> <span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">BigAutoField</span><span class="p">(</span><span class="n">auto_created</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">primary_key</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">serialize</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;ID&#39;</span><span class="p">)),</span></tt>
</div>
<div id="l22"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (88 > 79 characters)</li>
</ul><tt><i>22</i> <span class="p">(</span><span class="s1">&#39;password&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">128</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;password&#39;</span><span class="p">)),</span></tt>
</div>
<div id="l23"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (103 > 79 characters)</li>
</ul><tt><i>23</i> <span class="p">(</span><span class="s1">&#39;last_login&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">DateTimeField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;last login&#39;</span><span class="p">)),</span></tt>
</div>
<div id="l24"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (196 > 79 characters)</li>
</ul><tt><i>24</i> <span class="p">(</span><span class="s1">&#39;is_superuser&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">help_text</span><span class="o">=</span><span class="s1">&#39;Designates that this user has all permissions without explicitly assigning them.&#39;</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;superuser status&#39;</span><span class="p">)),</span></tt>
</div>
<div id="l25"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (329 > 79 characters)</li>
</ul><tt><i>25</i> <span class="p">(</span><span class="s1">&#39;username&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">error_messages</span><span class="o">=</span><span class="p">{</span><span class="s1">&#39;unique&#39;</span><span class="p">:</span> <span class="s1">&#39;A user with that username already exists.&#39;</span><span class="p">},</span> <span class="n">help_text</span><span class="o">=</span><span class="s1">&#39;Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.&#39;</span><span class="p">,</span> <span class="n">max_length</span><span class="o">=</span><span class="mi">150</span><span class="p">,</span> <span class="n">unique</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">validators</span><span class="o">=</span><span class="p">[</span><span class="n">django</span><span class="o">.</span><span class="n">contrib</span><span class="o">.</span><span class="n">auth</span><span class="o">.</span><span class="n">validators</span><span class="o">.</span><span class="n">UnicodeUsernameValidator</span><span class="p">()],</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;username&#39;</span><span class="p">)),</span></tt>
</div>
<div id="l26"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (104 > 79 characters)</li>
</ul><tt><i>26</i> <span class="p">(</span><span class="s1">&#39;first_name&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">max_length</span><span class="o">=</span><span class="mi">150</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;first name&#39;</span><span class="p">)),</span></tt>
</div>
<div id="l27"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (102 > 79 characters)</li>
</ul><tt><i>27</i> <span class="p">(</span><span class="s1">&#39;last_name&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">max_length</span><span class="o">=</span><span class="mi">150</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;last name&#39;</span><span class="p">)),</span></tt>
</div>
<div id="l28"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (103 > 79 characters)</li>
</ul><tt><i>28</i> <span class="p">(</span><span class="s1">&#39;email&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">EmailField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">max_length</span><span class="o">=</span><span class="mi">254</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;email address&#39;</span><span class="p">)),</span></tt>
</div>
<div id="l29"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (165 > 79 characters)</li>
</ul><tt><i>29</i> <span class="p">(</span><span class="s1">&#39;is_staff&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">help_text</span><span class="o">=</span><span class="s1">&#39;Designates whether the user can log into this admin site.&#39;</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;staff status&#39;</span><span class="p">)),</span></tt>
</div>
<div id="l30"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (203 > 79 characters)</li>
</ul><tt><i>30</i> <span class="p">(</span><span class="s1">&#39;is_active&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">help_text</span><span class="o">=</span><span class="s1">&#39;Designates whether this user should be treated as active. Unselect this instead of deleting accounts.&#39;</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;active&#39;</span><span class="p">)),</span></tt>
</div>
<div id="l31"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (117 > 79 characters)</li>
</ul><tt><i>31</i> <span class="p">(</span><span class="s1">&#39;date_joined&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">DateTimeField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;date joined&#39;</span><span class="p">)),</span></tt>
</div>
<div id="l32"
class="code sev- "><tt><i>32</i> <span class="p">(</span><span class="s1">&#39;can_be_contacted&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">)),</span></tt>
</div>
<div id="l33"
class="code sev- "><tt><i>33</i> <span class="p">(</span><span class="s1">&#39;can_data_be_shared&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">)),</span></tt>
</div>
<div id="l34"
class="code sev- "><tt><i>34</i> <span class="p">(</span><span class="s1">&#39;age&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">IntegerField</span><span class="p">()),</span></tt>
</div>
<div id="l35"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (266 > 79 characters)</li>
</ul><tt><i>35</i> <span class="p">(</span><span class="s1">&#39;groups&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">help_text</span><span class="o">=</span><span class="s1">&#39;The groups this user belongs to. A user will get all permissions granted to each of their groups.&#39;</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;user_set&#39;</span><span class="p">,</span> <span class="n">related_query_name</span><span class="o">=</span><span class="s1">&#39;user&#39;</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="s1">&#39;auth.group&#39;</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;groups&#39;</span><span class="p">)),</span></tt>
</div>
<div id="l36"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (229 > 79 characters)</li>
</ul><tt><i>36</i> <span class="p">(</span><span class="s1">&#39;user_permissions&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">help_text</span><span class="o">=</span><span class="s1">&#39;Specific permissions for this user.&#39;</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;user_set&#39;</span><span class="p">,</span> <span class="n">related_query_name</span><span class="o">=</span><span class="s1">&#39;user&#39;</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="s1">&#39;auth.permission&#39;</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;user permissions&#39;</span><span class="p">)),</span></tt>
</div>
<div id="l37"
class="code sev- "><tt><i>37</i> <span class="p">],</span></tt>
</div>
<div id="l38"
class="code sev- "><tt><i>38</i> <span class="n">options</span><span class="o">=</span><span class="p">{</span></tt>
</div>
<div id="l39"
class="code sev- "><tt><i>39</i> <span class="s1">&#39;verbose_name&#39;</span><span class="p">:</span> <span class="s1">&#39;user&#39;</span><span class="p">,</span></tt>
</div>
<div id="l40"
class="code sev- "><tt><i>40</i> <span class="s1">&#39;verbose_name_plural&#39;</span><span class="p">:</span> <span class="s1">&#39;users&#39;</span><span class="p">,</span></tt>
</div>
<div id="l41"
class="code sev- "><tt><i>41</i> <span class="s1">&#39;abstract&#39;</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span></tt>
</div>
<div id="l42"
class="code sev- "><tt><i>42</i> <span class="p">},</span></tt>
</div>
<div id="l43"
class="code sev- "><tt><i>43</i> <span class="n">managers</span><span class="o">=</span><span class="p">[</span></tt>
</div>
<div id="l44"
class="code sev- "><tt><i>44</i> <span class="p">(</span><span class="s1">&#39;objects&#39;</span><span class="p">,</span> <span class="n">django</span><span class="o">.</span><span class="n">contrib</span><span class="o">.</span><span class="n">auth</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">UserManager</span><span class="p">()),</span></tt>
</div>
<div id="l45"
class="code sev- "><tt><i>45</i> <span class="p">],</span></tt>
</div>
<div id="l46"
class="code sev- "><tt><i>46</i> <span class="p">),</span></tt>
</div>
<div id="l47"
class="code sev- "><tt><i>47</i> <span class="p">]</span></tt>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,73 @@
<!DOCTYPE html>
<html>
<head>
<title>flake8 violations: softdesk/authentication/tests.py</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
<script>
function bindHandler(link) {
var code = link.getAttribute('data-code');
var key = location.pathname + '#' + code;
var ul = link.parentNode.querySelector('.details');
if (sessionStorage[key] != 'open') {
ul.style.display = 'none';
}
link.addEventListener('click', function (event) {
if (!ul.style.display || ul.style.display == 'none') {
ul.style.display = 'block';
sessionStorage[key] = 'open';
} else {
ul.style.display = 'none';
sessionStorage[key] = 'closed';
}
});
}
window.addEventListener('DOMContentLoaded', function () {
var links = document.querySelectorAll('#index > li > a');
for (var i = 0; i < links.length; i++) {
bindHandler(links[i]);
}
});
</script>
</head>
<body>
<div id="masthead" class="sev-1"></div>
<div id="page">
<p id="srclink">
<a title="View full annotated source"
href="softdesk.authentication.tests.source.html">
<img src="file.svg" alt="&#x2261;">
</a></p>
<h1>
<a href="index.html">
<img src="back.svg" alt="&#x2B05;">
softdesk/authentication/tests.py
</a>
</h1>
<ul id="index">
<li>
<a data-code="F401">
<span class="count sev-1">
1
</span>
<strong>F401:</strong> 'django.test.TestCase' imported but unused
</a>
<ul class="details">
<li>
<a href="softdesk.authentication.tests.source.html#l1">
<tt><i>1</i> <span class="kn">from</span><span class="w"> </span><span class="nn">django.test</span><span class="w"> </span><span class="kn">import</span> <span class="n">TestCase</span></tt>
</a>
</li>
</ul>
</li>
</ul>
</div>
</body>
</html>

View File

@@ -0,0 +1,41 @@
<!DOCTYPE html>
<html>
<head>
<title>softdesk/authentication/tests.py - flake8 annotated source</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div id="masthead" class="sev-1"></div>
<div id="page">
<h1>
<a href="softdesk.authentication.tests.report.html">
<img src="back.svg" alt="&#x2B05;">
softdesk/authentication/tests.py source
</a>
</h1>
<div id="doc">
<div id="l1"
class="code sev-1 le">
<ul class="violations">
<li>
<span class="count sev-1">
F401
</span>
'django.test.TestCase' imported but unused</li>
</ul><tt><i>1</i> <span class="kn">from</span><span class="w"> </span><span class="nn">django.test</span><span class="w"> </span><span class="kn">import</span> <span class="n">TestCase</span></tt>
</div>
<div id="l2"
class="code sev- "><tt><i>2</i> &nbsp;</tt>
</div>
<div id="l3"
class="code sev- "><tt><i>3</i> <span class="c1"># Create your tests here.</span></tt>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,152 @@
<!DOCTYPE html>
<html>
<head>
<title>flake8 violations: softdesk/softdesk/settings.py</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
<script>
function bindHandler(link) {
var code = link.getAttribute('data-code');
var key = location.pathname + '#' + code;
var ul = link.parentNode.querySelector('.details');
if (sessionStorage[key] != 'open') {
ul.style.display = 'none';
}
link.addEventListener('click', function (event) {
if (!ul.style.display || ul.style.display == 'none') {
ul.style.display = 'block';
sessionStorage[key] = 'open';
} else {
ul.style.display = 'none';
sessionStorage[key] = 'closed';
}
});
}
window.addEventListener('DOMContentLoaded', function () {
var links = document.querySelectorAll('#index > li > a');
for (var i = 0; i < links.length; i++) {
bindHandler(links[i]);
}
});
</script>
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<p id="srclink">
<a title="View full annotated source"
href="softdesk.softdesk.settings.source.html">
<img src="file.svg" alt="&#x2261;">
</a></p>
<h1>
<a href="index.html">
<img src="back.svg" alt="&#x2B05;">
softdesk/softdesk/settings.py
</a>
</h1>
<ul id="index">
<li>
<a data-code="E501">
<span class="count sev-2">
7
</span>
<strong>E501:</strong> line too long (81 > 79 characters)
(and 5 similar)
</a>
<ul class="details">
<li>
<p>Line too long (81 > 79 characters):</p>
<a href="softdesk.softdesk.settings.source.html#l24">
<tt><i>24</i> <span class="n">SECRET_KEY</span> <span class="o">=</span> <span class="s1">&#39;django-insecure-_vs15jeip&amp;ba(7@n!ptk+b0$4fjhj-esfz1qrhk8+eh4d6k%br&#39;</span></tt>
</a>
</li><li>
<p>Line too long (91 > 79 characters):</p>
<a href="softdesk.softdesk.settings.source.html#l93">
<tt><i>93</i> <span class="s1">&#39;NAME&#39;</span><span class="p">:</span> <span class="s1">&#39;django.contrib.auth.password_validation.UserAttributeSimilarityValidator&#39;</span><span class="p">,</span></tt>
</a>
</li><li>
<p>Line too long (81 > 79 characters):</p>
<a href="softdesk.softdesk.settings.source.html#l96">
<tt><i>96</i> <span class="s1">&#39;NAME&#39;</span><span class="p">:</span> <span class="s1">&#39;django.contrib.auth.password_validation.MinimumLengthValidator&#39;</span><span class="p">,</span></tt>
</a>
</li><li>
<p>Line too long (82 > 79 characters):</p>
<a href="softdesk.softdesk.settings.source.html#l99">
<tt><i>99</i> <span class="s1">&#39;NAME&#39;</span><span class="p">:</span> <span class="s1">&#39;django.contrib.auth.password_validation.CommonPasswordValidator&#39;</span><span class="p">,</span></tt>
</a>
</li><li>
<p>Line too long (83 > 79 characters):</p>
<a href="softdesk.softdesk.settings.source.html#l102">
<tt><i>102</i> <span class="s1">&#39;NAME&#39;</span><span class="p">:</span> <span class="s1">&#39;django.contrib.auth.password_validation.NumericPasswordValidator&#39;</span><span class="p">,</span></tt>
</a>
</li><li>
<p>Line too long (105 > 79 characters):</p>
<a href="softdesk.softdesk.settings.source.html#l132">
<tt><i>132</i> <span class="s1">&#39;DEFAULT_AUTHENTICATION_CLASSES&#39;</span><span class="p">:</span> <span class="p">(</span><span class="s1">&#39;rest_framework_simplejwt.authentication.JWTAuthentication&#39;</span><span class="p">,),</span></tt>
</a>
</li><li>
<p>Line too long (86 > 79 characters):</p>
<a href="softdesk.softdesk.settings.source.html#l133">
<tt><i>133</i> <span class="s1">&#39;DEFAULT_PAGINATION_CLASS&#39;</span><span class="p">:</span> <span class="s1">&#39;rest_framework.pagination.LimitOffsetPagination&#39;</span><span class="p">,</span></tt>
</a>
</li>
</ul>
</li>
<li>
<a data-code="W291">
<span class="count sev-2">
4
</span>
<strong>W291:</strong> trailing whitespace
</a>
<ul class="details">
<li>
<a href="softdesk.softdesk.settings.source.html#l41">
<tt><i>41</i> <span class="s1">&#39;rest_framework&#39;</span><span class="p">,</span> </tt>
</a>
</li><li>
<a href="softdesk.softdesk.settings.source.html#l42">
<tt><i>42</i> <span class="s1">&#39;rest_framework_simplejwt&#39;</span><span class="p">,</span> </tt>
</a>
</li><li>
<a href="softdesk.softdesk.settings.source.html#l43">
<tt><i>43</i> <span class="s1">&#39;authentication&#39;</span><span class="p">,</span> </tt>
</a>
</li><li>
<a href="softdesk.softdesk.settings.source.html#l44">
<tt><i>44</i> <span class="s1">&#39;support&#39;</span><span class="p">,</span> </tt>
</a>
</li>
</ul>
</li>
</ul>
</div>
</body>
</html>

View File

@@ -0,0 +1,542 @@
<!DOCTYPE html>
<html>
<head>
<title>softdesk/softdesk/settings.py - flake8 annotated source</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<h1>
<a href="softdesk.softdesk.settings.report.html">
<img src="back.svg" alt="&#x2B05;">
softdesk/softdesk/settings.py source
</a>
</h1>
<div id="doc">
<div id="l1"
class="code sev- "><tt><i>1</i> <span class="sd">&quot;&quot;&quot;</span></tt>
</div>
<div id="l2"
class="code sev- "><tt><i>2</i> <span class="sd">Django settings for softdesk project.</span></tt>
</div>
<div id="l3"
class="code sev- "><tt><i>3</i> &nbsp;</tt>
</div>
<div id="l4"
class="code sev- "><tt><i>4</i> <span class="sd">Generated by &#39;django-admin startproject&#39; using Django 5.2.1.</span></tt>
</div>
<div id="l5"
class="code sev- "><tt><i>5</i> &nbsp;</tt>
</div>
<div id="l6"
class="code sev- "><tt><i>6</i> <span class="sd">For more information on this file, see</span></tt>
</div>
<div id="l7"
class="code sev- "><tt><i>7</i> <span class="sd">https://docs.djangoproject.com/en/5.2/topics/settings/</span></tt>
</div>
<div id="l8"
class="code sev- "><tt><i>8</i> &nbsp;</tt>
</div>
<div id="l9"
class="code sev- "><tt><i>9</i> <span class="sd">For the full list of settings and their values, see</span></tt>
</div>
<div id="l10"
class="code sev- "><tt><i>10</i> <span class="sd">https://docs.djangoproject.com/en/5.2/ref/settings/</span></tt>
</div>
<div id="l11"
class="code sev- "><tt><i>11</i> <span class="sd">&quot;&quot;&quot;</span></tt>
</div>
<div id="l12"
class="code sev- "><tt><i>12</i> &nbsp;</tt>
</div>
<div id="l13"
class="code sev- "><tt><i>13</i> <span class="kn">from</span><span class="w"> </span><span class="nn">pathlib</span><span class="w"> </span><span class="kn">import</span> <span class="n">Path</span></tt>
</div>
<div id="l14"
class="code sev- "><tt><i>14</i> <span class="kn">from</span><span class="w"> </span><span class="nn">datetime</span><span class="w"> </span><span class="kn">import</span> <span class="n">timedelta</span></tt>
</div>
<div id="l15"
class="code sev- "><tt><i>15</i> &nbsp;</tt>
</div>
<div id="l16"
class="code sev- "><tt><i>16</i> <span class="c1"># Build paths inside the project like this: BASE_DIR / &#39;subdir&#39;.</span></tt>
</div>
<div id="l17"
class="code sev- "><tt><i>17</i> <span class="n">BASE_DIR</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="vm">__file__</span><span class="p">)</span><span class="o">.</span><span class="n">resolve</span><span class="p">()</span><span class="o">.</span><span class="n">parent</span><span class="o">.</span><span class="n">parent</span></tt>
</div>
<div id="l18"
class="code sev- "><tt><i>18</i> &nbsp;</tt>
</div>
<div id="l19"
class="code sev- "><tt><i>19</i> &nbsp;</tt>
</div>
<div id="l20"
class="code sev- "><tt><i>20</i> <span class="c1"># Quick-start development settings - unsuitable for production</span></tt>
</div>
<div id="l21"
class="code sev- "><tt><i>21</i> <span class="c1"># See https://docs.djangoproject.com/en/5.2/howto/deployment/checklist/</span></tt>
</div>
<div id="l22"
class="code sev- "><tt><i>22</i> &nbsp;</tt>
</div>
<div id="l23"
class="code sev- "><tt><i>23</i> <span class="c1"># SECURITY WARNING: keep the secret key used in production secret!</span></tt>
</div>
<div id="l24"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (81 > 79 characters)</li>
</ul><tt><i>24</i> <span class="n">SECRET_KEY</span> <span class="o">=</span> <span class="s1">&#39;django-insecure-_vs15jeip&amp;ba(7@n!ptk+b0$4fjhj-esfz1qrhk8+eh4d6k%br&#39;</span></tt>
</div>
<div id="l25"
class="code sev- "><tt><i>25</i> &nbsp;</tt>
</div>
<div id="l26"
class="code sev- "><tt><i>26</i> <span class="c1"># SECURITY WARNING: don&#39;t run with debug turned on in production!</span></tt>
</div>
<div id="l27"
class="code sev- "><tt><i>27</i> <span class="n">DEBUG</span> <span class="o">=</span> <span class="kc">True</span></tt>
</div>
<div id="l28"
class="code sev- "><tt><i>28</i> &nbsp;</tt>
</div>
<div id="l29"
class="code sev- "><tt><i>29</i> <span class="n">ALLOWED_HOSTS</span> <span class="o">=</span> <span class="p">[]</span></tt>
</div>
<div id="l30"
class="code sev- "><tt><i>30</i> &nbsp;</tt>
</div>
<div id="l31"
class="code sev- "><tt><i>31</i> &nbsp;</tt>
</div>
<div id="l32"
class="code sev- "><tt><i>32</i> <span class="c1"># Application definition</span></tt>
</div>
<div id="l33"
class="code sev- "><tt><i>33</i> &nbsp;</tt>
</div>
<div id="l34"
class="code sev- "><tt><i>34</i> <span class="n">INSTALLED_APPS</span> <span class="o">=</span> <span class="p">[</span></tt>
</div>
<div id="l35"
class="code sev- "><tt><i>35</i> <span class="s1">&#39;django.contrib.admin&#39;</span><span class="p">,</span></tt>
</div>
<div id="l36"
class="code sev- "><tt><i>36</i> <span class="s1">&#39;django.contrib.auth&#39;</span><span class="p">,</span></tt>
</div>
<div id="l37"
class="code sev- "><tt><i>37</i> <span class="s1">&#39;django.contrib.contenttypes&#39;</span><span class="p">,</span></tt>
</div>
<div id="l38"
class="code sev- "><tt><i>38</i> <span class="s1">&#39;django.contrib.sessions&#39;</span><span class="p">,</span></tt>
</div>
<div id="l39"
class="code sev- "><tt><i>39</i> <span class="s1">&#39;django.contrib.messages&#39;</span><span class="p">,</span></tt>
</div>
<div id="l40"
class="code sev- "><tt><i>40</i> <span class="s1">&#39;django.contrib.staticfiles&#39;</span><span class="p">,</span></tt>
</div>
<div id="l41"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
W291
</span>
Trailing whitespace</li>
</ul><tt><i>41</i> <span class="s1">&#39;rest_framework&#39;</span><span class="p">,</span> </tt>
</div>
<div id="l42"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
W291
</span>
Trailing whitespace</li>
</ul><tt><i>42</i> <span class="s1">&#39;rest_framework_simplejwt&#39;</span><span class="p">,</span> </tt>
</div>
<div id="l43"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
W291
</span>
Trailing whitespace</li>
</ul><tt><i>43</i> <span class="s1">&#39;authentication&#39;</span><span class="p">,</span> </tt>
</div>
<div id="l44"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
W291
</span>
Trailing whitespace</li>
</ul><tt><i>44</i> <span class="s1">&#39;support&#39;</span><span class="p">,</span> </tt>
</div>
<div id="l45"
class="code sev- "><tt><i>45</i> <span class="p">]</span></tt>
</div>
<div id="l46"
class="code sev- "><tt><i>46</i> &nbsp;</tt>
</div>
<div id="l47"
class="code sev- "><tt><i>47</i> <span class="n">MIDDLEWARE</span> <span class="o">=</span> <span class="p">[</span></tt>
</div>
<div id="l48"
class="code sev- "><tt><i>48</i> <span class="s1">&#39;django.middleware.security.SecurityMiddleware&#39;</span><span class="p">,</span></tt>
</div>
<div id="l49"
class="code sev- "><tt><i>49</i> <span class="s1">&#39;django.contrib.sessions.middleware.SessionMiddleware&#39;</span><span class="p">,</span></tt>
</div>
<div id="l50"
class="code sev- "><tt><i>50</i> <span class="s1">&#39;django.middleware.common.CommonMiddleware&#39;</span><span class="p">,</span></tt>
</div>
<div id="l51"
class="code sev- "><tt><i>51</i> <span class="s1">&#39;django.middleware.csrf.CsrfViewMiddleware&#39;</span><span class="p">,</span></tt>
</div>
<div id="l52"
class="code sev- "><tt><i>52</i> <span class="s1">&#39;django.contrib.auth.middleware.AuthenticationMiddleware&#39;</span><span class="p">,</span></tt>
</div>
<div id="l53"
class="code sev- "><tt><i>53</i> <span class="s1">&#39;django.contrib.messages.middleware.MessageMiddleware&#39;</span><span class="p">,</span></tt>
</div>
<div id="l54"
class="code sev- "><tt><i>54</i> <span class="s1">&#39;django.middleware.clickjacking.XFrameOptionsMiddleware&#39;</span><span class="p">,</span></tt>
</div>
<div id="l55"
class="code sev- "><tt><i>55</i> <span class="p">]</span></tt>
</div>
<div id="l56"
class="code sev- "><tt><i>56</i> &nbsp;</tt>
</div>
<div id="l57"
class="code sev- "><tt><i>57</i> <span class="n">ROOT_URLCONF</span> <span class="o">=</span> <span class="s1">&#39;softdesk.urls&#39;</span></tt>
</div>
<div id="l58"
class="code sev- "><tt><i>58</i> &nbsp;</tt>
</div>
<div id="l59"
class="code sev- "><tt><i>59</i> <span class="n">TEMPLATES</span> <span class="o">=</span> <span class="p">[</span></tt>
</div>
<div id="l60"
class="code sev- "><tt><i>60</i> <span class="p">{</span></tt>
</div>
<div id="l61"
class="code sev- "><tt><i>61</i> <span class="s1">&#39;BACKEND&#39;</span><span class="p">:</span> <span class="s1">&#39;django.template.backends.django.DjangoTemplates&#39;</span><span class="p">,</span></tt>
</div>
<div id="l62"
class="code sev- "><tt><i>62</i> <span class="s1">&#39;DIRS&#39;</span><span class="p">:</span> <span class="p">[],</span></tt>
</div>
<div id="l63"
class="code sev- "><tt><i>63</i> <span class="s1">&#39;APP_DIRS&#39;</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span></tt>
</div>
<div id="l64"
class="code sev- "><tt><i>64</i> <span class="s1">&#39;OPTIONS&#39;</span><span class="p">:</span> <span class="p">{</span></tt>
</div>
<div id="l65"
class="code sev- "><tt><i>65</i> <span class="s1">&#39;context_processors&#39;</span><span class="p">:</span> <span class="p">[</span></tt>
</div>
<div id="l66"
class="code sev- "><tt><i>66</i> <span class="s1">&#39;django.template.context_processors.request&#39;</span><span class="p">,</span></tt>
</div>
<div id="l67"
class="code sev- "><tt><i>67</i> <span class="s1">&#39;django.contrib.auth.context_processors.auth&#39;</span><span class="p">,</span></tt>
</div>
<div id="l68"
class="code sev- "><tt><i>68</i> <span class="s1">&#39;django.contrib.messages.context_processors.messages&#39;</span><span class="p">,</span></tt>
</div>
<div id="l69"
class="code sev- "><tt><i>69</i> <span class="p">],</span></tt>
</div>
<div id="l70"
class="code sev- "><tt><i>70</i> <span class="p">},</span></tt>
</div>
<div id="l71"
class="code sev- "><tt><i>71</i> <span class="p">},</span></tt>
</div>
<div id="l72"
class="code sev- "><tt><i>72</i> <span class="p">]</span></tt>
</div>
<div id="l73"
class="code sev- "><tt><i>73</i> &nbsp;</tt>
</div>
<div id="l74"
class="code sev- "><tt><i>74</i> <span class="n">WSGI_APPLICATION</span> <span class="o">=</span> <span class="s1">&#39;softdesk.wsgi.application&#39;</span></tt>
</div>
<div id="l75"
class="code sev- "><tt><i>75</i> &nbsp;</tt>
</div>
<div id="l76"
class="code sev- "><tt><i>76</i> &nbsp;</tt>
</div>
<div id="l77"
class="code sev- "><tt><i>77</i> <span class="c1"># Database</span></tt>
</div>
<div id="l78"
class="code sev- "><tt><i>78</i> <span class="c1"># https://docs.djangoproject.com/en/5.2/ref/settings/#databases</span></tt>
</div>
<div id="l79"
class="code sev- "><tt><i>79</i> &nbsp;</tt>
</div>
<div id="l80"
class="code sev- "><tt><i>80</i> <span class="n">DATABASES</span> <span class="o">=</span> <span class="p">{</span></tt>
</div>
<div id="l81"
class="code sev- "><tt><i>81</i> <span class="s1">&#39;default&#39;</span><span class="p">:</span> <span class="p">{</span></tt>
</div>
<div id="l82"
class="code sev- "><tt><i>82</i> <span class="s1">&#39;ENGINE&#39;</span><span class="p">:</span> <span class="s1">&#39;django.db.backends.sqlite3&#39;</span><span class="p">,</span></tt>
</div>
<div id="l83"
class="code sev- "><tt><i>83</i> <span class="s1">&#39;NAME&#39;</span><span class="p">:</span> <span class="n">BASE_DIR</span> <span class="o">/</span> <span class="s1">&#39;db.sqlite3&#39;</span><span class="p">,</span></tt>
</div>
<div id="l84"
class="code sev- "><tt><i>84</i> <span class="p">}</span></tt>
</div>
<div id="l85"
class="code sev- "><tt><i>85</i> <span class="p">}</span></tt>
</div>
<div id="l86"
class="code sev- "><tt><i>86</i> &nbsp;</tt>
</div>
<div id="l87"
class="code sev- "><tt><i>87</i> &nbsp;</tt>
</div>
<div id="l88"
class="code sev- "><tt><i>88</i> <span class="c1"># Password validation</span></tt>
</div>
<div id="l89"
class="code sev- "><tt><i>89</i> <span class="c1"># https://docs.djangoproject.com/en/5.2/ref/settings/#auth-password-validators</span></tt>
</div>
<div id="l90"
class="code sev- "><tt><i>90</i> &nbsp;</tt>
</div>
<div id="l91"
class="code sev- "><tt><i>91</i> <span class="n">AUTH_PASSWORD_VALIDATORS</span> <span class="o">=</span> <span class="p">[</span></tt>
</div>
<div id="l92"
class="code sev- "><tt><i>92</i> <span class="p">{</span></tt>
</div>
<div id="l93"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (91 > 79 characters)</li>
</ul><tt><i>93</i> <span class="s1">&#39;NAME&#39;</span><span class="p">:</span> <span class="s1">&#39;django.contrib.auth.password_validation.UserAttributeSimilarityValidator&#39;</span><span class="p">,</span></tt>
</div>
<div id="l94"
class="code sev- "><tt><i>94</i> <span class="p">},</span></tt>
</div>
<div id="l95"
class="code sev- "><tt><i>95</i> <span class="p">{</span></tt>
</div>
<div id="l96"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (81 > 79 characters)</li>
</ul><tt><i>96</i> <span class="s1">&#39;NAME&#39;</span><span class="p">:</span> <span class="s1">&#39;django.contrib.auth.password_validation.MinimumLengthValidator&#39;</span><span class="p">,</span></tt>
</div>
<div id="l97"
class="code sev- "><tt><i>97</i> <span class="p">},</span></tt>
</div>
<div id="l98"
class="code sev- "><tt><i>98</i> <span class="p">{</span></tt>
</div>
<div id="l99"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (82 > 79 characters)</li>
</ul><tt><i>99</i> <span class="s1">&#39;NAME&#39;</span><span class="p">:</span> <span class="s1">&#39;django.contrib.auth.password_validation.CommonPasswordValidator&#39;</span><span class="p">,</span></tt>
</div>
<div id="l100"
class="code sev- "><tt><i>100</i> <span class="p">},</span></tt>
</div>
<div id="l101"
class="code sev- "><tt><i>101</i> <span class="p">{</span></tt>
</div>
<div id="l102"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (83 > 79 characters)</li>
</ul><tt><i>102</i> <span class="s1">&#39;NAME&#39;</span><span class="p">:</span> <span class="s1">&#39;django.contrib.auth.password_validation.NumericPasswordValidator&#39;</span><span class="p">,</span></tt>
</div>
<div id="l103"
class="code sev- "><tt><i>103</i> <span class="p">},</span></tt>
</div>
<div id="l104"
class="code sev- "><tt><i>104</i> <span class="p">]</span></tt>
</div>
<div id="l105"
class="code sev- "><tt><i>105</i> &nbsp;</tt>
</div>
<div id="l106"
class="code sev- "><tt><i>106</i> &nbsp;</tt>
</div>
<div id="l107"
class="code sev- "><tt><i>107</i> <span class="c1"># Internationalization</span></tt>
</div>
<div id="l108"
class="code sev- "><tt><i>108</i> <span class="c1"># https://docs.djangoproject.com/en/5.2/topics/i18n/</span></tt>
</div>
<div id="l109"
class="code sev- "><tt><i>109</i> &nbsp;</tt>
</div>
<div id="l110"
class="code sev- "><tt><i>110</i> <span class="n">LANGUAGE_CODE</span> <span class="o">=</span> <span class="s1">&#39;en-us&#39;</span></tt>
</div>
<div id="l111"
class="code sev- "><tt><i>111</i> &nbsp;</tt>
</div>
<div id="l112"
class="code sev- "><tt><i>112</i> <span class="n">TIME_ZONE</span> <span class="o">=</span> <span class="s1">&#39;UTC&#39;</span></tt>
</div>
<div id="l113"
class="code sev- "><tt><i>113</i> &nbsp;</tt>
</div>
<div id="l114"
class="code sev- "><tt><i>114</i> <span class="n">USE_I18N</span> <span class="o">=</span> <span class="kc">True</span></tt>
</div>
<div id="l115"
class="code sev- "><tt><i>115</i> &nbsp;</tt>
</div>
<div id="l116"
class="code sev- "><tt><i>116</i> <span class="n">USE_TZ</span> <span class="o">=</span> <span class="kc">True</span></tt>
</div>
<div id="l117"
class="code sev- "><tt><i>117</i> &nbsp;</tt>
</div>
<div id="l118"
class="code sev- "><tt><i>118</i> &nbsp;</tt>
</div>
<div id="l119"
class="code sev- "><tt><i>119</i> <span class="c1"># Static files (CSS, JavaScript, Images)</span></tt>
</div>
<div id="l120"
class="code sev- "><tt><i>120</i> <span class="c1"># https://docs.djangoproject.com/en/5.2/howto/static-files/</span></tt>
</div>
<div id="l121"
class="code sev- "><tt><i>121</i> &nbsp;</tt>
</div>
<div id="l122"
class="code sev- "><tt><i>122</i> <span class="n">STATIC_URL</span> <span class="o">=</span> <span class="s1">&#39;static/&#39;</span></tt>
</div>
<div id="l123"
class="code sev- "><tt><i>123</i> &nbsp;</tt>
</div>
<div id="l124"
class="code sev- "><tt><i>124</i> <span class="c1"># Default primary key field type</span></tt>
</div>
<div id="l125"
class="code sev- "><tt><i>125</i> <span class="c1"># https://docs.djangoproject.com/en/5.2/ref/settings/#default-auto-field</span></tt>
</div>
<div id="l126"
class="code sev- "><tt><i>126</i> &nbsp;</tt>
</div>
<div id="l127"
class="code sev- "><tt><i>127</i> <span class="n">DEFAULT_AUTO_FIELD</span> <span class="o">=</span> <span class="s1">&#39;django.db.models.BigAutoField&#39;</span></tt>
</div>
<div id="l128"
class="code sev- "><tt><i>128</i> &nbsp;</tt>
</div>
<div id="l129"
class="code sev- "><tt><i>129</i> <span class="n">AUTH_USER_MODEL</span> <span class="o">=</span> <span class="s1">&#39;authentication.User&#39;</span></tt>
</div>
<div id="l130"
class="code sev- "><tt><i>130</i> &nbsp;</tt>
</div>
<div id="l131"
class="code sev- "><tt><i>131</i> <span class="n">REST_FRAMEWORK</span> <span class="o">=</span> <span class="p">{</span></tt>
</div>
<div id="l132"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (105 > 79 characters)</li>
</ul><tt><i>132</i> <span class="s1">&#39;DEFAULT_AUTHENTICATION_CLASSES&#39;</span><span class="p">:</span> <span class="p">(</span><span class="s1">&#39;rest_framework_simplejwt.authentication.JWTAuthentication&#39;</span><span class="p">,),</span></tt>
</div>
<div id="l133"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (86 > 79 characters)</li>
</ul><tt><i>133</i> <span class="s1">&#39;DEFAULT_PAGINATION_CLASS&#39;</span><span class="p">:</span> <span class="s1">&#39;rest_framework.pagination.LimitOffsetPagination&#39;</span><span class="p">,</span></tt>
</div>
<div id="l134"
class="code sev- "><tt><i>134</i> <span class="s1">&#39;PAGE_SIZE&#39;</span><span class="p">:</span> <span class="mi">5</span></tt>
</div>
<div id="l135"
class="code sev- "><tt><i>135</i> <span class="p">}</span></tt>
</div>
<div id="l136"
class="code sev- "><tt><i>136</i> &nbsp;</tt>
</div>
<div id="l137"
class="code sev- "><tt><i>137</i> <span class="n">SIMPLE_JWT</span> <span class="o">=</span> <span class="p">{</span></tt>
</div>
<div id="l138"
class="code sev- "><tt><i>138</i> <span class="s1">&#39;ACCESS_TOKEN_LIFETIME&#39;</span><span class="p">:</span> <span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=</span><span class="mi">30</span><span class="p">),</span></tt>
</div>
<div id="l139"
class="code sev- "><tt><i>139</i> <span class="s1">&#39;REFRESH_TOKEN_LIFETIME&#39;</span><span class="p">:</span> <span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=</span><span class="mi">30</span><span class="p">),</span></tt>
</div>
<div id="l140"
class="code sev- "><tt><i>140</i> <span class="p">}</span></tt>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,96 @@
<!DOCTYPE html>
<html>
<head>
<title>flake8 violations: softdesk/support/admin.py</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
<script>
function bindHandler(link) {
var code = link.getAttribute('data-code');
var key = location.pathname + '#' + code;
var ul = link.parentNode.querySelector('.details');
if (sessionStorage[key] != 'open') {
ul.style.display = 'none';
}
link.addEventListener('click', function (event) {
if (!ul.style.display || ul.style.display == 'none') {
ul.style.display = 'block';
sessionStorage[key] = 'open';
} else {
ul.style.display = 'none';
sessionStorage[key] = 'closed';
}
});
}
window.addEventListener('DOMContentLoaded', function () {
var links = document.querySelectorAll('#index > li > a');
for (var i = 0; i < links.length; i++) {
bindHandler(links[i]);
}
});
</script>
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<p id="srclink">
<a title="View full annotated source"
href="softdesk.support.admin.source.html">
<img src="file.svg" alt="&#x2261;">
</a></p>
<h1>
<a href="index.html">
<img src="back.svg" alt="&#x2B05;">
softdesk/support/admin.py
</a>
</h1>
<ul id="index">
<li>
<a data-code="E302">
<span class="count sev-2">
2
</span>
<strong>E302:</strong> expected 2 blank lines, found 1
</a>
<ul class="details">
<li>
<a href="softdesk.support.admin.source.html#l5">
<tt><i>5</i> <span class="k">class</span><span class="w"> </span><span class="nc">AdminProject</span><span class="p">(</span><span class="n">admin</span><span class="o">.</span><span class="n">ModelAdmin</span><span class="p">):</span></tt>
</a>
</li><li>
<a href="softdesk.support.admin.source.html#l12">
<tt><i>12</i> <span class="k">class</span><span class="w"> </span><span class="nc">AdminIssue</span><span class="p">(</span><span class="n">admin</span><span class="o">.</span><span class="n">ModelAdmin</span><span class="p">):</span></tt>
</a>
</li>
</ul>
</li>
<li>
<a data-code="W391">
<span class="count sev-2">
1
</span>
<strong>W391:</strong> blank line at end of file
</a>
<ul class="details">
<li>
<a href="softdesk.support.admin.source.html#l21">
<tt><i>21</i> &nbsp;</tt>
</a>
</li>
</ul>
</li>
</ul>
</div>
</body>
</html>

View File

@@ -0,0 +1,101 @@
<!DOCTYPE html>
<html>
<head>
<title>softdesk/support/admin.py - flake8 annotated source</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<h1>
<a href="softdesk.support.admin.report.html">
<img src="back.svg" alt="&#x2B05;">
softdesk/support/admin.py source
</a>
</h1>
<div id="doc">
<div id="l1"
class="code sev- "><tt><i>1</i> <span class="kn">from</span><span class="w"> </span><span class="nn">django.contrib</span><span class="w"> </span><span class="kn">import</span> <span class="n">admin</span></tt>
</div>
<div id="l2"
class="code sev- "><tt><i>2</i> <span class="kn">from</span><span class="w"> </span><span class="nn">support.models</span><span class="w"> </span><span class="kn">import</span> <span class="n">Project</span><span class="p">,</span> <span class="n">Issue</span><span class="p">,</span> <span class="n">Comment</span><span class="p">,</span> <span class="n">ProjectContributor</span></tt>
</div>
<div id="l3"
class="code sev- "><tt><i>3</i> <span class="kn">from</span><span class="w"> </span><span class="nn">authentication.models</span><span class="w"> </span><span class="kn">import</span> <span class="n">User</span></tt>
</div>
<div id="l4"
class="code sev- "><tt><i>4</i> &nbsp;</tt>
</div>
<div id="l5"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E302
</span>
Expected 2 blank lines, found 1</li>
</ul><tt><i>5</i> <span class="k">class</span><span class="w"> </span><span class="nc">AdminProject</span><span class="p">(</span><span class="n">admin</span><span class="o">.</span><span class="n">ModelAdmin</span><span class="p">):</span></tt>
</div>
<div id="l6"
class="code sev- "><tt><i>6</i> <span class="n">list_display</span> <span class="o">=</span> <span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">,</span> <span class="s1">&#39;title&#39;</span><span class="p">,</span> <span class="s1">&#39;author&#39;</span><span class="p">,</span> <span class="s1">&#39;contributors&#39;</span><span class="p">)</span></tt>
</div>
<div id="l7"
class="code sev- "><tt><i>7</i> &nbsp;</tt>
</div>
<div id="l8"
class="code sev- "><tt><i>8</i> <span class="nd">@admin</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">description</span><span class="o">=</span><span class="s1">&#39;contributors&#39;</span><span class="p">)</span></tt>
</div>
<div id="l9"
class="code sev- "><tt><i>9</i> <span class="k">def</span><span class="w"> </span><span class="nf">contributors</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">obj</span><span class="p">):</span></tt>
</div>
<div id="l10"
class="code sev- "><tt><i>10</i> <span class="k">return</span> <span class="n">obj</span><span class="o">.</span><span class="n">contributors</span></tt>
</div>
<div id="l11"
class="code sev- "><tt><i>11</i> &nbsp;</tt>
</div>
<div id="l12"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E302
</span>
Expected 2 blank lines, found 1</li>
</ul><tt><i>12</i> <span class="k">class</span><span class="w"> </span><span class="nc">AdminIssue</span><span class="p">(</span><span class="n">admin</span><span class="o">.</span><span class="n">ModelAdmin</span><span class="p">):</span></tt>
</div>
<div id="l13"
class="code sev- "><tt><i>13</i> <span class="n">list_display</span> <span class="o">=</span> <span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">,</span> <span class="s1">&#39;title&#39;</span><span class="p">,</span> <span class="s1">&#39;author&#39;</span><span class="p">,</span> <span class="s1">&#39;project&#39;</span><span class="p">)</span></tt>
</div>
<div id="l14"
class="code sev- "><tt><i>14</i> &nbsp;</tt>
</div>
<div id="l15"
class="code sev- "><tt><i>15</i> &nbsp;</tt>
</div>
<div id="l16"
class="code sev- "><tt><i>16</i> <span class="n">admin</span><span class="o">.</span><span class="n">site</span><span class="o">.</span><span class="n">register</span><span class="p">(</span><span class="n">User</span><span class="p">)</span></tt>
</div>
<div id="l17"
class="code sev- "><tt><i>17</i> <span class="n">admin</span><span class="o">.</span><span class="n">site</span><span class="o">.</span><span class="n">register</span><span class="p">(</span><span class="n">Project</span><span class="p">,</span> <span class="n">AdminProject</span><span class="p">)</span></tt>
</div>
<div id="l18"
class="code sev- "><tt><i>18</i> <span class="n">admin</span><span class="o">.</span><span class="n">site</span><span class="o">.</span><span class="n">register</span><span class="p">(</span><span class="n">Issue</span><span class="p">,</span> <span class="n">AdminIssue</span><span class="p">)</span></tt>
</div>
<div id="l19"
class="code sev- "><tt><i>19</i> <span class="n">admin</span><span class="o">.</span><span class="n">site</span><span class="o">.</span><span class="n">register</span><span class="p">(</span><span class="n">Comment</span><span class="p">)</span></tt>
</div>
<div id="l20"
class="code sev- "><tt><i>20</i> <span class="n">admin</span><span class="o">.</span><span class="n">site</span><span class="o">.</span><span class="n">register</span><span class="p">(</span><span class="n">ProjectContributor</span><span class="p">)</span></tt>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,189 @@
<!DOCTYPE html>
<html>
<head>
<title>flake8 violations: softdesk/support/migrations/0001_initial.py</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
<script>
function bindHandler(link) {
var code = link.getAttribute('data-code');
var key = location.pathname + '#' + code;
var ul = link.parentNode.querySelector('.details');
if (sessionStorage[key] != 'open') {
ul.style.display = 'none';
}
link.addEventListener('click', function (event) {
if (!ul.style.display || ul.style.display == 'none') {
ul.style.display = 'block';
sessionStorage[key] = 'open';
} else {
ul.style.display = 'none';
sessionStorage[key] = 'closed';
}
});
}
window.addEventListener('DOMContentLoaded', function () {
var links = document.querySelectorAll('#index > li > a');
for (var i = 0; i < links.length; i++) {
bindHandler(links[i]);
}
});
</script>
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<p id="srclink">
<a title="View full annotated source"
href="softdesk.support.migrations.0001_initial.source.html">
<img src="file.svg" alt="&#x2261;">
</a></p>
<h1>
<a href="index.html">
<img src="back.svg" alt="&#x2B05;">
softdesk/support/migrations/0001_initial.py
</a>
</h1>
<ul id="index">
<li>
<a data-code="E501">
<span class="count sev-2">
17
</span>
<strong>E501:</strong> line too long (117 > 79 characters)
(and 11 similar)
</a>
<ul class="details">
<li>
<p>Line too long (117 > 79 characters):</p>
<a href="softdesk.support.migrations.0001_initial.source.html#l20">
<tt><i>20</i> <span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">BigAutoField</span><span class="p">(</span><span class="n">auto_created</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">primary_key</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">serialize</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;ID&#39;</span><span class="p">)),</span></tt>
</a>
</li><li>
<p>Line too long (128 > 79 characters):</p>
<a href="softdesk.support.migrations.0001_initial.source.html#l22">
<tt><i>22</i> <span class="p">(</span><span class="s1">&#39;contributor&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">DO_NOTHING</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">AUTH_USER_MODEL</span><span class="p">)),</span></tt>
</a>
</li><li>
<p>Line too long (117 > 79 characters):</p>
<a href="softdesk.support.migrations.0001_initial.source.html#l28">
<tt><i>28</i> <span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">BigAutoField</span><span class="p">(</span><span class="n">auto_created</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">primary_key</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">serialize</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;ID&#39;</span><span class="p">)),</span></tt>
</a>
</li><li>
<p>Line too long (82 > 79 characters):</p>
<a href="softdesk.support.migrations.0001_initial.source.html#l29">
<tt><i>29</i> <span class="p">(</span><span class="s1">&#39;title&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">255</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;title&#39;</span><span class="p">)),</span></tt>
</a>
</li><li>
<p>Line too long (149 > 79 characters):</p>
<a href="softdesk.support.migrations.0001_initial.source.html#l32">
<tt><i>32</i> <span class="p">(</span><span class="s1">&#39;status&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">15</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="p">[(</span><span class="s1">&#39;ToDo&#39;</span><span class="p">,</span> <span class="s1">&#39;Todo&#39;</span><span class="p">),</span> <span class="p">(</span><span class="s1">&#39;InProgress&#39;</span><span class="p">,</span> <span class="s1">&#39;Inprogress&#39;</span><span class="p">),</span> <span class="p">(</span><span class="s1">&#39;Finished&#39;</span><span class="p">,</span> <span class="s1">&#39;Finished&#39;</span><span class="p">)])),</span></tt>
</a>
</li><li>
<p>Line too long (123 > 79 characters):</p>
<a href="softdesk.support.migrations.0001_initial.source.html#l33">
<tt><i>33</i> <span class="p">(</span><span class="s1">&#39;priority&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">15</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="p">[(</span><span class="s1">&#39;L&#39;</span><span class="p">,</span> <span class="s1">&#39;Low&#39;</span><span class="p">),</span> <span class="p">(</span><span class="s1">&#39;M&#39;</span><span class="p">,</span> <span class="s1">&#39;Medium&#39;</span><span class="p">),</span> <span class="p">(</span><span class="s1">&#39;H&#39;</span><span class="p">,</span> <span class="s1">&#39;High&#39;</span><span class="p">)])),</span></tt>
</a>
</li><li>
<p>Line too long (130 > 79 characters):</p>
<a href="softdesk.support.migrations.0001_initial.source.html#l34">
<tt><i>34</i> <span class="p">(</span><span class="s1">&#39;tag&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">15</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="p">[(</span><span class="s1">&#39;Bug&#39;</span><span class="p">,</span> <span class="s1">&#39;Bug&#39;</span><span class="p">),</span> <span class="p">(</span><span class="s1">&#39;Feature&#39;</span><span class="p">,</span> <span class="s1">&#39;Feature&#39;</span><span class="p">),</span> <span class="p">(</span><span class="s1">&#39;Task&#39;</span><span class="p">,</span> <span class="s1">&#39;Task&#39;</span><span class="p">)])),</span></tt>
</a>
</li><li>
<p>Line too long (120 > 79 characters):</p>
<a href="softdesk.support.migrations.0001_initial.source.html#l35">
<tt><i>35</i> <span class="p">(</span><span class="s1">&#39;author&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">DO_NOTHING</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="s1">&#39;support.contributor&#39;</span><span class="p">)),</span></tt>
</a>
</li><li>
<p>Line too long (117 > 79 characters):</p>
<a href="softdesk.support.migrations.0001_initial.source.html#l41">
<tt><i>41</i> <span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">BigAutoField</span><span class="p">(</span><span class="n">auto_created</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">primary_key</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">serialize</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;ID&#39;</span><span class="p">)),</span></tt>
</a>
</li><li>
<p>Line too long (120 > 79 characters):</p>
<a href="softdesk.support.migrations.0001_initial.source.html#l45">
<tt><i>45</i> <span class="p">(</span><span class="s1">&#39;author&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">DO_NOTHING</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="s1">&#39;support.contributor&#39;</span><span class="p">)),</span></tt>
</a>
</li><li>
<p>Line too long (110 > 79 characters):</p>
<a href="softdesk.support.migrations.0001_initial.source.html#l46">
<tt><i>46</i> <span class="p">(</span><span class="s1">&#39;issue&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="s1">&#39;support.issue&#39;</span><span class="p">)),</span></tt>
</a>
</li><li>
<p>Line too long (117 > 79 characters):</p>
<a href="softdesk.support.migrations.0001_initial.source.html#l52">
<tt><i>52</i> <span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">BigAutoField</span><span class="p">(</span><span class="n">auto_created</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">primary_key</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">serialize</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;ID&#39;</span><span class="p">)),</span></tt>
</a>
</li><li>
<p>Line too long (158 > 79 characters):</p>
<a href="softdesk.support.migrations.0001_initial.source.html#l55">
<tt><i>55</i> <span class="p">(</span><span class="s1">&#39;type&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">choices</span><span class="o">=</span><span class="p">[(</span><span class="s1">&#39;BackEnd&#39;</span><span class="p">,</span> <span class="s1">&#39;Backend&#39;</span><span class="p">),</span> <span class="p">(</span><span class="s1">&#39;FrontEnd&#39;</span><span class="p">,</span> <span class="s1">&#39;Frontend&#39;</span><span class="p">),</span> <span class="p">(</span><span class="s1">&#39;iOS&#39;</span><span class="p">,</span> <span class="s1">&#39;Ios&#39;</span><span class="p">),</span> <span class="p">(</span><span class="s1">&#39;Android&#39;</span><span class="p">,</span> <span class="s1">&#39;Android&#39;</span><span class="p">)],</span> <span class="n">max_length</span><span class="o">=</span><span class="mi">10</span><span class="p">)),</span></tt>
</a>
</li><li>
<p>Line too long (143 > 79 characters):</p>
<a href="softdesk.support.migrations.0001_initial.source.html#l57">
<tt><i>57</i> <span class="p">(</span><span class="s1">&#39;author&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">DO_NOTHING</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;author&#39;</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="s1">&#39;support.contributor&#39;</span><span class="p">)),</span></tt>
</a>
</li><li>
<p>Line too long (146 > 79 characters):</p>
<a href="softdesk.support.migrations.0001_initial.source.html#l58">
<tt><i>58</i> <span class="p">(</span><span class="s1">&#39;contributors&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span><span class="p">(</span><span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;contribution&#39;</span><span class="p">,</span> <span class="n">through</span><span class="o">=</span><span class="s1">&#39;support.Contributor&#39;</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">AUTH_USER_MODEL</span><span class="p">)),</span></tt>
</a>
</li><li>
<p>Line too long (127 > 79 characters):</p>
<a href="softdesk.support.migrations.0001_initial.source.html#l64">
<tt><i>64</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">SET_NULL</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="s1">&#39;support.project&#39;</span><span class="p">),</span></tt>
</a>
</li><li>
<p>Line too long (127 > 79 characters):</p>
<a href="softdesk.support.migrations.0001_initial.source.html#l69">
<tt><i>69</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;project&#39;</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="s1">&#39;support.project&#39;</span><span class="p">),</span></tt>
</a>
</li>
</ul>
</li>
</ul>
</div>
</body>
</html>

View File

@@ -0,0 +1,389 @@
<!DOCTYPE html>
<html>
<head>
<title>softdesk/support/migrations/0001_initial.py - flake8 annotated source</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<h1>
<a href="softdesk.support.migrations.0001_initial.report.html">
<img src="back.svg" alt="&#x2B05;">
softdesk/support/migrations/0001_initial.py source
</a>
</h1>
<div id="doc">
<div id="l1"
class="code sev- "><tt><i>1</i> <span class="c1"># Generated by Django 5.2.1 on 2025-05-23 03:58</span></tt>
</div>
<div id="l2"
class="code sev- "><tt><i>2</i> &nbsp;</tt>
</div>
<div id="l3"
class="code sev- "><tt><i>3</i> <span class="kn">import</span><span class="w"> </span><span class="nn">django.db.models.deletion</span></tt>
</div>
<div id="l4"
class="code sev- "><tt><i>4</i> <span class="kn">from</span><span class="w"> </span><span class="nn">django.conf</span><span class="w"> </span><span class="kn">import</span> <span class="n">settings</span></tt>
</div>
<div id="l5"
class="code sev- "><tt><i>5</i> <span class="kn">from</span><span class="w"> </span><span class="nn">django.db</span><span class="w"> </span><span class="kn">import</span> <span class="n">migrations</span><span class="p">,</span> <span class="n">models</span></tt>
</div>
<div id="l6"
class="code sev- "><tt><i>6</i> &nbsp;</tt>
</div>
<div id="l7"
class="code sev- "><tt><i>7</i> &nbsp;</tt>
</div>
<div id="l8"
class="code sev- "><tt><i>8</i> <span class="k">class</span><span class="w"> </span><span class="nc">Migration</span><span class="p">(</span><span class="n">migrations</span><span class="o">.</span><span class="n">Migration</span><span class="p">):</span></tt>
</div>
<div id="l9"
class="code sev- "><tt><i>9</i> &nbsp;</tt>
</div>
<div id="l10"
class="code sev- "><tt><i>10</i> <span class="n">initial</span> <span class="o">=</span> <span class="kc">True</span></tt>
</div>
<div id="l11"
class="code sev- "><tt><i>11</i> &nbsp;</tt>
</div>
<div id="l12"
class="code sev- "><tt><i>12</i> <span class="n">dependencies</span> <span class="o">=</span> <span class="p">[</span></tt>
</div>
<div id="l13"
class="code sev- "><tt><i>13</i> <span class="n">migrations</span><span class="o">.</span><span class="n">swappable_dependency</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">AUTH_USER_MODEL</span><span class="p">),</span></tt>
</div>
<div id="l14"
class="code sev- "><tt><i>14</i> <span class="p">]</span></tt>
</div>
<div id="l15"
class="code sev- "><tt><i>15</i> &nbsp;</tt>
</div>
<div id="l16"
class="code sev- "><tt><i>16</i> <span class="n">operations</span> <span class="o">=</span> <span class="p">[</span></tt>
</div>
<div id="l17"
class="code sev- "><tt><i>17</i> <span class="n">migrations</span><span class="o">.</span><span class="n">CreateModel</span><span class="p">(</span></tt>
</div>
<div id="l18"
class="code sev- "><tt><i>18</i> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;Contributor&#39;</span><span class="p">,</span></tt>
</div>
<div id="l19"
class="code sev- "><tt><i>19</i> <span class="n">fields</span><span class="o">=</span><span class="p">[</span></tt>
</div>
<div id="l20"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (117 > 79 characters)</li>
</ul><tt><i>20</i> <span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">BigAutoField</span><span class="p">(</span><span class="n">auto_created</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">primary_key</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">serialize</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;ID&#39;</span><span class="p">)),</span></tt>
</div>
<div id="l21"
class="code sev- "><tt><i>21</i> <span class="p">(</span><span class="s1">&#39;data&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">max_length</span><span class="o">=</span><span class="mi">255</span><span class="p">)),</span></tt>
</div>
<div id="l22"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (128 > 79 characters)</li>
</ul><tt><i>22</i> <span class="p">(</span><span class="s1">&#39;contributor&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">DO_NOTHING</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">AUTH_USER_MODEL</span><span class="p">)),</span></tt>
</div>
<div id="l23"
class="code sev- "><tt><i>23</i> <span class="p">],</span></tt>
</div>
<div id="l24"
class="code sev- "><tt><i>24</i> <span class="p">),</span></tt>
</div>
<div id="l25"
class="code sev- "><tt><i>25</i> <span class="n">migrations</span><span class="o">.</span><span class="n">CreateModel</span><span class="p">(</span></tt>
</div>
<div id="l26"
class="code sev- "><tt><i>26</i> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;Issue&#39;</span><span class="p">,</span></tt>
</div>
<div id="l27"
class="code sev- "><tt><i>27</i> <span class="n">fields</span><span class="o">=</span><span class="p">[</span></tt>
</div>
<div id="l28"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (117 > 79 characters)</li>
</ul><tt><i>28</i> <span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">BigAutoField</span><span class="p">(</span><span class="n">auto_created</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">primary_key</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">serialize</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;ID&#39;</span><span class="p">)),</span></tt>
</div>
<div id="l29"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (82 > 79 characters)</li>
</ul><tt><i>29</i> <span class="p">(</span><span class="s1">&#39;title&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">255</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;title&#39;</span><span class="p">)),</span></tt>
</div>
<div id="l30"
class="code sev- "><tt><i>30</i> <span class="p">(</span><span class="s1">&#39;date_created&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">DateTimeField</span><span class="p">(</span><span class="n">auto_now_add</span><span class="o">=</span><span class="kc">True</span><span class="p">)),</span></tt>
</div>
<div id="l31"
class="code sev- "><tt><i>31</i> <span class="p">(</span><span class="s1">&#39;description&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">TextField</span><span class="p">()),</span></tt>
</div>
<div id="l32"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (149 > 79 characters)</li>
</ul><tt><i>32</i> <span class="p">(</span><span class="s1">&#39;status&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">15</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="p">[(</span><span class="s1">&#39;ToDo&#39;</span><span class="p">,</span> <span class="s1">&#39;Todo&#39;</span><span class="p">),</span> <span class="p">(</span><span class="s1">&#39;InProgress&#39;</span><span class="p">,</span> <span class="s1">&#39;Inprogress&#39;</span><span class="p">),</span> <span class="p">(</span><span class="s1">&#39;Finished&#39;</span><span class="p">,</span> <span class="s1">&#39;Finished&#39;</span><span class="p">)])),</span></tt>
</div>
<div id="l33"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (123 > 79 characters)</li>
</ul><tt><i>33</i> <span class="p">(</span><span class="s1">&#39;priority&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">15</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="p">[(</span><span class="s1">&#39;L&#39;</span><span class="p">,</span> <span class="s1">&#39;Low&#39;</span><span class="p">),</span> <span class="p">(</span><span class="s1">&#39;M&#39;</span><span class="p">,</span> <span class="s1">&#39;Medium&#39;</span><span class="p">),</span> <span class="p">(</span><span class="s1">&#39;H&#39;</span><span class="p">,</span> <span class="s1">&#39;High&#39;</span><span class="p">)])),</span></tt>
</div>
<div id="l34"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (130 > 79 characters)</li>
</ul><tt><i>34</i> <span class="p">(</span><span class="s1">&#39;tag&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">15</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="p">[(</span><span class="s1">&#39;Bug&#39;</span><span class="p">,</span> <span class="s1">&#39;Bug&#39;</span><span class="p">),</span> <span class="p">(</span><span class="s1">&#39;Feature&#39;</span><span class="p">,</span> <span class="s1">&#39;Feature&#39;</span><span class="p">),</span> <span class="p">(</span><span class="s1">&#39;Task&#39;</span><span class="p">,</span> <span class="s1">&#39;Task&#39;</span><span class="p">)])),</span></tt>
</div>
<div id="l35"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (120 > 79 characters)</li>
</ul><tt><i>35</i> <span class="p">(</span><span class="s1">&#39;author&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">DO_NOTHING</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="s1">&#39;support.contributor&#39;</span><span class="p">)),</span></tt>
</div>
<div id="l36"
class="code sev- "><tt><i>36</i> <span class="p">],</span></tt>
</div>
<div id="l37"
class="code sev- "><tt><i>37</i> <span class="p">),</span></tt>
</div>
<div id="l38"
class="code sev- "><tt><i>38</i> <span class="n">migrations</span><span class="o">.</span><span class="n">CreateModel</span><span class="p">(</span></tt>
</div>
<div id="l39"
class="code sev- "><tt><i>39</i> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;Comment&#39;</span><span class="p">,</span></tt>
</div>
<div id="l40"
class="code sev- "><tt><i>40</i> <span class="n">fields</span><span class="o">=</span><span class="p">[</span></tt>
</div>
<div id="l41"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (117 > 79 characters)</li>
</ul><tt><i>41</i> <span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">BigAutoField</span><span class="p">(</span><span class="n">auto_created</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">primary_key</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">serialize</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;ID&#39;</span><span class="p">)),</span></tt>
</div>
<div id="l42"
class="code sev- "><tt><i>42</i> <span class="p">(</span><span class="s1">&#39;title&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">255</span><span class="p">)),</span></tt>
</div>
<div id="l43"
class="code sev- "><tt><i>43</i> <span class="p">(</span><span class="s1">&#39;date_created&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">DateTimeField</span><span class="p">(</span><span class="n">auto_now_add</span><span class="o">=</span><span class="kc">True</span><span class="p">)),</span></tt>
</div>
<div id="l44"
class="code sev- "><tt><i>44</i> <span class="p">(</span><span class="s1">&#39;description&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">4000</span><span class="p">)),</span></tt>
</div>
<div id="l45"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (120 > 79 characters)</li>
</ul><tt><i>45</i> <span class="p">(</span><span class="s1">&#39;author&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">DO_NOTHING</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="s1">&#39;support.contributor&#39;</span><span class="p">)),</span></tt>
</div>
<div id="l46"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (110 > 79 characters)</li>
</ul><tt><i>46</i> <span class="p">(</span><span class="s1">&#39;issue&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="s1">&#39;support.issue&#39;</span><span class="p">)),</span></tt>
</div>
<div id="l47"
class="code sev- "><tt><i>47</i> <span class="p">],</span></tt>
</div>
<div id="l48"
class="code sev- "><tt><i>48</i> <span class="p">),</span></tt>
</div>
<div id="l49"
class="code sev- "><tt><i>49</i> <span class="n">migrations</span><span class="o">.</span><span class="n">CreateModel</span><span class="p">(</span></tt>
</div>
<div id="l50"
class="code sev- "><tt><i>50</i> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;Project&#39;</span><span class="p">,</span></tt>
</div>
<div id="l51"
class="code sev- "><tt><i>51</i> <span class="n">fields</span><span class="o">=</span><span class="p">[</span></tt>
</div>
<div id="l52"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (117 > 79 characters)</li>
</ul><tt><i>52</i> <span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">BigAutoField</span><span class="p">(</span><span class="n">auto_created</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">primary_key</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">serialize</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;ID&#39;</span><span class="p">)),</span></tt>
</div>
<div id="l53"
class="code sev- "><tt><i>53</i> <span class="p">(</span><span class="s1">&#39;title&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">255</span><span class="p">)),</span></tt>
</div>
<div id="l54"
class="code sev- "><tt><i>54</i> <span class="p">(</span><span class="s1">&#39;date_created&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">DateTimeField</span><span class="p">(</span><span class="n">auto_now_add</span><span class="o">=</span><span class="kc">True</span><span class="p">)),</span></tt>
</div>
<div id="l55"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (158 > 79 characters)</li>
</ul><tt><i>55</i> <span class="p">(</span><span class="s1">&#39;type&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">choices</span><span class="o">=</span><span class="p">[(</span><span class="s1">&#39;BackEnd&#39;</span><span class="p">,</span> <span class="s1">&#39;Backend&#39;</span><span class="p">),</span> <span class="p">(</span><span class="s1">&#39;FrontEnd&#39;</span><span class="p">,</span> <span class="s1">&#39;Frontend&#39;</span><span class="p">),</span> <span class="p">(</span><span class="s1">&#39;iOS&#39;</span><span class="p">,</span> <span class="s1">&#39;Ios&#39;</span><span class="p">),</span> <span class="p">(</span><span class="s1">&#39;Android&#39;</span><span class="p">,</span> <span class="s1">&#39;Android&#39;</span><span class="p">)],</span> <span class="n">max_length</span><span class="o">=</span><span class="mi">10</span><span class="p">)),</span></tt>
</div>
<div id="l56"
class="code sev- "><tt><i>56</i> <span class="p">(</span><span class="s1">&#39;description&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">4000</span><span class="p">)),</span></tt>
</div>
<div id="l57"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (143 > 79 characters)</li>
</ul><tt><i>57</i> <span class="p">(</span><span class="s1">&#39;author&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">DO_NOTHING</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;author&#39;</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="s1">&#39;support.contributor&#39;</span><span class="p">)),</span></tt>
</div>
<div id="l58"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (146 > 79 characters)</li>
</ul><tt><i>58</i> <span class="p">(</span><span class="s1">&#39;contributors&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span><span class="p">(</span><span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;contribution&#39;</span><span class="p">,</span> <span class="n">through</span><span class="o">=</span><span class="s1">&#39;support.Contributor&#39;</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">AUTH_USER_MODEL</span><span class="p">)),</span></tt>
</div>
<div id="l59"
class="code sev- "><tt><i>59</i> <span class="p">],</span></tt>
</div>
<div id="l60"
class="code sev- "><tt><i>60</i> <span class="p">),</span></tt>
</div>
<div id="l61"
class="code sev- "><tt><i>61</i> <span class="n">migrations</span><span class="o">.</span><span class="n">AddField</span><span class="p">(</span></tt>
</div>
<div id="l62"
class="code sev- "><tt><i>62</i> <span class="n">model_name</span><span class="o">=</span><span class="s1">&#39;issue&#39;</span><span class="p">,</span></tt>
</div>
<div id="l63"
class="code sev- "><tt><i>63</i> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;project&#39;</span><span class="p">,</span></tt>
</div>
<div id="l64"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (127 > 79 characters)</li>
</ul><tt><i>64</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">SET_NULL</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="s1">&#39;support.project&#39;</span><span class="p">),</span></tt>
</div>
<div id="l65"
class="code sev- "><tt><i>65</i> <span class="p">),</span></tt>
</div>
<div id="l66"
class="code sev- "><tt><i>66</i> <span class="n">migrations</span><span class="o">.</span><span class="n">AddField</span><span class="p">(</span></tt>
</div>
<div id="l67"
class="code sev- "><tt><i>67</i> <span class="n">model_name</span><span class="o">=</span><span class="s1">&#39;contributor&#39;</span><span class="p">,</span></tt>
</div>
<div id="l68"
class="code sev- "><tt><i>68</i> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;project&#39;</span><span class="p">,</span></tt>
</div>
<div id="l69"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (127 > 79 characters)</li>
</ul><tt><i>69</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;project&#39;</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="s1">&#39;support.project&#39;</span><span class="p">),</span></tt>
</div>
<div id="l70"
class="code sev- "><tt><i>70</i> <span class="p">),</span></tt>
</div>
<div id="l71"
class="code sev- "><tt><i>71</i> <span class="p">]</span></tt>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,73 @@
<!DOCTYPE html>
<html>
<head>
<title>flake8 violations: softdesk/support/migrations/0002_project_active_alter_issue_project.py</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
<script>
function bindHandler(link) {
var code = link.getAttribute('data-code');
var key = location.pathname + '#' + code;
var ul = link.parentNode.querySelector('.details');
if (sessionStorage[key] != 'open') {
ul.style.display = 'none';
}
link.addEventListener('click', function (event) {
if (!ul.style.display || ul.style.display == 'none') {
ul.style.display = 'block';
sessionStorage[key] = 'open';
} else {
ul.style.display = 'none';
sessionStorage[key] = 'closed';
}
});
}
window.addEventListener('DOMContentLoaded', function () {
var links = document.querySelectorAll('#index > li > a');
for (var i = 0; i < links.length; i++) {
bindHandler(links[i]);
}
});
</script>
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<p id="srclink">
<a title="View full annotated source"
href="softdesk.support.migrations.0002_project_active_alter_issue_project.source.html">
<img src="file.svg" alt="&#x2261;">
</a></p>
<h1>
<a href="index.html">
<img src="back.svg" alt="&#x2B05;">
softdesk/support/migrations/0002_project_active_alter_issue_project.py
</a>
</h1>
<ul id="index">
<li>
<a data-code="E501">
<span class="count sev-2">
1
</span>
<strong>E501:</strong> line too long (126 > 79 characters)
</a>
<ul class="details">
<li>
<a href="softdesk.support.migrations.0002_project_active_alter_issue_project.source.html#l22">
<tt><i>22</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="s1">&#39;support.project&#39;</span><span class="p">),</span></tt>
</a>
</li>
</ul>
</li>
</ul>
</div>
</body>
</html>

View File

@@ -0,0 +1,104 @@
<!DOCTYPE html>
<html>
<head>
<title>softdesk/support/migrations/0002_project_active_alter_issue_project.py - flake8 annotated source</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<h1>
<a href="softdesk.support.migrations.0002_project_active_alter_issue_project.report.html">
<img src="back.svg" alt="&#x2B05;">
softdesk/support/migrations/0002_project_active_alter_issue_project.py source
</a>
</h1>
<div id="doc">
<div id="l1"
class="code sev- "><tt><i>1</i> <span class="c1"># Generated by Django 5.2.1 on 2025-05-25 19:20</span></tt>
</div>
<div id="l2"
class="code sev- "><tt><i>2</i> &nbsp;</tt>
</div>
<div id="l3"
class="code sev- "><tt><i>3</i> <span class="kn">import</span><span class="w"> </span><span class="nn">django.db.models.deletion</span></tt>
</div>
<div id="l4"
class="code sev- "><tt><i>4</i> <span class="kn">from</span><span class="w"> </span><span class="nn">django.db</span><span class="w"> </span><span class="kn">import</span> <span class="n">migrations</span><span class="p">,</span> <span class="n">models</span></tt>
</div>
<div id="l5"
class="code sev- "><tt><i>5</i> &nbsp;</tt>
</div>
<div id="l6"
class="code sev- "><tt><i>6</i> &nbsp;</tt>
</div>
<div id="l7"
class="code sev- "><tt><i>7</i> <span class="k">class</span><span class="w"> </span><span class="nc">Migration</span><span class="p">(</span><span class="n">migrations</span><span class="o">.</span><span class="n">Migration</span><span class="p">):</span></tt>
</div>
<div id="l8"
class="code sev- "><tt><i>8</i> &nbsp;</tt>
</div>
<div id="l9"
class="code sev- "><tt><i>9</i> <span class="n">dependencies</span> <span class="o">=</span> <span class="p">[</span></tt>
</div>
<div id="l10"
class="code sev- "><tt><i>10</i> <span class="p">(</span><span class="s1">&#39;support&#39;</span><span class="p">,</span> <span class="s1">&#39;0001_initial&#39;</span><span class="p">),</span></tt>
</div>
<div id="l11"
class="code sev- "><tt><i>11</i> <span class="p">]</span></tt>
</div>
<div id="l12"
class="code sev- "><tt><i>12</i> &nbsp;</tt>
</div>
<div id="l13"
class="code sev- "><tt><i>13</i> <span class="n">operations</span> <span class="o">=</span> <span class="p">[</span></tt>
</div>
<div id="l14"
class="code sev- "><tt><i>14</i> <span class="n">migrations</span><span class="o">.</span><span class="n">AddField</span><span class="p">(</span></tt>
</div>
<div id="l15"
class="code sev- "><tt><i>15</i> <span class="n">model_name</span><span class="o">=</span><span class="s1">&#39;project&#39;</span><span class="p">,</span></tt>
</div>
<div id="l16"
class="code sev- "><tt><i>16</i> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;active&#39;</span><span class="p">,</span></tt>
</div>
<div id="l17"
class="code sev- "><tt><i>17</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span></tt>
</div>
<div id="l18"
class="code sev- "><tt><i>18</i> <span class="p">),</span></tt>
</div>
<div id="l19"
class="code sev- "><tt><i>19</i> <span class="n">migrations</span><span class="o">.</span><span class="n">AlterField</span><span class="p">(</span></tt>
</div>
<div id="l20"
class="code sev- "><tt><i>20</i> <span class="n">model_name</span><span class="o">=</span><span class="s1">&#39;issue&#39;</span><span class="p">,</span></tt>
</div>
<div id="l21"
class="code sev- "><tt><i>21</i> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;project&#39;</span><span class="p">,</span></tt>
</div>
<div id="l22"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (126 > 79 characters)</li>
</ul><tt><i>22</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="s1">&#39;support.project&#39;</span><span class="p">),</span></tt>
</div>
<div id="l23"
class="code sev- "><tt><i>23</i> <span class="p">),</span></tt>
</div>
<div id="l24"
class="code sev- "><tt><i>24</i> <span class="p">]</span></tt>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,73 @@
<!DOCTYPE html>
<html>
<head>
<title>flake8 violations: softdesk/support/migrations/0004_alter_project_author.py</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
<script>
function bindHandler(link) {
var code = link.getAttribute('data-code');
var key = location.pathname + '#' + code;
var ul = link.parentNode.querySelector('.details');
if (sessionStorage[key] != 'open') {
ul.style.display = 'none';
}
link.addEventListener('click', function (event) {
if (!ul.style.display || ul.style.display == 'none') {
ul.style.display = 'block';
sessionStorage[key] = 'open';
} else {
ul.style.display = 'none';
sessionStorage[key] = 'closed';
}
});
}
window.addEventListener('DOMContentLoaded', function () {
var links = document.querySelectorAll('#index > li > a');
for (var i = 0; i < links.length; i++) {
bindHandler(links[i]);
}
});
</script>
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<p id="srclink">
<a title="View full annotated source"
href="softdesk.support.migrations.0004_alter_project_author.source.html">
<img src="file.svg" alt="&#x2261;">
</a></p>
<h1>
<a href="index.html">
<img src="back.svg" alt="&#x2B05;">
softdesk/support/migrations/0004_alter_project_author.py
</a>
</h1>
<ul id="index">
<li>
<a data-code="E501">
<span class="count sev-2">
1
</span>
<strong>E501:</strong> line too long (145 > 79 characters)
</a>
<ul class="details">
<li>
<a href="softdesk.support.migrations.0004_alter_project_author.source.html#l17">
<tt><i>17</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">DO_NOTHING</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;author&#39;</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="s1">&#39;support.contributor&#39;</span><span class="p">),</span></tt>
</a>
</li>
</ul>
</li>
</ul>
</div>
</body>
</html>

View File

@@ -0,0 +1,89 @@
<!DOCTYPE html>
<html>
<head>
<title>softdesk/support/migrations/0004_alter_project_author.py - flake8 annotated source</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<h1>
<a href="softdesk.support.migrations.0004_alter_project_author.report.html">
<img src="back.svg" alt="&#x2B05;">
softdesk/support/migrations/0004_alter_project_author.py source
</a>
</h1>
<div id="doc">
<div id="l1"
class="code sev- "><tt><i>1</i> <span class="c1"># Generated by Django 5.2.1 on 2025-05-25 19:36</span></tt>
</div>
<div id="l2"
class="code sev- "><tt><i>2</i> &nbsp;</tt>
</div>
<div id="l3"
class="code sev- "><tt><i>3</i> <span class="kn">import</span><span class="w"> </span><span class="nn">django.db.models.deletion</span></tt>
</div>
<div id="l4"
class="code sev- "><tt><i>4</i> <span class="kn">from</span><span class="w"> </span><span class="nn">django.db</span><span class="w"> </span><span class="kn">import</span> <span class="n">migrations</span><span class="p">,</span> <span class="n">models</span></tt>
</div>
<div id="l5"
class="code sev- "><tt><i>5</i> &nbsp;</tt>
</div>
<div id="l6"
class="code sev- "><tt><i>6</i> &nbsp;</tt>
</div>
<div id="l7"
class="code sev- "><tt><i>7</i> <span class="k">class</span><span class="w"> </span><span class="nc">Migration</span><span class="p">(</span><span class="n">migrations</span><span class="o">.</span><span class="n">Migration</span><span class="p">):</span></tt>
</div>
<div id="l8"
class="code sev- "><tt><i>8</i> &nbsp;</tt>
</div>
<div id="l9"
class="code sev- "><tt><i>9</i> <span class="n">dependencies</span> <span class="o">=</span> <span class="p">[</span></tt>
</div>
<div id="l10"
class="code sev- "><tt><i>10</i> <span class="p">(</span><span class="s1">&#39;support&#39;</span><span class="p">,</span> <span class="s1">&#39;0003_rename_contributor_contributor_user&#39;</span><span class="p">),</span></tt>
</div>
<div id="l11"
class="code sev- "><tt><i>11</i> <span class="p">]</span></tt>
</div>
<div id="l12"
class="code sev- "><tt><i>12</i> &nbsp;</tt>
</div>
<div id="l13"
class="code sev- "><tt><i>13</i> <span class="n">operations</span> <span class="o">=</span> <span class="p">[</span></tt>
</div>
<div id="l14"
class="code sev- "><tt><i>14</i> <span class="n">migrations</span><span class="o">.</span><span class="n">AlterField</span><span class="p">(</span></tt>
</div>
<div id="l15"
class="code sev- "><tt><i>15</i> <span class="n">model_name</span><span class="o">=</span><span class="s1">&#39;project&#39;</span><span class="p">,</span></tt>
</div>
<div id="l16"
class="code sev- "><tt><i>16</i> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;author&#39;</span><span class="p">,</span></tt>
</div>
<div id="l17"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (145 > 79 characters)</li>
</ul><tt><i>17</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">DO_NOTHING</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;author&#39;</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="s1">&#39;support.contributor&#39;</span><span class="p">),</span></tt>
</div>
<div id="l18"
class="code sev- "><tt><i>18</i> <span class="p">),</span></tt>
</div>
<div id="l19"
class="code sev- "><tt><i>19</i> <span class="p">]</span></tt>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,73 @@
<!DOCTYPE html>
<html>
<head>
<title>flake8 violations: softdesk/support/migrations/0005_alter_project_author.py</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
<script>
function bindHandler(link) {
var code = link.getAttribute('data-code');
var key = location.pathname + '#' + code;
var ul = link.parentNode.querySelector('.details');
if (sessionStorage[key] != 'open') {
ul.style.display = 'none';
}
link.addEventListener('click', function (event) {
if (!ul.style.display || ul.style.display == 'none') {
ul.style.display = 'block';
sessionStorage[key] = 'open';
} else {
ul.style.display = 'none';
sessionStorage[key] = 'closed';
}
});
}
window.addEventListener('DOMContentLoaded', function () {
var links = document.querySelectorAll('#index > li > a');
for (var i = 0; i < links.length; i++) {
bindHandler(links[i]);
}
});
</script>
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<p id="srclink">
<a title="View full annotated source"
href="softdesk.support.migrations.0005_alter_project_author.source.html">
<img src="file.svg" alt="&#x2261;">
</a></p>
<h1>
<a href="index.html">
<img src="back.svg" alt="&#x2B05;">
softdesk/support/migrations/0005_alter_project_author.py
</a>
</h1>
<ul id="index">
<li>
<a data-code="E501">
<span class="count sev-2">
1
</span>
<strong>E501:</strong> line too long (144 > 79 characters)
</a>
<ul class="details">
<li>
<a href="softdesk.support.migrations.0005_alter_project_author.source.html#l17">
<tt><i>17</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">DO_NOTHING</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;author&#39;</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="s1">&#39;support.contributor&#39;</span><span class="p">),</span></tt>
</a>
</li>
</ul>
</li>
</ul>
</div>
</body>
</html>

View File

@@ -0,0 +1,89 @@
<!DOCTYPE html>
<html>
<head>
<title>softdesk/support/migrations/0005_alter_project_author.py - flake8 annotated source</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<h1>
<a href="softdesk.support.migrations.0005_alter_project_author.report.html">
<img src="back.svg" alt="&#x2B05;">
softdesk/support/migrations/0005_alter_project_author.py source
</a>
</h1>
<div id="doc">
<div id="l1"
class="code sev- "><tt><i>1</i> <span class="c1"># Generated by Django 5.2.1 on 2025-05-25 19:37</span></tt>
</div>
<div id="l2"
class="code sev- "><tt><i>2</i> &nbsp;</tt>
</div>
<div id="l3"
class="code sev- "><tt><i>3</i> <span class="kn">import</span><span class="w"> </span><span class="nn">django.db.models.deletion</span></tt>
</div>
<div id="l4"
class="code sev- "><tt><i>4</i> <span class="kn">from</span><span class="w"> </span><span class="nn">django.db</span><span class="w"> </span><span class="kn">import</span> <span class="n">migrations</span><span class="p">,</span> <span class="n">models</span></tt>
</div>
<div id="l5"
class="code sev- "><tt><i>5</i> &nbsp;</tt>
</div>
<div id="l6"
class="code sev- "><tt><i>6</i> &nbsp;</tt>
</div>
<div id="l7"
class="code sev- "><tt><i>7</i> <span class="k">class</span><span class="w"> </span><span class="nc">Migration</span><span class="p">(</span><span class="n">migrations</span><span class="o">.</span><span class="n">Migration</span><span class="p">):</span></tt>
</div>
<div id="l8"
class="code sev- "><tt><i>8</i> &nbsp;</tt>
</div>
<div id="l9"
class="code sev- "><tt><i>9</i> <span class="n">dependencies</span> <span class="o">=</span> <span class="p">[</span></tt>
</div>
<div id="l10"
class="code sev- "><tt><i>10</i> <span class="p">(</span><span class="s1">&#39;support&#39;</span><span class="p">,</span> <span class="s1">&#39;0004_alter_project_author&#39;</span><span class="p">),</span></tt>
</div>
<div id="l11"
class="code sev- "><tt><i>11</i> <span class="p">]</span></tt>
</div>
<div id="l12"
class="code sev- "><tt><i>12</i> &nbsp;</tt>
</div>
<div id="l13"
class="code sev- "><tt><i>13</i> <span class="n">operations</span> <span class="o">=</span> <span class="p">[</span></tt>
</div>
<div id="l14"
class="code sev- "><tt><i>14</i> <span class="n">migrations</span><span class="o">.</span><span class="n">AlterField</span><span class="p">(</span></tt>
</div>
<div id="l15"
class="code sev- "><tt><i>15</i> <span class="n">model_name</span><span class="o">=</span><span class="s1">&#39;project&#39;</span><span class="p">,</span></tt>
</div>
<div id="l16"
class="code sev- "><tt><i>16</i> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;author&#39;</span><span class="p">,</span></tt>
</div>
<div id="l17"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (144 > 79 characters)</li>
</ul><tt><i>17</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">DO_NOTHING</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;author&#39;</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="s1">&#39;support.contributor&#39;</span><span class="p">),</span></tt>
</div>
<div id="l18"
class="code sev- "><tt><i>18</i> <span class="p">),</span></tt>
</div>
<div id="l19"
class="code sev- "><tt><i>19</i> <span class="p">]</span></tt>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,73 @@
<!DOCTYPE html>
<html>
<head>
<title>flake8 violations: softdesk/support/migrations/0006_alter_project_author.py</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
<script>
function bindHandler(link) {
var code = link.getAttribute('data-code');
var key = location.pathname + '#' + code;
var ul = link.parentNode.querySelector('.details');
if (sessionStorage[key] != 'open') {
ul.style.display = 'none';
}
link.addEventListener('click', function (event) {
if (!ul.style.display || ul.style.display == 'none') {
ul.style.display = 'block';
sessionStorage[key] = 'open';
} else {
ul.style.display = 'none';
sessionStorage[key] = 'closed';
}
});
}
window.addEventListener('DOMContentLoaded', function () {
var links = document.querySelectorAll('#index > li > a');
for (var i = 0; i < links.length; i++) {
bindHandler(links[i]);
}
});
</script>
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<p id="srclink">
<a title="View full annotated source"
href="softdesk.support.migrations.0006_alter_project_author.source.html">
<img src="file.svg" alt="&#x2261;">
</a></p>
<h1>
<a href="index.html">
<img src="back.svg" alt="&#x2B05;">
softdesk/support/migrations/0006_alter_project_author.py
</a>
</h1>
<ul id="index">
<li>
<a data-code="E501">
<span class="count sev-2">
1
</span>
<strong>E501:</strong> line too long (156 > 79 characters)
</a>
<ul class="details">
<li>
<a href="softdesk.support.migrations.0006_alter_project_author.source.html#l17">
<tt><i>17</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">DO_NOTHING</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;author&#39;</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="s1">&#39;support.contributor&#39;</span><span class="p">),</span></tt>
</a>
</li>
</ul>
</li>
</ul>
</div>
</body>
</html>

View File

@@ -0,0 +1,89 @@
<!DOCTYPE html>
<html>
<head>
<title>softdesk/support/migrations/0006_alter_project_author.py - flake8 annotated source</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<h1>
<a href="softdesk.support.migrations.0006_alter_project_author.report.html">
<img src="back.svg" alt="&#x2B05;">
softdesk/support/migrations/0006_alter_project_author.py source
</a>
</h1>
<div id="doc">
<div id="l1"
class="code sev- "><tt><i>1</i> <span class="c1"># Generated by Django 5.2.1 on 2025-05-25 19:37</span></tt>
</div>
<div id="l2"
class="code sev- "><tt><i>2</i> &nbsp;</tt>
</div>
<div id="l3"
class="code sev- "><tt><i>3</i> <span class="kn">import</span><span class="w"> </span><span class="nn">django.db.models.deletion</span></tt>
</div>
<div id="l4"
class="code sev- "><tt><i>4</i> <span class="kn">from</span><span class="w"> </span><span class="nn">django.db</span><span class="w"> </span><span class="kn">import</span> <span class="n">migrations</span><span class="p">,</span> <span class="n">models</span></tt>
</div>
<div id="l5"
class="code sev- "><tt><i>5</i> &nbsp;</tt>
</div>
<div id="l6"
class="code sev- "><tt><i>6</i> &nbsp;</tt>
</div>
<div id="l7"
class="code sev- "><tt><i>7</i> <span class="k">class</span><span class="w"> </span><span class="nc">Migration</span><span class="p">(</span><span class="n">migrations</span><span class="o">.</span><span class="n">Migration</span><span class="p">):</span></tt>
</div>
<div id="l8"
class="code sev- "><tt><i>8</i> &nbsp;</tt>
</div>
<div id="l9"
class="code sev- "><tt><i>9</i> <span class="n">dependencies</span> <span class="o">=</span> <span class="p">[</span></tt>
</div>
<div id="l10"
class="code sev- "><tt><i>10</i> <span class="p">(</span><span class="s1">&#39;support&#39;</span><span class="p">,</span> <span class="s1">&#39;0005_alter_project_author&#39;</span><span class="p">),</span></tt>
</div>
<div id="l11"
class="code sev- "><tt><i>11</i> <span class="p">]</span></tt>
</div>
<div id="l12"
class="code sev- "><tt><i>12</i> &nbsp;</tt>
</div>
<div id="l13"
class="code sev- "><tt><i>13</i> <span class="n">operations</span> <span class="o">=</span> <span class="p">[</span></tt>
</div>
<div id="l14"
class="code sev- "><tt><i>14</i> <span class="n">migrations</span><span class="o">.</span><span class="n">AlterField</span><span class="p">(</span></tt>
</div>
<div id="l15"
class="code sev- "><tt><i>15</i> <span class="n">model_name</span><span class="o">=</span><span class="s1">&#39;project&#39;</span><span class="p">,</span></tt>
</div>
<div id="l16"
class="code sev- "><tt><i>16</i> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;author&#39;</span><span class="p">,</span></tt>
</div>
<div id="l17"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (156 > 79 characters)</li>
</ul><tt><i>17</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">DO_NOTHING</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;author&#39;</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="s1">&#39;support.contributor&#39;</span><span class="p">),</span></tt>
</div>
<div id="l18"
class="code sev- "><tt><i>18</i> <span class="p">),</span></tt>
</div>
<div id="l19"
class="code sev- "><tt><i>19</i> <span class="p">]</span></tt>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,73 @@
<!DOCTYPE html>
<html>
<head>
<title>flake8 violations: softdesk/support/migrations/0007_contributor_active_alter_project_author.py</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
<script>
function bindHandler(link) {
var code = link.getAttribute('data-code');
var key = location.pathname + '#' + code;
var ul = link.parentNode.querySelector('.details');
if (sessionStorage[key] != 'open') {
ul.style.display = 'none';
}
link.addEventListener('click', function (event) {
if (!ul.style.display || ul.style.display == 'none') {
ul.style.display = 'block';
sessionStorage[key] = 'open';
} else {
ul.style.display = 'none';
sessionStorage[key] = 'closed';
}
});
}
window.addEventListener('DOMContentLoaded', function () {
var links = document.querySelectorAll('#index > li > a');
for (var i = 0; i < links.length; i++) {
bindHandler(links[i]);
}
});
</script>
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<p id="srclink">
<a title="View full annotated source"
href="softdesk.support.migrations.0007_contributor_active_alter_project_author.source.html">
<img src="file.svg" alt="&#x2261;">
</a></p>
<h1>
<a href="index.html">
<img src="back.svg" alt="&#x2B05;">
softdesk/support/migrations/0007_contributor_active_alter_project_author.py
</a>
</h1>
<ul id="index">
<li>
<a data-code="E501">
<span class="count sev-2">
1
</span>
<strong>E501:</strong> line too long (159 > 79 characters)
</a>
<ul class="details">
<li>
<a href="softdesk.support.migrations.0007_contributor_active_alter_project_author.source.html#l24">
<tt><i>24</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">DO_NOTHING</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;author&#39;</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">AUTH_USER_MODEL</span><span class="p">),</span></tt>
</a>
</li>
</ul>
</li>
</ul>
</div>
</body>
</html>

View File

@@ -0,0 +1,110 @@
<!DOCTYPE html>
<html>
<head>
<title>softdesk/support/migrations/0007_contributor_active_alter_project_author.py - flake8 annotated source</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<h1>
<a href="softdesk.support.migrations.0007_contributor_active_alter_project_author.report.html">
<img src="back.svg" alt="&#x2B05;">
softdesk/support/migrations/0007_contributor_active_alter_project_author.py source
</a>
</h1>
<div id="doc">
<div id="l1"
class="code sev- "><tt><i>1</i> <span class="c1"># Generated by Django 5.2.1 on 2025-05-25 19:49</span></tt>
</div>
<div id="l2"
class="code sev- "><tt><i>2</i> &nbsp;</tt>
</div>
<div id="l3"
class="code sev- "><tt><i>3</i> <span class="kn">import</span><span class="w"> </span><span class="nn">django.db.models.deletion</span></tt>
</div>
<div id="l4"
class="code sev- "><tt><i>4</i> <span class="kn">from</span><span class="w"> </span><span class="nn">django.conf</span><span class="w"> </span><span class="kn">import</span> <span class="n">settings</span></tt>
</div>
<div id="l5"
class="code sev- "><tt><i>5</i> <span class="kn">from</span><span class="w"> </span><span class="nn">django.db</span><span class="w"> </span><span class="kn">import</span> <span class="n">migrations</span><span class="p">,</span> <span class="n">models</span></tt>
</div>
<div id="l6"
class="code sev- "><tt><i>6</i> &nbsp;</tt>
</div>
<div id="l7"
class="code sev- "><tt><i>7</i> &nbsp;</tt>
</div>
<div id="l8"
class="code sev- "><tt><i>8</i> <span class="k">class</span><span class="w"> </span><span class="nc">Migration</span><span class="p">(</span><span class="n">migrations</span><span class="o">.</span><span class="n">Migration</span><span class="p">):</span></tt>
</div>
<div id="l9"
class="code sev- "><tt><i>9</i> &nbsp;</tt>
</div>
<div id="l10"
class="code sev- "><tt><i>10</i> <span class="n">dependencies</span> <span class="o">=</span> <span class="p">[</span></tt>
</div>
<div id="l11"
class="code sev- "><tt><i>11</i> <span class="p">(</span><span class="s1">&#39;support&#39;</span><span class="p">,</span> <span class="s1">&#39;0006_alter_project_author&#39;</span><span class="p">),</span></tt>
</div>
<div id="l12"
class="code sev- "><tt><i>12</i> <span class="n">migrations</span><span class="o">.</span><span class="n">swappable_dependency</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">AUTH_USER_MODEL</span><span class="p">),</span></tt>
</div>
<div id="l13"
class="code sev- "><tt><i>13</i> <span class="p">]</span></tt>
</div>
<div id="l14"
class="code sev- "><tt><i>14</i> &nbsp;</tt>
</div>
<div id="l15"
class="code sev- "><tt><i>15</i> <span class="n">operations</span> <span class="o">=</span> <span class="p">[</span></tt>
</div>
<div id="l16"
class="code sev- "><tt><i>16</i> <span class="n">migrations</span><span class="o">.</span><span class="n">AddField</span><span class="p">(</span></tt>
</div>
<div id="l17"
class="code sev- "><tt><i>17</i> <span class="n">model_name</span><span class="o">=</span><span class="s1">&#39;contributor&#39;</span><span class="p">,</span></tt>
</div>
<div id="l18"
class="code sev- "><tt><i>18</i> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;active&#39;</span><span class="p">,</span></tt>
</div>
<div id="l19"
class="code sev- "><tt><i>19</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span></tt>
</div>
<div id="l20"
class="code sev- "><tt><i>20</i> <span class="p">),</span></tt>
</div>
<div id="l21"
class="code sev- "><tt><i>21</i> <span class="n">migrations</span><span class="o">.</span><span class="n">AlterField</span><span class="p">(</span></tt>
</div>
<div id="l22"
class="code sev- "><tt><i>22</i> <span class="n">model_name</span><span class="o">=</span><span class="s1">&#39;project&#39;</span><span class="p">,</span></tt>
</div>
<div id="l23"
class="code sev- "><tt><i>23</i> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;author&#39;</span><span class="p">,</span></tt>
</div>
<div id="l24"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (159 > 79 characters)</li>
</ul><tt><i>24</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">DO_NOTHING</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;author&#39;</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">AUTH_USER_MODEL</span><span class="p">),</span></tt>
</div>
<div id="l25"
class="code sev- "><tt><i>25</i> <span class="p">),</span></tt>
</div>
<div id="l26"
class="code sev- "><tt><i>26</i> <span class="p">]</span></tt>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,119 @@
<!DOCTYPE html>
<html>
<head>
<title>flake8 violations: softdesk/support/migrations/0010_alter_comment_author_alter_issue_author_and_more.py</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
<script>
function bindHandler(link) {
var code = link.getAttribute('data-code');
var key = location.pathname + '#' + code;
var ul = link.parentNode.querySelector('.details');
if (sessionStorage[key] != 'open') {
ul.style.display = 'none';
}
link.addEventListener('click', function (event) {
if (!ul.style.display || ul.style.display == 'none') {
ul.style.display = 'block';
sessionStorage[key] = 'open';
} else {
ul.style.display = 'none';
sessionStorage[key] = 'closed';
}
});
}
window.addEventListener('DOMContentLoaded', function () {
var links = document.querySelectorAll('#index > li > a');
for (var i = 0; i < links.length; i++) {
bindHandler(links[i]);
}
});
</script>
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<p id="srclink">
<a title="View full annotated source"
href="softdesk.support.migrations.0010_alter_comment_author_alter_issue_author_and_more.source.html">
<img src="file.svg" alt="&#x2261;">
</a></p>
<h1>
<a href="index.html">
<img src="back.svg" alt="&#x2B05;">
softdesk/support/migrations/0010_alter_comment_author_alter_issue_author_and_more.py
</a>
</h1>
<ul id="index">
<li>
<a data-code="E501">
<span class="count sev-2">
7
</span>
<strong>E501:</strong> line too long (155 > 79 characters)
(and 5 similar)
</a>
<ul class="details">
<li>
<p>Line too long (155 > 79 characters):</p>
<a href="softdesk.support.migrations.0010_alter_comment_author_alter_issue_author_and_more.source.html#l19">
<tt><i>19</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">DO_NOTHING</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;comment_author&#39;</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">AUTH_USER_MODEL</span><span class="p">),</span></tt>
</a>
</li><li>
<p>Line too long (153 > 79 characters):</p>
<a href="softdesk.support.migrations.0010_alter_comment_author_alter_issue_author_and_more.source.html#l24">
<tt><i>24</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">DO_NOTHING</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;issue_author&#39;</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">AUTH_USER_MODEL</span><span class="p">),</span></tt>
</a>
</li><li>
<p>Line too long (155 > 79 characters):</p>
<a href="softdesk.support.migrations.0010_alter_comment_author_alter_issue_author_and_more.source.html#l29">
<tt><i>29</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">DO_NOTHING</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;project_author&#39;</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">AUTH_USER_MODEL</span><span class="p">),</span></tt>
</a>
</li><li>
<p>Line too long (117 > 79 characters):</p>
<a href="softdesk.support.migrations.0010_alter_comment_author_alter_issue_author_and_more.source.html#l34">
<tt><i>34</i> <span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">BigAutoField</span><span class="p">(</span><span class="n">auto_created</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">primary_key</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">serialize</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;ID&#39;</span><span class="p">)),</span></tt>
</a>
</li><li>
<p>Line too long (128 > 79 characters):</p>
<a href="softdesk.support.migrations.0010_alter_comment_author_alter_issue_author_and_more.source.html#l37">
<tt><i>37</i> <span class="p">(</span><span class="s1">&#39;contributor&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">DO_NOTHING</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">AUTH_USER_MODEL</span><span class="p">)),</span></tt>
</a>
</li><li>
<p>Line too long (138 > 79 characters):</p>
<a href="softdesk.support.migrations.0010_alter_comment_author_alter_issue_author_and_more.source.html#l38">
<tt><i>38</i> <span class="p">(</span><span class="s1">&#39;project&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;project&#39;</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="s1">&#39;support.project&#39;</span><span class="p">)),</span></tt>
</a>
</li><li>
<p>Line too long (137 > 79 characters):</p>
<a href="softdesk.support.migrations.0010_alter_comment_author_alter_issue_author_and_more.source.html#l47">
<tt><i>47</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span><span class="p">(</span><span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;contribution&#39;</span><span class="p">,</span> <span class="n">through</span><span class="o">=</span><span class="s1">&#39;support.ProjectContributor&#39;</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">AUTH_USER_MODEL</span><span class="p">),</span></tt>
</a>
</li>
</ul>
</li>
</ul>
</div>
</body>
</html>

View File

@@ -0,0 +1,242 @@
<!DOCTYPE html>
<html>
<head>
<title>softdesk/support/migrations/0010_alter_comment_author_alter_issue_author_and_more.py - flake8 annotated source</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<h1>
<a href="softdesk.support.migrations.0010_alter_comment_author_alter_issue_author_and_more.report.html">
<img src="back.svg" alt="&#x2B05;">
softdesk/support/migrations/0010_alter_comment_author_alter_issue_author_and_more.py source
</a>
</h1>
<div id="doc">
<div id="l1"
class="code sev- "><tt><i>1</i> <span class="c1"># Generated by Django 5.2.1 on 2025-05-26 05:53</span></tt>
</div>
<div id="l2"
class="code sev- "><tt><i>2</i> &nbsp;</tt>
</div>
<div id="l3"
class="code sev- "><tt><i>3</i> <span class="kn">import</span><span class="w"> </span><span class="nn">django.db.models.deletion</span></tt>
</div>
<div id="l4"
class="code sev- "><tt><i>4</i> <span class="kn">from</span><span class="w"> </span><span class="nn">django.conf</span><span class="w"> </span><span class="kn">import</span> <span class="n">settings</span></tt>
</div>
<div id="l5"
class="code sev- "><tt><i>5</i> <span class="kn">from</span><span class="w"> </span><span class="nn">django.db</span><span class="w"> </span><span class="kn">import</span> <span class="n">migrations</span><span class="p">,</span> <span class="n">models</span></tt>
</div>
<div id="l6"
class="code sev- "><tt><i>6</i> &nbsp;</tt>
</div>
<div id="l7"
class="code sev- "><tt><i>7</i> &nbsp;</tt>
</div>
<div id="l8"
class="code sev- "><tt><i>8</i> <span class="k">class</span><span class="w"> </span><span class="nc">Migration</span><span class="p">(</span><span class="n">migrations</span><span class="o">.</span><span class="n">Migration</span><span class="p">):</span></tt>
</div>
<div id="l9"
class="code sev- "><tt><i>9</i> &nbsp;</tt>
</div>
<div id="l10"
class="code sev- "><tt><i>10</i> <span class="n">dependencies</span> <span class="o">=</span> <span class="p">[</span></tt>
</div>
<div id="l11"
class="code sev- "><tt><i>11</i> <span class="p">(</span><span class="s1">&#39;support&#39;</span><span class="p">,</span> <span class="s1">&#39;0009_rename_contributor_user_contributor_username&#39;</span><span class="p">),</span></tt>
</div>
<div id="l12"
class="code sev- "><tt><i>12</i> <span class="n">migrations</span><span class="o">.</span><span class="n">swappable_dependency</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">AUTH_USER_MODEL</span><span class="p">),</span></tt>
</div>
<div id="l13"
class="code sev- "><tt><i>13</i> <span class="p">]</span></tt>
</div>
<div id="l14"
class="code sev- "><tt><i>14</i> &nbsp;</tt>
</div>
<div id="l15"
class="code sev- "><tt><i>15</i> <span class="n">operations</span> <span class="o">=</span> <span class="p">[</span></tt>
</div>
<div id="l16"
class="code sev- "><tt><i>16</i> <span class="n">migrations</span><span class="o">.</span><span class="n">AlterField</span><span class="p">(</span></tt>
</div>
<div id="l17"
class="code sev- "><tt><i>17</i> <span class="n">model_name</span><span class="o">=</span><span class="s1">&#39;comment&#39;</span><span class="p">,</span></tt>
</div>
<div id="l18"
class="code sev- "><tt><i>18</i> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;author&#39;</span><span class="p">,</span></tt>
</div>
<div id="l19"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (155 > 79 characters)</li>
</ul><tt><i>19</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">DO_NOTHING</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;comment_author&#39;</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">AUTH_USER_MODEL</span><span class="p">),</span></tt>
</div>
<div id="l20"
class="code sev- "><tt><i>20</i> <span class="p">),</span></tt>
</div>
<div id="l21"
class="code sev- "><tt><i>21</i> <span class="n">migrations</span><span class="o">.</span><span class="n">AlterField</span><span class="p">(</span></tt>
</div>
<div id="l22"
class="code sev- "><tt><i>22</i> <span class="n">model_name</span><span class="o">=</span><span class="s1">&#39;issue&#39;</span><span class="p">,</span></tt>
</div>
<div id="l23"
class="code sev- "><tt><i>23</i> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;author&#39;</span><span class="p">,</span></tt>
</div>
<div id="l24"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (153 > 79 characters)</li>
</ul><tt><i>24</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">DO_NOTHING</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;issue_author&#39;</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">AUTH_USER_MODEL</span><span class="p">),</span></tt>
</div>
<div id="l25"
class="code sev- "><tt><i>25</i> <span class="p">),</span></tt>
</div>
<div id="l26"
class="code sev- "><tt><i>26</i> <span class="n">migrations</span><span class="o">.</span><span class="n">AlterField</span><span class="p">(</span></tt>
</div>
<div id="l27"
class="code sev- "><tt><i>27</i> <span class="n">model_name</span><span class="o">=</span><span class="s1">&#39;project&#39;</span><span class="p">,</span></tt>
</div>
<div id="l28"
class="code sev- "><tt><i>28</i> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;author&#39;</span><span class="p">,</span></tt>
</div>
<div id="l29"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (155 > 79 characters)</li>
</ul><tt><i>29</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">DO_NOTHING</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;project_author&#39;</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">AUTH_USER_MODEL</span><span class="p">),</span></tt>
</div>
<div id="l30"
class="code sev- "><tt><i>30</i> <span class="p">),</span></tt>
</div>
<div id="l31"
class="code sev- "><tt><i>31</i> <span class="n">migrations</span><span class="o">.</span><span class="n">CreateModel</span><span class="p">(</span></tt>
</div>
<div id="l32"
class="code sev- "><tt><i>32</i> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;ProjectContributor&#39;</span><span class="p">,</span></tt>
</div>
<div id="l33"
class="code sev- "><tt><i>33</i> <span class="n">fields</span><span class="o">=</span><span class="p">[</span></tt>
</div>
<div id="l34"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (117 > 79 characters)</li>
</ul><tt><i>34</i> <span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">BigAutoField</span><span class="p">(</span><span class="n">auto_created</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">primary_key</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">serialize</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;ID&#39;</span><span class="p">)),</span></tt>
</div>
<div id="l35"
class="code sev- "><tt><i>35</i> <span class="p">(</span><span class="s1">&#39;active&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">)),</span></tt>
</div>
<div id="l36"
class="code sev- "><tt><i>36</i> <span class="p">(</span><span class="s1">&#39;data&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">max_length</span><span class="o">=</span><span class="mi">255</span><span class="p">)),</span></tt>
</div>
<div id="l37"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (128 > 79 characters)</li>
</ul><tt><i>37</i> <span class="p">(</span><span class="s1">&#39;contributor&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">DO_NOTHING</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">AUTH_USER_MODEL</span><span class="p">)),</span></tt>
</div>
<div id="l38"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (138 > 79 characters)</li>
</ul><tt><i>38</i> <span class="p">(</span><span class="s1">&#39;project&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;project&#39;</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="s1">&#39;support.project&#39;</span><span class="p">)),</span></tt>
</div>
<div id="l39"
class="code sev- "><tt><i>39</i> <span class="p">],</span></tt>
</div>
<div id="l40"
class="code sev- "><tt><i>40</i> <span class="n">options</span><span class="o">=</span><span class="p">{</span></tt>
</div>
<div id="l41"
class="code sev- "><tt><i>41</i> <span class="s1">&#39;unique_together&#39;</span><span class="p">:</span> <span class="p">{(</span><span class="s1">&#39;contributor&#39;</span><span class="p">,</span> <span class="s1">&#39;project&#39;</span><span class="p">)},</span></tt>
</div>
<div id="l42"
class="code sev- "><tt><i>42</i> <span class="p">},</span></tt>
</div>
<div id="l43"
class="code sev- "><tt><i>43</i> <span class="p">),</span></tt>
</div>
<div id="l44"
class="code sev- "><tt><i>44</i> <span class="n">migrations</span><span class="o">.</span><span class="n">AlterField</span><span class="p">(</span></tt>
</div>
<div id="l45"
class="code sev- "><tt><i>45</i> <span class="n">model_name</span><span class="o">=</span><span class="s1">&#39;project&#39;</span><span class="p">,</span></tt>
</div>
<div id="l46"
class="code sev- "><tt><i>46</i> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;contributors&#39;</span><span class="p">,</span></tt>
</div>
<div id="l47"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (137 > 79 characters)</li>
</ul><tt><i>47</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span><span class="p">(</span><span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;contribution&#39;</span><span class="p">,</span> <span class="n">through</span><span class="o">=</span><span class="s1">&#39;support.ProjectContributor&#39;</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">AUTH_USER_MODEL</span><span class="p">),</span></tt>
</div>
<div id="l48"
class="code sev- "><tt><i>48</i> <span class="p">),</span></tt>
</div>
<div id="l49"
class="code sev- "><tt><i>49</i> <span class="n">migrations</span><span class="o">.</span><span class="n">DeleteModel</span><span class="p">(</span></tt>
</div>
<div id="l50"
class="code sev- "><tt><i>50</i> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;Contributor&#39;</span><span class="p">,</span></tt>
</div>
<div id="l51"
class="code sev- "><tt><i>51</i> <span class="p">),</span></tt>
</div>
<div id="l52"
class="code sev- "><tt><i>52</i> <span class="p">]</span></tt>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,91 @@
<!DOCTYPE html>
<html>
<head>
<title>flake8 violations: softdesk/support/migrations/0011_alter_issue_priority_alter_issue_status_and_more.py</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
<script>
function bindHandler(link) {
var code = link.getAttribute('data-code');
var key = location.pathname + '#' + code;
var ul = link.parentNode.querySelector('.details');
if (sessionStorage[key] != 'open') {
ul.style.display = 'none';
}
link.addEventListener('click', function (event) {
if (!ul.style.display || ul.style.display == 'none') {
ul.style.display = 'block';
sessionStorage[key] = 'open';
} else {
ul.style.display = 'none';
sessionStorage[key] = 'closed';
}
});
}
window.addEventListener('DOMContentLoaded', function () {
var links = document.querySelectorAll('#index > li > a');
for (var i = 0; i < links.length; i++) {
bindHandler(links[i]);
}
});
</script>
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<p id="srclink">
<a title="View full annotated source"
href="softdesk.support.migrations.0011_alter_issue_priority_alter_issue_status_and_more.source.html">
<img src="file.svg" alt="&#x2261;">
</a></p>
<h1>
<a href="index.html">
<img src="back.svg" alt="&#x2B05;">
softdesk/support/migrations/0011_alter_issue_priority_alter_issue_status_and_more.py
</a>
</h1>
<ul id="index">
<li>
<a data-code="E501">
<span class="count sev-2">
3
</span>
<strong>E501:</strong> line too long (106 > 79 characters)
(and 2 similar)
</a>
<ul class="details">
<li>
<p>Line too long (106 > 79 characters):</p>
<a href="softdesk.support.migrations.0011_alter_issue_priority_alter_issue_status_and_more.source.html#l16">
<tt><i>16</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">choices</span><span class="o">=</span><span class="p">[(</span><span class="s1">&#39;L&#39;</span><span class="p">,</span> <span class="s1">&#39;Low&#39;</span><span class="p">),</span> <span class="p">(</span><span class="s1">&#39;M&#39;</span><span class="p">,</span> <span class="s1">&#39;Medium&#39;</span><span class="p">),</span> <span class="p">(</span><span class="s1">&#39;H&#39;</span><span class="p">,</span> <span class="s1">&#39;High&#39;</span><span class="p">)],</span> <span class="n">max_length</span><span class="o">=</span><span class="mi">15</span><span class="p">),</span></tt>
</a>
</li><li>
<p>Line too long (134 > 79 characters):</p>
<a href="softdesk.support.migrations.0011_alter_issue_priority_alter_issue_status_and_more.source.html#l21">
<tt><i>21</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">choices</span><span class="o">=</span><span class="p">[(</span><span class="s1">&#39;ToDo&#39;</span><span class="p">,</span> <span class="s1">&#39;Todo&#39;</span><span class="p">),</span> <span class="p">(</span><span class="s1">&#39;InProgress&#39;</span><span class="p">,</span> <span class="s1">&#39;Inprogress&#39;</span><span class="p">),</span> <span class="p">(</span><span class="s1">&#39;Finished&#39;</span><span class="p">,</span> <span class="s1">&#39;Finished&#39;</span><span class="p">)],</span> <span class="n">max_length</span><span class="o">=</span><span class="mi">15</span><span class="p">),</span></tt>
</a>
</li><li>
<p>Line too long (118 > 79 characters):</p>
<a href="softdesk.support.migrations.0011_alter_issue_priority_alter_issue_status_and_more.source.html#l26">
<tt><i>26</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">choices</span><span class="o">=</span><span class="p">[(</span><span class="s1">&#39;Bug&#39;</span><span class="p">,</span> <span class="s1">&#39;Bug&#39;</span><span class="p">),</span> <span class="p">(</span><span class="s1">&#39;Feature&#39;</span><span class="p">,</span> <span class="s1">&#39;Feature&#39;</span><span class="p">),</span> <span class="p">(</span><span class="s1">&#39;Task&#39;</span><span class="p">,</span> <span class="s1">&#39;Task&#39;</span><span class="p">)],</span> <span class="n">max_length</span><span class="o">=</span><span class="mi">15</span><span class="p">),</span></tt>
</a>
</li>
</ul>
</li>
</ul>
</div>
</body>
</html>

View File

@@ -0,0 +1,134 @@
<!DOCTYPE html>
<html>
<head>
<title>softdesk/support/migrations/0011_alter_issue_priority_alter_issue_status_and_more.py - flake8 annotated source</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<h1>
<a href="softdesk.support.migrations.0011_alter_issue_priority_alter_issue_status_and_more.report.html">
<img src="back.svg" alt="&#x2B05;">
softdesk/support/migrations/0011_alter_issue_priority_alter_issue_status_and_more.py source
</a>
</h1>
<div id="doc">
<div id="l1"
class="code sev- "><tt><i>1</i> <span class="c1"># Generated by Django 5.2.1 on 2025-05-26 18:26</span></tt>
</div>
<div id="l2"
class="code sev- "><tt><i>2</i> &nbsp;</tt>
</div>
<div id="l3"
class="code sev- "><tt><i>3</i> <span class="kn">from</span><span class="w"> </span><span class="nn">django.db</span><span class="w"> </span><span class="kn">import</span> <span class="n">migrations</span><span class="p">,</span> <span class="n">models</span></tt>
</div>
<div id="l4"
class="code sev- "><tt><i>4</i> &nbsp;</tt>
</div>
<div id="l5"
class="code sev- "><tt><i>5</i> &nbsp;</tt>
</div>
<div id="l6"
class="code sev- "><tt><i>6</i> <span class="k">class</span><span class="w"> </span><span class="nc">Migration</span><span class="p">(</span><span class="n">migrations</span><span class="o">.</span><span class="n">Migration</span><span class="p">):</span></tt>
</div>
<div id="l7"
class="code sev- "><tt><i>7</i> &nbsp;</tt>
</div>
<div id="l8"
class="code sev- "><tt><i>8</i> <span class="n">dependencies</span> <span class="o">=</span> <span class="p">[</span></tt>
</div>
<div id="l9"
class="code sev- "><tt><i>9</i> <span class="p">(</span><span class="s1">&#39;support&#39;</span><span class="p">,</span> <span class="s1">&#39;0010_alter_comment_author_alter_issue_author_and_more&#39;</span><span class="p">),</span></tt>
</div>
<div id="l10"
class="code sev- "><tt><i>10</i> <span class="p">]</span></tt>
</div>
<div id="l11"
class="code sev- "><tt><i>11</i> &nbsp;</tt>
</div>
<div id="l12"
class="code sev- "><tt><i>12</i> <span class="n">operations</span> <span class="o">=</span> <span class="p">[</span></tt>
</div>
<div id="l13"
class="code sev- "><tt><i>13</i> <span class="n">migrations</span><span class="o">.</span><span class="n">AlterField</span><span class="p">(</span></tt>
</div>
<div id="l14"
class="code sev- "><tt><i>14</i> <span class="n">model_name</span><span class="o">=</span><span class="s1">&#39;issue&#39;</span><span class="p">,</span></tt>
</div>
<div id="l15"
class="code sev- "><tt><i>15</i> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;priority&#39;</span><span class="p">,</span></tt>
</div>
<div id="l16"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (106 > 79 characters)</li>
</ul><tt><i>16</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">choices</span><span class="o">=</span><span class="p">[(</span><span class="s1">&#39;L&#39;</span><span class="p">,</span> <span class="s1">&#39;Low&#39;</span><span class="p">),</span> <span class="p">(</span><span class="s1">&#39;M&#39;</span><span class="p">,</span> <span class="s1">&#39;Medium&#39;</span><span class="p">),</span> <span class="p">(</span><span class="s1">&#39;H&#39;</span><span class="p">,</span> <span class="s1">&#39;High&#39;</span><span class="p">)],</span> <span class="n">max_length</span><span class="o">=</span><span class="mi">15</span><span class="p">),</span></tt>
</div>
<div id="l17"
class="code sev- "><tt><i>17</i> <span class="p">),</span></tt>
</div>
<div id="l18"
class="code sev- "><tt><i>18</i> <span class="n">migrations</span><span class="o">.</span><span class="n">AlterField</span><span class="p">(</span></tt>
</div>
<div id="l19"
class="code sev- "><tt><i>19</i> <span class="n">model_name</span><span class="o">=</span><span class="s1">&#39;issue&#39;</span><span class="p">,</span></tt>
</div>
<div id="l20"
class="code sev- "><tt><i>20</i> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;status&#39;</span><span class="p">,</span></tt>
</div>
<div id="l21"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (134 > 79 characters)</li>
</ul><tt><i>21</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">choices</span><span class="o">=</span><span class="p">[(</span><span class="s1">&#39;ToDo&#39;</span><span class="p">,</span> <span class="s1">&#39;Todo&#39;</span><span class="p">),</span> <span class="p">(</span><span class="s1">&#39;InProgress&#39;</span><span class="p">,</span> <span class="s1">&#39;Inprogress&#39;</span><span class="p">),</span> <span class="p">(</span><span class="s1">&#39;Finished&#39;</span><span class="p">,</span> <span class="s1">&#39;Finished&#39;</span><span class="p">)],</span> <span class="n">max_length</span><span class="o">=</span><span class="mi">15</span><span class="p">),</span></tt>
</div>
<div id="l22"
class="code sev- "><tt><i>22</i> <span class="p">),</span></tt>
</div>
<div id="l23"
class="code sev- "><tt><i>23</i> <span class="n">migrations</span><span class="o">.</span><span class="n">AlterField</span><span class="p">(</span></tt>
</div>
<div id="l24"
class="code sev- "><tt><i>24</i> <span class="n">model_name</span><span class="o">=</span><span class="s1">&#39;issue&#39;</span><span class="p">,</span></tt>
</div>
<div id="l25"
class="code sev- "><tt><i>25</i> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;tag&#39;</span><span class="p">,</span></tt>
</div>
<div id="l26"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (118 > 79 characters)</li>
</ul><tt><i>26</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">choices</span><span class="o">=</span><span class="p">[(</span><span class="s1">&#39;Bug&#39;</span><span class="p">,</span> <span class="s1">&#39;Bug&#39;</span><span class="p">),</span> <span class="p">(</span><span class="s1">&#39;Feature&#39;</span><span class="p">,</span> <span class="s1">&#39;Feature&#39;</span><span class="p">),</span> <span class="p">(</span><span class="s1">&#39;Task&#39;</span><span class="p">,</span> <span class="s1">&#39;Task&#39;</span><span class="p">)],</span> <span class="n">max_length</span><span class="o">=</span><span class="mi">15</span><span class="p">),</span></tt>
</div>
<div id="l27"
class="code sev- "><tt><i>27</i> <span class="p">),</span></tt>
</div>
<div id="l28"
class="code sev- "><tt><i>28</i> <span class="p">]</span></tt>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,84 @@
<!DOCTYPE html>
<html>
<head>
<title>flake8 violations: softdesk/support/migrations/0012_alter_issue_priority_alter_issue_status.py</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
<script>
function bindHandler(link) {
var code = link.getAttribute('data-code');
var key = location.pathname + '#' + code;
var ul = link.parentNode.querySelector('.details');
if (sessionStorage[key] != 'open') {
ul.style.display = 'none';
}
link.addEventListener('click', function (event) {
if (!ul.style.display || ul.style.display == 'none') {
ul.style.display = 'block';
sessionStorage[key] = 'open';
} else {
ul.style.display = 'none';
sessionStorage[key] = 'closed';
}
});
}
window.addEventListener('DOMContentLoaded', function () {
var links = document.querySelectorAll('#index > li > a');
for (var i = 0; i < links.length; i++) {
bindHandler(links[i]);
}
});
</script>
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<p id="srclink">
<a title="View full annotated source"
href="softdesk.support.migrations.0012_alter_issue_priority_alter_issue_status.source.html">
<img src="file.svg" alt="&#x2261;">
</a></p>
<h1>
<a href="index.html">
<img src="back.svg" alt="&#x2B05;">
softdesk/support/migrations/0012_alter_issue_priority_alter_issue_status.py
</a>
</h1>
<ul id="index">
<li>
<a data-code="E501">
<span class="count sev-2">
2
</span>
<strong>E501:</strong> line too long (116 > 79 characters)
(and 1 similar)
</a>
<ul class="details">
<li>
<p>Line too long (116 > 79 characters):</p>
<a href="softdesk.support.migrations.0012_alter_issue_priority_alter_issue_status.source.html#l16">
<tt><i>16</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">choices</span><span class="o">=</span><span class="p">[(</span><span class="s1">&#39;Low&#39;</span><span class="p">,</span> <span class="s1">&#39;Low&#39;</span><span class="p">),</span> <span class="p">(</span><span class="s1">&#39;Medium&#39;</span><span class="p">,</span> <span class="s1">&#39;Medium&#39;</span><span class="p">),</span> <span class="p">(</span><span class="s1">&#39;High&#39;</span><span class="p">,</span> <span class="s1">&#39;High&#39;</span><span class="p">)],</span> <span class="n">max_length</span><span class="o">=</span><span class="mi">15</span><span class="p">),</span></tt>
</a>
</li><li>
<p>Line too long (135 > 79 characters):</p>
<a href="softdesk.support.migrations.0012_alter_issue_priority_alter_issue_status.source.html#l21">
<tt><i>21</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">choices</span><span class="o">=</span><span class="p">[(</span><span class="s1">&#39;ToDo&#39;</span><span class="p">,</span> <span class="s1">&#39;Todo&#39;</span><span class="p">),</span> <span class="p">(</span><span class="s1">&#39;In Progress&#39;</span><span class="p">,</span> <span class="s1">&#39;Inprogress&#39;</span><span class="p">),</span> <span class="p">(</span><span class="s1">&#39;Finished&#39;</span><span class="p">,</span> <span class="s1">&#39;Finished&#39;</span><span class="p">)],</span> <span class="n">max_length</span><span class="o">=</span><span class="mi">15</span><span class="p">),</span></tt>
</a>
</li>
</ul>
</li>
</ul>
</div>
</body>
</html>

View File

@@ -0,0 +1,110 @@
<!DOCTYPE html>
<html>
<head>
<title>softdesk/support/migrations/0012_alter_issue_priority_alter_issue_status.py - flake8 annotated source</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<h1>
<a href="softdesk.support.migrations.0012_alter_issue_priority_alter_issue_status.report.html">
<img src="back.svg" alt="&#x2B05;">
softdesk/support/migrations/0012_alter_issue_priority_alter_issue_status.py source
</a>
</h1>
<div id="doc">
<div id="l1"
class="code sev- "><tt><i>1</i> <span class="c1"># Generated by Django 5.2.1 on 2025-05-26 18:26</span></tt>
</div>
<div id="l2"
class="code sev- "><tt><i>2</i> &nbsp;</tt>
</div>
<div id="l3"
class="code sev- "><tt><i>3</i> <span class="kn">from</span><span class="w"> </span><span class="nn">django.db</span><span class="w"> </span><span class="kn">import</span> <span class="n">migrations</span><span class="p">,</span> <span class="n">models</span></tt>
</div>
<div id="l4"
class="code sev- "><tt><i>4</i> &nbsp;</tt>
</div>
<div id="l5"
class="code sev- "><tt><i>5</i> &nbsp;</tt>
</div>
<div id="l6"
class="code sev- "><tt><i>6</i> <span class="k">class</span><span class="w"> </span><span class="nc">Migration</span><span class="p">(</span><span class="n">migrations</span><span class="o">.</span><span class="n">Migration</span><span class="p">):</span></tt>
</div>
<div id="l7"
class="code sev- "><tt><i>7</i> &nbsp;</tt>
</div>
<div id="l8"
class="code sev- "><tt><i>8</i> <span class="n">dependencies</span> <span class="o">=</span> <span class="p">[</span></tt>
</div>
<div id="l9"
class="code sev- "><tt><i>9</i> <span class="p">(</span><span class="s1">&#39;support&#39;</span><span class="p">,</span> <span class="s1">&#39;0011_alter_issue_priority_alter_issue_status_and_more&#39;</span><span class="p">),</span></tt>
</div>
<div id="l10"
class="code sev- "><tt><i>10</i> <span class="p">]</span></tt>
</div>
<div id="l11"
class="code sev- "><tt><i>11</i> &nbsp;</tt>
</div>
<div id="l12"
class="code sev- "><tt><i>12</i> <span class="n">operations</span> <span class="o">=</span> <span class="p">[</span></tt>
</div>
<div id="l13"
class="code sev- "><tt><i>13</i> <span class="n">migrations</span><span class="o">.</span><span class="n">AlterField</span><span class="p">(</span></tt>
</div>
<div id="l14"
class="code sev- "><tt><i>14</i> <span class="n">model_name</span><span class="o">=</span><span class="s1">&#39;issue&#39;</span><span class="p">,</span></tt>
</div>
<div id="l15"
class="code sev- "><tt><i>15</i> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;priority&#39;</span><span class="p">,</span></tt>
</div>
<div id="l16"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (116 > 79 characters)</li>
</ul><tt><i>16</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">choices</span><span class="o">=</span><span class="p">[(</span><span class="s1">&#39;Low&#39;</span><span class="p">,</span> <span class="s1">&#39;Low&#39;</span><span class="p">),</span> <span class="p">(</span><span class="s1">&#39;Medium&#39;</span><span class="p">,</span> <span class="s1">&#39;Medium&#39;</span><span class="p">),</span> <span class="p">(</span><span class="s1">&#39;High&#39;</span><span class="p">,</span> <span class="s1">&#39;High&#39;</span><span class="p">)],</span> <span class="n">max_length</span><span class="o">=</span><span class="mi">15</span><span class="p">),</span></tt>
</div>
<div id="l17"
class="code sev- "><tt><i>17</i> <span class="p">),</span></tt>
</div>
<div id="l18"
class="code sev- "><tt><i>18</i> <span class="n">migrations</span><span class="o">.</span><span class="n">AlterField</span><span class="p">(</span></tt>
</div>
<div id="l19"
class="code sev- "><tt><i>19</i> <span class="n">model_name</span><span class="o">=</span><span class="s1">&#39;issue&#39;</span><span class="p">,</span></tt>
</div>
<div id="l20"
class="code sev- "><tt><i>20</i> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;status&#39;</span><span class="p">,</span></tt>
</div>
<div id="l21"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (135 > 79 characters)</li>
</ul><tt><i>21</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">choices</span><span class="o">=</span><span class="p">[(</span><span class="s1">&#39;ToDo&#39;</span><span class="p">,</span> <span class="s1">&#39;Todo&#39;</span><span class="p">),</span> <span class="p">(</span><span class="s1">&#39;In Progress&#39;</span><span class="p">,</span> <span class="s1">&#39;Inprogress&#39;</span><span class="p">),</span> <span class="p">(</span><span class="s1">&#39;Finished&#39;</span><span class="p">,</span> <span class="s1">&#39;Finished&#39;</span><span class="p">)],</span> <span class="n">max_length</span><span class="o">=</span><span class="mi">15</span><span class="p">),</span></tt>
</div>
<div id="l22"
class="code sev- "><tt><i>22</i> <span class="p">),</span></tt>
</div>
<div id="l23"
class="code sev- "><tt><i>23</i> <span class="p">]</span></tt>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,73 @@
<!DOCTYPE html>
<html>
<head>
<title>flake8 violations: softdesk/support/migrations/0013_alter_issue_project.py</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
<script>
function bindHandler(link) {
var code = link.getAttribute('data-code');
var key = location.pathname + '#' + code;
var ul = link.parentNode.querySelector('.details');
if (sessionStorage[key] != 'open') {
ul.style.display = 'none';
}
link.addEventListener('click', function (event) {
if (!ul.style.display || ul.style.display == 'none') {
ul.style.display = 'block';
sessionStorage[key] = 'open';
} else {
ul.style.display = 'none';
sessionStorage[key] = 'closed';
}
});
}
window.addEventListener('DOMContentLoaded', function () {
var links = document.querySelectorAll('#index > li > a');
for (var i = 0; i < links.length; i++) {
bindHandler(links[i]);
}
});
</script>
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<p id="srclink">
<a title="View full annotated source"
href="softdesk.support.migrations.0013_alter_issue_project.source.html">
<img src="file.svg" alt="&#x2261;">
</a></p>
<h1>
<a href="index.html">
<img src="back.svg" alt="&#x2B05;">
softdesk/support/migrations/0013_alter_issue_project.py
</a>
</h1>
<ul id="index">
<li>
<a data-code="E501">
<span class="count sev-2">
1
</span>
<strong>E501:</strong> line too long (114 > 79 characters)
</a>
<ul class="details">
<li>
<a href="softdesk.support.migrations.0013_alter_issue_project.source.html#l17">
<tt><i>17</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="s1">&#39;support.project&#39;</span><span class="p">),</span></tt>
</a>
</li>
</ul>
</li>
</ul>
</div>
</body>
</html>

View File

@@ -0,0 +1,89 @@
<!DOCTYPE html>
<html>
<head>
<title>softdesk/support/migrations/0013_alter_issue_project.py - flake8 annotated source</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<h1>
<a href="softdesk.support.migrations.0013_alter_issue_project.report.html">
<img src="back.svg" alt="&#x2B05;">
softdesk/support/migrations/0013_alter_issue_project.py source
</a>
</h1>
<div id="doc">
<div id="l1"
class="code sev- "><tt><i>1</i> <span class="c1"># Generated by Django 5.2.1 on 2025-05-26 19:06</span></tt>
</div>
<div id="l2"
class="code sev- "><tt><i>2</i> &nbsp;</tt>
</div>
<div id="l3"
class="code sev- "><tt><i>3</i> <span class="kn">import</span><span class="w"> </span><span class="nn">django.db.models.deletion</span></tt>
</div>
<div id="l4"
class="code sev- "><tt><i>4</i> <span class="kn">from</span><span class="w"> </span><span class="nn">django.db</span><span class="w"> </span><span class="kn">import</span> <span class="n">migrations</span><span class="p">,</span> <span class="n">models</span></tt>
</div>
<div id="l5"
class="code sev- "><tt><i>5</i> &nbsp;</tt>
</div>
<div id="l6"
class="code sev- "><tt><i>6</i> &nbsp;</tt>
</div>
<div id="l7"
class="code sev- "><tt><i>7</i> <span class="k">class</span><span class="w"> </span><span class="nc">Migration</span><span class="p">(</span><span class="n">migrations</span><span class="o">.</span><span class="n">Migration</span><span class="p">):</span></tt>
</div>
<div id="l8"
class="code sev- "><tt><i>8</i> &nbsp;</tt>
</div>
<div id="l9"
class="code sev- "><tt><i>9</i> <span class="n">dependencies</span> <span class="o">=</span> <span class="p">[</span></tt>
</div>
<div id="l10"
class="code sev- "><tt><i>10</i> <span class="p">(</span><span class="s1">&#39;support&#39;</span><span class="p">,</span> <span class="s1">&#39;0012_alter_issue_priority_alter_issue_status&#39;</span><span class="p">),</span></tt>
</div>
<div id="l11"
class="code sev- "><tt><i>11</i> <span class="p">]</span></tt>
</div>
<div id="l12"
class="code sev- "><tt><i>12</i> &nbsp;</tt>
</div>
<div id="l13"
class="code sev- "><tt><i>13</i> <span class="n">operations</span> <span class="o">=</span> <span class="p">[</span></tt>
</div>
<div id="l14"
class="code sev- "><tt><i>14</i> <span class="n">migrations</span><span class="o">.</span><span class="n">AlterField</span><span class="p">(</span></tt>
</div>
<div id="l15"
class="code sev- "><tt><i>15</i> <span class="n">model_name</span><span class="o">=</span><span class="s1">&#39;issue&#39;</span><span class="p">,</span></tt>
</div>
<div id="l16"
class="code sev- "><tt><i>16</i> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;project&#39;</span><span class="p">,</span></tt>
</div>
<div id="l17"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (114 > 79 characters)</li>
</ul><tt><i>17</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="s1">&#39;support.project&#39;</span><span class="p">),</span></tt>
</div>
<div id="l18"
class="code sev- "><tt><i>18</i> <span class="p">),</span></tt>
</div>
<div id="l19"
class="code sev- "><tt><i>19</i> <span class="p">]</span></tt>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,73 @@
<!DOCTYPE html>
<html>
<head>
<title>flake8 violations: softdesk/support/migrations/0014_alter_issue_project.py</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
<script>
function bindHandler(link) {
var code = link.getAttribute('data-code');
var key = location.pathname + '#' + code;
var ul = link.parentNode.querySelector('.details');
if (sessionStorage[key] != 'open') {
ul.style.display = 'none';
}
link.addEventListener('click', function (event) {
if (!ul.style.display || ul.style.display == 'none') {
ul.style.display = 'block';
sessionStorage[key] = 'open';
} else {
ul.style.display = 'none';
sessionStorage[key] = 'closed';
}
});
}
window.addEventListener('DOMContentLoaded', function () {
var links = document.querySelectorAll('#index > li > a');
for (var i = 0; i < links.length; i++) {
bindHandler(links[i]);
}
});
</script>
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<p id="srclink">
<a title="View full annotated source"
href="softdesk.support.migrations.0014_alter_issue_project.source.html">
<img src="file.svg" alt="&#x2261;">
</a></p>
<h1>
<a href="index.html">
<img src="back.svg" alt="&#x2B05;">
softdesk/support/migrations/0014_alter_issue_project.py
</a>
</h1>
<ul id="index">
<li>
<a data-code="E501">
<span class="count sev-2">
1
</span>
<strong>E501:</strong> line too long (103 > 79 characters)
</a>
<ul class="details">
<li>
<a href="softdesk.support.migrations.0014_alter_issue_project.source.html#l17">
<tt><i>17</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="s1">&#39;support.project&#39;</span><span class="p">),</span></tt>
</a>
</li>
</ul>
</li>
</ul>
</div>
</body>
</html>

View File

@@ -0,0 +1,89 @@
<!DOCTYPE html>
<html>
<head>
<title>softdesk/support/migrations/0014_alter_issue_project.py - flake8 annotated source</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<h1>
<a href="softdesk.support.migrations.0014_alter_issue_project.report.html">
<img src="back.svg" alt="&#x2B05;">
softdesk/support/migrations/0014_alter_issue_project.py source
</a>
</h1>
<div id="doc">
<div id="l1"
class="code sev- "><tt><i>1</i> <span class="c1"># Generated by Django 5.2.1 on 2025-05-27 09:30</span></tt>
</div>
<div id="l2"
class="code sev- "><tt><i>2</i> &nbsp;</tt>
</div>
<div id="l3"
class="code sev- "><tt><i>3</i> <span class="kn">import</span><span class="w"> </span><span class="nn">django.db.models.deletion</span></tt>
</div>
<div id="l4"
class="code sev- "><tt><i>4</i> <span class="kn">from</span><span class="w"> </span><span class="nn">django.db</span><span class="w"> </span><span class="kn">import</span> <span class="n">migrations</span><span class="p">,</span> <span class="n">models</span></tt>
</div>
<div id="l5"
class="code sev- "><tt><i>5</i> &nbsp;</tt>
</div>
<div id="l6"
class="code sev- "><tt><i>6</i> &nbsp;</tt>
</div>
<div id="l7"
class="code sev- "><tt><i>7</i> <span class="k">class</span><span class="w"> </span><span class="nc">Migration</span><span class="p">(</span><span class="n">migrations</span><span class="o">.</span><span class="n">Migration</span><span class="p">):</span></tt>
</div>
<div id="l8"
class="code sev- "><tt><i>8</i> &nbsp;</tt>
</div>
<div id="l9"
class="code sev- "><tt><i>9</i> <span class="n">dependencies</span> <span class="o">=</span> <span class="p">[</span></tt>
</div>
<div id="l10"
class="code sev- "><tt><i>10</i> <span class="p">(</span><span class="s1">&#39;support&#39;</span><span class="p">,</span> <span class="s1">&#39;0013_alter_issue_project&#39;</span><span class="p">),</span></tt>
</div>
<div id="l11"
class="code sev- "><tt><i>11</i> <span class="p">]</span></tt>
</div>
<div id="l12"
class="code sev- "><tt><i>12</i> &nbsp;</tt>
</div>
<div id="l13"
class="code sev- "><tt><i>13</i> <span class="n">operations</span> <span class="o">=</span> <span class="p">[</span></tt>
</div>
<div id="l14"
class="code sev- "><tt><i>14</i> <span class="n">migrations</span><span class="o">.</span><span class="n">AlterField</span><span class="p">(</span></tt>
</div>
<div id="l15"
class="code sev- "><tt><i>15</i> <span class="n">model_name</span><span class="o">=</span><span class="s1">&#39;issue&#39;</span><span class="p">,</span></tt>
</div>
<div id="l16"
class="code sev- "><tt><i>16</i> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;project&#39;</span><span class="p">,</span></tt>
</div>
<div id="l17"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (103 > 79 characters)</li>
</ul><tt><i>17</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="s1">&#39;support.project&#39;</span><span class="p">),</span></tt>
</div>
<div id="l18"
class="code sev- "><tt><i>18</i> <span class="p">),</span></tt>
</div>
<div id="l19"
class="code sev- "><tt><i>19</i> <span class="p">]</span></tt>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,73 @@
<!DOCTYPE html>
<html>
<head>
<title>flake8 violations: softdesk/support/migrations/0015_alter_project_author.py</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
<script>
function bindHandler(link) {
var code = link.getAttribute('data-code');
var key = location.pathname + '#' + code;
var ul = link.parentNode.querySelector('.details');
if (sessionStorage[key] != 'open') {
ul.style.display = 'none';
}
link.addEventListener('click', function (event) {
if (!ul.style.display || ul.style.display == 'none') {
ul.style.display = 'block';
sessionStorage[key] = 'open';
} else {
ul.style.display = 'none';
sessionStorage[key] = 'closed';
}
});
}
window.addEventListener('DOMContentLoaded', function () {
var links = document.querySelectorAll('#index > li > a');
for (var i = 0; i < links.length; i++) {
bindHandler(links[i]);
}
});
</script>
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<p id="srclink">
<a title="View full annotated source"
href="softdesk.support.migrations.0015_alter_project_author.source.html">
<img src="file.svg" alt="&#x2261;">
</a></p>
<h1>
<a href="index.html">
<img src="back.svg" alt="&#x2B05;">
softdesk/support/migrations/0015_alter_project_author.py
</a>
</h1>
<ul id="index">
<li>
<a data-code="E501">
<span class="count sev-2">
1
</span>
<strong>E501:</strong> line too long (167 > 79 characters)
</a>
<ul class="details">
<li>
<a href="softdesk.support.migrations.0015_alter_project_author.source.html#l19">
<tt><i>19</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">DO_NOTHING</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;project_author&#39;</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">AUTH_USER_MODEL</span><span class="p">),</span></tt>
</a>
</li>
</ul>
</li>
</ul>
</div>
</body>
</html>

View File

@@ -0,0 +1,95 @@
<!DOCTYPE html>
<html>
<head>
<title>softdesk/support/migrations/0015_alter_project_author.py - flake8 annotated source</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<h1>
<a href="softdesk.support.migrations.0015_alter_project_author.report.html">
<img src="back.svg" alt="&#x2B05;">
softdesk/support/migrations/0015_alter_project_author.py source
</a>
</h1>
<div id="doc">
<div id="l1"
class="code sev- "><tt><i>1</i> <span class="c1"># Generated by Django 5.2.1 on 2025-06-09 09:40</span></tt>
</div>
<div id="l2"
class="code sev- "><tt><i>2</i> &nbsp;</tt>
</div>
<div id="l3"
class="code sev- "><tt><i>3</i> <span class="kn">import</span><span class="w"> </span><span class="nn">django.db.models.deletion</span></tt>
</div>
<div id="l4"
class="code sev- "><tt><i>4</i> <span class="kn">from</span><span class="w"> </span><span class="nn">django.conf</span><span class="w"> </span><span class="kn">import</span> <span class="n">settings</span></tt>
</div>
<div id="l5"
class="code sev- "><tt><i>5</i> <span class="kn">from</span><span class="w"> </span><span class="nn">django.db</span><span class="w"> </span><span class="kn">import</span> <span class="n">migrations</span><span class="p">,</span> <span class="n">models</span></tt>
</div>
<div id="l6"
class="code sev- "><tt><i>6</i> &nbsp;</tt>
</div>
<div id="l7"
class="code sev- "><tt><i>7</i> &nbsp;</tt>
</div>
<div id="l8"
class="code sev- "><tt><i>8</i> <span class="k">class</span><span class="w"> </span><span class="nc">Migration</span><span class="p">(</span><span class="n">migrations</span><span class="o">.</span><span class="n">Migration</span><span class="p">):</span></tt>
</div>
<div id="l9"
class="code sev- "><tt><i>9</i> &nbsp;</tt>
</div>
<div id="l10"
class="code sev- "><tt><i>10</i> <span class="n">dependencies</span> <span class="o">=</span> <span class="p">[</span></tt>
</div>
<div id="l11"
class="code sev- "><tt><i>11</i> <span class="p">(</span><span class="s1">&#39;support&#39;</span><span class="p">,</span> <span class="s1">&#39;0014_alter_issue_project&#39;</span><span class="p">),</span></tt>
</div>
<div id="l12"
class="code sev- "><tt><i>12</i> <span class="n">migrations</span><span class="o">.</span><span class="n">swappable_dependency</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">AUTH_USER_MODEL</span><span class="p">),</span></tt>
</div>
<div id="l13"
class="code sev- "><tt><i>13</i> <span class="p">]</span></tt>
</div>
<div id="l14"
class="code sev- "><tt><i>14</i> &nbsp;</tt>
</div>
<div id="l15"
class="code sev- "><tt><i>15</i> <span class="n">operations</span> <span class="o">=</span> <span class="p">[</span></tt>
</div>
<div id="l16"
class="code sev- "><tt><i>16</i> <span class="n">migrations</span><span class="o">.</span><span class="n">AlterField</span><span class="p">(</span></tt>
</div>
<div id="l17"
class="code sev- "><tt><i>17</i> <span class="n">model_name</span><span class="o">=</span><span class="s1">&#39;project&#39;</span><span class="p">,</span></tt>
</div>
<div id="l18"
class="code sev- "><tt><i>18</i> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;author&#39;</span><span class="p">,</span></tt>
</div>
<div id="l19"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (167 > 79 characters)</li>
</ul><tt><i>19</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">DO_NOTHING</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;project_author&#39;</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">AUTH_USER_MODEL</span><span class="p">),</span></tt>
</div>
<div id="l20"
class="code sev- "><tt><i>20</i> <span class="p">),</span></tt>
</div>
<div id="l21"
class="code sev- "><tt><i>21</i> <span class="p">]</span></tt>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,84 @@
<!DOCTYPE html>
<html>
<head>
<title>flake8 violations: softdesk/support/migrations/0016_alter_issue_author_alter_project_author.py</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
<script>
function bindHandler(link) {
var code = link.getAttribute('data-code');
var key = location.pathname + '#' + code;
var ul = link.parentNode.querySelector('.details');
if (sessionStorage[key] != 'open') {
ul.style.display = 'none';
}
link.addEventListener('click', function (event) {
if (!ul.style.display || ul.style.display == 'none') {
ul.style.display = 'block';
sessionStorage[key] = 'open';
} else {
ul.style.display = 'none';
sessionStorage[key] = 'closed';
}
});
}
window.addEventListener('DOMContentLoaded', function () {
var links = document.querySelectorAll('#index > li > a');
for (var i = 0; i < links.length; i++) {
bindHandler(links[i]);
}
});
</script>
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<p id="srclink">
<a title="View full annotated source"
href="softdesk.support.migrations.0016_alter_issue_author_alter_project_author.source.html">
<img src="file.svg" alt="&#x2261;">
</a></p>
<h1>
<a href="index.html">
<img src="back.svg" alt="&#x2B05;">
softdesk/support/migrations/0016_alter_issue_author_alter_project_author.py
</a>
</h1>
<ul id="index">
<li>
<a data-code="E501">
<span class="count sev-2">
2
</span>
<strong>E501:</strong> line too long (165 > 79 characters)
(and 1 similar)
</a>
<ul class="details">
<li>
<p>Line too long (165 > 79 characters):</p>
<a href="softdesk.support.migrations.0016_alter_issue_author_alter_project_author.source.html#l19">
<tt><i>19</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">DO_NOTHING</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;issue_author&#39;</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">AUTH_USER_MODEL</span><span class="p">),</span></tt>
</a>
</li><li>
<p>Line too long (153 > 79 characters):</p>
<a href="softdesk.support.migrations.0016_alter_issue_author_alter_project_author.source.html#l24">
<tt><i>24</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">SET_NULL</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;project_author&#39;</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">AUTH_USER_MODEL</span><span class="p">),</span></tt>
</a>
</li>
</ul>
</li>
</ul>
</div>
</body>
</html>

View File

@@ -0,0 +1,119 @@
<!DOCTYPE html>
<html>
<head>
<title>softdesk/support/migrations/0016_alter_issue_author_alter_project_author.py - flake8 annotated source</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<h1>
<a href="softdesk.support.migrations.0016_alter_issue_author_alter_project_author.report.html">
<img src="back.svg" alt="&#x2B05;">
softdesk/support/migrations/0016_alter_issue_author_alter_project_author.py source
</a>
</h1>
<div id="doc">
<div id="l1"
class="code sev- "><tt><i>1</i> <span class="c1"># Generated by Django 5.2.1 on 2025-06-09 15:44</span></tt>
</div>
<div id="l2"
class="code sev- "><tt><i>2</i> &nbsp;</tt>
</div>
<div id="l3"
class="code sev- "><tt><i>3</i> <span class="kn">import</span><span class="w"> </span><span class="nn">django.db.models.deletion</span></tt>
</div>
<div id="l4"
class="code sev- "><tt><i>4</i> <span class="kn">from</span><span class="w"> </span><span class="nn">django.conf</span><span class="w"> </span><span class="kn">import</span> <span class="n">settings</span></tt>
</div>
<div id="l5"
class="code sev- "><tt><i>5</i> <span class="kn">from</span><span class="w"> </span><span class="nn">django.db</span><span class="w"> </span><span class="kn">import</span> <span class="n">migrations</span><span class="p">,</span> <span class="n">models</span></tt>
</div>
<div id="l6"
class="code sev- "><tt><i>6</i> &nbsp;</tt>
</div>
<div id="l7"
class="code sev- "><tt><i>7</i> &nbsp;</tt>
</div>
<div id="l8"
class="code sev- "><tt><i>8</i> <span class="k">class</span><span class="w"> </span><span class="nc">Migration</span><span class="p">(</span><span class="n">migrations</span><span class="o">.</span><span class="n">Migration</span><span class="p">):</span></tt>
</div>
<div id="l9"
class="code sev- "><tt><i>9</i> &nbsp;</tt>
</div>
<div id="l10"
class="code sev- "><tt><i>10</i> <span class="n">dependencies</span> <span class="o">=</span> <span class="p">[</span></tt>
</div>
<div id="l11"
class="code sev- "><tt><i>11</i> <span class="p">(</span><span class="s1">&#39;support&#39;</span><span class="p">,</span> <span class="s1">&#39;0015_alter_project_author&#39;</span><span class="p">),</span></tt>
</div>
<div id="l12"
class="code sev- "><tt><i>12</i> <span class="n">migrations</span><span class="o">.</span><span class="n">swappable_dependency</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">AUTH_USER_MODEL</span><span class="p">),</span></tt>
</div>
<div id="l13"
class="code sev- "><tt><i>13</i> <span class="p">]</span></tt>
</div>
<div id="l14"
class="code sev- "><tt><i>14</i> &nbsp;</tt>
</div>
<div id="l15"
class="code sev- "><tt><i>15</i> <span class="n">operations</span> <span class="o">=</span> <span class="p">[</span></tt>
</div>
<div id="l16"
class="code sev- "><tt><i>16</i> <span class="n">migrations</span><span class="o">.</span><span class="n">AlterField</span><span class="p">(</span></tt>
</div>
<div id="l17"
class="code sev- "><tt><i>17</i> <span class="n">model_name</span><span class="o">=</span><span class="s1">&#39;issue&#39;</span><span class="p">,</span></tt>
</div>
<div id="l18"
class="code sev- "><tt><i>18</i> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;author&#39;</span><span class="p">,</span></tt>
</div>
<div id="l19"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (165 > 79 characters)</li>
</ul><tt><i>19</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">DO_NOTHING</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;issue_author&#39;</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">AUTH_USER_MODEL</span><span class="p">),</span></tt>
</div>
<div id="l20"
class="code sev- "><tt><i>20</i> <span class="p">),</span></tt>
</div>
<div id="l21"
class="code sev- "><tt><i>21</i> <span class="n">migrations</span><span class="o">.</span><span class="n">AlterField</span><span class="p">(</span></tt>
</div>
<div id="l22"
class="code sev- "><tt><i>22</i> <span class="n">model_name</span><span class="o">=</span><span class="s1">&#39;project&#39;</span><span class="p">,</span></tt>
</div>
<div id="l23"
class="code sev- "><tt><i>23</i> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;author&#39;</span><span class="p">,</span></tt>
</div>
<div id="l24"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (153 > 79 characters)</li>
</ul><tt><i>24</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">SET_NULL</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;project_author&#39;</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">AUTH_USER_MODEL</span><span class="p">),</span></tt>
</div>
<div id="l25"
class="code sev- "><tt><i>25</i> <span class="p">),</span></tt>
</div>
<div id="l26"
class="code sev- "><tt><i>26</i> <span class="p">]</span></tt>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,73 @@
<!DOCTYPE html>
<html>
<head>
<title>flake8 violations: softdesk/support/migrations/0017_alter_projectcontributor_contributor.py</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
<script>
function bindHandler(link) {
var code = link.getAttribute('data-code');
var key = location.pathname + '#' + code;
var ul = link.parentNode.querySelector('.details');
if (sessionStorage[key] != 'open') {
ul.style.display = 'none';
}
link.addEventListener('click', function (event) {
if (!ul.style.display || ul.style.display == 'none') {
ul.style.display = 'block';
sessionStorage[key] = 'open';
} else {
ul.style.display = 'none';
sessionStorage[key] = 'closed';
}
});
}
window.addEventListener('DOMContentLoaded', function () {
var links = document.querySelectorAll('#index > li > a');
for (var i = 0; i < links.length; i++) {
bindHandler(links[i]);
}
});
</script>
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<p id="srclink">
<a title="View full annotated source"
href="softdesk.support.migrations.0017_alter_projectcontributor_contributor.source.html">
<img src="file.svg" alt="&#x2261;">
</a></p>
<h1>
<a href="index.html">
<img src="back.svg" alt="&#x2B05;">
softdesk/support/migrations/0017_alter_projectcontributor_contributor.py
</a>
</h1>
<ul id="index">
<li>
<a data-code="E501">
<span class="count sev-2">
1
</span>
<strong>E501:</strong> line too long (110 > 79 characters)
</a>
<ul class="details">
<li>
<a href="softdesk.support.migrations.0017_alter_projectcontributor_contributor.source.html#l19">
<tt><i>19</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">AUTH_USER_MODEL</span><span class="p">),</span></tt>
</a>
</li>
</ul>
</li>
</ul>
</div>
</body>
</html>

View File

@@ -0,0 +1,95 @@
<!DOCTYPE html>
<html>
<head>
<title>softdesk/support/migrations/0017_alter_projectcontributor_contributor.py - flake8 annotated source</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<h1>
<a href="softdesk.support.migrations.0017_alter_projectcontributor_contributor.report.html">
<img src="back.svg" alt="&#x2B05;">
softdesk/support/migrations/0017_alter_projectcontributor_contributor.py source
</a>
</h1>
<div id="doc">
<div id="l1"
class="code sev- "><tt><i>1</i> <span class="c1"># Generated by Django 5.2.1 on 2025-06-09 15:59</span></tt>
</div>
<div id="l2"
class="code sev- "><tt><i>2</i> &nbsp;</tt>
</div>
<div id="l3"
class="code sev- "><tt><i>3</i> <span class="kn">import</span><span class="w"> </span><span class="nn">django.db.models.deletion</span></tt>
</div>
<div id="l4"
class="code sev- "><tt><i>4</i> <span class="kn">from</span><span class="w"> </span><span class="nn">django.conf</span><span class="w"> </span><span class="kn">import</span> <span class="n">settings</span></tt>
</div>
<div id="l5"
class="code sev- "><tt><i>5</i> <span class="kn">from</span><span class="w"> </span><span class="nn">django.db</span><span class="w"> </span><span class="kn">import</span> <span class="n">migrations</span><span class="p">,</span> <span class="n">models</span></tt>
</div>
<div id="l6"
class="code sev- "><tt><i>6</i> &nbsp;</tt>
</div>
<div id="l7"
class="code sev- "><tt><i>7</i> &nbsp;</tt>
</div>
<div id="l8"
class="code sev- "><tt><i>8</i> <span class="k">class</span><span class="w"> </span><span class="nc">Migration</span><span class="p">(</span><span class="n">migrations</span><span class="o">.</span><span class="n">Migration</span><span class="p">):</span></tt>
</div>
<div id="l9"
class="code sev- "><tt><i>9</i> &nbsp;</tt>
</div>
<div id="l10"
class="code sev- "><tt><i>10</i> <span class="n">dependencies</span> <span class="o">=</span> <span class="p">[</span></tt>
</div>
<div id="l11"
class="code sev- "><tt><i>11</i> <span class="p">(</span><span class="s1">&#39;support&#39;</span><span class="p">,</span> <span class="s1">&#39;0016_alter_issue_author_alter_project_author&#39;</span><span class="p">),</span></tt>
</div>
<div id="l12"
class="code sev- "><tt><i>12</i> <span class="n">migrations</span><span class="o">.</span><span class="n">swappable_dependency</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">AUTH_USER_MODEL</span><span class="p">),</span></tt>
</div>
<div id="l13"
class="code sev- "><tt><i>13</i> <span class="p">]</span></tt>
</div>
<div id="l14"
class="code sev- "><tt><i>14</i> &nbsp;</tt>
</div>
<div id="l15"
class="code sev- "><tt><i>15</i> <span class="n">operations</span> <span class="o">=</span> <span class="p">[</span></tt>
</div>
<div id="l16"
class="code sev- "><tt><i>16</i> <span class="n">migrations</span><span class="o">.</span><span class="n">AlterField</span><span class="p">(</span></tt>
</div>
<div id="l17"
class="code sev- "><tt><i>17</i> <span class="n">model_name</span><span class="o">=</span><span class="s1">&#39;projectcontributor&#39;</span><span class="p">,</span></tt>
</div>
<div id="l18"
class="code sev- "><tt><i>18</i> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;contributor&#39;</span><span class="p">,</span></tt>
</div>
<div id="l19"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (110 > 79 characters)</li>
</ul><tt><i>19</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">AUTH_USER_MODEL</span><span class="p">),</span></tt>
</div>
<div id="l20"
class="code sev- "><tt><i>20</i> <span class="p">),</span></tt>
</div>
<div id="l21"
class="code sev- "><tt><i>21</i> <span class="p">]</span></tt>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,73 @@
<!DOCTYPE html>
<html>
<head>
<title>flake8 violations: softdesk/support/permissions.py</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
<script>
function bindHandler(link) {
var code = link.getAttribute('data-code');
var key = location.pathname + '#' + code;
var ul = link.parentNode.querySelector('.details');
if (sessionStorage[key] != 'open') {
ul.style.display = 'none';
}
link.addEventListener('click', function (event) {
if (!ul.style.display || ul.style.display == 'none') {
ul.style.display = 'block';
sessionStorage[key] = 'open';
} else {
ul.style.display = 'none';
sessionStorage[key] = 'closed';
}
});
}
window.addEventListener('DOMContentLoaded', function () {
var links = document.querySelectorAll('#index > li > a');
for (var i = 0; i < links.length; i++) {
bindHandler(links[i]);
}
});
</script>
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<p id="srclink">
<a title="View full annotated source"
href="softdesk.support.permissions.source.html">
<img src="file.svg" alt="&#x2261;">
</a></p>
<h1>
<a href="index.html">
<img src="back.svg" alt="&#x2B05;">
softdesk/support/permissions.py
</a>
</h1>
<ul id="index">
<li>
<a data-code="E302">
<span class="count sev-2">
1
</span>
<strong>E302:</strong> expected 2 blank lines, found 1
</a>
<ul class="details">
<li>
<a href="softdesk.support.permissions.source.html#l3">
<tt><i>3</i> <span class="k">class</span><span class="w"> </span><span class="nc">IsAuthor</span><span class="p">(</span><span class="n">BasePermission</span><span class="p">):</span></tt>
</a>
</li>
</ul>
</li>
</ul>
</div>
</body>
</html>

View File

@@ -0,0 +1,86 @@
<!DOCTYPE html>
<html>
<head>
<title>softdesk/support/permissions.py - flake8 annotated source</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<h1>
<a href="softdesk.support.permissions.report.html">
<img src="back.svg" alt="&#x2B05;">
softdesk/support/permissions.py source
</a>
</h1>
<div id="doc">
<div id="l1"
class="code sev- "><tt><i>1</i> <span class="kn">from</span><span class="w"> </span><span class="nn">rest_framework.permissions</span><span class="w"> </span><span class="kn">import</span> <span class="n">BasePermission</span></tt>
</div>
<div id="l2"
class="code sev- "><tt><i>2</i> &nbsp;</tt>
</div>
<div id="l3"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E302
</span>
Expected 2 blank lines, found 1</li>
</ul><tt><i>3</i> <span class="k">class</span><span class="w"> </span><span class="nc">IsAuthor</span><span class="p">(</span><span class="n">BasePermission</span><span class="p">):</span></tt>
</div>
<div id="l4"
class="code sev- "><tt><i>4</i> &nbsp;</tt>
</div>
<div id="l5"
class="code sev- "><tt><i>5</i> <span class="k">def</span><span class="w"> </span><span class="nf">has_object_permission</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">request</span><span class="p">,</span> <span class="n">view</span><span class="p">,</span> <span class="nb">object</span><span class="p">):</span></tt>
</div>
<div id="l6"
class="code sev- "><tt><i>6</i> <span class="k">return</span> <span class="nb">bool</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">user</span></tt>
</div>
<div id="l7"
class="code sev- "><tt><i>7</i> <span class="ow">and</span> <span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">is_authenticated</span></tt>
</div>
<div id="l8"
class="code sev- "><tt><i>8</i> <span class="ow">and</span> <span class="n">request</span><span class="o">.</span><span class="n">user</span> <span class="o">==</span> <span class="nb">object</span><span class="o">.</span><span class="n">author</span></tt>
</div>
<div id="l9"
class="code sev- "><tt><i>9</i> <span class="p">)</span></tt>
</div>
<div id="l10"
class="code sev- "><tt><i>10</i> &nbsp;</tt>
</div>
<div id="l11"
class="code sev- "><tt><i>11</i> &nbsp;</tt>
</div>
<div id="l12"
class="code sev- "><tt><i>12</i> <span class="k">class</span><span class="w"> </span><span class="nc">IsContributor</span><span class="p">(</span><span class="n">BasePermission</span><span class="p">):</span></tt>
</div>
<div id="l13"
class="code sev- "><tt><i>13</i> &nbsp;</tt>
</div>
<div id="l14"
class="code sev- "><tt><i>14</i> <span class="k">def</span><span class="w"> </span><span class="nf">has_object_permission</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">request</span><span class="p">,</span> <span class="n">view</span><span class="p">,</span> <span class="nb">object</span><span class="p">):</span></tt>
</div>
<div id="l15"
class="code sev- "><tt><i>15</i> <span class="nb">print</span><span class="p">(</span><span class="nb">object</span><span class="o">.</span><span class="n">contributors</span><span class="o">.</span><span class="n">all</span><span class="p">())</span></tt>
</div>
<div id="l16"
class="code sev- "><tt><i>16</i> <span class="k">return</span> <span class="nb">bool</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">is_authenticated</span></tt>
</div>
<div id="l17"
class="code sev- "><tt><i>17</i> <span class="ow">and</span> <span class="n">request</span><span class="o">.</span><span class="n">user</span> <span class="ow">in</span> <span class="nb">object</span><span class="o">.</span><span class="n">contributors</span><span class="o">.</span><span class="n">all</span><span class="p">()</span></tt>
</div>
<div id="l18"
class="code sev- "><tt><i>18</i> <span class="p">)</span></tt>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,73 @@
<!DOCTYPE html>
<html>
<head>
<title>flake8 violations: softdesk/support/tests.py</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
<script>
function bindHandler(link) {
var code = link.getAttribute('data-code');
var key = location.pathname + '#' + code;
var ul = link.parentNode.querySelector('.details');
if (sessionStorage[key] != 'open') {
ul.style.display = 'none';
}
link.addEventListener('click', function (event) {
if (!ul.style.display || ul.style.display == 'none') {
ul.style.display = 'block';
sessionStorage[key] = 'open';
} else {
ul.style.display = 'none';
sessionStorage[key] = 'closed';
}
});
}
window.addEventListener('DOMContentLoaded', function () {
var links = document.querySelectorAll('#index > li > a');
for (var i = 0; i < links.length; i++) {
bindHandler(links[i]);
}
});
</script>
</head>
<body>
<div id="masthead" class="sev-1"></div>
<div id="page">
<p id="srclink">
<a title="View full annotated source"
href="softdesk.support.tests.source.html">
<img src="file.svg" alt="&#x2261;">
</a></p>
<h1>
<a href="index.html">
<img src="back.svg" alt="&#x2B05;">
softdesk/support/tests.py
</a>
</h1>
<ul id="index">
<li>
<a data-code="F401">
<span class="count sev-1">
1
</span>
<strong>F401:</strong> 'django.test.TestCase' imported but unused
</a>
<ul class="details">
<li>
<a href="softdesk.support.tests.source.html#l1">
<tt><i>1</i> <span class="kn">from</span><span class="w"> </span><span class="nn">django.test</span><span class="w"> </span><span class="kn">import</span> <span class="n">TestCase</span></tt>
</a>
</li>
</ul>
</li>
</ul>
</div>
</body>
</html>

View File

@@ -0,0 +1,41 @@
<!DOCTYPE html>
<html>
<head>
<title>softdesk/support/tests.py - flake8 annotated source</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div id="masthead" class="sev-1"></div>
<div id="page">
<h1>
<a href="softdesk.support.tests.report.html">
<img src="back.svg" alt="&#x2B05;">
softdesk/support/tests.py source
</a>
</h1>
<div id="doc">
<div id="l1"
class="code sev-1 le">
<ul class="violations">
<li>
<span class="count sev-1">
F401
</span>
'django.test.TestCase' imported but unused</li>
</ul><tt><i>1</i> <span class="kn">from</span><span class="w"> </span><span class="nn">django.test</span><span class="w"> </span><span class="kn">import</span> <span class="n">TestCase</span></tt>
</div>
<div id="l2"
class="code sev- "><tt><i>2</i> &nbsp;</tt>
</div>
<div id="l3"
class="code sev- "><tt><i>3</i> <span class="c1"># Create your tests here.</span></tt>
</div>
</div>
</div>
</body>
</html>

327
flake-report/styles.css Normal file
View File

@@ -0,0 +1,327 @@
html {
font-family: sans-serif;
font-size: 90%;
}
#masthead {
position: fixed;
left: 0;
top: 0;
right: 0;
height: 40%;
}
h1, h2 {
font-family: sans-serif;
font-weight: normal;
}
h1 {
color: white;
font-size: 36px;
margin-top: 1em;
}
h1 img {
margin-right: 0.3em;
}
h2 {
margin-top: 0;
}
h1 a {
color: white;
}
#versions {
color: rgba(255, 255, 255, 0.7);
}
#page {
position: relative;
max-width: 960px;
margin: 0 auto;
}
#index {
background-color: white;
box-shadow: 0 0 4px rgba(0, 0, 0, 0.8);
padding: 0;
margin: 0;
}
#index li {
list-style: none;
margin: 0;
padding: 1px 0;
}
#index li + li {
border-top: solid silver 1px;
}
.details p {
margin-left: 3em;
color: #888;
}
#index a {
display: block;
padding: 0.8em 1em;
cursor: pointer;
}
#index #all-good {
padding: 1.4em 1em 0.8em;
}
#all-good .count .tick {
font-size: 2em;
}
#all-good .count {
float: left;
}
#all-good h2,
#all-good p {
margin-left: 50px;
}
#index a:hover {
background-color: #eee;
}
.count {
display: inline-block;
border-radius: 50%;
text-align: center;
width: 2.5em;
line-height: 2.5em;
height: 2.5em;
color: white;
margin-right: 1em;
}
.sev-1 {
background-color: #a00;
}
.sev-2 {
background-color: #b80;
}
.sev-3 {
background-color: #28c;
}
.sev-4 {
background-color: #383;
}
a {
text-decoration: none;
}
#doc {
background-color: white;
margin: 1em 0;
padding: 1em;
padding-left: 1.2em;
position: relative;
box-shadow: 0 0 4px rgba(0, 0, 0, 0.8);
}
#doc pre {
margin: 0;
padding: 0.07em;
}
.violations {
position: absolute;
margin: 1.2em 0 0 3em;
padding: 0.5em 1em;
font-size: 14px;
background-color: white;
box-shadow: 0 0 4px rgba(0, 0, 0, 0.4);
display: none;
}
.violations .count {
font-size: 70%;
}
.violations li {
padding: 0.1em 0.3em;
list-style: none;
}
.line-violations::before {
display: block;
content: "";
position: absolute;
left: -1em;
width: 14px;
height: 14px;
border-radius: 50%;
background-color: red;
}
.code:hover .violations {
display: block;
}
tt {
white-space: pre-wrap;
font-family: Consolas, monospace;
font-size: 10pt;
}
tt i {
color: silver;
display: inline-block;
text-align: right;
width: 3em;
box-sizing: border-box;
height: 100%;
border-right: solid #eee 1px;
padding-right: 0.2em;
}
.le {
background-color: #ffe8e8;
cursor: pointer;
}
.le:hover {
background-color: #fcc;
}
.details {
clear: both;
}
#index .details {
border-top-style: none;
margin: 1em;
}
ul.details {
margin-left: 0;
padding-left: 0;
}
#index .details li {
list-style: none;
border-top-style: none;
margin: 0.3em 0;
padding: 0;
}
#srclink {
float: right;
font-size: 36px;
margin: 0;
}
#srclink a {
color: white;
}
#index .details a {
padding: 0;
color: inherit;
}
.le {
background-color: #ffe8e8;
cursor: pointer;
}
.le.sev-1 {
background-color: #f88;
}
.le.sev-2 {
background-color: #fda;
}
.le.sev-3 {
background-color: #adf;
}
img {
height: 1.2em;
vertical-align: -0.35em;
}
pre { line-height: 125%; }
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.hll { background-color: #ffffcc }
.c { color: #3D7B7B; font-style: italic } /* Comment */
.err { border: 1px solid #F00 } /* Error */
.k { color: #008000; font-weight: bold } /* Keyword */
.o { color: #666 } /* Operator */
.ch { color: #3D7B7B; font-style: italic } /* Comment.Hashbang */
.cm { color: #3D7B7B; font-style: italic } /* Comment.Multiline */
.cp { color: #9C6500 } /* Comment.Preproc */
.cpf { color: #3D7B7B; font-style: italic } /* Comment.PreprocFile */
.c1 { color: #3D7B7B; font-style: italic } /* Comment.Single */
.cs { color: #3D7B7B; font-style: italic } /* Comment.Special */
.gd { color: #A00000 } /* Generic.Deleted */
.ge { font-style: italic } /* Generic.Emph */
.ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */
.gr { color: #E40000 } /* Generic.Error */
.gh { color: #000080; font-weight: bold } /* Generic.Heading */
.gi { color: #008400 } /* Generic.Inserted */
.go { color: #717171 } /* Generic.Output */
.gp { color: #000080; font-weight: bold } /* Generic.Prompt */
.gs { font-weight: bold } /* Generic.Strong */
.gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.gt { color: #04D } /* Generic.Traceback */
.kc { color: #008000; font-weight: bold } /* Keyword.Constant */
.kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
.kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
.kp { color: #008000 } /* Keyword.Pseudo */
.kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
.kt { color: #B00040 } /* Keyword.Type */
.m { color: #666 } /* Literal.Number */
.s { color: #BA2121 } /* Literal.String */
.na { color: #687822 } /* Name.Attribute */
.nb { color: #008000 } /* Name.Builtin */
.nc { color: #00F; font-weight: bold } /* Name.Class */
.no { color: #800 } /* Name.Constant */
.nd { color: #A2F } /* Name.Decorator */
.ni { color: #717171; font-weight: bold } /* Name.Entity */
.ne { color: #CB3F38; font-weight: bold } /* Name.Exception */
.nf { color: #00F } /* Name.Function */
.nl { color: #767600 } /* Name.Label */
.nn { color: #00F; font-weight: bold } /* Name.Namespace */
.nt { color: #008000; font-weight: bold } /* Name.Tag */
.nv { color: #19177C } /* Name.Variable */
.ow { color: #A2F; font-weight: bold } /* Operator.Word */
.w { color: #BBB } /* Text.Whitespace */
.mb { color: #666 } /* Literal.Number.Bin */
.mf { color: #666 } /* Literal.Number.Float */
.mh { color: #666 } /* Literal.Number.Hex */
.mi { color: #666 } /* Literal.Number.Integer */
.mo { color: #666 } /* Literal.Number.Oct */
.sa { color: #BA2121 } /* Literal.String.Affix */
.sb { color: #BA2121 } /* Literal.String.Backtick */
.sc { color: #BA2121 } /* Literal.String.Char */
.dl { color: #BA2121 } /* Literal.String.Delimiter */
.sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
.s2 { color: #BA2121 } /* Literal.String.Double */
.se { color: #AA5D1F; font-weight: bold } /* Literal.String.Escape */
.sh { color: #BA2121 } /* Literal.String.Heredoc */
.si { color: #A45A77; font-weight: bold } /* Literal.String.Interpol */
.sx { color: #008000 } /* Literal.String.Other */
.sr { color: #A45A77 } /* Literal.String.Regex */
.s1 { color: #BA2121 } /* Literal.String.Single */
.ss { color: #19177C } /* Literal.String.Symbol */
.bp { color: #008000 } /* Name.Builtin.Pseudo */
.fm { color: #00F } /* Name.Function.Magic */
.vc { color: #19177C } /* Name.Variable.Class */
.vg { color: #19177C } /* Name.Variable.Global */
.vi { color: #19177C } /* Name.Variable.Instance */
.vm { color: #19177C } /* Name.Variable.Magic */
.il { color: #666 } /* Literal.Number.Integer.Long */

View File

@@ -4,8 +4,17 @@ charset-normalizer==3.4.2
Django==5.2.1 Django==5.2.1
djangorestframework==3.16.0 djangorestframework==3.16.0
djangorestframework_simplejwt==5.5.0 djangorestframework_simplejwt==5.5.0
flake8==7.2.0
flake8-html==0.4.3
idna==3.10 idna==3.10
Jinja2==3.1.6
MarkupSafe==3.0.2
mccabe==0.7.0
pycodestyle==2.13.0
pyflakes==3.3.2
Pygments==2.19.1
PyJWT==2.9.0 PyJWT==2.9.0
requests==2.32.3 requests==2.32.3
sqlparse==0.5.3 sqlparse==0.5.3
typing_extensions==4.13.2
urllib3==2.4.0 urllib3==2.4.0

View File

@@ -1,3 +1,3 @@
from django.contrib import admin #from django.contrib import admin
# Register your models here. # Register your models here.

View File

@@ -0,0 +1,47 @@
# Generated by Django 5.2.1 on 2025-05-23 03:58
import django.contrib.auth.models
import django.contrib.auth.validators
import django.utils.timezone
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
('auth', '0012_alter_user_first_name_max_length'),
]
operations = [
migrations.CreateModel(
name='User',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('password', models.CharField(max_length=128, verbose_name='password')),
('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')),
('is_superuser', models.BooleanField(default=False, help_text='Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status')),
('username', models.CharField(error_messages={'unique': 'A user with that username already exists.'}, help_text='Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.', max_length=150, unique=True, validators=[django.contrib.auth.validators.UnicodeUsernameValidator()], verbose_name='username')),
('first_name', models.CharField(blank=True, max_length=150, verbose_name='first name')),
('last_name', models.CharField(blank=True, max_length=150, verbose_name='last name')),
('email', models.EmailField(blank=True, max_length=254, verbose_name='email address')),
('is_staff', models.BooleanField(default=False, help_text='Designates whether the user can log into this admin site.', verbose_name='staff status')),
('is_active', models.BooleanField(default=True, help_text='Designates whether this user should be treated as active. Unselect this instead of deleting accounts.', verbose_name='active')),
('date_joined', models.DateTimeField(default=django.utils.timezone.now, verbose_name='date joined')),
('can_be_contacted', models.BooleanField(default=False)),
('can_data_be_shared', models.BooleanField(default=False)),
('age', models.IntegerField()),
('groups', models.ManyToManyField(blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.', related_name='user_set', related_query_name='user', to='auth.group', verbose_name='groups')),
('user_permissions', models.ManyToManyField(blank=True, help_text='Specific permissions for this user.', related_name='user_set', related_query_name='user', to='auth.permission', verbose_name='user permissions')),
],
options={
'verbose_name': 'user',
'verbose_name_plural': 'users',
'abstract': False,
},
managers=[
('objects', django.contrib.auth.models.UserManager()),
],
),
]

View File

@@ -0,0 +1,18 @@
# Generated by Django 5.2.1 on 2025-05-23 04:00
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('authentication', '0001_initial'),
]
operations = [
migrations.AlterField(
model_name='user',
name='age',
field=models.IntegerField(null=True),
),
]

View File

@@ -1,14 +1,11 @@
from django.db import models from django.db import models
from django.contrib.auth.models import AbstractUser, Group from django.contrib.auth.models import AbstractUser
class User(AbstractUser): class User(AbstractUser):
can_be_contacted = models.BooleanField(default=False) can_be_contacted = models.BooleanField(default=False)
can_data_be_shared = models.BooleanField(default=False) can_data_be_shared = models.BooleanField(default=False)
age = models.IntegerField() age = models.IntegerField(null=True)
def __str__(self):
return self.username

View File

@@ -0,0 +1,77 @@
from rest_framework.serializers import ModelSerializer, ValidationError
from rest_framework import serializers
from authentication.models import User
class UserSerializer(ModelSerializer):
class Meta:
model = User
fields = ['id',
'username',
'email',
'age',
'can_be_contacted',
'can_data_be_shared']
class UserListSerializer(ModelSerializer):
class Meta:
model = User
fields = ['id', 'username']
class UserUpdateSerializer(ModelSerializer):
class Meta:
model = User
fields = ['email', 'can_be_contacted', 'can_data_be_shared']
class UserRegisterSerializer(ModelSerializer):
password2 = serializers.CharField(write_only=True)
password = serializers.CharField(write_only=True)
class Meta:
model = User
fields = ['username',
'email',
'password',
'password2',
'age',
'can_be_contacted',
'can_data_be_shared']
def validate(self, data):
if data['password'] != data['password2']:
raise ValidationError("Passwords don't match.")
return data
def validate_age(self, value):
if value < 15:
raise ValidationError("You must be older than 15")
return value
def create(self, validated_data):
"""
Create and return a new `User` instance, given the validated data.
"""
user = User.objects.create_user(
username=validated_data['username'],
email=validated_data['email'],
password=validated_data['password'],
age=validated_data['age'],
can_be_contacted=validated_data['can_be_contacted'],
can_data_be_shared=validated_data['can_data_be_shared'],
)
return user
class PasswordUpdateSerializer(ModelSerializer):
old_password = serializers.CharField(required=True)
new_password = serializers.CharField(required=True)
class Meta:
model = User
fields = ['old_password', 'new_password']

View File

@@ -1,3 +1,84 @@
from django.shortcuts import render from django.contrib.auth import update_session_auth_hash
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status
from rest_framework.permissions import IsAuthenticated
from django.core.exceptions import PermissionDenied
from authentication.serializers import (UserSerializer,
UserUpdateSerializer,
UserRegisterSerializer,
PasswordUpdateSerializer)
# Create your views here.
class UserCreateView(APIView):
"""
Allow user registration for anyone
"""
def post(self, request):
"""
Creates a new user
Requires :
username->str, email->str, password->str, password2->str, age->int,
can_be_contacted->bool, can_data_be_shared->bool
"""
serializer = UserRegisterSerializer(data=request.data)
if serializer.is_valid(raise_exception=True):
serializer.save()
response = {
"detail": "User created successfully",
"data": serializer.data
}
return Response(data=response, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
class PasswordUpdateView(APIView):
permission_classes = [IsAuthenticated]
def put(self, request):
user = request.user
serializer = PasswordUpdateSerializer(data=request.data)
if serializer.is_valid():
if not user.check_password(serializer.data.get("old_password")):
return Response({"old_password": "Wrong password"},
status=status.HTTP_400_BAD_REQUEST)
user.set_password(serializer.data.get('new_password'))
user.save()
update_session_auth_hash(request, user)
response = {
"detail": "Password updated successfully."
}
return Response(response, status=status.HTTP_204_NO_CONTENT)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
class UserView(APIView):
permission_classes = [IsAuthenticated]
def get(self, request, *args, **kwargs):
return Response(UserSerializer(request.user).data)
def patch(self, request):
user = request.user
serializer = UserUpdateSerializer(user, data=request.data)
if serializer.is_valid():
serializer.save()
response = {
"detail": "Data updated",
"data": serializer.data
}
return Response(response, status=status.HTTP_201_CREATED)
response = {"detail": "Data error"}
return Response(response, status=status.HTTP_400_BAD_REQUEST)
def delete(self, request):
user = request.user
username = request.user.username
if 'user' in request.data:
if username == request.data['user']:
user.delete()
response = {"detail": f"User {username} deleted."}
return Response(response, status=status.HTTP_204_NO_CONTENT)
raise PermissionDenied()
response = {"detail": "Username to delete must be given in data"}
return Response(response, status=status.HTTP_400_BAD_REQUEST)

View File

@@ -11,6 +11,7 @@ https://docs.djangoproject.com/en/5.2/ref/settings/
""" """
from pathlib import Path from pathlib import Path
from datetime import timedelta
# Build paths inside the project like this: BASE_DIR / 'subdir'. # Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent BASE_DIR = Path(__file__).resolve().parent.parent
@@ -127,9 +128,13 @@ DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
AUTH_USER_MODEL = 'authentication.User' AUTH_USER_MODEL = 'authentication.User'
REST_FRAMERWORK = { REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': ('rest_framework_simplejwt.authentication.JWTAuthentication',),
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination', 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination',
'PAGE_SIZE': 5, 'PAGE_SIZE': 5
'DEFAULT_AUTHENTICATION_CLASSES': ('rest_framework_simplejwt.authentication.JWTAuthentication',)
} }
SIMPLE_JWT = {
'ACCESS_TOKEN_LIFETIME': timedelta(days=30),
'REFRESH_TOKEN_LIFETIME': timedelta(days=30),
}

View File

@@ -15,8 +15,32 @@ Including another URLconf
2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) 2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
""" """
from django.contrib import admin from django.contrib import admin
from django.urls import path from django.urls import path, include
from authentication.views import (UserView, UserCreateView, PasswordUpdateView)
from support.views import ProjectViewSet, IssueViewSet, CommentViewSet
from rest_framework import routers
from rest_framework_simplejwt.views import (TokenObtainPairView,
TokenRefreshView)
router = routers.SimpleRouter()
router.register('project', ProjectViewSet, basename='project')
router.register('issue', IssueViewSet, basename='issue')
router.register('comment', CommentViewSet, basename='comment')
urlpatterns = [ urlpatterns = [
path('admin/', admin.site.urls), path('admin/', admin.site.urls),
path('api-auth/', include('rest_framework.urls')),
path('api/', include(router.urls)),
path('api/user/', UserView.as_view(), name='user'),
path('api/user/create/', UserCreateView.as_view(), name='user_create'),
path('api/user/password-update/',
PasswordUpdateView.as_view(),
name='password_update'),
path('api/token/',
TokenObtainPairView.as_view(),
name='token_obtain_pair'),
path('api/token/refresh/',
TokenRefreshView.as_view(),
name='token_refresh'),
] ]

View File

@@ -1,9 +1,22 @@
from django.contrib import admin from django.contrib import admin
from support.models import Project, Issue, Comment, Contributor from support.models import Project, Issue, Comment, ProjectContributor
from authentication.models import User
admin.site.register(Project) class AdminProject(admin.ModelAdmin):
admin.site.register(Issue) list_display = ('id', 'title', 'author', 'contributors')
@admin.display(description='contributors')
def contributors(self, obj):
return obj.contributors
class AdminIssue(admin.ModelAdmin):
list_display = ('id', 'title', 'author', 'project')
admin.site.register(User)
admin.site.register(Project, AdminProject)
admin.site.register(Issue, AdminIssue)
admin.site.register(Comment) admin.site.register(Comment)
admin.site.register(Contributor) admin.site.register(ProjectContributor)

View File

@@ -0,0 +1,71 @@
# Generated by Django 5.2.1 on 2025-05-23 03:58
import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
migrations.CreateModel(
name='Contributor',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('data', models.CharField(blank=True, max_length=255)),
('contributor', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to=settings.AUTH_USER_MODEL)),
],
),
migrations.CreateModel(
name='Issue',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(max_length=255, verbose_name='title')),
('date_created', models.DateTimeField(auto_now_add=True)),
('description', models.TextField()),
('status', models.CharField(max_length=15, verbose_name=[('ToDo', 'Todo'), ('InProgress', 'Inprogress'), ('Finished', 'Finished')])),
('priority', models.CharField(max_length=15, verbose_name=[('L', 'Low'), ('M', 'Medium'), ('H', 'High')])),
('tag', models.CharField(max_length=15, verbose_name=[('Bug', 'Bug'), ('Feature', 'Feature'), ('Task', 'Task')])),
('author', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to='support.contributor')),
],
),
migrations.CreateModel(
name='Comment',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(max_length=255)),
('date_created', models.DateTimeField(auto_now_add=True)),
('description', models.CharField(max_length=4000)),
('author', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to='support.contributor')),
('issue', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='support.issue')),
],
),
migrations.CreateModel(
name='Project',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(max_length=255)),
('date_created', models.DateTimeField(auto_now_add=True)),
('type', models.CharField(choices=[('BackEnd', 'Backend'), ('FrontEnd', 'Frontend'), ('iOS', 'Ios'), ('Android', 'Android')], max_length=10)),
('description', models.CharField(max_length=4000)),
('author', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='author', to='support.contributor')),
('contributors', models.ManyToManyField(related_name='contribution', through='support.Contributor', to=settings.AUTH_USER_MODEL)),
],
),
migrations.AddField(
model_name='issue',
name='project',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='support.project'),
),
migrations.AddField(
model_name='contributor',
name='project',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='project', to='support.project'),
),
]

View File

@@ -0,0 +1,24 @@
# Generated by Django 5.2.1 on 2025-05-25 19:20
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('support', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='project',
name='active',
field=models.BooleanField(default=True),
),
migrations.AlterField(
model_name='issue',
name='project',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='support.project'),
),
]

View File

@@ -0,0 +1,18 @@
# Generated by Django 5.2.1 on 2025-05-25 19:25
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('support', '0002_project_active_alter_issue_project'),
]
operations = [
migrations.RenameField(
model_name='contributor',
old_name='contributor',
new_name='user',
),
]

View File

@@ -0,0 +1,19 @@
# Generated by Django 5.2.1 on 2025-05-25 19:36
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('support', '0003_rename_contributor_contributor_user'),
]
operations = [
migrations.AlterField(
model_name='project',
name='author',
field=models.ForeignKey(blank=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='author', to='support.contributor'),
),
]

View File

@@ -0,0 +1,19 @@
# Generated by Django 5.2.1 on 2025-05-25 19:37
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('support', '0004_alter_project_author'),
]
operations = [
migrations.AlterField(
model_name='project',
name='author',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='author', to='support.contributor'),
),
]

View File

@@ -0,0 +1,19 @@
# Generated by Django 5.2.1 on 2025-05-25 19:37
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('support', '0005_alter_project_author'),
]
operations = [
migrations.AlterField(
model_name='project',
name='author',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='author', to='support.contributor'),
),
]

View File

@@ -0,0 +1,26 @@
# Generated by Django 5.2.1 on 2025-05-25 19:49
import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('support', '0006_alter_project_author'),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
migrations.AddField(
model_name='contributor',
name='active',
field=models.BooleanField(default=True),
),
migrations.AlterField(
model_name='project',
name='author',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='author', to=settings.AUTH_USER_MODEL),
),
]

View File

@@ -0,0 +1,18 @@
# Generated by Django 5.2.1 on 2025-05-25 19:52
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('support', '0007_contributor_active_alter_project_author'),
]
operations = [
migrations.RenameField(
model_name='contributor',
old_name='user',
new_name='contributor_user',
),
]

View File

@@ -0,0 +1,18 @@
# Generated by Django 5.2.1 on 2025-05-26 05:26
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('support', '0008_rename_user_contributor_contributor_user'),
]
operations = [
migrations.RenameField(
model_name='contributor',
old_name='contributor_user',
new_name='username',
),
]

View File

@@ -0,0 +1,52 @@
# Generated by Django 5.2.1 on 2025-05-26 05:53
import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('support', '0009_rename_contributor_user_contributor_username'),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
migrations.AlterField(
model_name='comment',
name='author',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='comment_author', to=settings.AUTH_USER_MODEL),
),
migrations.AlterField(
model_name='issue',
name='author',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='issue_author', to=settings.AUTH_USER_MODEL),
),
migrations.AlterField(
model_name='project',
name='author',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='project_author', to=settings.AUTH_USER_MODEL),
),
migrations.CreateModel(
name='ProjectContributor',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('active', models.BooleanField(default=True)),
('data', models.CharField(blank=True, max_length=255)),
('contributor', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to=settings.AUTH_USER_MODEL)),
('project', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='project', to='support.project')),
],
options={
'unique_together': {('contributor', 'project')},
},
),
migrations.AlterField(
model_name='project',
name='contributors',
field=models.ManyToManyField(related_name='contribution', through='support.ProjectContributor', to=settings.AUTH_USER_MODEL),
),
migrations.DeleteModel(
name='Contributor',
),
]

View File

@@ -0,0 +1,28 @@
# Generated by Django 5.2.1 on 2025-05-26 18:26
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('support', '0010_alter_comment_author_alter_issue_author_and_more'),
]
operations = [
migrations.AlterField(
model_name='issue',
name='priority',
field=models.CharField(choices=[('L', 'Low'), ('M', 'Medium'), ('H', 'High')], max_length=15),
),
migrations.AlterField(
model_name='issue',
name='status',
field=models.CharField(choices=[('ToDo', 'Todo'), ('InProgress', 'Inprogress'), ('Finished', 'Finished')], max_length=15),
),
migrations.AlterField(
model_name='issue',
name='tag',
field=models.CharField(choices=[('Bug', 'Bug'), ('Feature', 'Feature'), ('Task', 'Task')], max_length=15),
),
]

View File

@@ -0,0 +1,23 @@
# Generated by Django 5.2.1 on 2025-05-26 18:26
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('support', '0011_alter_issue_priority_alter_issue_status_and_more'),
]
operations = [
migrations.AlterField(
model_name='issue',
name='priority',
field=models.CharField(choices=[('Low', 'Low'), ('Medium', 'Medium'), ('High', 'High')], max_length=15),
),
migrations.AlterField(
model_name='issue',
name='status',
field=models.CharField(choices=[('ToDo', 'Todo'), ('In Progress', 'Inprogress'), ('Finished', 'Finished')], max_length=15),
),
]

View File

@@ -0,0 +1,19 @@
# Generated by Django 5.2.1 on 2025-05-26 19:06
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('support', '0012_alter_issue_priority_alter_issue_status'),
]
operations = [
migrations.AlterField(
model_name='issue',
name='project',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='support.project'),
),
]

View File

@@ -0,0 +1,19 @@
# Generated by Django 5.2.1 on 2025-05-27 09:30
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('support', '0013_alter_issue_project'),
]
operations = [
migrations.AlterField(
model_name='issue',
name='project',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='support.project'),
),
]

View File

@@ -0,0 +1,21 @@
# Generated by Django 5.2.1 on 2025-06-09 09:40
import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('support', '0014_alter_issue_project'),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
migrations.AlterField(
model_name='project',
name='author',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='project_author', to=settings.AUTH_USER_MODEL),
),
]

View File

@@ -0,0 +1,26 @@
# Generated by Django 5.2.1 on 2025-06-09 15:44
import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('support', '0015_alter_project_author'),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
migrations.AlterField(
model_name='issue',
name='author',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='issue_author', to=settings.AUTH_USER_MODEL),
),
migrations.AlterField(
model_name='project',
name='author',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='project_author', to=settings.AUTH_USER_MODEL),
),
]

View File

@@ -0,0 +1,21 @@
# Generated by Django 5.2.1 on 2025-06-09 15:59
import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('support', '0016_alter_issue_author_alter_project_author'),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
migrations.AlterField(
model_name='projectcontributor',
name='contributor',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
),
]

View File

@@ -10,58 +10,77 @@ class Project(models.Model):
IOS = 'iOS' IOS = 'iOS'
ANDROID = 'Android' ANDROID = 'Android'
title = models.CharField(max_length=255) title = models.CharField(max_length=255)
date_created = models.DateTimeField(auto_now_add=True) date_created = models.DateTimeField(auto_now_add=True)
type = models.CharField(choices=Type.choices, max_length=10) type = models.CharField(choices=Type.choices, max_length=10)
active = models.BooleanField(default=True)
description = models.CharField(max_length=4000) description = models.CharField(max_length=4000)
author = models.ForeignKey('Contributor', on_delete=models.DO_NOTHING, related_name='author') author = models.ForeignKey(settings.AUTH_USER_MODEL,
on_delete=models.SET_NULL,
contributors = models.ManyToManyField( related_name='project_author', null=True)
settings.AUTH_USER_MODEL, through='Contributor', related_name='contribution') contributors = models.ManyToManyField(settings.AUTH_USER_MODEL,
through='ProjectContributor',
related_name='contribution')
def __str__(self):
return self.title
class Contributor(models.Model): class ProjectContributor(models.Model):
contributor = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING) contributor = models.ForeignKey(settings.AUTH_USER_MODEL,
project = models.ForeignKey(Project, on_delete=models.CASCADE, related_name='project') on_delete=models.CASCADE)
active = models.BooleanField(default=True)
project = models.ForeignKey('Project',
on_delete=models.CASCADE,
related_name='project')
data = models.CharField(max_length=255, blank=True) data = models.CharField(max_length=255, blank=True)
class Meta:
unique_together = ('contributor', 'project')
def get_user(self):
return self.contributor
def __str__(self):
return self.contributor.username
class Issue(models.Model): class Issue(models.Model):
class Priority(models.TextChoices): class Priority(models.TextChoices):
LOW = 'L' LOW = 'Low'
MEDIUM = 'M' MEDIUM = 'Medium'
HIGH = 'H' HIGH = 'High'
class Status(models.TextChoices): class Status(models.TextChoices):
TODO = 'ToDo' TODO = 'ToDo'
INPROGRESS = 'InProgress' INPROGRESS = 'In Progress'
FINISHED = 'Finished' FINISHED = 'Finished'
class Tag(models.TextChoices): class Tag(models.TextChoices):
BUG = 'Bug' BUG = 'Bug'
FEATURE = 'Feature' FEATURE = 'Feature'
TASK = 'Task' TASK = 'Task'
title = models.CharField(max_length=255, verbose_name='title') title = models.CharField(max_length=255, verbose_name='title')
date_created = models.DateTimeField(auto_now_add=True) date_created = models.DateTimeField(auto_now_add=True)
description = models.TextField() description = models.TextField()
project = models.ForeignKey(Project, null=True, on_delete=models.SET_NULL, blank=True) status = models.CharField(choices=Status.choices, max_length=15)
status = models.CharField(Status.choices, max_length=15) priority = models.CharField(choices=Priority.choices, max_length=15)
priority = models.CharField(Priority.choices, max_length=15) tag = models.CharField(choices=Tag.choices, max_length=15)
tag = models.CharField(Tag.choices, max_length=15) project = models.ForeignKey(Project,
on_delete=models.CASCADE)
author = models.ForeignKey('Contributor', on_delete=models.DO_NOTHING) author = models.ForeignKey(settings.AUTH_USER_MODEL,
on_delete=models.DO_NOTHING,
related_name='issue_author',
blank=True, null=True)
class Comment(models.Model): class Comment(models.Model):
title = models.CharField(max_length=255) title = models.CharField(max_length=255)
date_created = models.DateTimeField(auto_now_add=True) date_created = models.DateTimeField(auto_now_add=True)
description = models.CharField(max_length=4000) description = models.CharField(max_length=4000)
author = models.ForeignKey('Contributor', on_delete=models.DO_NOTHING)
issue = models.ForeignKey(Issue, on_delete=models.CASCADE) issue = models.ForeignKey(Issue, on_delete=models.CASCADE)
author = models.ForeignKey(settings.AUTH_USER_MODEL,
on_delete=models.DO_NOTHING,
related_name='comment_author', null=True)

View File

@@ -0,0 +1,18 @@
from rest_framework.permissions import BasePermission
class IsAuthor(BasePermission):
def has_object_permission(self, request, view, object):
return bool(request.user
and request.user.is_authenticated
and request.user == object.author
)
class IsContributor(BasePermission):
def has_object_permission(self, request, view, object):
print(object.contributors.all())
return bool(request.user.is_authenticated
and request.user in object.contributors.all()
)

View File

@@ -0,0 +1,112 @@
from rest_framework.serializers import (ModelSerializer,
StringRelatedField,
SlugRelatedField,
SerializerMethodField,
ValidationError)
from support.models import Project, ProjectContributor, Issue, Comment
class ContributorSerializer(ModelSerializer):
class Meta:
model = ProjectContributor
fields = ['contributor', 'project', 'data']
class ContributorListSerializer(ModelSerializer):
contributor = StringRelatedField(many=False)
class Meta:
model = ProjectContributor
fields = ['contributor']
class ProjectSerializer(ModelSerializer):
author = StringRelatedField(many=False)
contributors = SlugRelatedField(many=True,
read_only='True',
slug_field='username')
class Meta:
model = Project
fields = ['id',
'author',
'contributors',
'title',
'type',
'date_created']
def validate_title(self, value):
if Project.objects.filter(title=value).exists():
raise ValidationError("Project already exists.")
return value
class ProjectDetailSerializer(ModelSerializer):
contributors = SlugRelatedField(many=True,
read_only='True',
slug_field='username')
author = StringRelatedField(many=False)
issues = SerializerMethodField()
class Meta:
model = Project
fields = ['title',
'date_created', 'type',
'author', 'contributors', 'description', 'issues']
def get_issues(self, instance):
queryset = Issue.objects.filter(project=instance.pk)
serializer = IssueSerializer(queryset, many=True)
return serializer.data
class IssueListSerializer(ModelSerializer):
class Meta:
model = Issue
fields = ['id', 'title']
class IssueSerializer(ModelSerializer):
author = StringRelatedField(many=False)
class Meta:
model = Issue
fields = ['id', 'title', 'project', 'date_created', 'priority',
'tag', 'status', 'author']
class IssueDetailSerializer(ModelSerializer):
comments = SerializerMethodField()
author = StringRelatedField(many=False)
class Meta:
model = Issue
fields = ['title', 'project', 'date_created', 'priority',
'tag', 'status', 'author', 'comments']
def get_comments(self, instance):
queryset = Comment.objects.filter(issue=instance.id)
serializer = CommentListSerializer(queryset, many=True)
return serializer.data
class CommentListSerializer(ModelSerializer):
issue = IssueListSerializer(many=False)
author = StringRelatedField(many=False)
class Meta:
model = Comment
fields = ['id', 'title', 'date_created', 'author', 'issue']
class CommentDetailSerializer(ModelSerializer):
author = StringRelatedField(many=False)
class Meta:
model = Comment
fields = ['title', 'date_created', 'description', 'issue', 'author']

View File

@@ -1,3 +1,252 @@
from django.shortcuts import render from rest_framework.viewsets import ModelViewSet
from support.models import Project, ProjectContributor, Issue, Comment
from authentication.models import User
from support.serializers import (ProjectSerializer,
ProjectDetailSerializer,
ContributorSerializer,
IssueSerializer,
IssueDetailSerializer,
CommentListSerializer,
CommentDetailSerializer)
from authentication.serializers import UserListSerializer
from rest_framework.response import Response
from rest_framework import status
from rest_framework.permissions import (IsAuthenticated,
IsAuthenticatedOrReadOnly)
from support.permissions import IsContributor
from rest_framework.decorators import action
from django.core.exceptions import PermissionDenied
# Create your views here.
class ProjectViewSet(ModelViewSet):
permission_classes = [IsAuthenticatedOrReadOnly]
serializer_class = ProjectSerializer
detail_serializer_class = ProjectDetailSerializer
def get_queryset(self):
"""
add a filter on contributor or author in querystring
"""
if self.request.GET.get('contributor'):
requested_contributor = self.request.GET.get('contributor')
try:
user = User.objects.get(username=requested_contributor)
return Project.objects.filter(contributors=user)
except User.DoesNotExist:
return User.objects.filter(username=requested_contributor)
if self.request.GET.get('author'):
requested_author = self.request.GET.get('author')
try:
user = User.objects.get(username=requested_author)
return Project.objects.filter(author=user)
except User.DoesNotExist:
return User.objects.filter(username=requested_author)
return Project.objects.filter(active=True)
def retrieve(self, request, *args, **kwargs):
"""
check if requestor is in the project's contributor
Raises exception or returns project detail
"""
project = self.get_object()
if request.user not in project.contributors.all():
raise PermissionDenied()
return Response(ProjectDetailSerializer(project).data)
def partial_update(self, request, *args, **kwargs):
"""
check if requestor is author
then save changes and returns project details
"""
project = self.get_object()
if request.user != project.author:
raise PermissionDenied()
serialized = ProjectDetailSerializer(project,
data=request.data,
partial=True)
if serialized.is_valid(raise_exception=True):
serialized.save()
return Response(serialized.data)
def perform_create(self, serializer):
"""set authenticated user as author and contributor on creation"""
test = serializer.save(author=self.request.user)
data = {'contributor': self.request.user.id, 'project': test.id}
contributor_serializer = ContributorSerializer(data=data)
if contributor_serializer.is_valid():
contributor_serializer.save()
@action(detail=True, methods=['patch'], permission_classes=[IsContributor])
def contributor(self, request, pk):
"""
Add a contributor to a project
by creating a ProjectContributor's instance
"""
# check if requestor is contributor
if request.user not in Project.objects.get(id=pk).contributors.all():
raise PermissionDenied()
if request.data is None or 'contributor' not in request.data:
response = {"detail": "Key error;`contributor` is expected"}
return Response(response, status=status.HTTP_400_BAD_REQUEST)
requested_contributor = request.data['contributor']
# get the user's instance
try:
user = User.objects.get(username=requested_contributor)
data = {'contributor': user.id, 'project': int(pk)}
serializer = ContributorSerializer(data=data)
project = Project.objects.get(id=pk)
if serializer.is_valid():
serializer.save()
response = {"detail": f"User {user} "
f"added to project '{project}'"}
return Response(response, status=status.HTTP_202_ACCEPTED)
response = {"detail": "This user is already contributing"}
return Response(response, status=status.HTTP_226_IM_USED)
except User.DoesNotExist:
response = {"detail": "User doesn't exist"}
return Response(response, status=status.HTTP_404_NOT_FOUND)
class IssueViewSet(ModelViewSet):
permission_classes = [IsAuthenticatedOrReadOnly]
serializer_class = IssueSerializer
detail_serializer_class = IssueDetailSerializer
def get_serializer_class(self):
if self.action == 'retrieve':
return self.detail_serializer_class
return super().get_serializer_class()
def get_queryset(self):
"""
returns only the issues related to projects
where requestor is contributor or empty list
"""
if self.request.GET.get('project'):
project_id = int(self.request.GET.get('project'))
if self.request.user not in Project.objects.get(
id=project_id).contributors.all():
raise PermissionDenied()
return Issue.objects.filter(project=project_id)
projects = Project.objects.filter(
contributors=self.request.user).values('id')
# query on a list
return Issue.objects.filter(project__in=projects)
def partial_update(self, request, *args, **kwargs):
"""
Check if requestor is author allows him to partial update
change the author to assign issue
"""
issue = self.get_object()
if self.request.user != issue.author:
raise PermissionDenied()
serializer = IssueSerializer(issue,
data=request.data,
partial=True)
if serializer.is_valid():
if 'author' in request.data:
try:
author = User.objects.get(username=request.data['author'])
serializer.save(author=author)
except User.DoesNotExist:
response = {
"detail": "Requested author isn't a valid user"}
return Response(response, status=status.HTTP_404_NOT_FOUND)
serializer.save()
return Response(serializer.data)
response = {"detail": "Data error"}
return Response(response, status=status.HTTP_400_BAD_REQUEST)
@action(detail=True, methods=['get'])
def contributors(self, request, pk):
"""
Check if requestor is contributor then returns the list
of the contributors to the issue's project or raise unauthorized
"""
issue = Issue.objects.get(id=pk)
if (ProjectContributor.objects.
filter(project=issue.project).
filter(contributor=request.user)):
return Response(UserListSerializer(
issue.project.contributors.all(), many=True).data)
else:
raise PermissionDenied()
def create(self, request, *args, **kwargs):
if 'project' not in request.data:
return Response("A project id is required",
status=status.HTTP_400_BAD_REQUEST)
project = Project.objects.get(id=request.data['project'])
serializer = IssueSerializer(data=request.data)
if self.request.user not in project.contributors.all():
response = {
"detail": "Requestor isn't contributor for this project"
}
return Response(response, status=status.HTTP_403_FORBIDDEN)
if serializer.is_valid(raise_exception=True):
issue = serializer.save(author=self.request.user)
response = {
"detail": f"Issue {issue.id} created for project {project}",
"data": serializer.data
}
return Response(response, status=status.HTTP_201_CREATED)
class CommentViewSet(ModelViewSet):
permission_classes = [IsAuthenticated]
serializer_class = CommentListSerializer
detail_serializer_class = CommentDetailSerializer
queryset = Comment.objects.all()
def get_queryset(self):
"""
Returns only comments associated with issue where the requestor
is project's contributor
"""
if self.request.GET.get('issue'):
issue_id = int(self.request.GET.get('issue'))
project = Issue.objects.get(id=issue_id).project
if self.request.user not in project.contributors.all():
raise PermissionDenied()
return Comment.objects.filter(issue=issue_id)
# or returns those from projects where requestor is contributing
projects = Project.objects.filter(
contributors=self.request.user).values('id')
issues = Issue.objects.filter(project__in=projects)
return Comment.objects.filter(issue__in=issues)
def get_serializer_class(self):
if self.action == 'retrieve':
return self.detail_serializer_class
return super().get_serializer_class()
def create(self, request, *args, **kwargs):
user = User.objects.get(username=request.user)
issue = Issue.objects.get(id=request.data['issue'])
project = issue.project
if issue.project.contributors.filter(username=request.user.username):
serializer = CommentDetailSerializer(data=request.data)
if serializer.is_valid(raise_exception=True):
serializer.save(author=user)
response = {"detail": "comment created",
"data": serializer.data}
return Response(response, status=status.HTTP_201_CREATED)
response = {"detail": f"{user} isn't contributor for '{project}'"}
return Response(response, status=status.HTTP_403_FORBIDDEN)
def partial_update(self, request, *args, **kwargs):
"""
check if requestor is author
then save changes and returns project details
"""
comment = self.get_object()
if request.user != comment.author:
raise PermissionDenied()
serialized = CommentDetailSerializer(comment,
data=request.data,
partial=True)
if serialized.is_valid(raise_exception=True):
serialized.save()
return Response(serialized.data)