Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
A
AlekSIS-Core
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Terraform modules
Monitor
Service Desk
Analyze
Contributor analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
AlekSIS®
Official
AlekSIS-Core
Merge requests
!842
Release 2.4
Code
Review changes
Check out branch
Download
Patches
Plain diff
Merged
Release 2.4
release-2.3.2
into
master
Overview
0
Commits
6
Pipelines
4
Changes
1
Merged
Nik | Klampfradler
requested to merge
release-2.3.2
into
master
3 years ago
Overview
0
Commits
6
Pipelines
4
Changes
1
Expand
0
0
Merge request reports
Viewing commit
1ce516c5
Show latest version
1 file
+
30
−
1
Inline
Compare changes
Side-by-side
Inline
Show whitespace changes
Show one file at a time
Verified
1ce516c5
Rewrite invitations model
· 1ce516c5
Tom Teichler
authored
3 years ago
aleksis/core/models.py
+
30
−
1
Options
# flake8: noqa: DJ01
import
hmac
from
datetime
import
date
,
datetime
,
timedelta
from
typing
import
Iterable
,
List
,
Optional
,
Sequence
,
Union
@@ -29,6 +30,10 @@ from cachalot.api import cachalot_disabled
from
cache_memoize
import
cache_memoize
from
django_celery_results.models
import
TaskResult
from
dynamic_preferences.models
import
PerInstancePreferenceModel
from
invitations
import
signals
from
invitations.adapters
import
get_invitations_adapter
from
invitations.base_invitation
import
AbstractBaseInvitation
from
invitations.models
import
Invitation
from
model_utils
import
FieldTracker
from
model_utils.models
import
TimeStampedModel
from
oauth2_provider.models
import
(
@@ -59,7 +64,7 @@ from .mixins import (
SchoolTermRelatedExtensibleModel
,
)
from
.tasks
import
send_notification
from
.util.core_helpers
import
get_site_preferences
,
now_tomorrow
from
.util.core_helpers
import
generate_random_code
,
get_site_preferences
,
now_tomorrow
from
.util.model_helpers
import
ICONS
FIELD_CHOICES
=
(
@@ -1062,6 +1067,30 @@ class DataCheckResult(ExtensibleModel):
)
class
PersonInvitation
(
AbstractBaseInvitation
,
PureDjangoModel
):
"""
Custom model for invitations to allow to generate invitations codes without email address.
"""
email
=
models
.
EmailField
(
verbose_name
=
_
(
"
E-Mail address
"
),
blank
=
True
)
person
=
models
.
ForeignKey
(
Person
,
on_delete
=
models
.
CASCADE
,
blank
=
True
,
related_name
=
"
invitation
"
,
null
=
True
)
@classmethod
def
create
(
cls
,
email
,
inviter
=
None
,
**
kwargs
):
length
=
get_site_preferences
()[
"
auth__invite_code_length
"
]
packet_size
=
get_site_preferences
()[
"
auth__invite_code_packet_size
"
]
key
=
generate_random_code
(
length
,
packet_size
)
instance
=
cls
.
_default_manager
.
create
(
email
=
email
,
key
=
key
,
inviter
=
inviter
,
**
kwargs
)
return
instance
def
__str__
(
self
)
->
str
:
return
f
"
{
self
.
email
}
(
{
self
.
inviter
}
)
"
key_expired
=
Invitation
.
key_expired
send_invitation
=
Invitation
.
send_invitation
class
PDFFile
(
ExtensibleModel
):
"""
Link to a rendered PDF file.
"""
Loading