def test(self):
        users_model = UsersModel(PostgresConnection().get_connection())
        users_amount = users_model.amount()[0]
        username = random_string()
        password = random_string()
        returned_data = users_model.create({
            "name": "name",
            "role": 1,
            "date_registration": date.today(),
            "username": username,
            "pwd_hash": password,
            "pwd_salt": uuid.uuid4().hex,
            "date_last_update": date.today(),
            "status": True
        })
        assert (users_amount + 1 == users_model.amount()[0])

        user = users_model.read({'username': username})
        assert (user['role'] == 1)
        new_username = random_string()
        users_model.update({"username": new_username},
                           {"id": returned_data['id']})
        user = users_model.read({"username": new_username})
        assert (user is not None)

        users_model.delete({"id": returned_data['id']})
        assert (users_model.read({"username": new_username}) is None)
Esempio n. 2
0
 def delete(self):
     self.parser.add_argument("ids",
                              type=list,
                              required=True,
                              location="json",
                              help='ids is required')
     args = self.parser.parse_args()
     UsersModel.delete(UsersModel, args.ids)
     return pretty_result(code.OK, msg='用户信息删除成功!')
Esempio n. 3
0
class Users(Controller):
    # constructor
    def __init__(self):
        super(Users, self).__init__()
        self._data = UsersModel()

    # login
    def login(self):
        if self.logged():
            return write("Well done")

        email = request.values.get("email")
        password = request.values.get("password")

        if email is not None and \
           password is not None and \
           self._data.valid(email, sha512(password)):
            session["email"] = email
            return write("Well done")
        else:
            return error("Incorrect login or password")

    # logout
    def logout(self):
        if not self.logged():
            return error("You not logged")

        session.pop('email', None)
        return write("Well done")

    # entered
    def entered(self):
        if self.logged():
            return write("Yes")
        else:
            return write("No")

    # register new user
    def register(self):
        if self.logged():
            return error("You are already logged")

        email = request.values.get("email")
        password = request.values.get("password")
        fname = request.values.get("fname")
        lname = request.values.get("lname")
        role = request.values.get("role")
        avatar = request.values.get("avatar")
        status = request.values.get("status")

        if (not (type(email) is unicode)) or (len(email) < 5):
            return error("Incorrect e-mail")

        if (not (type(password) is unicode)) or (len(password) < 5):
            return error("Incorrect password")

        if self._data.exists(email):
            return error("User with this e-mail already exists")

        try:
            self._data.add({"email": email,
                            "password": sha512(password),
                            "fname": fname,
                            "lname": lname,
                            "role": role,
                            "avatar": avatar,
                            "status": status})
            return write("Well done")
        except:
            return error("Registration failed")

    # delete user
    def delete(self):
        if not self.logged():
            return error("You not logged")

        try:
            id = int(request.values.get("id"))
            self._data.delete(id)
            return write("Well done")
        except:
            return error("Invalid request")

    # get user info
    def get(self, param):
        if not self.logged():
            return error("You not logged")

        try:
            if type(param) is int:
                return write(self._data.get(param))
            elif type(param) is unicode:
                return write(self._data.get(param))
            else:
                return write(self._data.get(session["email"]))
        except:
            return error("Invalid request")

    # change user info
    def change(self):
        if not self.logged():
            return error("You not logged")

        user = {"email": request.values.get("email"),
                "password": request.values.get("password"),
                "fname": request.values.get("fname"),
                "lname": request.values.get("lname"),
                "role": request.values.get("role"),
                "avatar": request.values.get("avatar"),
                "status": request.values.get("status")}

        try:
            id = int(request.values.get("id"))
            self._data.edit(id, user)
            return write("Well done")
        except:
            return error("Invalid request")

    # get all user list
    def all(self):
        if not self.logged():
            return error("You not logged")

        try:
            return write(self._data.all())
        except:
            return error("Invalid request")


    def fetch(self, **kwargs):
        action = kwargs.get("action")
        param = kwargs.get("param")

        if action == "login":
            return self.login()
        elif action == "logout":
            return self.logout()
        elif action == "entered":
            return self.entered()
        elif action == "register":
            return self.register()
        elif action == "delete":
            return self.delete()
        elif action == "get" or action is None:
            return self.get(param)
        elif action == "change":
            return self.change()
        elif action == "all":
            return self.all()
        else:
            return error("Invalid request")