set_changeset_author_on_login signal

This commit is contained in:
Laura Klünder 2018-11-23 21:41:02 +01:00
parent 8c5b2e734a
commit f511526aac
4 changed files with 18 additions and 8 deletions

View file

@ -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)

View file

@ -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:

View 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()

View file

@ -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()