Esempio n. 1
0
def add_project():
    form = AddProjectForm(request.form)
    if request.method == "POST" and form.validate():
        project = Project(form.title.data, form.description.data, form.url.data, form.status.data)
        db.session.add(project)
        db.session.commit()

        project_technology = ProjectsTechnologies(project.id, form.technologies.data)
        db.session.add(project_technology)
        db.session.commit()

        flash("Project added", "info")
        return redirect(url_for("add_project"))

    pivot_data = []
    technologies = ProjectsTechnologies.query.all()
    for elem in technologies:
        technology = Technology.query.filter_by(id=elem.technology_id).first()
        pivot_data.append((elem.project_id, technology, "technology", "select"))

    print pivot_data

    return render_template(
        "_add.html",
        form=form,
        rows=Project.query.all(),
        target_model="Project",
        fields=Project.__mapper__.c.keys(),
        extra_fields=Project.get_pivot_readable_fields(),
        pivot_data=pivot_data,
        pivot_data_update=[("technology", Technology.query.all(), "select")],
        action="addproject",
    )
Esempio n. 2
0
def add_new(request):
    user = request.user
    if request.method == "POST":
        form = AddProjectForm(request.POST)
        if (form.is_valid()):
            name = form.cleaned_data['name']
            project = Project()
            project.name = name
            project.user = user
            project.save()

            project_user = ProjectUser()
            project_user.project = project
            project_user.user = user
            project_user.save()

            tag = Tag()
            tag.name = '#' + name
            tag.user = user
            tag.type = 'project'
            tag.save()
            return HttpResponseRedirect('/project/' + name)

    return render(request, 'project/add_new.html', {
        'form': AddProjectForm(),
    })
Esempio n. 3
0
def index():
    formUpdate = UpdateProjectForm(prefix="formUpdate")
    d = Projects.query.order_by(Projects.id).all()
    data = []
    for p in d:
        t = p.read.split(" ")
        if len(data) == 0:
            data.append(p)
        elif str(session['author_id']) in t:
            data.append(p)
        elif t.count("0") == len(t):
            data.append(p)
    form = AddProjectForm(prefix='form')
    formAdd = AddUserToProjectForm(prefix='formAdd')
    if form.validate_on_submit() and form.submit.data:
        a.createProject(session['author_id'], session['session_id'], form.name.data, form.description.data)
    if formUpdate.validate_on_submit() and formUpdate.submit.data:
        p = Projects.query.filter_by(id = int(formUpdate.idProject.data)).all()
        p = p[0]
        read = filter (lambda a: a != 0, [int(s) for s in p.read.split(" ")])
        a.updateProject(session['author_id'], session['session_id'], int(formUpdate.idProject.data), formUpdate.name.data, formUpdate.description.data, read)
    if formAdd.validate_on_submit() and formAdd.submit.data:
        p = Projects.query.filter_by(id = int(formAdd.idProject.data)).all()
        p = p[0]
        read = filter (lambda a: a != 0, [int(s) for s in p.read.split(" ")])
        a.getUserByName(session['author_id'], session['session_id'], formAdd.name.data)
        time.sleep(1)
        u = Users.query.filter_by(name = formAdd.name.data).all()
        if not u:
            flash("User not found or the server don't send the user information!")
        else:
            u = u[0]
            read.append(u.id)
            a.updateProject(session['author_id'], session['session_id'], int(formAdd.idProject.data), p.name, p.content, read)
    return render_template('index.html', data = data, form = form, formUpdate = formUpdate, formAdd = formAdd)
Esempio n. 4
0
def update_project(project_id):
    project = Project.query.get_or_404(project_id)
    if current_user.is_authenticated:
        form = AddProjectForm()
        if form.validate_on_submit():
            if form.header_image.data:
                header_image = save_picture(form.header_image.data)
                project.header_image = header_image
            if form.project_images.data:
                for image in form.project_images.data:
                    if image:
                        image = save_picture(image)
                        project.project_images.append(ImageSet(image=image))
                        time.sleep(2)
            project.title = form.title.data
            project.description = form.description.data
            project.show_in_home = form.show_in_home.data
            db.session.commit()
            flash(_('Project has been updated'), 'success')
            return redirect(url_for('project', project_id=project.id))
        elif request.method == 'GET':
            form.title.data = project.title
            form.description.data = project.description
            form.show_in_home.data = project.show_in_home
        header_image = url_for('static',
                               filename="images/project_images/" +
                               project.header_image)

    return render_template('update_project.html',
                           title=_("Update Project"),
                           project=project,
                           form=form)
