def login_session(request, username): """Logs in a user and sets up the session.""" try: # Authenticate / login. user = User.objects.get(username=username) user.backend = 'django.contrib.auth.backends.ModelBackend' login(request, user) except User.DoesNotExist: messages.error(request, "User %s does not exist" % (username)) return request try: # Create user profile if needed. request.user.get_profile() except UserProfile.DoesNotExist: profile = UserProfile(user=user) profile.save() try: # Assign user to default ctnr if needed. CtnrUser.objects.get(user=request.user, ctnr_id=request.user.get_profile().default_ctnr) except CtnrUser.DoesNotExist: new_default_ctnr = Ctnr.objects.get(id=2) CtnrUser(user=request.user, ctnr=new_default_ctnr, level=0).save() # Set session ctnr. default_ctnr = request.user.get_profile().default_ctnr if default_ctnr: request.session['ctnr'] = Ctnr.objects.get(id=default_ctnr.id) else: request.session['ctnr'] = Ctnr.objects.get(id=2) # Set session ctnr level. request.session['level'] = CtnrUser.objects.get(user=request.user, ctnr=default_ctnr).level try: # Set ctnr list (to switch between). global_ctnr = CtnrUser.objects.get(user=request.user, ctnr=1) if global_ctnr: request.session['ctnrs'] = ( list(Ctnr.objects.filter(Q(id=1) | Q(id=2))) + list(Ctnr.objects.exclude(Q(id=1) | Q(id=2)).order_by("name"))) except CtnrUser.DoesNotExist: # Set ctnr list (to switch between). ctnrs_user = CtnrUser.objects.filter(user=request.user) ctnrs = [ Ctnr.objects.get(id=ctnr_pk) for ctnr_pk in ctnrs_user.values_list('ctnr', flat=True) ] request.session['ctnrs'] = ctnrs return request
def login_session(request, username): """Logs in a user and sets up the session.""" try: # Authenticate / login. user = User.objects.get(username=username) user.backend = 'django.contrib.auth.backends.ModelBackend' login(request, user) except User.DoesNotExist: if not settings.TESTING: messages.error(request, "User %s does not exist" % (username)) return request try: # Create user profile if needed. request.user.get_profile() except UserProfile.DoesNotExist: profile = UserProfile(user=user) profile.save() try: # Assign user to default ctnr if needed. CtnrUser.objects.get(user=request.user, ctnr_id=request.user.get_profile().default_ctnr) except CtnrUser.DoesNotExist: new_default_ctnr = Ctnr.objects.get(id=2) if not CtnrUser.objects.filter( user=request.user, ctnr=new_default_ctnr).exists(): CtnrUser(user=request.user, ctnr=new_default_ctnr, level=0).save() # Set session ctnr. default_ctnr = request.user.get_profile().default_ctnr if default_ctnr: request.session['ctnr'] = Ctnr.objects.get(id=default_ctnr.id) else: request.session['ctnr'] = Ctnr.objects.get(id=2) if request.session['ctnr'].name == "default": default_ctnr = Ctnr.objects.get(name="global") request.session['ctnr'] = default_ctnr # Set session ctnr level. try: level = CtnrUser.objects.get(user=request.user, ctnr=default_ctnr).level except CtnrUser.DoesNotExist: level = LEVEL_GUEST request.session['level'] = level try: CtnrUser.objects.get(user=request.user, ctnr=1) ctnrs = Ctnr.objects.order_by("name") except CtnrUser.DoesNotExist: # Set ctnr list (to switch between). ctnrs_user = CtnrUser.objects.filter(user=request.user) ctnrs = ctnrs_user.values_list('ctnr', flat=True) ctnrs = Ctnr.objects.filter(id__in=ctnrs).order_by('name') global_ctnr = Ctnr.objects.get(id=1) ctnrs = ctnrs.exclude(Q(id=2) | Q(id=1)) ctnrs = [global_ctnr] + list(ctnrs) request.session['ctnrs'] = ctnrs return request