diff --git a/attract/application/modules/nodes/__init__.py b/attract/application/modules/nodes/__init__.py index 8e9f2cc1..48d57a15 100644 --- a/attract/application/modules/nodes/__init__.py +++ b/attract/application/modules/nodes/__init__.py @@ -65,6 +65,15 @@ def add(): return render_template('node_types/add.html', form=form) +@nodes.route("/", methods=['GET', 'POST']) +def index(): + """Generic function to list all nodes + """ + nodes = Node.query.all() + return render_template('nodes/index.html', + nodes=nodes) + + @nodes.route("//add", methods=['GET', 'POST']) def add(node_type): """Generic function to add a node of any type @@ -109,4 +118,14 @@ def edit(node_id): return render_template('nodes/edit.html', node=node, - form=form) \ No newline at end of file + form=form) + + +@nodes.route("//delete", methods=['GET', 'POST']) +def delete(node_id): + """Generic node deletion + """ + node = Node.query.get_or_404(node_id) + db.session.delete(node) + db.session.commit() + return 'ok' diff --git a/attract/application/modules/nodes/forms.py b/attract/application/modules/nodes/forms.py index 023081fd..e1caa6ee 100644 --- a/attract/application/modules/nodes/forms.py +++ b/attract/application/modules/nodes/forms.py @@ -13,6 +13,13 @@ from application import db from application.modules.nodes.models import Node, NodeType, NodeProperties +class CustomFieldForm(Form): + field_type = TextField('Field Type', validators=[DataRequired()]) + name = TextField('Name', validators=[DataRequired()]) + name_url = TextField('Url', validators=[DataRequired()]) + description = TextAreaField('Description', validators=[DataRequired()]) + is_required = BooleanField('Is extended') + class NodeTypeForm(Form): name = TextField('Name', validators=[DataRequired()]) diff --git a/attract/application/modules/nodes/models.py b/attract/application/modules/nodes/models.py index 8a9df776..5ecb9e80 100644 --- a/attract/application/modules/nodes/models.py +++ b/attract/application/modules/nodes/models.py @@ -57,7 +57,8 @@ class Node(db.Model): node_type_id = db.Column(db.Integer(), db.ForeignKey(NodeType.id)) node_type = db.relationship(NodeType, backref='Node') - properties = db.relationship('NodeProperties', backref='Node') + properties = db.relationship('NodeProperties', backref='Node', + cascade="all, delete, delete-orphan") def get_property(self, name): for p in self.properties: diff --git a/attract/application/templates/layout.html b/attract/application/templates/layout.html index fc1017f4..f2c3a248 100644 --- a/attract/application/templates/layout.html +++ b/attract/application/templates/layout.html @@ -47,7 +47,8 @@
  • Tasks
  • Profile
  • -
  • Task Types
  • +
  • Node Types
  • +
  • All Nodes
  • Log out
  • @@ -64,7 +65,7 @@ {% endblock %} diff --git a/attract/application/templates/nodes/edit.html b/attract/application/templates/nodes/edit.html index 59821e16..97198593 100644 --- a/attract/application/templates/nodes/edit.html +++ b/attract/application/templates/nodes/edit.html @@ -21,6 +21,10 @@ {% endif %} {% endfor %} +
    + Cancel + Delete +
    diff --git a/attract/application/templates/nodes/index.html b/attract/application/templates/nodes/index.html new file mode 100644 index 00000000..d2aa93f3 --- /dev/null +++ b/attract/application/templates/nodes/index.html @@ -0,0 +1,47 @@ +{% extends 'layout.html' %} + +{% block body %} +
    +
    +
    + + + + + + + + + + {% for node in nodes %} + + + + + + {% endfor %} + + + + + + + + + +
    NameDescription
    {{node.name}} + {% if node.description %} + {{node.description|truncate(25)}} + {% endif %} + + Edit +
    NameDescription
    +
    +
    +
    +
    + Add +
    +
    +
    +{% endblock %}