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

Added first tools

parent cdd3ba67
No related branches found
No related tags found
No related merge requests found
...@@ -6,7 +6,9 @@ import pathlib ...@@ -6,7 +6,9 @@ import pathlib
from flask import Flask, flash, send_file from flask import Flask, flash, send_file
from flask_sqlalchemy import SQLAlchemy from flask_sqlalchemy import SQLAlchemy
from jinja2 import Template from jinja2 import Template
from markupsafe import Markup
from sqlalchemy.ext.hybrid import hybrid_property from sqlalchemy.ext.hybrid import hybrid_property
from sqlalchemy.sql import expression, functions
from wtforms import validators from wtforms import validators
...@@ -94,22 +96,35 @@ class Matterofexpense(db.Model): ...@@ -94,22 +96,35 @@ class Matterofexpense(db.Model):
return "{}".format(self.name) return "{}".format(self.name)
class SoftwareCategory(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(120))
short_description = db.Column(db.Text)
def __str__(self):
return "{}".format(self.name)
class Software(db.Model): class Software(db.Model):
id = db.Column(db.Integer, primary_key=True) id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(120)) name = db.Column(db.String(120))
short_description = db.Column(db.Text, nullable=False) short_description = db.Column(db.String(120))
developer = db.Column(db.String(120)) developer = db.Column(db.String(120))
lastchanged = db.Column(db.Date) lastchanged = db.Column(db.Date)
license_id = db.Column(db.Integer(), db.ForeignKey(License.id)) license_id = db.Column(db.Integer(), db.ForeignKey(License.id))
license = db.relationship(License, backref='softwares') license = db.relationship(License, backref='softwares')
softwarecategory_id = db.Column(db.Integer(), db.ForeignKey(SoftwareCategory.id))
softwarecategory = db.relationship(SoftwareCategory, backref='software')
matterofexpense_id = db.Column(db.Integer(), db.ForeignKey(Matterofexpense.id)) matterofexpense_id = db.Column(db.Integer(), db.ForeignKey(Matterofexpense.id))
matterofexpense = db.relationship(Matterofexpense, backref='softwares') matterofexpense = db.relationship(Matterofexpense, backref='softwares')
features = db.relationship('Feature', secondary=software_features_table) features = db.relationship('Feature', secondary=software_features_table)
languages = db.relationship('Language', secondary=software_languages_table) languages = db.relationship('Language', secondary=software_languages_table)
programminglanguages = db.relationship('Programminglanguage', secondary=software_programminglanguages_table) programminglanguages = db.relationship('Programminglanguage', secondary=software_programminglanguages_table)
def __str__(self): def __str__(self):
...@@ -123,10 +138,12 @@ class Link(db.Model): ...@@ -123,10 +138,12 @@ class Link(db.Model):
url = db.Column(db.String(120)) url = db.Column(db.String(120))
software_id = db.Column(db.Integer(), db.ForeignKey(Software.id)) software_id = db.Column(db.Integer(), db.ForeignKey(Software.id))
software = db.relationship(Software, backref='Links') software = db.relationship(Software, backref='links')
comment = db.Column(db.String(120))
def __str__(self): def __str__(self):
return "{}:{}".format(self.type,self.url) return "<a href='#'>{}</a>:{}".format(self.type,self.url)
# Flask views # Flask views
...@@ -156,7 +173,17 @@ inline_form_options = { ...@@ -156,7 +173,17 @@ inline_form_options = {
}''' }'''
class AdvancedSoftwareView(sqla.ModelView): class AdvancedSoftwareView(sqla.ModelView):
column_sortable_list = ('name', ('license', ("license.name", "license.version")), 'lastchanged' , ('softwarecategory', 'softwarecategory.name'),)
column_list = ('name', 'license', 'softwarecategory', 'links', )
inline_models = (Link,) inline_models = (Link,)
column_hide_backrefs = False
#def _user_formatter(view, context, model, name):
# return Markup(for link in model.links)
#column_formatters = {
# 'links': _user_formatter
#}
@action('advancedexport', 'AdvancedExport') @action('advancedexport', 'AdvancedExport')
def action_advancedexport(self, ids): def action_advancedexport(self, ids):
...@@ -310,6 +337,7 @@ admin.add_view(AdvancedSoftwareView(Software, db.session)) ...@@ -310,6 +337,7 @@ admin.add_view(AdvancedSoftwareView(Software, db.session))
admin.add_view(sqla.ModelView(Feature, 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(License, db.session, category="Other"))
admin.add_view(sqla.ModelView(Link, db.session, category="Other")) admin.add_view(sqla.ModelView(Link, db.session, category="Other"))
admin.add_view(sqla.ModelView(SoftwareCategory, db.session, category="Other"))
admin.add_sub_category(name="Links", parent_name="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='Back Home', url='/', category='Links'))
...@@ -324,8 +352,24 @@ def build_sample_db(): ...@@ -324,8 +352,24 @@ def build_sample_db():
db.drop_all() db.drop_all()
db.create_all() db.create_all()
db.session.add(License(name="GPL", version="3.0")) lic_gpl = License(name="GPL", version="3.0")
db.session.add(License(name="MIT")) lic_apache = License(name="Apache", version="2.0")
lic_mit = License(name="MIT")
db.session.add(lic_gpl)
db.session.add(lic_apache)
db.session.add(lic_mit)
cat_tracking = SoftwareCategory(name="Tracking", short_description="")
db.session.add(cat_tracking)
aware = Software(name="AWARE", softwarecategory=cat_tracking, license=lic_apache)
db.session.add(aware)
db.session.add(Link(software=aware, type="website", url="http://www.awareframework.com/", comment=""))
db.session.add(Link(software=aware, type="repository", url="https://github.com/denzilferreira/aware-client", comment="android"))
db.session.add(Link(software=aware, type="repository", url="https://github.com/tetujin/aware-client-ios", comment="iOS"))
db.session.add(Link(software=aware, type="repository", url="https://github.com/tetujin/aware-client-osx", comment="OSX"))
db.session.add(Link(software=aware, type="repository", url="https://github.com/denzilferreira/aware-server", comment="server"))
db.session.commit() db.session.commit()
return return
......
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