You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

77 lines
2.7 KiB

# -*- coding: utf-8 -*-
import MySQLdb
from MySQLdb.cursors import DictCursor
from django.core.management.base import BaseCommand, CommandError
from functions.translate import fill_with_signal
from article.models import Article
from accounts.models import User
from theme.models import Theme,Tag
class Command(BaseCommand):
def handle(self, *args, **options):
db = MySQLdb.connect(host="localhost",
user="debian-sys-maint",
passwd="LPoEhMvzURQoH1aJ",
db="expomap_old_blog",
charset='utf8',
cursorclass=DictCursor)
cursor = db.cursor()
sql = """SELECT post.post_date as publish_date,
post.post_content as description,
post.post_modified as modified,
post.post_title as main_title,
post.post_name as slug,
tag.name as tag_name
FROM wp_posts post
INNER JOIN wp_term_relationships rel ON rel.object_id = post.ID
INNER JOIN wp_terms tag ON tag.term_id=rel.term_taxonomy_id
WHERE post_status = "publish";"""
cursor.execute(sql)
result = cursor.fetchall()
user = User.objects.get(id=1)
tags = {x.name: x.id for x in Tag.objects.language('ru')}
clear_result = {}
errors = []
for a in result:
if a.get('tag_name') in tags.keys():
tag_id = tags[a['tag_name']]
a['tag_id'] = [tag_id]
print a
else:
tag_id = None
if not clear_result.get(a['main_title']):
clear_result[a['main_title']] = a
else:
if clear_result[a['main_title']].get('paid_id') and tag_id:
clear_result[a['main_title']]['tag_id'].append(tag_id)
for a in clear_result.values():
article = Article(type=1,
created = a['publish_date'],
publish_date= a['publish_date'],
modified = a['modified'],
)
article.author = user
article.translate('ru')
article.main_title = a['main_title']
article.description = a['description']
article.slug = a['slug']
if a.get('tag_id'):
article.tag = [Tag.objects.language('ru').get(id=id) for id in a['tag_id']]
try:
article.save()
except Exception as e:
errors.append(e)
print errors