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 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 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 delete(cls, username, password): """ Function to delete a user :param username: username of user to delete :param password: him password :return: """ log = logger.get_logger(UserController.log_tag) user = UserStorage.get_user_by_name(username) if user.password == password: UserStorage.delete_user(username) else: log.error("Incorrect password for {}".format(username)) raise WrongPassword
def post(self, request, *args, **kwargs): form = SignUpForm(request.POST) response = redirect('tracker:home') error1 = '' if form.is_valid(): raw_password = form.cleaned_data.get('password1') email = form.cleaned_data.get('email') users = UserStorage.get_all_users() have = False for u in users: if email == u.email: have = True error1 = "An account with this name is already registered" if not have: user = form.save() user.refresh_from_db() user.save() user = authenticate(username=user.username, password=raw_password) login(request, user) UserController.reg(user.username, user.password, email) response.set_cookie(key='have_account', value='1') return response return render(request, 'accounts/signup.html', { 'form': form, 'error1': error1 })
def reg(cls, username, password, email): """ User registration with the specified data :param username: desired user name :param password: desired password :param email: desired e-mail :return: """ log = logger.get_logger(UserController.log_tag) user = User(username, password, email) users = UserStorage.get_all_users() have = False for i in users: if i[0] == user.username: have = True if not have: UserStorage.add_user_to_db(user) return user else: log.error("User with this name is already exist") raise UserAlreadyExist
def edit(cls, username, password, param, newparam): """ Editing user information :param username: name of user :param password: password :param param: param you want to change (name/password) :param newparam: new value of param :return: """ log = logger.get_logger(UserController.log_tag) user = UserStorage.get_user_by_name(username) oldname = user.username if user.password == password: if param == 'name': user.username = newparam UserStorage.set_username_for_user(user, oldname) elif param == 'password': user.password = newparam UserStorage.set_password_for_user(user) 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 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 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 create_table(cls): UserStorage.create_table()