add ChangeSet.qs_for_request
This commit is contained in:
parent
ff0922fe64
commit
551cc15f14
1 changed files with 16 additions and 9 deletions
|
@ -31,19 +31,26 @@ class ChangeSet(models.Model):
|
||||||
self.default_author = None
|
self.default_author = None
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def qs_base(cls):
|
def qs_base(cls, hide_applied=True):
|
||||||
return cls.objects.prefetch_related('changes').select_related('author')
|
qs = cls.objects.prefetch_related('changes').select_related('author')
|
||||||
|
if hide_applied:
|
||||||
|
qs = qs.filter(applied__isnull=True)
|
||||||
|
return qs
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def qs_for_request(cls, request):
|
||||||
|
qs = cls.qs_base()
|
||||||
|
if request.user.is_authenticated():
|
||||||
|
qs = qs.filter(Q(author__isnull=True) | Q(author=request.user))
|
||||||
|
else:
|
||||||
|
qs = qs.filter(author__isnull=True)
|
||||||
|
return qs
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_for_request(cls, request):
|
def get_for_request(cls, request):
|
||||||
qs_base = cls.qs_base().filter(applied__isnull=True)
|
qs = cls.qs_for_request(request)
|
||||||
changeset_pk = request.session.get('changeset_pk', None)
|
changeset_pk = request.session.get('changeset_pk', None)
|
||||||
if changeset_pk is not None:
|
if changeset_pk is not None:
|
||||||
if request.user.is_authenticated():
|
|
||||||
qs = qs_base.filter(Q(author__isnull=True) | Q(author=request.user))
|
|
||||||
else:
|
|
||||||
qs = qs_base.filter(author__isnull=True)
|
|
||||||
|
|
||||||
changeset = qs.filter(pk=changeset_pk).first()
|
changeset = qs.filter(pk=changeset_pk).first()
|
||||||
if changeset is not None:
|
if changeset is not None:
|
||||||
changeset.default_author = request.user
|
changeset.default_author = request.user
|
||||||
|
@ -55,7 +62,7 @@ class ChangeSet(models.Model):
|
||||||
new_changeset = cls()
|
new_changeset = cls()
|
||||||
|
|
||||||
if request.user.is_authenticated():
|
if request.user.is_authenticated():
|
||||||
changeset = qs_base.filter(Q(author=request.user)).order_by('-created').first()
|
changeset = qs.filter(Q(author=request.user)).order_by('-created').first()
|
||||||
if changeset is not None:
|
if changeset is not None:
|
||||||
request.session['changeset_pk'] = changeset.pk
|
request.session['changeset_pk'] = changeset.pk
|
||||||
changeset.default_author = request.user
|
changeset.default_author = request.user
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue