Files
fachschaften/load_articles.py
2017-02-15 10:32:45 +01:00

82 lines
1.8 KiB
Python

import sys
import json
from src.articles.model import Article, FullArticleSchema
from src.sections.model import Section, FullSectionSchema
from src.organizations.model import Organization, FullOrganizationSchema
from src.database import db_session
from sqlalchemy.exc import IntegrityError
if len(sys.argv) <= 1:
raise Error("Kein Zieldateiname angegeben")
def load_article(a):
return Article.deserialize(a[0])
def load_section(s):
return Section.deserialize(s[0])
def load_organization(s):
return Organization.deserialize(s[0])
file = open(sys.argv[1], "r")
data=json.load(file)
articles=None
sections=None
organizations=None
if isinstance(data,dict):
if data.has_key("articles"):
articles=data["articles"]
if data.has_key("sections"):
sections=data["sections"]
if data.has_key("organizations"):
organizations=data["organizations"]
else:
articles=data
articles= map (load_article, articles)
if sections is not None:
sections=map(load_section, sections)
if organizations is not None:
organizations=map(load_organization,organizations)
if organizations is not None:
for s in organizations:
if not isinstance(s,Organization):
print type(s)
try:
db_session.add(s)
db_session.commit()
except IntegrityError:
db_session.rollback()
if sections is not None:
for s in sections:
if not isinstance(s,Section):
print type(s)
try:
db_session.add(s)
db_session.commit()
except IntegrityError:
db_session.rollback()
for a in articles:
try:
db_session.add(a)
db_session.commit()
except IntegrityError:
db_session.rollback()
finally:
db_session.rollback()
file.close()