58 lines
1.1 KiB
Python
58 lines
1.1 KiB
Python
import sys
|
|
import json
|
|
from src.articles.model import Article, FullArticleSchema
|
|
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 FullArticleSchema().load(a[0]).data
|
|
|
|
def load_section(s):
|
|
return FullSectionSchema().load(s[0]).data
|
|
|
|
|
|
|
|
file = open(sys.argv[1], "r")
|
|
|
|
data=json.load(file)
|
|
articles=None
|
|
sections=None
|
|
organizations=None
|
|
|
|
if isinstace(data,dict):
|
|
if data.has_key("articles"):
|
|
articles=data["articles"]
|
|
if data.has_key("sections"):
|
|
sections=data["sections"]
|
|
|
|
else:
|
|
articles=data
|
|
|
|
|
|
articles= map (load_article, articles)
|
|
sections=map(load_section,sections)
|
|
|
|
for a in articles:
|
|
try:
|
|
db_session.add(a)
|
|
db_session.commit()
|
|
except IntegrityError:
|
|
db_session.rollback()
|
|
finally:
|
|
db_session.rollback()
|
|
|
|
for s in sections:
|
|
try:
|
|
db_session.add(s)
|
|
db_session.commit()
|
|
except IntegrityError:
|
|
db_session.rollback()
|
|
finally:
|
|
db_session.rollback()
|
|
|
|
file.close()
|