set_changeset_author_on_login signal
This commit is contained in:
parent
8c5b2e734a
commit
f511526aac
4 changed files with 18 additions and 8 deletions
|
@ -1,4 +1,5 @@
|
|||
from django.apps import AppConfig
|
||||
from django.contrib.auth import user_logged_in
|
||||
from django.db.models.signals import m2m_changed, post_delete, post_save
|
||||
|
||||
|
||||
|
@ -7,6 +8,8 @@ class EditorConfig(AppConfig):
|
|||
|
||||
def ready(self):
|
||||
from c3nav.editor.models import ChangeSet
|
||||
from c3nav.editor.signals import set_changeset_author_on_login
|
||||
post_save.connect(ChangeSet.object_changed_handler)
|
||||
post_delete.connect(ChangeSet.object_changed_handler)
|
||||
m2m_changed.connect(ChangeSet.object_changed_handler)
|
||||
user_logged_in.connect(set_changeset_author_on_login)
|
||||
|
|
|
@ -92,7 +92,7 @@ class ChangeSet(models.Model):
|
|||
return ChangeSet.objects.none()
|
||||
|
||||
@classmethod
|
||||
def get_for_request(cls, request, select_related=None):
|
||||
def get_for_request(cls, request, select_related=None, as_logged_out=False):
|
||||
"""
|
||||
Get the changeset for the current request.
|
||||
If a changeset is associated with the session id, it will be returned.
|
||||
|
@ -108,9 +108,9 @@ class ChangeSet(models.Model):
|
|||
changeset_pk = request.session.get('changeset')
|
||||
if changeset_pk is not None:
|
||||
qs = ChangeSet.objects.select_related(*select_related).exclude(state__in=('applied', 'finallyrejected'))
|
||||
if request.user.is_authenticated:
|
||||
if request.user.is_authenticated and not as_logged_out:
|
||||
if not request.user_permissions.review_changesets:
|
||||
qs = qs.filter(Q(author=request.user) | Q(author__isnull=True))
|
||||
qs = qs.filter(author=request.user)
|
||||
else:
|
||||
qs = qs.filter(author__isnull=True)
|
||||
try:
|
||||
|
|
12
src/c3nav/editor/signals.py
Normal file
12
src/c3nav/editor/signals.py
Normal file
|
@ -0,0 +1,12 @@
|
|||
from c3nav.editor.models import ChangeSet
|
||||
|
||||
|
||||
def set_changeset_author_on_login(sender, user, request, **kwargs):
|
||||
try:
|
||||
changeset = request.changeset
|
||||
except AttributeError:
|
||||
changeset = ChangeSet.get_for_request(request, as_logged_out=True)
|
||||
|
||||
if changeset.pk is not None:
|
||||
changeset.author = user
|
||||
changeset.save()
|
|
@ -53,11 +53,6 @@ def register_view(request):
|
|||
if form.is_valid():
|
||||
user = form.save()
|
||||
login(request, user)
|
||||
|
||||
if request.changeset.pk is not None:
|
||||
request.changeset.author = user
|
||||
request.changeset.save()
|
||||
|
||||
return redirect(redirect_path)
|
||||
else:
|
||||
form = UserCreationForm()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue