def create(self, validated_data): profile_data = validated_data.pop('profile') password = validated_data.pop('password') user = User(**validated_data) user.set_password(password) user.save() UserProfile.objects.create(user=user, **profile_data) return user
def post(self, request, *args, **kwargs): email = request.data.get('email', None) first_name = request.data.get('first_name', None) middle_name = request.data.get('middle_name', None) last_name = request.data.get('last_name', None) password = request.data.get('password', None) name = request.data.get('institution', None) logo = request.data.get('logo', None) phone_number = request.data.get('phone_number', None) domain = request.data.get('domain', None) gps = request.data.get('gps', None) try: User.objects.get(username=email) return Response({'detail': 'Email already exist'}, status=HTTP_400_BAD_REQUEST) except User.DoesNotExist: pass try: School.objects.get(domain=domain) return Response( { 'detail': "There's already a school with this domain registered" }, status=HTTP_400_BAD_REQUEST) except School.DoesNotExist: pass inst_count = School.objects.count() inst_count = '{0:04}'.format(inst_count) user_count = User.objects.filter( school_id=institution_id(name, inst_count)).count() user_count = '{0:04}'.format(user_count) user = User( username=email, email=email, first_name=first_name, middle_name=middle_name, last_name=last_name, slug="-".join((slugify(first_name), slugify(last_name))), user_type='SAD', account_id=account_id(name, first_name, last_name, user_count), school_id=institution_id(name, inst_count), ) user.set_password(password) school = School( name=name, logo=logo, gps_address=gps, phone_number=phone_number, slug=slugify(name), created_by=user, domain=domain, school_id=institution_id(name, inst_count), ) user.save() school.save() user = UserSerializer(user, context={'request': request}) school = SchoolSerializer(school, context={'request': request}) return Response({ 'user': user.data, 'institution': school.data }, status=HTTP_201_CREATED)
def signup_school(request): # ss1 = None try: ss1 = request.session['ss1'] except: return redirect(reverse_lazy('account:register-user')) context = {'errors': '', 'ss1': ss1} if request.method == 'POST': name = request.POST.get('institution', None) logo = request.FILES.get('logo', None) phone_number = request.POST.get('phone_number', None) domain = request.POST.get('domain', None) gps = request.POST.get('gps', None) try: School.objects.get(domain=domain) context[ 'errors'] = "There's already a school with this domain registered" return render(request, 'account/signup2.html', context, status=400) except School.DoesNotExist: pass try: User.objects.get(username=ss1['email']) context['errors'] = "This email has already been registered" return render(request, 'account/signup2.html', context) except User.DoesNotExist: pass inst_count = School.objects.count() + 1 inst_count = '{0:04}'.format(inst_count) user_count = User.objects.filter( school_id=institution_id(name, inst_count)).count() + 1 user_count = '{0:04}'.format(user_count) user = User( username=ss1['email'], email=ss1['email'], first_name=ss1['first_name'], middle_name=ss1['middle_name'], last_name=ss1['last_name'], slug="-".join( (slugify(ss1['first_name']), slugify(ss1['last_name']))), user_type='SAD', account_id=account_id(name, ss1['first_name'], ss1['last_name'], user_count), school_id=institution_id(name, inst_count), ) user.set_password(ss1['password']) school = School( name=name, logo=logo, gps_address=gps, phone_number=phone_number, slug=slugify(name), created_by=user, domain=domain, school_id=institution_id(name, inst_count), ) user.save() school.save() request.session['ss1'] = {} return redirect('login') return render(request, 'account/signup2.html', context)
def staffs(request): staff = Staff.objects.filter(school_id=request.user.school_id) head = None try: head = User.objects.get(user_type='SH', school_id=request.user.school_id) except User.DoesNotExist: pass context = { 'object_list': staff, 'head': head, 'errors': '' } if request.method == 'POST': form = request.POST.get('form') if form == 'head': fname = request.POST.get('first_name') lname = request.POST.get('last_name') mname = request.POST.get('middle_name') email = request.POST.get('email') try: User.objects.get(username=email, school_id=request.user.school_id) context['errors'] = 'This email already exist' return render(request, 'staff/index.html', context) except User.DoesNotExist:pass uc = User.objects.filter(school_id=request.user.school_id).count() + 1 uc = '{0:04}'.format(uc) inst = School.objects.get(school_id=request.user.school_id) user = User( username=email, email=email, first_name=fname, middle_name=mname, last_name=lname, slug="-".join((slugify(fname), slugify(lname))), user_type='SH', account_id=account_id(inst.name, fname, lname, uc), school_id=request.user.school_id ) user.set_password('password') mystaff = Staff( staff_type='SH', first_name=fname, middle_name=mname, last_name=lname, created_by=request.user, slug="-".join((slugify(fname), slugify(lname))), account_activated=True, school_id=request.user.school_id, ) user.save() mystaff.save() return redirect('staff:list') elif form == 'activate': staff_id = request.POST.get('staff') staff_obj = Staff.objects.get(id=staff_id) email = request.POST.get('email') try: User.objects.get(username=email, school_id=staff_obj.school_id) context['errors'] = 'This email already exist' return render(request, 'staff/index.html', context) except User.DoesNotExist:pass uc = User.objects.filter(school_id=request.user.school_id).count() + 1 uc = '{0:04}'.format(uc) inst = School.objects.get(school_id=request.user.school_id) user = User( username=email, email=email, first_name=staff_obj.first_name, middle_name=staff_obj.middle_name, last_name=staff_obj.last_name, slug="-".join((slugify(staff_obj.first_name), slugify(staff_obj.last_name))), user_type=staff_obj.staff_type, account_id=account_id(inst.name, staff_obj.first_name, staff_obj.last_name, uc), school_id=request.user.school_id, profile=staff_obj.profile ) user.set_password('password') staff_obj.account_activated = True user.save() staff_obj.user = user staff_obj.save() return redirect('staff:list') return render(request, 'staff/index.html', context)