Kaynağa Gözat

Started adding tool functions

joel
Simon Bowie 3 yıl önce
ebeveyn
işleme
baf379cae7
6 değiştirilmiş dosya ile 80 ekleme ve 2 silme
  1. +4
    -0
      web/app/__init__.py
  2. +1
    -1
      web/app/models.py
  3. +6
    -1
      web/app/templates/base.html
  4. +31
    -0
      web/app/templates/create.html
  5. +7
    -0
      web/app/templates/tools.html
  6. +31
    -0
      web/app/tool.py

+ 4
- 0
web/app/__init__.py Dosyayı Görüntüle

@@ -32,4 +32,8 @@ def create_app():
from .main import main as main_blueprint
app.register_blueprint(main_blueprint)

# blueprint for tools parts of app
from .tool import tool as tool_blueprint
app.register_blueprint(tool_blueprint)

return app

+ 1
- 1
web/app/models.py Dosyayı Görüntüle

@@ -8,7 +8,7 @@ class User(UserMixin, db.Model):
password = db.Column(db.String(100))
name = db.Column(db.String(1000))

class Tools(db.Model):
class Tool(db.Model):
id = db.Column(db.Integer, primary_key=True) # primary keys are required by SQLAlchemy
created = db.Column(db.DateTime, default=datetime.utcnow)
name = db.Column(db.Text)

+ 6
- 1
web/app/templates/base.html Dosyayı Görüntüle

@@ -5,7 +5,7 @@
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Flask Auth Example</title>
<title>COPIM online toolkit</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.2/css/bulma.min.css" />
</head>

@@ -22,6 +22,11 @@
Home
</a>
{% if current_user.is_authenticated %}
<a href="{{ url_for('tool.create') }}" class="navbar-item">
Add tool
</a>
{% endif %}
{% if current_user.is_authenticated %}
<a href="{{ url_for('main.profile') }}" class="navbar-item">
Profile
</a>

+ 31
- 0
web/app/templates/create.html Dosyayı Görüntüle

@@ -0,0 +1,31 @@
{% extends "base.html" %}

{% block content %}
<div class="column is-4 is-offset-4">
<h3 class="title">Add a new tool</h3>
<div class="box">
{% with messages = get_flashed_messages() %}
{% if messages %}
<div class="notification is-danger">
{{ messages[0] }}
</div>
{% endif %}
{% endwith %}
<form method="POST" action="/create">
<div class="field">
<div class="control">
<input class="input is-large" type="text" name="name" placeholder="Tool name" autofocus="">
</div>
</div>

<div class="field">
<div class="control">
<textarea class="input is-large" type="text" name="description" placeholder="Tool description" autofocus=""></textarea>
</div>
</div>

<button class="button is-block is-info is-large is-fullwidth">Submit</button>
</form>
</div>
</div>
{% endblock %}

+ 7
- 0
web/app/templates/tools.html Dosyayı Görüntüle

@@ -0,0 +1,7 @@
{% extends "base.html" %}

{% block content %}
<h1 class="title">
Welcome, {{ name }}!
</h1>
{% endblock %}

+ 31
- 0
web/app/tool.py Dosyayı Görüntüle

@@ -0,0 +1,31 @@
from flask import Blueprint, render_template, request, flash
from flask_login import login_required, current_user
from .models import Tool
from . import db

tool = Blueprint('tool', __name__)

@tool.route('/create', methods=('GET', 'POST'))
@login_required
def create():
if request.method == 'POST':
name = request.form.get('name')
description = request.form.get('description')

if not name:
flash('Name is required!')
else:
tool = Tool.query.filter_by(name=name).first() # if this returns a tool, then the name already exists in database

if tool: # if a tool is found, we want to redirect back to create page
flash('Tool with same name already exists')
return redirect(url_for('tool.create'))

# create a new tool with the form data
new_tool = Tool(name=name, description=description)

# add the new user to the database
db.session.add(new_tool)
db.session.commit()

return render_template('create.html')

Yükleniyor…
İptal
Kaydet