Esempio n. 5
0
def add_project():
    form = AddProjectForm()
    if form.validate_on_submit():
        if form.header_image.data:
            header_image = save_picture(form.header_image.data)
        else:
            header_image = 'default_header.png'
        project = Project(title=form.title.data,
                          description=form.description.data,
                          header_image=header_image,
                          show_in_home=form.show_in_home.data,
                          user_id=current_user.id)
        if form.project_images.data:
            for image in form.project_images.data:
                if image:
                    image = save_picture(image)
                    project.project_images.append(ImageSet(image=image))
                    time.sleep(2)
        db.session.add(project)
        db.session.commit()
        flash(_('Project Successfully Added'), 'success')
        return render_template('add_project.html',
                               title=_('Add Project'),
                               form=form)
    return render_template('add_project.html',
                           title=_('Add Project'),
                           form=form)
Esempio n. 6
0
def show_plot(plot_id):
    """Show specific plot details"""

    plot = Plot.query.get_or_404(plot_id)
    if g.user not in plot.users:
        flash("Not authorized to view this page.", "danger")
        return redirect(url_for("homepage"))

    form_plantlist = AddPlantListForm()
    form_plantlist.plantlists.choices = [(
        plantlist.id,
        plantlist.name,
    ) for plantlist in g.user.plantlists if plantlist not in plot.plantlists]
    form_project = AddProjectForm()
    form_project.projects.choices = [(
        project.id,
        project.name,
    ) for project in g.user.projects if project not in plot.projects]

    return render_template(
        "plots/show.html",
        form_plantlist=form_plantlist,
        form_project=form_project,
        plot=plot,
    )
Esempio n. 7
0
def user_content(user_id):
    """Shows user content page, which is an overview of projects, plots, and plant lists saved to user's profile"""

    user = User.query.get_or_404(user_id)

    if g.user != user:
        flash("Not authorized to view this page.", "danger")
        return redirect(url_for("homepage"))

    form_plot = AddPlotForm()

    # Load in choices based on users currently connected components
    form_plot.plots.choices = [(plot.id, plot.name,) for plot in g.user.plots]

    form_plantlist = AddPlantListForm()
    form_plantlist.plantlists.choices = [
        (plantlist.id, plantlist.name,) for plantlist in g.user.plantlists
    ]

    form_project = AddProjectForm()
    form_project.projects.choices = [
        (project.id, project.name,) for project in g.user.projects
    ]

    return render_template(
        "users/content.html",
        user=user,
        form_plot=form_plot,
        form_plantlist=form_plantlist,
        form_project=form_project,
    )
Esempio n. 8
0
def add_entry():

    form = AddProjectForm(request.form)
    cats = db.session.query(Category).all()
    cats = [cat.title for cat in cats]
    if request.method == 'POST' and form.validate():
        #try:
            proj = Projects(form.title.data,
                    form.description.data,
                    form.date_end.data,
                    form.goal_end.data,
                    form.httext.data,
                    g.user,
                    form.loc.data,
                    form.types.data,
                    form.lat.data,
                    form.lng.data,
                    form.image_link.data or url_for('static', filename='img/cover.jpg'))

            dupl = set()
            for cat in form.cat.data.split(','):
                cat = cat.strip()
                if cat:
                    #category = db.session.query(Category).filter_by(title=cat).first()
                    #if not category:
                        #category = Category(title=cat)
                    category = db.session.query(Category).filter_by(title=cat).first() \
                            or Category(title=cat)
                    if cat not in dupl:
                        proj.cat.append(category)
                        dupl.add(cat)

            db.session.add(proj)
            db.session.commit()
            flash('Project added')
        #except:
            #app.logger.debug('Cant add project')
            return redirect('/')

    return render_template('add.html', form=form, cats=cats)
