def jobManageFromChart(projectJobId): """ Feladat módosítása és törlése charton keresztül Arguments: projectJobId {[int]} -- Feladat azonosító Returns: [json] -- Feladat serializálva / Üres JSON """ data = request.form.to_dict() # Feladat frissítése if request.method == 'PUT': projectJob = ProjectJob.query.get(projectJobId) projectJob.projectId = data['projectId'] projectJob.dateStart = datetime.strptime(data['start_date'], '%d-%m-%Y %H:%M') projectJob.dateEnd = datetime.strptime(data['end_date'], '%d-%m-%Y %H:%M') projectJob.duration = data['duration'] projectJob.name = remove_tags(data['text']) projectJob.description = remove_tags(data['desc']) projectJob.workerUserId = data['userId'] projectJob.parentJobId = data['parent'] db.session.add(projectJob) db.session.commit() return jsonify(projectJob.serialize) # Feladat törlése elif request.method == 'DELETE': ProjectJob.setDeleted(projectJobId) return jsonify([])
def jobAddFromChart(): """ Feladat felvitele charton keresztül Returns: [json] -- Feladat serializálva / Üres JSON """ if request.method == 'POST': data = request.form.to_dict() projectJob = ProjectJob() projectJob.projectId = data['projectId'] projectJob.dateStart = datetime.strptime(data['start_date'], '%d-%m-%Y %H:%M') projectJob.dateEnd = datetime.strptime(data['end_date'], '%d-%m-%Y %H:%M') projectJob.duration = data['duration'] projectJob.estimatedTime = data['duration'] projectJob.name = remove_tags(data['text']) projectJob.description = remove_tags(data['desc']) projectJob.creatorUserId = current_user.id projectJob.workerUserId = data['userId'] db.session.add(projectJob) db.session.commit() return jsonify(projectJob.serialize) return jsonify(data=[])
def addProjectJob(projectId): """ Projekt feladat felvitele Arguments: projectId {int} -- Projekt azonosító Returns: response """ project = Project.query.get_or_404(projectId) if current_user not in project.leaders: return redirect(url_for('projects')) form = AddAndModifyProjectJobForm() projectUsers = Project.getProjectUsers(project) projectUserChoices = [] for u in projectUsers: uc = (u['id'], u['name']) projectUserChoices.append(uc) form.users.choices = projectUserChoices if form.validate_on_submit(): date = form.date.data start = form.start.data duration = form.duration.data dateStart = datetime.combine(date, start) dateEnd = dateStart + timedelta(hours=duration) projectJobData = { 'name' : remove_tags(form.name.data), 'description' : remove_tags(form.description.data), 'dateStart' : dateStart, 'dateEnd' : dateEnd, 'estimatedTime' : form.estimatedTime.data, 'duration' : duration, 'creatorUserId' : current_user.id, 'workerUserId' : form.users.data, 'projectId' : projectId, } projectJob = ProjectJob(**projectJobData) db.session.add(projectJob) db.session.commit() flash(f'Sikeres feladat felvitel!', 'success') return redirect(url_for('projectData', projectId=projectId)) else: data = { 'form' : form, 'modify' : False, 'activeLink' : 'projects', 'projectId' : projectId, } return render_template('ProjectJob/addProjectJob.html', **data)
def projectModify(projectId): """ Projekt módosítás aloldal Arguments: projectId {int} -- Projekt azonosító Returns: response """ project = Project.query.get_or_404(projectId) if current_user.id != project.creatorUserId: return redirect(url_for('index')) form = AddAndModifyProjectForm() if form.validate_on_submit() and form.dateStart.data <= form.dateEnd.data: oldProject = Project.query.filter_by(name=form.name.data).first() if oldProject is not None and oldProject.id != project.id: flash(f'{form.name.data} - Adott néven már van rögzített projekt!', 'danger') data = { 'form' : form, 'modify' : True, 'activeLink' : 'projects', } return render_template('Project/addProject.html', **data) else: project.name = remove_tags(form.name.data) project.description = remove_tags(form.description.data) project.dateStart = form.dateStart.data project.dateEnd = form.dateEnd.data db.session.add(project) db.session.commit() flash(f'Sikeres projekt módosítás!', 'success') return redirect(url_for('projects')) else: if request.method == 'GET': form.name.data = project.name form.description.data = project.description form.dateStart.data = project.dateStart form.dateEnd.data = project.dateEnd elif request.method == 'POST': flash('Kezdésnek ({}) korábban kell lennie mint a Végzésnek ({})!'.format(form.dateStart.data, form.dateEnd.data), 'danger') data = { 'form' : form, 'modify' : True, 'activeLink' : 'projects', } return render_template('Project/addProject.html', **data)
def addProject(): """ Projekt hozzáadása oldal Returns: response """ form = AddAndModifyProjectForm() if form.validate_on_submit() and form.dateStart.data <= form.dateEnd.data: oldProject = Project.query.filter_by(name=form.name.data).first() if oldProject is not None: flash(f'{form.name.data} - Adott néven már van rögzített projekt!', 'danger') data = { 'form' : form, 'activeLink' : 'addProject', } return render_template('Project/addProject.html', **data) else: projectData = { 'name' : remove_tags(form.name.data), 'description' : remove_tags(form.description.data), 'dateStart' : form.dateStart.data, 'dateEnd' : form.dateEnd.data, 'creatorUserId' : current_user.id, } project = Project(**projectData) db.session.add(project) project.leaders.append(current_user) db.session.commit() flash(f'Sikeres projekt felvitel!', 'success') return redirect(url_for('projects')) else: if request.method == 'POST': flash('Kezdésnek ({}) korábban kell lennie mint a Végzésnek ({})!'.format(form.dateStart.data, form.dateEnd.data), 'danger') data = { 'form' : form, 'modify' : False, 'activeLink' : 'addProject', } return render_template('Project/addProject.html', **data)
def sendMessage(targetUserId, subject): """ Üzenet küldés Arguments: targetUserId {int} -- Címzett felhasználó azonosító subject {string} -- Tárgy Returns: response """ form = SendMessageForm() form.toUserId.query = User.query.filter(and_( User.id != current_user.id, User.deleted == False )).order_by(User.fullName).all() if form.validate_on_submit() and form.toUserId.data.id != current_user.id: messageData = { 'text' : remove_tags(form.text.data), 'subject' : remove_tags(form.subject.data), 'fromUserId' : current_user.id, 'toUserId' : form.toUserId.data.id, } message = UserMessage(**messageData) db.session.add(message) db.session.commit() flash(f'Üzenet elküldve!', 'success') return redirect(url_for('sent')) else: if not form.is_submitted(): form.toUserId.default = load_user(targetUserId) if subject is not None: form.subject.default = 'Re: ' + subject form.process() data = { 'form' : form, 'activeLink' : 'send', } return render_template('User/sendMessage.html', **data)
def register(): """ Felhasználó felvitele Returns: response """ if current_user.admin != True: return redirect(url_for('index')) form = RegisterForm() if form.validate_on_submit(): oldUser = User.query.filter(or_(User.userName == form.userName.data, User.email == form.email.data)).first() if oldUser is not None: flash(f'Adott felhasználónév vagy email foglalt!', 'danger') data = { 'form' : form, 'activeLink' : 'users', } return render_template('User/register.html', **data) else: hashedPassword = bcrypt.generate_password_hash(form.password.data).decode('utf-8') userData = { 'userName' : remove_tags(form.userName.data), 'fullName' : remove_tags(form.fullName.data), 'password' : hashedPassword, 'email' : form.email.data } user = User(**userData) db.session.add(user) db.session.commit() flash(f'Felhasználó regisztrálva {form.userName.data}', 'success') return redirect(url_for('users')) else: data = { 'form' : form, 'activeLink' : 'users', } return render_template('User/register.html', **data)
def account(): """ Adataim menüpont Returns: response """ form = ModifyAccountBaseDataForm() user = User.query.get_or_404(current_user.id) jobs = User.getProjectJobListCategories(current_user.id) data = { 'user' : user, 'projectCount' : len(user.projects), 'pendingJobCount' : len(jobs['pendingJobs']), 'doneJobCount' : len(jobs['doneJobs']), 'activeLink' : 'account', } if form.validate_on_submit(): email = form.email.data userName = remove_tags(form.userName.data) oldUser = User.query.filter( or_(User.userName == userName, User.email == email), and_(User.id != current_user.id) ).first() if oldUser is None or oldUser.id == current_user.id: user.userName = userName user.email = email db.session.commit() flash(f'Sikeres módosítás', 'success') return redirect(url_for('account')) else: flash(f'Adott felhasználónév vagy email foglalt!', 'danger') data['form'] = form return render_template('User/account.html', **data) else: if not form.is_submitted(): form.userName.default = user.userName form.email.default = user.email form.process() data['form'] = form return render_template('User/account.html', **data)
def manageJob(projectJobId): """ Projekt feladat állapot változatás Arguments: projectJobId {int} -- Projekt feladat azonosító Returns: response """ projectJob = ProjectJob.query.get_or_404(projectJobId) if not ProjectJob.isManagable(projectJob, current_user.id) or request.method == 'GET': flash(f'Feladat nem módosítható!', 'danger') return redirect(url_for('index')) comment = remove_tags(request.form.get('comment')) workTimeString = request.form.get('workTime') workTime = float(workTimeString.replace(',', '.')) done = request.form.get('done') pending = request.form.get('pending') if comment.strip() != '' and workTime > 0: workTimeHistoryData = { 'comment' : comment, 'workTime' : workTime, 'projectJobId' : projectJobId, 'createUserId' : current_user.id, } projectJobWorktimeHistory = ProjectJobWorktimeHistory(**workTimeHistoryData) db.session.add(projectJobWorktimeHistory) current_user.activeJobId = 0 if done is not None: projectJob = ProjectJob.query.get_or_404(projectJobId) ProjectJob.setDone(projectJob.id) flash(f'Feladat elkészült!', 'success') elif pending is not None: flash(f'Feladat várakozó állapotra állítva!', 'success') db.session.commit() else: flash(f'Hibás munkaidő adatok!', 'danger') return redirect(url_for('index'))
def projectJobCreateSubJob(parentJobId): """ Várakozó elvégzendő feladathoz alfeladat felvitele Arguments: parentJobId {int} -- Szülő Projekt feladat azonosító Returns: response """ form = AddAndModifyProjectJobSubJob() parentJob = ProjectJob.query.get_or_404(parentJobId) if not ProjectJob.canCreateSubJob(parentJob, current_user.id): flash(f'Feladathoz nem lehet alfeladatot rögzíteni!', 'danger') return redirect(url_for('index')) project = Project.query.get_or_404(parentJob.projectId) if project not in User.getUserVisibleProjects(current_user.id): flash(f'Feladathoz nem lehet alfeladatot rögzíteni!', 'danger') return redirect(url_for('index')) if form.validate_on_submit(): date = form.date.data start = form.start.data duration = form.duration.data dateStart = datetime.combine(date, start) dateEnd = dateStart + timedelta(hours=duration) projectJobData = { 'name' : remove_tags(form.name.data), 'description' : remove_tags(form.description.data), 'dateStart' : dateStart, 'dateEnd' : dateEnd, 'estimatedTime' : 0, 'duration' : duration, 'creatorUserId' : current_user.id, 'workerUserId' : current_user.id, 'projectId' : project.id, 'parentJobId' : parentJob.id, } projectJob = ProjectJob(**projectJobData) db.session.add(projectJob) db.session.commit() jobLinkData = { 'source' : projectJob.id, 'target' : parentJob.id, 'type' : '2', # finish_to_finish } link = ProjectJobLink(**jobLinkData) db.session.add(link) db.session.commit() flash(f'Sikeres alfeladat felvitel!', 'success') return redirect(url_for('index')) else: data = { 'form' : form, 'parentJob' : str(parentJob), 'activeLink' : 'projects', } return render_template('ProjectJob/addProjectJobSubJob.html', **data)
def projectJobModify(projectJobId): """ Projekt feladat módosítás Arguments: projectJobId {int} -- Projekt feladat azonosító Returns: response """ projectJob = ProjectJob.query.get_or_404(projectJobId) project = Project.query.get_or_404(projectJob.projectId) form = AddAndModifyProjectJobForm() projectUsers = Project.getProjectUsers(project) projectUserChoices = [] for u in projectUsers: uc = (u['id'], u['name']) projectUserChoices.append(uc) form.users.choices = projectUserChoices if not ProjectJob.isModifiable(projectJob, current_user.id): flash(f'Projekt feladat nem módosítható!', 'danger') return redirect(url_for('index')) if form.validate_on_submit(): date = form.date.data start = form.start.data duration = form.duration.data dateStart = datetime.combine(date, start) dateEnd = dateStart + timedelta(hours=duration) originalWorkerUserId = projectJob.workerUserId projectJob.name = remove_tags(form.name.data) projectJob.description = remove_tags(form.description.data) projectJob.dateStart = dateStart projectJob.dateEnd = dateEnd projectJob.estimatedTime = form.estimatedTime.data projectJob.duration = duration projectJob.workerUserId = form.users.data db.session.add(projectJob) db.session.commit() subJobsText = '' if ProjectJob.hasSubJob(projectJob) and projectJob.workerUserId != originalWorkerUserId: for job in ProjectJob.getSubJobs(projectJob): job.workerUserId = form.users.data db.session.add(job) db.session.commit() subJobsText = ' Projekt alfeladatainak felhasználója is módosítva!' flash(f'Sikeres projekt feladat módosítás!' + subJobsText, 'success') return redirect(url_for('projectData', projectId=projectJob.projectId)) else: form.name.data = projectJob.name form.description.data = projectJob.description form.users.data = User.query.get(projectJob.workerUserId) form.estimatedTime.data = projectJob.estimatedTime form.duration.data = projectJob.duration start = date = projectJob.dateStart form.start.data = start form.date.data = date data = { 'form' : form, 'modify' : True, 'hasSubJob' : ProjectJob.hasSubJob(projectJob), 'activeLink' : 'projects', 'projectId' : projectJob.projectId, } return render_template('ProjectJob/addProjectJob.html', **data)