Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Rex Dri
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
32
Issues
32
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Environments
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Rex Dri
Rex Dri
Commits
6d7d3f44
Commit
6d7d3f44
authored
Mar 10, 2019
by
Florent Chehab
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Migrated from standard Django model to a custom one for optmization concerns
parent
e8f37050
Changes
28
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
28 changed files
with
299 additions
and
472 deletions
+299
-472
backend/backend_app/load_data/loading_scripts/loadAdminUser.py
...nd/backend_app/load_data/loading_scripts/loadAdminUser.py
+1
-1
backend/backend_app/load_data/loading_scripts/loadCountries.py
...nd/backend_app/load_data/loading_scripts/loadCountries.py
+1
-1
backend/backend_app/load_data/loading_scripts/loadCurrencies.py
...d/backend_app/load_data/loading_scripts/loadCurrencies.py
+1
-1
backend/backend_app/load_data/loading_scripts/loadGeneric.py
backend/backend_app/load_data/loading_scripts/loadGeneric.py
+1
-1
backend/backend_app/load_data/loading_scripts/loadTags.py
backend/backend_app/load_data/loading_scripts/loadTags.py
+1
-1
backend/backend_app/load_data/loading_scripts/loadUniversities.py
...backend_app/load_data/loading_scripts/loadUniversities.py
+1
-1
backend/backend_app/load_data/loading_scripts/loadUniversityEx.py
...backend_app/load_data/loading_scripts/loadUniversityEx.py
+1
-1
backend/backend_app/migrations/0001_initial.py
backend/backend_app/migrations/0001_initial.py
+130
-155
backend/backend_app/migrations/0002_auto_20180916_1555.py
backend/backend_app/migrations/0002_auto_20180916_1555.py
+0
-213
backend/backend_app/migrations/0003_auto_20180916_1624.py
backend/backend_app/migrations/0003_auto_20180916_1624.py
+0
-45
backend/backend_app/migrations/0004_auto_20190310_1151.py
backend/backend_app/migrations/0004_auto_20190310_1151.py
+0
-40
backend/backend_app/models/abstract/my_model/myModel.py
backend/backend_app/models/abstract/my_model/myModel.py
+1
-1
backend/backend_app/models/abstract/my_model/pendingModeration.py
...backend_app/models/abstract/my_model/pendingModeration.py
+1
-1
backend/backend_app/models/user/previousDeparture.py
backend/backend_app/models/user/previousDeparture.py
+1
-1
backend/backend_app/models/user/userData.py
backend/backend_app/models/user/userData.py
+1
-1
backend/backend_app/models/user/userRestrictedModule.py
backend/backend_app/models/user/userRestrictedModule.py
+1
-1
backend/backend_app/permissions/__list_user_post_permission.py
...nd/backend_app/permissions/__list_user_post_permission.py
+1
-1
backend/backend_app/signals/__create_user_modules_post_create.py
.../backend_app/signals/__create_user_modules_post_create.py
+1
-1
backend/backend_app/tests/test_signals_post_create.py
backend/backend_app/tests/test_signals_post_create.py
+1
-1
backend/backend_app/tests/withUserTestCase.py
backend/backend_app/tests/withUserTestCase.py
+1
-1
backend/backend_app/utils/__does_user_have_moderation_rights.py
...d/backend_app/utils/__does_user_have_moderation_rights.py
+1
-1
backend/backend_app/utils/__get_user_level.py
backend/backend_app/utils/__get_user_level.py
+1
-1
backend/backend_app/utils/__is_member.py
backend/backend_app/utils/__is_member.py
+1
-1
backend/base_app/admin.py
backend/base_app/admin.py
+5
-0
backend/base_app/migrations/0001_initial.py
backend/base_app/migrations/0001_initial.py
+128
-0
backend/base_app/migrations/__init__.py
backend/base_app/migrations/__init__.py
+0
-0
backend/base_app/models.py
backend/base_app/models.py
+12
-0
backend/base_app/settings.py
backend/base_app/settings.py
+5
-0
No files found.
backend/backend_app/load_data/loading_scripts/loadAdminUser.py
View file @
6d7d3f44
from
django.contrib.auth
.models
import
User
from
base_app
.models
import
User
import
os
...
...
backend/backend_app/load_data/loading_scripts/loadCountries.py
View file @
6d7d3f44
import
os
from
django.contrib.auth
.models
import
User
from
base_app
.models
import
User
import
pandas
as
pd
from
backend_app.models.country
import
Country
...
...
backend/backend_app/load_data/loading_scripts/loadCurrencies.py
View file @
6d7d3f44
...
...
@@ -2,7 +2,7 @@ import csv
import
os
from
decimal
import
Decimal
from
django.contrib.auth
.models
import
User
from
base_app
.models
import
User
from
backend_app.models.currency
import
Currency
...
...
backend/backend_app/load_data/loading_scripts/loadGeneric.py
View file @
6d7d3f44
from
django.contrib.auth
.models
import
User
from
base_app
.models
import
User
from
django.utils
import
timezone
import
reversion
...
...
backend/backend_app/load_data/loading_scripts/loadTags.py
View file @
6d7d3f44
import
json
import
os
from
django.contrib.auth
.models
import
User
from
base_app
.models
import
User
from
backend_app.models.tag
import
Tag
...
...
backend/backend_app/load_data/loading_scripts/loadUniversities.py
View file @
6d7d3f44
import
os
from
django.contrib.auth
.models
import
User
from
base_app
.models
import
User
import
pandas
as
pd
from
backend_app.models.campus
import
Campus
...
...
backend/backend_app/load_data/loading_scripts/loadUniversityEx.py
View file @
6d7d3f44
from
datetime
import
datetime
from
django.contrib.auth
.models
import
User
from
base_app
.models
import
User
from
backend_app.models.country
import
Country
,
CountryScholarship
from
backend_app.models.currency
import
Currency
...
...
backend/backend_app/migrations/0001_initial.py
View file @
6d7d3f44
This diff is collapsed.
Click to expand it.
backend/backend_app/migrations/0002_auto_20180916_1555.py
deleted
100644 → 0
View file @
e8f37050
# Generated by Django 2.0.3 on 2018-09-16 13:55
import
backend_app.models.university.university
from
django.db
import
migrations
,
models
class
Migration
(
migrations
.
Migration
):
dependencies
=
[(
"backend_app"
,
"0001_initial"
)]
operations
=
[
migrations
.
AlterField
(
model_name
=
"campus"
,
name
=
"comment"
,
field
=
models
.
CharField
(
blank
=
True
,
default
=
""
,
max_length
=
5000
),
),
migrations
.
AlterField
(
model_name
=
"campus"
,
name
=
"name"
,
field
=
models
.
CharField
(
blank
=
True
,
default
=
""
,
max_length
=
200
),
),
migrations
.
AlterField
(
model_name
=
"campus"
,
name
=
"title"
,
field
=
models
.
CharField
(
blank
=
True
,
default
=
""
,
max_length
=
150
),
),
migrations
.
AlterField
(
model_name
=
"campustaggeditem"
,
name
=
"comment"
,
field
=
models
.
CharField
(
blank
=
True
,
default
=
""
,
max_length
=
5000
),
),
migrations
.
AlterField
(
model_name
=
"campustaggeditem"
,
name
=
"title"
,
field
=
models
.
CharField
(
blank
=
True
,
default
=
""
,
max_length
=
150
),
),
migrations
.
AlterField
(
model_name
=
"city"
,
name
=
"area"
,
field
=
models
.
CharField
(
blank
=
True
,
default
=
""
,
max_length
=
200
),
),
migrations
.
AlterField
(
model_name
=
"city"
,
name
=
"local_name"
,
field
=
models
.
CharField
(
blank
=
True
,
default
=
""
,
max_length
=
200
),
),
migrations
.
AlterField
(
model_name
=
"citytaggeditem"
,
name
=
"comment"
,
field
=
models
.
CharField
(
blank
=
True
,
default
=
""
,
max_length
=
5000
),
),
migrations
.
AlterField
(
model_name
=
"citytaggeditem"
,
name
=
"title"
,
field
=
models
.
CharField
(
blank
=
True
,
default
=
""
,
max_length
=
150
),
),
migrations
.
AlterField
(
model_name
=
"country"
,
name
=
"intermediate_region_name"
,
field
=
models
.
CharField
(
blank
=
True
,
default
=
""
,
max_length
=
200
),
),
migrations
.
AlterField
(
model_name
=
"country"
,
name
=
"intermediate_region_un_code"
,
field
=
models
.
CharField
(
blank
=
True
,
default
=
""
,
max_length
=
3
),
),
migrations
.
AlterField
(
model_name
=
"country"
,
name
=
"iso_alpha3_code"
,
field
=
models
.
CharField
(
blank
=
True
,
default
=
""
,
max_length
=
3
,
unique
=
True
),
),
migrations
.
AlterField
(
model_name
=
"country"
,
name
=
"sub_region_name"
,
field
=
models
.
CharField
(
blank
=
True
,
default
=
""
,
max_length
=
200
),
),
migrations
.
AlterField
(
model_name
=
"country"
,
name
=
"sub_region_un_code"
,
field
=
models
.
CharField
(
blank
=
True
,
default
=
""
,
max_length
=
3
),
),
migrations
.
AlterField
(
model_name
=
"countrydri"
,
name
=
"comment"
,
field
=
models
.
CharField
(
blank
=
True
,
default
=
""
,
max_length
=
5000
),
),
migrations
.
AlterField
(
model_name
=
"countrydri"
,
name
=
"title"
,
field
=
models
.
CharField
(
blank
=
True
,
default
=
""
,
max_length
=
150
),
),
migrations
.
AlterField
(
model_name
=
"countryscholarship"
,
name
=
"comment"
,
field
=
models
.
CharField
(
blank
=
True
,
default
=
""
,
max_length
=
5000
),
),
migrations
.
AlterField
(
model_name
=
"countryscholarship"
,
name
=
"other_advantages"
,
field
=
models
.
CharField
(
blank
=
True
,
default
=
""
,
max_length
=
5000
),
),
migrations
.
AlterField
(
model_name
=
"countryscholarship"
,
name
=
"title"
,
field
=
models
.
CharField
(
blank
=
True
,
default
=
""
,
max_length
=
150
),
),
migrations
.
AlterField
(
model_name
=
"countrytaggeditem"
,
name
=
"comment"
,
field
=
models
.
CharField
(
blank
=
True
,
default
=
""
,
max_length
=
5000
),
),
migrations
.
AlterField
(
model_name
=
"countrytaggeditem"
,
name
=
"title"
,
field
=
models
.
CharField
(
blank
=
True
,
default
=
""
,
max_length
=
150
),
),
migrations
.
AlterField
(
model_name
=
"currency"
,
name
=
"symbol"
,
field
=
models
.
CharField
(
blank
=
True
,
default
=
""
,
max_length
=
30
),
),
migrations
.
AlterField
(
model_name
=
"previousdeparturefeedback"
,
name
=
"adequation_comment"
,
field
=
models
.
CharField
(
blank
=
True
,
default
=
""
,
max_length
=
5000
),
),
migrations
.
AlterField
(
model_name
=
"previousdeparturefeedback"
,
name
=
"integration_comment"
,
field
=
models
.
CharField
(
blank
=
True
,
default
=
""
,
max_length
=
5000
),
),
migrations
.
AlterField
(
model_name
=
"recommendation"
,
name
=
"comment"
,
field
=
models
.
CharField
(
blank
=
True
,
default
=
""
,
max_length
=
5000
),
),
migrations
.
AlterField
(
model_name
=
"university"
,
name
=
"acronym"
,
field
=
models
.
CharField
(
blank
=
True
,
default
=
""
,
max_length
=
20
),
),
migrations
.
AlterField
(
model_name
=
"university"
,
name
=
"logo"
,
field
=
models
.
URLField
(
blank
=
True
,
default
=
""
,
validators
=
[
backend_app
.
models
.
university
.
university
.
validate_extension_django
],
),
),
migrations
.
AlterField
(
model_name
=
"university"
,
name
=
"website"
,
field
=
models
.
URLField
(
blank
=
True
,
default
=
""
,
max_length
=
300
),
),
migrations
.
AlterField
(
model_name
=
"universitydri"
,
name
=
"comment"
,
field
=
models
.
CharField
(
blank
=
True
,
default
=
""
,
max_length
=
5000
),
),
migrations
.
AlterField
(
model_name
=
"universitydri"
,
name
=
"title"
,
field
=
models
.
CharField
(
blank
=
True
,
default
=
""
,
max_length
=
150
),
),
migrations
.
AlterField
(
model_name
=
"universityinfo"
,
name
=
"comment"
,
field
=
models
.
CharField
(
blank
=
True
,
default
=
""
,
max_length
=
5000
),
),
migrations
.
AlterField
(
model_name
=
"universityinfo"
,
name
=
"title"
,
field
=
models
.
CharField
(
blank
=
True
,
default
=
""
,
max_length
=
150
),
),
migrations
.
AlterField
(
model_name
=
"universityscholarship"
,
name
=
"comment"
,
field
=
models
.
CharField
(
blank
=
True
,
default
=
""
,
max_length
=
5000
),
),
migrations
.
AlterField
(
model_name
=
"universityscholarship"
,
name
=
"other_advantages"
,
field
=
models
.
CharField
(
blank
=
True
,
default
=
""
,
max_length
=
5000
),
),
migrations
.
AlterField
(
model_name
=
"universityscholarship"
,
name
=
"title"
,
field
=
models
.
CharField
(
blank
=
True
,
default
=
""
,
max_length
=
150
),
),
migrations
.
AlterField
(
model_name
=
"universitysemestersdates"
,
name
=
"comment"
,
field
=
models
.
CharField
(
blank
=
True
,
default
=
""
,
max_length
=
5000
),
),
migrations
.
AlterField
(
model_name
=
"universitysemestersdates"
,
name
=
"title"
,
field
=
models
.
CharField
(
blank
=
True
,
default
=
""
,
max_length
=
150
),
),
migrations
.
AlterField
(
model_name
=
"universitytaggeditem"
,
name
=
"comment"
,
field
=
models
.
CharField
(
blank
=
True
,
default
=
""
,
max_length
=
5000
),
),
migrations
.
AlterField
(
model_name
=
"universitytaggeditem"
,
name
=
"title"
,
field
=
models
.
CharField
(
blank
=
True
,
default
=
""
,
max_length
=
150
),
),
]
backend/backend_app/migrations/0003_auto_20180916_1624.py
deleted
100644 → 0
View file @
e8f37050
# Generated by Django 2.0.3 on 2018-09-16 14:24
from
django.db
import
migrations
,
models
class
Migration
(
migrations
.
Migration
):
dependencies
=
[(
"backend_app"
,
"0002_auto_20180916_1555"
)]
operations
=
[
migrations
.
AlterField
(
model_name
=
"countryscholarship"
,
name
=
"frequency"
,
field
=
models
.
CharField
(
blank
=
True
,
choices
=
[
(
"w"
,
"week"
),
(
"m"
,
"month"
),
(
"s"
,
"semester"
),
(
"y"
,
"year"
),
(
"o"
,
"one_shot"
),
],
default
=
"m"
,
max_length
=
1
,
null
=
True
,
),
),
migrations
.
AlterField
(
model_name
=
"universityscholarship"
,
name
=
"frequency"
,
field
=
models
.
CharField
(
blank
=
True
,
choices
=
[
(
"w"
,
"week"
),
(
"m"
,
"month"
),
(
"s"
,
"semester"
),
(
"y"
,
"year"
),
(
"o"
,
"one_shot"
),
],
default
=
"m"
,
max_length
=
1
,
null
=
True
,
),
),
]
backend/backend_app/migrations/0004_auto_20190310_1151.py
deleted
100644 → 0
View file @
e8f37050
# Generated by Django 2.1.7 on 2019-03-10 10:51
from
django.db
import
migrations
,
models
class
Migration
(
migrations
.
Migration
):
dependencies
=
[(
"backend_app"
,
"0003_auto_20180916_1624"
)]
operations
=
[
migrations
.
RemoveField
(
model_name
=
"semester"
,
name
=
"moderated_by"
),
migrations
.
RemoveField
(
model_name
=
"semester"
,
name
=
"updated_by"
),
migrations
.
RemoveField
(
model_name
=
"userdata"
,
name
=
"black_list"
),
migrations
.
AddField
(
model_name
=
"offer"
,
name
=
"year"
,
field
=
models
.
PositiveIntegerField
(
default
=
2018
),
),
migrations
.
AddField
(
model_name
=
"previousdeparture"
,
name
=
"year"
,
field
=
models
.
PositiveIntegerField
(
default
=
2018
),
),
migrations
.
AlterField
(
model_name
=
"offer"
,
name
=
"semester"
,
field
=
models
.
CharField
(
choices
=
[(
"a"
,
"autumn"
),
(
"p"
,
"spring"
)],
default
=
"a"
,
max_length
=
2
),
),
migrations
.
AlterField
(
model_name
=
"previousdeparture"
,
name
=
"semester"
,
field
=
models
.
CharField
(
choices
=
[(
"a"
,
"autumn"
),
(
"p"
,
"spring"
)],
default
=
"a"
,
max_length
=
2
),
),
migrations
.
AlterUniqueTogether
(
name
=
"offer"
,
unique_together
=
set
()),
migrations
.
DeleteModel
(
name
=
"Semester"
),
]
backend/backend_app/models/abstract/my_model/myModel.py
View file @
6d7d3f44
from
django.contrib.auth
.models
import
User
from
base_app
.models
import
User
from
django.contrib.contenttypes.fields
import
GenericRelation
from
django.core.exceptions
import
ValidationError
from
django.core.validators
import
MinValueValidator
...
...
backend/backend_app/models/abstract/my_model/pendingModeration.py
View file @
6d7d3f44
from
django.contrib.auth
.models
import
User
from
base_app
.models
import
User
from
django.contrib.contenttypes.fields
import
GenericForeignKey
from
django.contrib.contenttypes.models
import
ContentType
from
django.db
import
models
...
...
backend/backend_app/models/user/previousDeparture.py
View file @
6d7d3f44
from
django.db
import
models
from
backend_app.models.other_core.specialty
import
Specialty
from
backend_app.models.university
import
University
from
django.contrib.auth
.models
import
User
from
base_app
.models
import
User
from
backend_app.fields
import
JSONField
from
backend_app.models.abstract.my_model
import
(
MyModel
,
...
...
backend/backend_app/models/user/userData.py
View file @
6d7d3f44
from
django.contrib.auth
.models
import
User
from
base_app
.models
import
User
from
django.db
import
models
from
backend_app.fields
import
JSONField
from
backend_app.models.abstract.my_model
import
(
...
...
backend/backend_app/models/user/userRestrictedModule.py
View file @
6d7d3f44
from
django.db
import
models
from
rest_framework
import
serializers
from
django.contrib.auth
.models
import
User
from
base_app
.models
import
User
from
backend_app.models.abstract.my_model
import
(
MyModel
,
MyModelSerializer
,
...
...
backend/backend_app/permissions/__list_user_post_permission.py
View file @
6d7d3f44
from
typing
import
List
from
django.contrib.auth
.models
import
User
from
base_app
.models
import
User
from
shared
import
get_api_objs
...
...
backend/backend_app/signals/__create_user_modules_post_create.py
View file @
6d7d3f44
from
django.db.models.signals
import
post_save
from
django.contrib.auth
.models
import
User
from
base_app
.models
import
User
from
backend_app.models.user
import
UserData
...
...
backend/backend_app/tests/test_signals_post_create.py
View file @
6d7d3f44
from
django.test
import
TestCase
from
django.contrib.auth
.models
import
User
from
base_app
.models
import
User
from
backend_app.models.user
import
UserData
from
backend_app.models.university
import
University
...
...
backend/backend_app/tests/withUserTestCase.py
View file @
6d7d3f44
from
rest_framework.test
import
APIClient
from
django.contrib.auth
.models
import
User
from
base_app
.models
import
User
from
django.contrib.auth.models
import
Group
from
django.test
import
TestCase
...
...
backend/backend_app/utils/__does_user_have_moderation_rights.py
View file @
6d7d3f44
from
backend_app.utils
import
is_member
from
django.contrib.auth
.models
import
User
from
base_app
.models
import
User
def
does_user_have_moderation_rights
(
user
:
User
)
->
bool
:
...
...
backend/backend_app/utils/__get_user_level.py
View file @
6d7d3f44
from
.__is_member
import
is_member
from
django.contrib.auth
.models
import
User
from
base_app
.models
import
User
from
shared
import
OBJ_MODERATION_PERMISSIONS
...
...
backend/backend_app/utils/__is_member.py
View file @
6d7d3f44
from
django.contrib.auth
.models
import
User
from
base_app
.models
import
User
def
is_member
(
group_name
:
str
,
user
:
User
)
->
bool
:
...
...
backend/base_app/admin.py
View file @
6d7d3f44
from
rest_framework.authtoken.admin
import
TokenAdmin
from
django.contrib
import
admin
from
django.contrib.auth.admin
import
UserAdmin
from
.models
import
User
admin
.
site
.
register
(
User
,
UserAdmin
)
# Pour la génération de token dans l'administration du site.
TokenAdmin
.
raw_id_fields
=
(
"user"
,)
backend/base_app/migrations/0001_initial.py
0 → 100644
View file @
6d7d3f44
# Generated by Django 2.1.7 on 2019-03-10 13:41
import
django.contrib.auth.models
import
django.contrib.auth.validators
from
django.db
import
migrations
,
models
import
django.utils.timezone
class
Migration
(
migrations
.
Migration
):
initial
=
True
dependencies
=
[(
"auth"
,
"0009_alter_user_last_name_max_length"
)]
operations
=
[
migrations
.
CreateModel
(
name
=
"User"
,
fields
=
[
(
"id"
,
models
.
AutoField
(
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
=
30
,
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"
),
),
(
"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
())],
)
]
backend/base_app/migrations/__init__.py
0 → 100644
View file @
6d7d3f44
backend/base_app/models.py
0 → 100644
View file @
6d7d3f44
from
django.contrib.auth.models
import
AbstractUser
from
django.utils.functional
import
cached_property
from
typing
import
List
class
User
(
AbstractUser
):
@
cached_property
def
cached_groups
(
self
)
->
List
[
str
]:
out
=
[
"authenticated_user"
]
for
group
in
self
.
groups
.
all
():
out
.
append
(
group
.
name
)
return
out
backend/base_app/settings.py
View file @
6d7d3f44
...
...
@@ -60,6 +60,11 @@ if os.environ["ENV"] == "DEV":
else
:
DEBUG
=
False