示例#1
0
def register():
    params = request.get_json()
    mobile = params.get('mobile')
    email = params.get('email')
    nickname = params.get('nickname')
    sex = params.get('sex')
    password = params.get('password')

    if not (email and password):

        return JSONResponse.error('email and password must be provided')
    else:
        user = User.query.filter_by(email=email).first()
        if user:
            return JSONResponse.error('username has already registered!')

        user = User(
                    mobile=mobile,
                    email=email,
                    nickname=nickname,
                    sex=sex,
                    password=generate_password_hash(password)
                    )
        user.save()

        return JSONResponse.success()
示例#2
0
def login():
    code = request.values.get("code")
    if code is None:
        # Authorize the client from SSO, redirect as a query with "code"
        sl = "?".join([config.sso_params.get("cootek.authorize"), urlencode(config.authorize_params)])
        return redirect(sl)
    else:
        config.token_params.update({"code": code})
        ret = requests.post(config.sso_params.get("cootek.token"), data=config.token_params)
        token = json.loads(ret.text)
        if "access_token" in token and "id_token" in token:
            # Analyse username from id_token
            user_info = token['id_token'].split(".")[1]
            missing_padding = 4 - len(user_info) % 4
            if missing_padding:
                user_info += '=' * missing_padding
            temp_user_info = base64.b64decode(user_info)
            user_info = json.loads(bytes.decode(temp_user_info))

            username = user_info['upn'].split("@")[0]
            sid = user_info['sid'].split("@")[0]
            token = uuid.uuid4().hex
            user = User.query.filter_by(username=username).first()
            if not user:
                user = User()
                user.username = username
                user.access_token = token
                user.token_expired = time.time() + 8 * 60 * 60
                user.save()
            login_user(user)
            return app.send_static_file('index.html')
        else:
            sl = "?".join([config.sso_params.get("cootek.authorize"), urlencode(config.authorize_params)])
            return redirect(sl)
示例#3
0
    def handle(self, *args, **options):
        path = options['path'][0]

        list_multiple = []
        list_doesnt_exist = []
        with open(path, 'r') as csvfile:
            spamreader = csv.reader(csvfile, delimiter='	')
            list_wrong_date = []

            for row in spamreader:
                full_name = row[0]
                full_name_list = full_name.split(" ")
                first_name = full_name_list[0].lower()
                last_name = ' '.join(full_name_list[1:]).lower()
                username = row[1].split("@")[0].lower()
                if username == 'contato':
                    username = first_name + last_name.split(" ")[0]
                email = row[1].lower()
                password = '******'

                user = User(first_name=first_name,
                            last_name=last_name,
                            username=username,
                            email=email,
                            password=password)

                user.save()
 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
示例#5
0
    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)
示例#6
0
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)
示例#7
0
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)