class TestUserModel():
    @classmethod
    def setup_class(self):
        self.model = UserModel(FakeConnTool())

    def test_get_user_info_by_email(self):
        email = '*****@*****.**'

        expect = {
            'name': 'name',
            'email': '*****@*****.**',
            'uid': 'KDD0wVZh0Rb6eLFb2KeWBgKMjiH2'
        }
        info = self.model.get_user_info_by_email(email)
        assert (info, expect)

    def test_get_user_info_by_uid(self):
        uid = 'KDD0wVZh0Rb6eLFb2KeWBgKMjiH2'

        expect = {
            'name': 'name',
            'email': '*****@*****.**',
            'uid': 'KDD0wVZh0Rb6eLFb2KeWBgKMjiH2'
        }
        info = self.model.get_user_info_by_uid(uid)
        assert (info, expect)
def create_user():
    session = current_app.db.session
    body = request.get_json()

    from src.serializers.create_user_schema import create_user_schema

    request_errors = create_user_schema.validate(body)

    if request_errors:
        return {
            "msg": "Invalid or missing User request fields."
        }, HTTPStatus.UNPROCESSABLE_ENTITY

    user_name = body["name"]
    email = body["email"]
    password = body["password"]

    try:
        new_user = UserModel(name=user_name, email=email)
        new_user.password = password

        session.add(new_user)
        session.commit()
    except sqlalchemy.exc.IntegrityError:
        return {
            "msg": "Name or email is already taken."
        }, HTTPStatus.UNPROCESSABLE_ENTITY

    serialized_user = user_model_schema.dump(new_user)
    return serialized_user, HTTPStatus.CREATED
    def test_update_collaborator(self):
        self.model.add_project('test_update_collaborator')

        pid = self.get_pid_by_name('test_update_collaborator')
        data, code = self.model.update_collaborator(pid,
                                                    '*****@*****.**',
                                                    'add')
        update_pro = self.model._db.collection('projects').document(
            pid).get().to_dict()
        userModel = UserModel(FakeConnTool())
        print(update_pro['collaborator'])
        assert update_pro['collaborator'] == [
            userModel.get_user_info_by_email('*****@*****.**')[0]['uid']
        ]
        self.model.delete_project(
            self.get_pid_by_name('test_update_collaborator'))
Пример #4
0
class BaseUserController(BaseController):
    model = UserModel()
    get_form = UserGetForm
    put_form = UserPutForm
    signup_form = UserSignupForm
    login_form = UserLoginForm
    auth_form = AuthDataForm
    reset_password_form = UserResetPasswordForm
Пример #5
0
def useradd(username, password):
    try:
        validate_username(username)
        validate_password(username, password)
    except ValueError as error:
        raise

    return UserModel(username, password)
Пример #6
0
    def login():
        try:
            request_data = request.data
            request_data = json.loads(request_data)
        except:
            return jsonify({
                "message": "Không thể lấy dữ liệu!",
                "code": 412
            }), 412
        username = request_data.get("username")
        password = request_data.get("password")

        password_md5 = generate_md5_by_str(password)

        user_data = UserModel.find_username_password(username=username,
                                                     password=password_md5)
        if not user_data:
            return jsonify({
                "message": "Không tìm thấy thông tin tài khoản!",
                "code": 413
            }), 413
        ma = None
        if user_data.Quyen == "giaovien":
            ma = TeacherModel.get_magvhd_by_id(int(user_data.LienKet))
        data = {
            "username": username,
            "permission": user_data.Quyen,
            "lienket": user_data.LienKet,
            "iddetai": "",
            "id_gvhd": "",
            "ma": ma
        }
        if user_data.Quyen == "sinhvien":
            student_data = StudentModel.get_student_by_id(
                student_id=user_data.LienKet)
            if student_data:
                data["ma"] = student_data.MaSV
                if student_data.IDDeTai:
                    data["iddetai"] = student_data.IDDeTai
                if student_data.MaGVHD:
                    teacher_id = TeacherModel.get_id_by_ma(student_data.MaGVHD)
                    if teacher_id:
                        data["id_gvhd"] = teacher_id
                check = int(user_data.LienKet)
                i = check // 3 if check >= 6 else check if check < 3 else check - 3
                if int(i) == 0:
                    data["start_time_do_an"] = "01/05/2021"
                if int(i) == 1:
                    data["start_time_do_an"] = "19/03/2021"
                if int(i) == 2:
                    data["start_time_do_an"] = "25/12/2020"

        return jsonify({
            "message": "Đăng nhập thành công!",
            "data": data,
            "code": 200
        }), 200
    def test_get_project_setting(self):
        data = {'repositories': {'action': 'remove', 'Github': [182191121]}}
        self.model.add_project('test_get_project_setting')
        pid = self.get_pid_by_name('test_get_project_setting')

        data, code = self.model.get_project_setting(pid)
        setting = Setting('test_get_project_setting', [],
                          UserModel(FakeConnTool())).to_dict()
        assert (setting, status_code.OK) == (data, code)
        self.model.delete_project(self.get_pid_by_name('test_remove_repo'))