Esempio n. 9
0
def admin():
    form_event_add = AddEventForm()
    form_event_edit = EditEventForm()
    form_project_add = AddProjectForm()
    if request.method == 'GET':
        members = models.Member.query.all()
        events = models.Event.query.all()
        projects = models.Project.query.all()
        technologies = models.Technology.query.all()
        return render_template('admin.html',
                               form_event_add=form_event_add,
                               form_event_edit=form_event_edit,
                               form_project_add=form_project_add,
                               members=members,
                               projects=projects,
                               technologies=technologies)
    if request.method == 'POST':
        action = request.form.get('action')
        if (action == "event-add"):
            d = {}
            for k, v in request.form.items():
                if (k == "action" or k == "csrf_token"):
                    continue
                d[k] = v
            event = models.Event(**d)
            db.session.add(event)
            db.session.commit()
            return "Added event."
        elif (action == "event-edit"):
            event_id = request.form.get('id')
            d = {}
            for k, v in request.form.items():
                if (k == "action" or k == "csrf_token" or k == 'id'):
                    continue
                d[k] = v

            #return str(d);
            db.session.query(
                models.Event).filter(models.Event.id == event_id).update(d)
            db.session.commit()
            return "Edited event."
        elif (action == "event-remove"):
            event_id = request.form.get('event_id')
            db.session.query(
                models.Event).filter(models.Event.id == event_id).delete()
            db.session.commit()
            return "Removed event."
        else:
            return "Fail"
Esempio n. 10
0
def add_project():
    form = AddProjectForm(request.form)
    if request.method == 'POST' and form.validate():
        project = Project(form.title.data, form.description.data,
                          form.url.data, form.status.data)
        db.session.add(project)
        db.session.commit()

        project_technology = ProjectsTechnologies(project.id,
                                                  form.technologies.data)
        db.session.add(project_technology)
        db.session.commit()

        flash('Project added', 'info')
        return redirect(url_for('add_project'))

    pivot_data = []
    technologies = ProjectsTechnologies.query.all()
    for elem in technologies:
        technology = Technology.query.filter_by(id=elem.technology_id).first()
        pivot_data.append(
            (elem.project_id, technology, 'technology', 'select'))

    print pivot_data

    return render_template('_add.html',
                           form=form,
                           rows=Project.query.all(),
                           target_model="Project",
                           fields=Project.__mapper__.c.keys(),
                           extra_fields=Project.get_pivot_readable_fields(),
                           pivot_data=pivot_data,
                           pivot_data_update=[
                               ('technology', Technology.query.all(), 'select')
                           ],
                           action="addproject")
Esempio n. 11
0
def show_plantlist(plantlist_id):
    """Show specific plant list"""
    plantlist = PlantList.query.get_or_404(plantlist_id)
    if g.user not in plantlist.users:
        flash("Not authorized to view this page.", "danger")
        return redirect(url_for("homepage"))

    # In order to get the appropriate symbols for each plant on a per plantlist basis,
    # we get the plantlist_plants instance which houses the specific symbol for each
    # plant on a given plantlist
    plantlists_plants = PlantLists_Plants.query.filter(
        PlantLists_Plants.plantlist_id == plantlist_id).all()

    # Map the symbols to the plants for use in generating on frontend
    plant_symbol_map = {
        item.plant_id: item.symbol
        for item in plantlists_plants
    }

    form_plot = AddPlotForm()
    form_plot.plots.choices = [(
        plot.id,
        plot.name,
    ) for plot in g.user.plots if plot not in plantlist.plots]
    form_project = AddProjectForm()
    form_project.projects.choices = [(
        project.id,
        project.name,
    ) for project in g.user.projects if project not in plantlist.projects]

    return render_template(
        "plantlists/show.html",
        form_plot=form_plot,
        form_project=form_project,
        plantlist=plantlist,
        plant_symbol_map=plant_symbol_map,
        symbol_size="fa-4x",
    )