move first signup code into function for reuse
This commit is contained in:
parent
a24d96b098
commit
59c2045ac6
2 changed files with 34 additions and 21 deletions
|
@ -3,6 +3,38 @@ from django.contrib.gis.geoip2 import GeoIP2, GeoIP2Exception
|
||||||
import ox
|
import ox
|
||||||
|
|
||||||
|
|
||||||
|
def prepare_user(user):
|
||||||
|
from django.contrib.auth import get_user_model
|
||||||
|
from django.conf import settings
|
||||||
|
from itemlist.models import List, Position
|
||||||
|
from django.db.models import Max
|
||||||
|
|
||||||
|
User = get_user_model()
|
||||||
|
|
||||||
|
first_user_qs = User.objects.all()
|
||||||
|
if user.id:
|
||||||
|
first_user_qs = first_user_qs.exclude(id=user.id)
|
||||||
|
if first_user_qs.count() == 0:
|
||||||
|
user.is_superuser = True
|
||||||
|
user.is_staff = True
|
||||||
|
user.save()
|
||||||
|
|
||||||
|
for l in settings.CONFIG['personalLists']:
|
||||||
|
list = List(name=l['title'], user=user)
|
||||||
|
for key in ('query', 'public', 'featured'):
|
||||||
|
if key in l:
|
||||||
|
setattr(list, key, l[key])
|
||||||
|
if key == 'query':
|
||||||
|
for c in list.query['conditions']:
|
||||||
|
if c['key'] == 'user':
|
||||||
|
c['value'] = c['value'].format(username=user.username)
|
||||||
|
list.save()
|
||||||
|
pos = Position(list=list, section='personal', user=user)
|
||||||
|
qs = Position.objects.filter(user=user, section='personal')
|
||||||
|
pos.position = (qs.aggregate(Max('position'))['position__max'] or 0) + 1
|
||||||
|
pos.save()
|
||||||
|
|
||||||
|
|
||||||
def get_ip(request):
|
def get_ip(request):
|
||||||
if 'HTTP_X_FORWARDED_FOR' in request.META:
|
if 'HTTP_X_FORWARDED_FOR' in request.META:
|
||||||
ip = request.META['HTTP_X_FORWARDED_FOR'].split(',')[0]
|
ip = request.META['HTTP_X_FORWARDED_FOR'].split(',')[0]
|
||||||
|
|
|
@ -28,7 +28,7 @@ from user.models import Group
|
||||||
|
|
||||||
from . import models
|
from . import models
|
||||||
from .decorators import capability_required_json
|
from .decorators import capability_required_json
|
||||||
from .utils import rename_user
|
from .utils import rename_user, prepare_user
|
||||||
|
|
||||||
User = get_user_model()
|
User = get_user_model()
|
||||||
|
|
||||||
|
@ -177,28 +177,9 @@ def signup(request, data):
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
else:
|
else:
|
||||||
first_user = User.objects.count() == 0
|
|
||||||
user = User(username=data['username'], email=data['email'])
|
user = User(username=data['username'], email=data['email'])
|
||||||
user.set_password(data['password'])
|
user.set_password(data['password'])
|
||||||
#make first user admin
|
prepare_user(user)
|
||||||
user.is_superuser = first_user
|
|
||||||
user.is_staff = first_user
|
|
||||||
user.save()
|
|
||||||
#create default user lists:
|
|
||||||
for l in settings.CONFIG['personalLists']:
|
|
||||||
list = List(name=l['title'], user=user)
|
|
||||||
for key in ('query', 'public', 'featured'):
|
|
||||||
if key in l:
|
|
||||||
setattr(list, key, l[key])
|
|
||||||
if key == 'query':
|
|
||||||
for c in list.query['conditions']:
|
|
||||||
if c['key'] == 'user':
|
|
||||||
c['value'] = c['value'].format(username=user.username)
|
|
||||||
list.save()
|
|
||||||
pos = Position(list=list, section='personal', user=user)
|
|
||||||
qs = Position.objects.filter(user=user, section='personal')
|
|
||||||
pos.position = (qs.aggregate(Max('position'))['position__max'] or 0) + 1
|
|
||||||
pos.save()
|
|
||||||
if request.session.session_key:
|
if request.session.session_key:
|
||||||
models.SessionData.objects.filter(session_key=request.session.session_key).update(user=user)
|
models.SessionData.objects.filter(session_key=request.session.session_key).update(user=user)
|
||||||
ui = json.loads(request.session.get('ui', 'null'))
|
ui = json.loads(request.session.get('ui', 'null'))
|
||||||
|
|
Loading…
Reference in a new issue