Пример #8
0
    def execute(self, i, o):
        """
        Executes the command.

        :type i: cleo.inputs.input.Input
        :type o: cleo.outputs.output.Output
        """

        # Read parameters
        user = UserModel.getByUsername(i.get_argument('username'))
        user.delete()
Пример #9
0
    def execute(self, i, o):
        """
        Executes the command.

        :type i: cleo.inputs.input.Input
        :type o: cleo.outputs.output.Output
        """

        # Read parameters
        username = i.get_argument('username')
        password = i.get_argument('password')

        user = UserModel.getByAttributeSingle('username', username)
        user.save()
        token = user.generateToken(password)
        token.save()
        print token
Пример #10
0
    def login():
        try:
            request_data = request.data
            request_data = json.loads(request_data)
        except:
            return jsonify({
                "message": "Không thể lấy dữ liệu!",
                "code": 412
            }), 412
        username = request_data.get("username")
        password = request_data.get("password")

        password_md5 = generate_md5_by_str(password)

        user_data = UserModel.find_username_password(username=username,
                                                     password=password_md5)
        if not user_data:
            return jsonify({
                "message": "Không tìm thấy thông tin tài khoản!",
                "code": 413
            }), 413
        data = {
            "username": username,
            "permission": user_data.Quyen,
            "lienket": user_data.LienKet,
            "iddetai": "",
            "id_gvhd": "",
        }
        if user_data.Quyen == "sinhvien":
            student_data = StudentModel.get_student_by_id(
                student_id=user_data.LienKet)
            if student_data:
                if student_data.IDDeTai:
                    data["iddetai"] = student_data.IDDeTai
                if student_data.MaGVHD:
                    teacher_id = TeacherModel.get_id_by_ma(student_data.MaGVHD)
                    if teacher_id:
                        data["id_gvhd"] = teacher_id
        return jsonify({
            "message": "Đăng nhập thành công!",
            "data": data,
            "code": 200
        }), 200
Пример #11
0
    def execute(self, i, o):
        """
        Executes the command.

        :type i: cleo.inputs.input.Input
        :type o: cleo.outputs.output.Output
        """

        UsersDB.getInstance().reset()

        user = UserModel()
        user.username = '******'
        user.email = '*****@*****.**'
        user.setPassword('admin')
        user.role = 'admin'
        user.status = 'active'
        user.project = 'ReLDI'
        user.requests_limit = 1000
        user.requests_made = 0
        user.save()

        user = UserModel()
        user.username = '******'
        user.email = '*****@*****.**'
        user.setPassword('user')
        user.role = 'user'
        user.status = 'active'
        user.project = 'ReLDI'
        user.requests_limit = 1000
        user.requests_made = 0
        user.save()

        user = UserModel()
        user.username = '******'
        user.email = '*****@*****.**'
        user.setPassword('user')
        user.role = 'user'
        user.status = 'pending'
        user.project = 'ReLDI'
        user.requests_limit = 1000
        user.requests_made = 0
        user.save()

        user = UserModel()
        user.username = '******'
        user.email = '*****@*****.**'
        user.setPassword('user')
        user.role = 'user'
        user.status = 'blocked'
        user.project = 'ReLDI'
        user.requests_limit = 1000
        user.requests_made = 0
        user.save()
