Skip to content
Snippets Groups Projects
Commit cdd3ba67 authored by Gallenkamp, Fabian's avatar Gallenkamp, Fabian
Browse files

Improved sql layout

parent afe0abd1
No related branches found
No related tags found
No related merge requests found
......@@ -42,10 +42,13 @@ software_features_table = db.Table('software_features', db.Model.metadata,
db.Column('software_id', db.Integer, db.ForeignKey('software.id')),
db.Column('feature_id', db.Integer, db.ForeignKey('feature.id')))
# Create N2one table
software_licence_table = db.Table('software_license', db.Model.metadata,
software_languages_table = db.Table('software_languages', db.Model.metadata,
db.Column('software_id', db.Integer, db.ForeignKey('software.id')),
db.Column('license_id', db.Integer, db.ForeignKey('license.id')))
db.Column('language_id', db.Integer, db.ForeignKey('language.id')))
# Create N2one table
software_programminglanguages_table = db.Table('software_programminglanguages', db.Model.metadata,
db.Column('software_id', db.Integer, db.ForeignKey('software.id')),
db.Column('programming_id', db.Integer, db.ForeignKey('programminglanguage.id')))
class License(db.Model):
id = db.Column(db.Integer, primary_key=True)
......@@ -66,6 +69,23 @@ class Feature(db.Model):
def __str__(self):
return "{}".format(self.name)
class Language(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.Unicode(64))
def __str__(self):
return "{}".format(self.name)
class Programminglanguage(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.Unicode(64))
def __str__(self):
return "{}".format(self.name)
class Matterofexpense(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.Unicode(64))
......@@ -77,8 +97,10 @@ class Matterofexpense(db.Model):
class Software(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(120))
text = db.Column(db.Text, nullable=False)
date = db.Column(db.Date)
short_description = db.Column(db.Text, nullable=False)
developer = db.Column(db.String(120))
lastchanged = db.Column(db.Date)
license_id = db.Column(db.Integer(), db.ForeignKey(License.id))
license = db.relationship(License, backref='softwares')
......@@ -87,11 +109,26 @@ class Software(db.Model):
matterofexpense = db.relationship(Matterofexpense, backref='softwares')
features = db.relationship('Feature', secondary=software_features_table)
languages = db.relationship('Language', secondary=software_languages_table)
programminglanguages = db.relationship('Programminglanguage', secondary=software_programminglanguages_table)
def __str__(self):
return "{}".format(self.name)
class Link(db.Model):
id = db.Column(db.Integer, primary_key=True)
type = db.Column(db.Enum('repository', 'website', 'developer', 'tutorial', 'faq', 'other', name='link_types'))
url = db.Column(db.String(120))
software_id = db.Column(db.Integer(), db.ForeignKey(Software.id))
software = db.relationship(Software, backref='Links')
def __str__(self):
return "{}:{}".format(self.type,self.url)
# Flask views
@app.route('/')
def index():
......@@ -118,7 +155,9 @@ inline_form_options = {
'form_extra_fields': None,
}'''
class AdvancedExportView(sqla.ModelView):
class AdvancedSoftwareView(sqla.ModelView):
inline_models = (Link,)
@action('advancedexport', 'AdvancedExport')
def action_advancedexport(self, ids):
try:
......@@ -140,7 +179,6 @@ class AdvancedExportView(sqla.ModelView):
as_attachment=True,
attachment_filename='data.zip'
)
flash("Done")
except Exception as ex:
if not self.handle_view_exception(ex):
......@@ -265,16 +303,15 @@ class ScreenView(sqla.ModelView):
# Create admin
admin = admin.Admin(app, name='Example: SQLAlchemy', template_mode='bootstrap3')
admin = admin.Admin(app, name='Softwaresammlung: Digitale Methoden', template_mode='bootstrap3')
# Add views
admin.add_view(AdvancedExportView(Software, db.session))
admin.add_view(AdvancedSoftwareView(Software, db.session))
admin.add_view(sqla.ModelView(Feature, db.session))
admin.add_view(sqla.ModelView(License, db.session, category="Other"))
admin.add_view(sqla.ModelView(Link, db.session, category="Other"))
admin.add_sub_category(name="Links", parent_name="Other")
admin.add_link(MenuLink(name='Back Home', url='/', category='Links'))
admin.add_link(MenuLink(name='Google', url='http://www.google.com/', category='Links'))
admin.add_link(MenuLink(name='Mozilla', url='http://mozilla.org/', category='Links'))
def build_sample_db():
......
No preview for this file type
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment