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
```
## Use
___
## Usage
URL is : http://127.0.0.1:8000
Endpoints and methods are coming soon
**URL:** http://127.0.0.1:8000
**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
YaL <yann@needsome.coffee>
@@ -67,3 +363,4 @@ YaL <yann@needsome.coffee>
MIT License
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
djangorestframework==3.16.0
djangorestframework_simplejwt==5.5.0
flake8==7.2.0
flake8-html==0.4.3
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
requests==2.32.3
sqlparse==0.5.3
typing_extensions==4.13.2
urllib3==2.4.0

View File

@@ -1,3 +1,3 @@
from django.contrib import admin
#from django.contrib import admin
# 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.contrib.auth.models import AbstractUser, Group
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
can_be_contacted = 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 datetime import timedelta
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent
@@ -127,9 +128,13 @@ DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
AUTH_USER_MODEL = 'authentication.User'
REST_FRAMERWORK = {
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': ('rest_framework_simplejwt.authentication.JWTAuthentication',),
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination',
'PAGE_SIZE': 5,
'DEFAULT_AUTHENTICATION_CLASSES': ('rest_framework_simplejwt.authentication.JWTAuthentication',)
'PAGE_SIZE': 5
}
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'))
"""
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 = [
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 support.models import Project, Issue, Comment, Contributor
from support.models import Project, Issue, Comment, ProjectContributor
from authentication.models import User
admin.site.register(Project)
admin.site.register(Issue)
class AdminProject(admin.ModelAdmin):
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(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'
ANDROID = 'Android'
title = models.CharField(max_length=255)
date_created = models.DateTimeField(auto_now_add=True)
type = models.CharField(choices=Type.choices, max_length=10)
active = models.BooleanField(default=True)
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,
related_name='project_author', null=True)
contributors = models.ManyToManyField(settings.AUTH_USER_MODEL,
through='ProjectContributor',
related_name='contribution')
contributors = models.ManyToManyField(
settings.AUTH_USER_MODEL, through='Contributor', related_name='contribution')
def __str__(self):
return self.title
class Contributor(models.Model):
contributor = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING)
project = models.ForeignKey(Project, on_delete=models.CASCADE, related_name='project')
class ProjectContributor(models.Model):
contributor = models.ForeignKey(settings.AUTH_USER_MODEL,
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)
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 Priority(models.TextChoices):
LOW = 'L'
MEDIUM = 'M'
HIGH = 'H'
LOW = 'Low'
MEDIUM = 'Medium'
HIGH = 'High'
class Status(models.TextChoices):
TODO = 'ToDo'
INPROGRESS = 'InProgress'
INPROGRESS = 'In Progress'
FINISHED = 'Finished'
class Tag(models.TextChoices):
BUG = 'Bug'
FEATURE = 'Feature'
TASK = 'Task'
title = models.CharField(max_length=255, verbose_name='title')
date_created = models.DateTimeField(auto_now_add=True)
description = models.TextField()
project = models.ForeignKey(Project, null=True, on_delete=models.SET_NULL, blank=True)
status = models.CharField(Status.choices, max_length=15)
priority = models.CharField(Priority.choices, max_length=15)
tag = models.CharField(Tag.choices, max_length=15)
author = models.ForeignKey('Contributor', on_delete=models.DO_NOTHING)
status = models.CharField(choices=Status.choices, max_length=15)
priority = models.CharField(choices=Priority.choices, max_length=15)
tag = models.CharField(choices=Tag.choices, max_length=15)
project = models.ForeignKey(Project,
on_delete=models.CASCADE)
author = models.ForeignKey(settings.AUTH_USER_MODEL,
on_delete=models.DO_NOTHING,
related_name='issue_author',
blank=True, null=True)
class Comment(models.Model):
title = models.CharField(max_length=255)
date_created = models.DateTimeField(auto_now_add=True)
description = models.CharField(max_length=4000)
author = models.ForeignKey('Contributor', on_delete=models.DO_NOTHING)
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)