Пример #12
0
    def register():
        try:
            request_data = request.data
            request_data = json.loads(request_data)
        except:
            return jsonify({
                "message": "Không thể lấy dữ liệu!",
                "code": 412
            }), 412
        username = request_data.get("username")
        password = request_data.get("password")
        permission = request_data.get("permission", "sinhvien")

        password_md5 = generate_md5_by_str(password)

        check_user_name = UserModel.find_username(username=username)
        if check_user_name:
            return jsonify({
                "message": f"Tài khoản {username} đã tồn tại!",
                "code": 413
            }), 413
        lienket = None
        if permission == "sinhvien":
            student_data = {
                "Ten": request_data.get("ten"),
                "MaSV": request_data.get("masv"),
                "SDT": request_data.get("sdt", ""),
                "Email": request_data.get("email", ""),
                "IDLop": request_data.get("idlop", ""),
                "MaGVHD": "",
                "IDDeTai": "",
                "TrangThai": "TaoMoi",
                "ThoiGianTao": get_current_time(),
                "ThoiGianCapNhat": get_current_time()
            }

            lienket = StudentModel.insert_one_student(data=student_data)
        if permission == "giaovien":
            teacher_data = {
                "Ten":
                request_data.get("ten"),
                "SoLuong":
                0,
                "MaGV":
                request_data.get("magv"),
                "SDT":
                request_data.get("sdt"),
                "Email":
                request_data.get("email"),
                "ChucVu":
                request_data.get("chucvu")
                if request_data.get("chucvu") else "GiaoVien",
                "TrangThai":
                "",
                "ThoiGianTao":
                get_current_time(),
                "ThoiGianCapNhat":
                get_current_time()
            }

            lienket = TeacherModel.insert_many_teacher(teacher_data)
        user_data = {
            "TaiKhoan": username,
            "MatKhau": str(password_md5),
            "Quyen": permission,
            "LienKet": lienket,
            "ThoiGianTao": get_current_time(),
            "ThoiGianCapNhat": get_current_time()
        }
        user_id = UserModel.insert_user(data_insert=user_data)
        if not user_id:
            return jsonify({
                "message": "Tạo mới thông tin tài khoản thành công!",
                "code": 413
            }), 413

        data = {"username": username, "permission": permission}
        return jsonify({
            "message": "Tạo mới tài khoản thành công!",
            "data": data,
            "code": 200
        }), 200
Пример #13
0
def main():
    from pprint import pprint
    from src.config import load_parser
    parser = load_parser()
    args, unknown = parser.parse_known_args()
    args = vars(args)

    args_to_print = {name: args[name] for name in args if not "files" in name}
    pprint(args_to_print)
    pprint(unknown)

    if args['data_header']:
        with open(args['data_header']) as f:
            data_header = f.readlines()[0].strip().split(",")
    if args['label_header']:
        with open(args['label_header']) as f:
            label_header = f.readlines()[0].strip().split(",")

    train_data_files = args['train_data_files']
    train_image_files = args['train_image_files']
    train_text_files = args['train_text_files']
    train_label_files = args['train_label_files']

    valid_data_files = args['valid_data_files']
    valid_image_files = args['valid_image_files']
    valid_text_files = args['valid_text_files']
    valid_label_files = args['valid_label_files']

    key = args['key']
    seed = args['seed']

    user_size = args['user_size']
    text_size = args['text_size']
    image_size = args['image_size']
    dummy_user_vector = args['dummy_user_vector']
    shuffle = args['shuffle']
    batch_size = args['batch_size']
    num_workers = args['num_workers']

    micro_lambda = args['micro_lambda']
    macro_lambda = args['macro_lambda']
    max_epoch = args['epochs']
    log_dir = args['log_dir']
    checkpoint_file = args['checkpoint']
    verbosity = args['verbosity']
    save_frequency = args['save_frequency']

    if args['align_files']:
        train_data_files, train_image_files, train_text_files, train_label_files = get_overlapping_data_files(
            train_data_files, train_image_files, train_text_files,
            train_label_files)

    if args['align_files']:
        valid_data_files, valid_image_files, valid_text_files, valid_label_files = get_overlapping_data_files(
            valid_data_files, valid_image_files, valid_text_files,
            valid_label_files)

    device = torch.device("cpu" if (
        args['no_cuda'] or not torch.cuda.is_available()) else "cuda")

    if args['user_only'] and args['content_only']:
        raise NotImplementedError("What does user_only and content_only mean?")
    elif args['user_only']:
        from src.models.user_model import UserModel
        model = UserModel(user_size=args['user_size'],
                          hidden_size=args['hidden_size'],
                          joint_embedding_size=args['joint_embedding_size'])
    elif args['content_only']:
        from src.models.content_model import ContentModel
        model = ContentModel(image_embed_size=args['image_size'],
                             text_embed_size=args['text_size'],
                             hidden_size=args['hidden_size'],
                             joint_embedding_size=args['joint_embedding_size'])

    else:
        from src.models.feature_model import FeatureModel
        model = FeatureModel(user_size=args['user_size'],
                             image_embed_size=args['image_size'],
                             text_embed_size=args['text_size'],
                             hidden_size=args['hidden_size'],
                             joint_embedding_size=args['joint_embedding_size'])

    if (torch.cuda.device_count() > 1) and args['all_gpu']:
        print("Using %d GPUS!" % torch.cuda.device_count())
        model = nn.DataParallel(model)

    model = model.to(device)

    print(model)

    optimizer = optim.Adam(model.parameters(), lr=args['learning_rate'])

    trainer = Trainer(
        model=model,
        optimizer=optimizer,
        device=device,
        key=key,
        data_header=data_header,
        label_header=label_header,
        user_size=user_size,
        text_size=text_size,
        image_size=image_size,
        dummy_user_vector=dummy_user_vector,
        user_only=args['user_only'],
        content_only=args['content_only'],
        seed=seed,
        micro_lambda=micro_lambda,
        macro_lambda=macro_lambda,
        max_epoch=max_epoch,
        batch_size=batch_size,
        num_workers=num_workers,
        shuffle=shuffle,
        log_dir=log_dir,
        checkpoint_file=checkpoint_file,
        verbosity=verbosity,
        save_frequency=save_frequency,
    )

    trainer.train(train_data_files, train_image_files, train_text_files,
                  train_label_files, valid_data_files, valid_image_files,
                  valid_text_files, valid_label_files)
 def setup_class(self):
     self.model = UserModel(FakeConnTool())
