93 lines
2.6 KiB
Python

from application import app
from application import db
import os
import os.path as op
import datetime
import hashlib
import time
from werkzeug import secure_filename
def prefix_name(obj, file_data):
# Collect name and extension
parts = op.splitext(file_data.filename)
# Get current time (for unique hash)
timestamp = str(round(time.time()))
# Has filename only (not extension)
file_name = secure_filename(timestamp + '%s' % parts[0])
# Put them together
full_name = hashlib.md5(file_name).hexdigest() + parts[1]
return full_name
# Create directory for file fields to use
file_path = op.join(op.dirname(__file__), 'static/files',)
try:
os.mkdir(file_path)
except OSError:
pass
class NodeType(db.Model):
id = db.Column(db.Integer, primary_key = True)
name = db.Column(db.String(120), nullable=False)
description = db.Column(db.Text)
url = db.Column(db.String(120), nullable=False)
def __str__(self):
return self.name
class Node(db.Model):
id = db.Column(db.Integer, primary_key = True)
name = db.Column(db.String(120), nullable=False)
url = db.Column(db.String(120))
description = db.Column(db.Text)
main_picture = db.Column(db.String(80))
order = db.Column(db.Integer)
creation_date = db.Column(db.DateTime(), default=datetime.datetime.now)
edit_date = db.Column(db.DateTime())
parent_id = db.Column(db.Integer, db.ForeignKey('node.id'))
parent = db.relationship('Node', remote_side=[id])
node_type_id = db.Column(db.Integer(), db.ForeignKey(NodeType.id))
node_type = db.relationship(NodeType, backref='Node')
properties = db.relationship('NodeProperties', backref='Node')
def get_property(self, name):
for p in self.properties:
if p.custom_field.name_url == name:
return p
print 'p'
return None
def __str__(self):
return self.name
class CustomFields(db.Model):
id = db.Column(db.Integer, primary_key = True)
node_type_id = db.Column(db.Integer(), db.ForeignKey(NodeType.id))
node_type = db.relationship(NodeType, backref='CustomField')
field_type = db.Column(db.String(128))
order = db.Column(db.Integer())
name = db.Column(db.String(128))
name_url = db.Column(db.String(128))
description = db.Column(db.Text())
class NodeProperties(db.Model):
id = db.Column(db.Integer, primary_key = True)
node_id = db.Column(db.Integer(), db.ForeignKey(Node.id))
custom_field_id = db.Column(db.Integer(), db.ForeignKey(CustomFields.id))
custom_field = db.relationship(CustomFields, backref='NodeProperties')
value = db.Column(db.Text())