refactor: import all models instead of one by one
This commit is contained in:
parent
d33757e754
commit
1f19252dcc
|
@ -11,18 +11,7 @@ from slugify import slugify
|
||||||
from sqlalchemy import or_
|
from sqlalchemy import or_
|
||||||
|
|
||||||
from app.form.admin import ImportForm
|
from app.form.admin import ImportForm
|
||||||
from app.model.address import AddressModel
|
from app import model
|
||||||
from app.model.contact import ContactModel
|
|
||||||
from app.model.country import CountryModel
|
|
||||||
from app.model.decision import DecisionModel
|
|
||||||
from app.model.entity import EntityModel
|
|
||||||
from app.model.matter import MatterModel
|
|
||||||
from app.model.membership import MembershipModel
|
|
||||||
from app.model.recommendation import RecommendationModel
|
|
||||||
from app.model.representative import RepresentativeModel
|
|
||||||
from app.model.role import RoleModel
|
|
||||||
from app.model.stance import StanceModel
|
|
||||||
from app.model.type import TypeModel
|
|
||||||
|
|
||||||
|
|
||||||
def default_import(headers):
|
def default_import(headers):
|
||||||
|
@ -91,14 +80,14 @@ class ImportAddressView(BaseView):
|
||||||
}
|
}
|
||||||
if len(g.errors) == 0 and reader is not None:
|
if len(g.errors) == 0 and reader is not None:
|
||||||
for row in reader:
|
for row in reader:
|
||||||
address_country = CountryModel.query.filter_by(
|
address_country = model.CountryModel.query.filter_by(
|
||||||
code=row[headers["country_code"]].upper()
|
code=row[headers["country_code"]].upper()
|
||||||
).first()
|
).first()
|
||||||
address = AddressModel.query.filter_by(
|
address = model.AddressModel.query.filter_by(
|
||||||
slug==slugify(row[headers["name"]]),
|
slug==slugify(row[headers["name"]]),
|
||||||
).first()
|
).first()
|
||||||
if address is None:
|
if address is None:
|
||||||
address = AddressModel(
|
address = model.AddressModel(
|
||||||
name = row[headers["name"]],
|
name = row[headers["name"]],
|
||||||
slug = slugify(row[headers["name"]]),
|
slug = slugify(row[headers["name"]]),
|
||||||
country = address_country,
|
country = address_country,
|
||||||
|
@ -195,21 +184,21 @@ class ImportContactView(BaseView):
|
||||||
}
|
}
|
||||||
if len(g.errors) == 0 and reader is not None:
|
if len(g.errors) == 0 and reader is not None:
|
||||||
for row in reader:
|
for row in reader:
|
||||||
contact_representative = RepresentativeModel.query.filter_by(
|
contact_representative = model.RepresentativeModel.query.filter_by(
|
||||||
slug=row[headers["representative_slug"]],
|
slug=row[headers["representative_slug"]],
|
||||||
).first()
|
).first()
|
||||||
if headers["addres_slug"] is not None:
|
if headers["addres_slug"] is not None:
|
||||||
contact_address = AddressModel.query.filter_by(
|
contact_address = model.AddressModel.query.filter_by(
|
||||||
slug==row[headers["address_slug"]],
|
slug==row[headers["address_slug"]],
|
||||||
).first()
|
).first()
|
||||||
else:
|
else:
|
||||||
contact_address = None
|
contact_address = None
|
||||||
contact = ContactModel.query.filter_by(
|
contact = model.ContactModel.query.filter_by(
|
||||||
slug==slugify(row[headers["name"]]),
|
slug==slugify(row[headers["name"]]),
|
||||||
representative_id=contact_representative.id,
|
representative_id=contact_representative.id,
|
||||||
).first()
|
).first()
|
||||||
if contact is None:
|
if contact is None:
|
||||||
contact = ContactModel(
|
contact = model.ContactModel(
|
||||||
representative = contact_representative,
|
representative = contact_representative,
|
||||||
address = contact_address,
|
address = contact_address,
|
||||||
name = row[headers["name"]],
|
name = row[headers["name"]],
|
||||||
|
@ -260,9 +249,9 @@ class ImportCountryView(BaseView):
|
||||||
}
|
}
|
||||||
if len(g.errors) == 0 and reader is not None:
|
if len(g.errors) == 0 and reader is not None:
|
||||||
for row in reader:
|
for row in reader:
|
||||||
country = CountryModel.query.filter_by(code=row[headers["code"]]).first()
|
country = model.CountryModel.query.filter_by(code=row[headers["code"]]).first()
|
||||||
if country is None:
|
if country is None:
|
||||||
country = CountryModel(
|
country = model.CountryModel(
|
||||||
name = row[headers["name"]],
|
name = row[headers["name"]],
|
||||||
slug = slugify(row[headers["name"]]),
|
slug = slugify(row[headers["name"]]),
|
||||||
code = row[headers["code"]].upper(),
|
code = row[headers["code"]].upper(),
|
||||||
|
@ -311,18 +300,18 @@ class ImportDecisionView(BaseView):
|
||||||
}
|
}
|
||||||
if len(g.errors) == 0 and reader is not None:
|
if len(g.errors) == 0 and reader is not None:
|
||||||
for row in reader:
|
for row in reader:
|
||||||
decision_representative = RepresentativeModel.query.filter_by(
|
decision_representative = model.RepresentativeModel.query.filter_by(
|
||||||
slug=row[headers["representative_slug"]],
|
slug=row[headers["representative_slug"]],
|
||||||
).first()
|
).first()
|
||||||
decision_recommendation = RecommendationModel.query.filter_by(
|
decision_recommendation = model.RecommendationModel.query.filter_by(
|
||||||
slug=row[headers["recommendation_slug"]],
|
slug=row[headers["recommendation_slug"]],
|
||||||
).first()
|
).first()
|
||||||
decision = DecisionModel.query.filter_by(
|
decision = model.DecisionModel.query.filter_by(
|
||||||
representative=decision_representative,
|
representative=decision_representative,
|
||||||
recommendation=decision_recommendation,
|
recommendation=decision_recommendation,
|
||||||
).first()
|
).first()
|
||||||
if decision is None:
|
if decision is None:
|
||||||
decision = DecisionModel(
|
decision = model.DecisionModel(
|
||||||
representative = decision_representative,
|
representative = decision_representative,
|
||||||
recommendation = decision_recommendation,
|
recommendation = decision_recommendation,
|
||||||
value = value,
|
value = value,
|
||||||
|
@ -378,13 +367,13 @@ class ImportEntityView(BaseView):
|
||||||
}
|
}
|
||||||
if len(g.errors) == 0 and reader is not None:
|
if len(g.errors) == 0 and reader is not None:
|
||||||
for row in reader:
|
for row in reader:
|
||||||
entity_type = TypeModel.query.filter_by(
|
entity_type = model.TypeModel.query.filter_by(
|
||||||
code=row[headers["type_code"]]
|
code=row[headers["type_code"]]
|
||||||
).first()
|
).first()
|
||||||
entity_country = CountryModel.query.filter_by(
|
entity_country = model.CountryModel.query.filter_by(
|
||||||
code=row[headers["country_code"]].upper()
|
code=row[headers["country_code"]].upper()
|
||||||
).first()
|
).first()
|
||||||
entity = EntityModel.query.filter_by(
|
entity = model.EntityModel.query.filter_by(
|
||||||
code=row[headers["code"]]
|
code=row[headers["code"]]
|
||||||
).first()
|
).first()
|
||||||
if row[headers["start"]] != "":
|
if row[headers["start"]] != "":
|
||||||
|
@ -400,7 +389,7 @@ class ImportEntityView(BaseView):
|
||||||
else:
|
else:
|
||||||
picture = None
|
picture = None
|
||||||
if entity is None:
|
if entity is None:
|
||||||
entity = EntityModel(
|
entity = model.EntityModel(
|
||||||
type = entity_type,
|
type = entity_type,
|
||||||
country = entity_country,
|
country = entity_country,
|
||||||
name = row[headers["name"]],
|
name = row[headers["name"]],
|
||||||
|
@ -470,7 +459,7 @@ class ImportMatterView(BaseView):
|
||||||
}
|
}
|
||||||
if len(g.errors) == 0 and reader is not None:
|
if len(g.errors) == 0 and reader is not None:
|
||||||
for row in reader:
|
for row in reader:
|
||||||
matter = MatterModel.query.filter_by(
|
matter = model.MatterModel.query.filter_by(
|
||||||
slug=slugify(row[headers["name"]]),
|
slug=slugify(row[headers["name"]]),
|
||||||
).first()
|
).first()
|
||||||
if headers["description"] is not None:
|
if headers["description"] is not None:
|
||||||
|
@ -478,7 +467,7 @@ class ImportMatterView(BaseView):
|
||||||
else:
|
else:
|
||||||
description = None
|
description = None
|
||||||
if matter is None:
|
if matter is None:
|
||||||
matter = DecisionModel(
|
matter = model.DecisionModel(
|
||||||
name = row[headers["name"]],
|
name = row[headers["name"]],
|
||||||
slug = slugify(row[headers["name"]]),
|
slug = slugify(row[headers["name"]]),
|
||||||
description = description,
|
description = description,
|
||||||
|
@ -530,13 +519,13 @@ class ImportMembershipView(BaseView):
|
||||||
}
|
}
|
||||||
if len(g.errors) == 0 and reader is not None:
|
if len(g.errors) == 0 and reader is not None:
|
||||||
for row in reader:
|
for row in reader:
|
||||||
representative = RepresentativeModel.query.filter_by(
|
representative = model.RepresentativeModel.query.filter_by(
|
||||||
slug=slugify(row[headers["representative_slug"]]),
|
slug=slugify(row[headers["representative_slug"]]),
|
||||||
).first()
|
).first()
|
||||||
entity = EntityModel.query.filter_by(
|
entity = model.EntityModel.query.filter_by(
|
||||||
code=row[headers["entity_code"]],
|
code=row[headers["entity_code"]],
|
||||||
).first()
|
).first()
|
||||||
role = RoleModel.query.filter_by(
|
role = model.RoleModel.query.filter_by(
|
||||||
code=row[headers["role_code"]],
|
code=row[headers["role_code"]],
|
||||||
).first()
|
).first()
|
||||||
if row[headers["start"]] != "":
|
if row[headers["start"]] != "":
|
||||||
|
@ -547,14 +536,14 @@ class ImportMembershipView(BaseView):
|
||||||
end_date = datetime.strptime(row[headers["end"]], "%Y-%m-%d")
|
end_date = datetime.strptime(row[headers["end"]], "%Y-%m-%d")
|
||||||
else:
|
else:
|
||||||
end_date = None
|
end_date = None
|
||||||
membership = MembershipModel.query.filter_by(
|
membership = model.MembershipModel.query.filter_by(
|
||||||
representative=representative,
|
representative=representative,
|
||||||
entity=entity,
|
entity=entity,
|
||||||
role=role,
|
role=role,
|
||||||
start=start_date,
|
start=start_date,
|
||||||
).first()
|
).first()
|
||||||
if membership is None:
|
if membership is None:
|
||||||
membership = MembershipModel(
|
membership = model.MembershipModel(
|
||||||
representative = representative,
|
representative = representative,
|
||||||
entity = entity,
|
entity = entity,
|
||||||
role = role,
|
role = role,
|
||||||
|
@ -614,10 +603,10 @@ class ImportRecommendationView(BaseView):
|
||||||
}
|
}
|
||||||
if len(g.errors) == 0 and reader is not None:
|
if len(g.errors) == 0 and reader is not None:
|
||||||
for row in reader:
|
for row in reader:
|
||||||
matter = MatterModel.query.filter_by(
|
matter = model.MatterModel.query.filter_by(
|
||||||
slug=row[headers["matter_slug"]],
|
slug=row[headers["matter_slug"]],
|
||||||
).first()
|
).first()
|
||||||
entity = EntityModel.query.filter_by(
|
entity = model.EntityModel.query.filter_by(
|
||||||
code=row[headers["entity_code"]],
|
code=row[headers["entity_code"]],
|
||||||
).first()
|
).first()
|
||||||
if row[headers["date"]] != "":
|
if row[headers["date"]] != "":
|
||||||
|
@ -632,13 +621,13 @@ class ImportRecommendationView(BaseView):
|
||||||
weight = int(row[headers["weight"]])
|
weight = int(row[headers["weight"]])
|
||||||
else:
|
else:
|
||||||
weight = 1
|
weight = 1
|
||||||
recommendation = RecommendationModel.query.filter_by(
|
recommendation = model.RecommendationModel.query.filter_by(
|
||||||
matter=matter,
|
matter=matter,
|
||||||
entity=entity,
|
entity=entity,
|
||||||
code=row[headers["code"]],
|
code=row[headers["code"]],
|
||||||
).first()
|
).first()
|
||||||
if recommendation is None:
|
if recommendation is None:
|
||||||
recommendation = RecommendationModel(
|
recommendation = model.RecommendationModel(
|
||||||
matter = matter,
|
matter = matter,
|
||||||
entity = entity,
|
entity = entity,
|
||||||
name = row[headers["name"]],
|
name = row[headers["name"]],
|
||||||
|
@ -719,10 +708,10 @@ class ImportRepresentativeView(BaseView):
|
||||||
if len(g.errors) == 0 and reader is not None:
|
if len(g.errors) == 0 and reader is not None:
|
||||||
# Values
|
# Values
|
||||||
for row in reader:
|
for row in reader:
|
||||||
representative = RepresentativeModel.query.filter_by(
|
representative = model.RepresentativeModel.query.filter_by(
|
||||||
code=row[headers["code"]],
|
code=row[headers["code"]],
|
||||||
).first()
|
).first()
|
||||||
country = CountryModel.query.filter_by(
|
country = model.CountryModel.query.filter_by(
|
||||||
code=row[headers["nationality"]].upper(),
|
code=row[headers["nationality"]].upper(),
|
||||||
).first()
|
).first()
|
||||||
if row[headers["birth_date"]] != "":
|
if row[headers["birth_date"]] != "":
|
||||||
|
@ -730,7 +719,7 @@ class ImportRepresentativeView(BaseView):
|
||||||
else:
|
else:
|
||||||
birth_date = None
|
birth_date = None
|
||||||
if representative is None:
|
if representative is None:
|
||||||
representative = RepresentativeModel(
|
representative = model.RepresentativeModel(
|
||||||
code = row[headers["code"]],
|
code = row[headers["code"]],
|
||||||
name = row[headers["name"]],
|
name = row[headers["name"]],
|
||||||
slug = slugify(row[headers["name"]]),
|
slug = slugify(row[headers["name"]]),
|
||||||
|
@ -800,9 +789,9 @@ class ImportRoleView(BaseView):
|
||||||
if len(g.errors) == 0 and reader is not None:
|
if len(g.errors) == 0 and reader is not None:
|
||||||
# Values
|
# Values
|
||||||
for row in reader:
|
for row in reader:
|
||||||
role = RoleModel.query.filter_by(code=row[headers["code"]]).first()
|
role = model.RoleModel.query.filter_by(code=row[headers["code"]]).first()
|
||||||
if role is None:
|
if role is None:
|
||||||
role = RoleModel(
|
role = model.RoleModel(
|
||||||
name = row[headers["name"]],
|
name = row[headers["name"]],
|
||||||
slug = slugify(row[headers["name"]]),
|
slug = slugify(row[headers["name"]]),
|
||||||
code = row[headers["code"]],
|
code = row[headers["code"]],
|
||||||
|
@ -856,21 +845,21 @@ class ImportStanceView(BaseView):
|
||||||
# Values
|
# Values
|
||||||
for row in reader:
|
for row in reader:
|
||||||
# Representative
|
# Representative
|
||||||
representative = RepresentativeModel.query.filter_by(
|
representative = model.RepresentativeModel.query.filter_by(
|
||||||
slug=row[headers["slug"]],
|
slug=row[headers["slug"]],
|
||||||
).first()
|
).first()
|
||||||
if representative is None:
|
if representative is None:
|
||||||
representative = RepresentativeModel(
|
representative = model.RepresentativeModel(
|
||||||
name = row[headers["name"]],
|
name = row[headers["name"]],
|
||||||
slug = row[headers["slug"]],
|
slug = row[headers["slug"]],
|
||||||
)
|
)
|
||||||
representative.save()
|
representative.save()
|
||||||
# Matter
|
# Matter
|
||||||
matter = MatterModel.query.filter_by(
|
matter = model.MatterModel.query.filter_by(
|
||||||
slug=slugify(row[headers["matter"]]),
|
slug=slugify(row[headers["matter"]]),
|
||||||
).first()
|
).first()
|
||||||
if matter is None:
|
if matter is None:
|
||||||
matter = MatterModel(
|
matter = model.MatterModel(
|
||||||
name = row[headers["matter"]],
|
name = row[headers["matter"]],
|
||||||
slug = slugify(row[headers["matter"]]),
|
slug = slugify(row[headers["matter"]]),
|
||||||
)
|
)
|
||||||
|
@ -880,7 +869,7 @@ class ImportStanceView(BaseView):
|
||||||
else:
|
else:
|
||||||
stance_date = None
|
stance_date = None
|
||||||
# Stance
|
# Stance
|
||||||
stance = StanceModel.query.filter_by(
|
stance = model.StanceModel.query.filter_by(
|
||||||
representative=representative,
|
representative=representative,
|
||||||
matter=matter,
|
matter=matter,
|
||||||
subject=row[headers["subject"]],
|
subject=row[headers["subject"]],
|
||||||
|
@ -888,7 +877,7 @@ class ImportStanceView(BaseView):
|
||||||
source_url=row[headers["source_url"]],
|
source_url=row[headers["source_url"]],
|
||||||
).first()
|
).first()
|
||||||
if stance is None:
|
if stance is None:
|
||||||
stance = StanceModel(
|
stance = model.StanceModel(
|
||||||
representative = representative,
|
representative = representative,
|
||||||
matter = matter,
|
matter = matter,
|
||||||
subject = row[headers["subject"]],
|
subject = row[headers["subject"]],
|
||||||
|
@ -947,9 +936,9 @@ class ImportTypeView(BaseView):
|
||||||
if len(g.errors) == 0 and reader is not None:
|
if len(g.errors) == 0 and reader is not None:
|
||||||
# Values
|
# Values
|
||||||
for row in reader:
|
for row in reader:
|
||||||
type_ = TypeModel.query.filter_by(code=row[headers["code"]]).first()
|
type_ = model.TypeModel.query.filter_by(code=row[headers["code"]]).first()
|
||||||
if type_ is None:
|
if type_ is None:
|
||||||
type_ = TypeModel(
|
type_ = model.TypeModel(
|
||||||
name = row[headers["name"]],
|
name = row[headers["name"]],
|
||||||
slug = slugify(row[headers["name"]]),
|
slug = slugify(row[headers["name"]]),
|
||||||
code = row[headers["code"]],
|
code = row[headers["code"]],
|
||||||
|
@ -964,3 +953,4 @@ class ImportTypeView(BaseView):
|
||||||
type_.save()
|
type_.save()
|
||||||
|
|
||||||
return self.render("admin/import.html")
|
return self.render("admin/import.html")
|
||||||
|
|
||||||
|
|
|
@ -5,8 +5,8 @@ import random
|
||||||
|
|
||||||
from flask import g, render_template
|
from flask import g, render_template
|
||||||
|
|
||||||
|
from app import model
|
||||||
from app.controller.controller import Controller
|
from app.controller.controller import Controller
|
||||||
import app.model as models
|
|
||||||
from sqlalchemy import desc
|
from sqlalchemy import desc
|
||||||
from sqlalchemy.sql.expression import func
|
from sqlalchemy.sql.expression import func
|
||||||
|
|
||||||
|
@ -15,22 +15,22 @@ class Core(Controller):
|
||||||
def home(self):
|
def home(self):
|
||||||
random.seed(int(datetime.today().timestamp()/100))
|
random.seed(int(datetime.today().timestamp()/100))
|
||||||
try:
|
try:
|
||||||
g.motd = random.choice(models.MatterModel.query.filter_by(
|
g.motd = random.choice(model.MatterModel.query.filter_by(
|
||||||
active=True
|
active=True
|
||||||
).all())
|
).all())
|
||||||
except:
|
except:
|
||||||
g.motd = None
|
g.motd = None
|
||||||
try:
|
try:
|
||||||
g.rotd = random.choice(models.RepresentativeModel.query.filter_by(
|
g.rotd = random.choice(model.RepresentativeModel.query.filter_by(
|
||||||
active=True
|
active=True
|
||||||
).all())
|
).all())
|
||||||
except:
|
except:
|
||||||
g.rotd = None
|
g.rotd = None
|
||||||
g.last_decisions = models.DecisionModel.query.join(
|
g.last_decisions = model.DecisionModel.query.join(
|
||||||
models.DecisionModel.recommendation
|
model.DecisionModel.recommendation
|
||||||
).order_by(models.RecommendationModel.date.desc()).limit(10).all()
|
).order_by(model.RecommendationModel.date.desc()).limit(10).all()
|
||||||
g.last_stances = models.StanceModel.query.order_by(
|
g.last_stances = model.StanceModel.query.order_by(
|
||||||
models.StanceModel.date.desc()
|
model.StanceModel.date.desc()
|
||||||
).limit(10).all()
|
).limit(10).all()
|
||||||
return render_template("core/home.html")
|
return render_template("core/home.html")
|
||||||
|
|
||||||
|
|
|
@ -5,8 +5,8 @@ import random
|
||||||
|
|
||||||
from flask import g, redirect, render_template, url_for
|
from flask import g, redirect, render_template, url_for
|
||||||
|
|
||||||
|
from app import model
|
||||||
from app.controller.controller import Controller
|
from app.controller.controller import Controller
|
||||||
import app.model as models
|
|
||||||
from sqlalchemy import desc
|
from sqlalchemy import desc
|
||||||
from sqlalchemy.sql.expression import func
|
from sqlalchemy.sql.expression import func
|
||||||
|
|
||||||
|
@ -15,9 +15,9 @@ class Representative(Controller):
|
||||||
def view(self, representative_id=None):
|
def view(self, representative_id=None):
|
||||||
if representative_id is None:
|
if representative_id is None:
|
||||||
representative_id = random.choice(
|
representative_id = random.choice(
|
||||||
models.RepresentativeModel.query.filter_by(active=True).all()
|
model.RepresentativeModel.query.filter_by(active=True).all()
|
||||||
).id
|
).id
|
||||||
g.representative = models.RepresentativeModel.query.get(representative_id)
|
g.representative = model.RepresentativeModel.query.get(representative_id)
|
||||||
if g.representative is None:
|
if g.representative is None:
|
||||||
return redirect(url_for("core.home"))
|
return redirect(url_for("core.home"))
|
||||||
g.title = g.representative.name
|
g.title = g.representative.name
|
||||||
|
|
Loading…
Reference in New Issue