Example #1
0
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([])
Example #2
0
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=[])
Example #3
0
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)
Example #4
0
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)
Example #5
0
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)
Example #6
0
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)
Example #7
0
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)
Example #8
0
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)
Example #9
0
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'))
Example #10
0
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)
Example #11
0
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)