Пример #15
0
def create_data(n=10):
    all_data = list()
    for i in range(1, n):
        email = f"sinhvien{i}[email protected]"
        password = generate_md5_by_str(default_pass)
        student_data = {
            "Ten": "Nguyen Van A " + str(i),
            "MaSV": "Ma101152" + str(i),
            "SDT": "03133312323" + str(i),
            "Email": email,
            "IDLop": 1,
            "MaGVHD": "",
            "IDDeTai": "",
            "Cap": random.randrange(1, 3, 1),
            "TrangThai": "TaoMoi",
            "ThoiGianTao": get_current_time(),
            "ThoiGianCapNhat": get_current_time()
        }
        student_id = StudentModel.insert_one_student(student_data)
        user_data = {
            "TaiKhoan": email,
            "MatKhau": str(password),
            "Quyen": "sinhvien",
            "LienKet": student_id,
            "ThoiGianTao": get_current_time(),
            "ThoiGianCapNhat": get_current_time()
        }
        user_id = UserModel.insert_user(data_insert=user_data)
    for i in range(1, n):
        email = f"giaovien{i}[email protected]"
        password = generate_md5_by_str(default_pass)
        teacher_data = {
            "Ten": "Le Van A" + str(i),
            "SoLuong": 0,
            "MaGV": f"Gv12983192{i}",
            "SDT": f"19831321312{i}",
            "Email": email,
            "ChucVu": "GiaoVien",
            "TrangThai": "",
            "ThoiGianTao": get_current_time(),
            "ThoiGianCapNhat": get_current_time()
        }
        teacher_id = TeacherModel.insert_one_teacher(teacher_data)
        user_data = {
            "TaiKhoan": email,
            "MatKhau": str(password),
            "Quyen": "giaovien",
            "LienKet": teacher_id,
            "ThoiGianTao": get_current_time(),
            "ThoiGianCapNhat": get_current_time()
        }
        user_id = UserModel.insert_user(data_insert=user_data)

    email = f"*****@*****.**"
    password = generate_md5_by_str(default_pass)
    teacher_data = {
        "Ten": "Truong khoa",
        "SoLuong": 0,
        "MaGV": "Tk1231231",
        "SDT": "192831892313",
        "Email": email,
        "ChucVu": "TruongKhoa",
        "TrangThai": "",
        "ThoiGianTao": get_current_time(),
        "ThoiGianCapNhat": get_current_time()
    }
    teacher_id = TeacherModel.insert_one_teacher(teacher_data)
    user_data = {
        "TaiKhoan": email,
        "MatKhau": str(password),
        "Quyen": "truongkhoa",
        "LienKet": teacher_id,
        "ThoiGianTao": get_current_time(),
        "ThoiGianCapNhat": get_current_time()
    }
    user_id = UserModel.insert_user(data_insert=user_data)
Пример #16
0
    def execute(self, i, o):
        """
        Executes the command.

        :type i: cleo.inputs.input.Input
        :type o: cleo.outputs.output.Output
        """
        
        # Read parameters
        user = UserModel()
        user.username = i.get_argument('username')
        user.password = i.get_argument('password')
        user.project = i.get_argument('project')
        user.requests_limit = i.get_argument('requests_limit')
        user.requests_made = 0
        user.status = 'active'
        user.role = i.get_argument('role')
        user.save()
 class Meta:
     model = UserModel()
     exclude = ("password_hash", )