def delete_person_from_project(cls, username, password, project, person): """ The removal of the contractor from the project :param username: username of creator :param password: creator password :param person: person to delete :param project: project name :return: """ log = logger.get_logger(ProjectController.log_tag) project = ProjectStorage.get_project(project) admin = UserStorage.get_user_by_name(username) person = UserStorage.get_user_by_name(person) if admin.password == password: if ProjectStorage.is_admin(admin, project) == 0: guys = ProjectStorage.get_all_persons_in_project(project) have = False if guys[0][0] == person.user_id: log.error( "User was tried to delete a creator of the project") raise CannotDeleteCreator for i in range(len(guys)): if guys[i][0] == person.user_id: have = True if not have: log.error("User is not exist") raise UserIsNotExistInProject else: ProjectStorage.delete_person_from_project(person, project) else: log.error("You are not the Creator of the project") raise UAreNotAdmin else: log.error("Incorrect password for {}".format(username)) raise WrongPassword
def add_person_to_project(cls, username, password, project, person): """ Adds an artist to the project :param username: name of project creator :param password: creator password :param person: the name of the user you want to add to the project :param project: project name :return: """ log = logger.get_logger(ProjectController.log_tag) project = ProjectStorage.get_project(project) admin = UserStorage.get_user_by_name(username) person = UserStorage.get_user_by_name(person) if admin.password == password: if ProjectStorage.is_admin(admin, project) == 0: userlist = ProjectStorage.get_all_persons_in_project(project) have = False for i in userlist: if i[0] == person.user_id: have = True if not have: ProjectStorage.add_person_to_project(person, project) else: log.error( "User {} is already exist in this project".format( username)) raise UserAlreadyExistInProject else: log.error("You are not the Creator of the project") raise UAreNotAdmin else: log.error("Incorrect password for {}".format(username)) raise WrongPassword
def create(cls, username, password, name, description): """ Create a project with a specified name and description :param username: user, who want to create a new project :param password: user password :param name: name of new project :param description: description of new project :return: """ log = logger.get_logger(ProjectController.log_tag) user = UserStorage.get_user_by_name(username) if user.password == password: project = Project(name, description, user.user_id) ProjectStorage.add_project_to_db(project, user) else: log.error("Incorrect password for {}".format(username)) raise WrongPassword
def edit_description(cls, username, password, project_name, new_desc): """ Editing the project description :param username: name of project creator :param password: creator password :param project_name: name of the project to be changed :param new_desc: new description of project :return: """ log = logger.get_logger(ProjectController.log_tag) person = UserStorage.get_user_by_name(username) project = ProjectStorage.get_project(project_name) if person.password == password: ProjectStorage.is_admin(person, project) project.description = new_desc ProjectStorage.save(project) else: log.error("Incorrect password for {}".format(username)) raise WrongPassword
def su_delete_person_from_project(cls, username, password, person, project): """ Delete all the workers from the project, you can also delete the project Creator :param username: name of creator :param password: creator password :param person: person to delete :param project: project name :return: """ log = logger.get_logger(ProjectController.log_tag) project = ProjectStorage.get_project(project) admin = UserStorage.get_user_by_name(username) person = UserStorage.get_user_by_id(person) if admin.password == password: ProjectStorage.is_admin(admin, project) guys = ProjectStorage.get_all_persons_in_project(project) have = False for i in range(len(guys)): if guys[i][0] == person.user_id: have = True if not have: log.error("User is not exist") raise UserIsNotExistInProject else: ProjectStorage.delete_person_from_project(person, project) else: log.error("Incorrect password for {}".format(username)) raise WrongPassword
def show_all(cls, username, password): """ Displays a list of all projects with the participants of these projects :param username: :param password: :return: """ log = logger.get_logger(ProjectController.log_tag) user = UserStorage.get_user_by_name(username) new_list = [] if user.password == password: project_list = ProjectStorage.show_all() for i in project_list: have = False guys = ProjectStorage.get_all_persons_in_project(i) for j in guys: if user.user_id == j[0]: have = True if have: new_list.append(i) else: log.error("Incorrect password for {}".format(username)) raise WrongPassword return new_list
def get_all_columns(cls, project_name): """ Get a list consisting of all columns included in the project :param project_name: the name of the project :return: """ cols = [] conn = sqlite3.connect(conf.get_path_to_db()) c = conn.cursor() project = ProjectStorage.get_project(project_name) c.execute("SELECT * FROM columns WHERE project_id==('%s')" % project.id) data = c.fetchall() for i in data: column = Column(i[1], i[2], i[3], i[0]) cols.append(column) return cols
def get_column(cls, project_name, name): """ Get an instance of a class with the specified name :param project_name: the name of the project that contains the column :param name: the name of the column :return: """ conn = sqlite3.connect(conf.get_path_to_db()) c = conn.cursor() project = ProjectStorage.get_project(project_name) c.execute( "SELECT * FROM columns WHERE name==('%s') AND project_id==('%s')" % (name, project.id)) data = c.fetchone() try: column = Column(data[1], data[2], data[3], data[0]) conn.close() return column except: conn.close() raise NoColumnWithThisName
def delete(cls, username, password, name): """ Deletes the project with the specified name :param username: user, creator of project :param password: user password :param name: name of project to delete :return: """ log = logger.get_logger(ProjectController.log_tag) user = UserStorage.get_user_by_name(username) if user.password == password: project = ProjectStorage.get_project(name) ProjectStorage.check_permission(user, project) guys = ProjectStorage.get_all_persons_in_project(project) for i in guys: ProjectController.su_delete_person_from_project( username, password, i, project.name) ProjectStorage.delete_with_object(project) else: log.error("Incorrect password for {}".format(username)) raise WrongPassword
def create_table(cls): ProjectStorage.create_table()