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.
186 lines
6.1 KiB
186 lines
6.1 KiB
# -*- coding: utf-8 -*-
|
|
import MySQLdb
|
|
import datetime
|
|
from MySQLdb.cursors import DictCursor
|
|
from django.core.management.base import BaseCommand, CommandError
|
|
from functions.translate import fill_with_signal
|
|
from translator.models import Translator
|
|
from accounts.models import User, Profile
|
|
from country.models import Country
|
|
from city.models import City
|
|
from functions.form_check import is_positive_integer
|
|
|
|
|
|
|
|
def to_phone(phone):
|
|
|
|
if not phone:
|
|
return None
|
|
|
|
deduct = ('-','(',')','.',' ', '+')
|
|
for elem in deduct:
|
|
phone = phone.replace(elem, '')
|
|
if phone.isdigit():
|
|
return int(phone)
|
|
else:
|
|
return None
|
|
|
|
|
|
def get_country_name(id):
|
|
db = MySQLdb.connect(host="localhost",
|
|
user="kotzilla",
|
|
passwd="qazedc",
|
|
db="crm",
|
|
charset='utf8',
|
|
cursorclass=DictCursor)
|
|
sql ="""
|
|
SELECT country_name as name
|
|
FROM `country`
|
|
WHERE `country_id` =%d"""%id
|
|
|
|
cursor = db.cursor()
|
|
cursor.execute(sql)
|
|
result = cursor.fetchone()
|
|
return result['name']
|
|
|
|
|
|
def get_city_name(id):
|
|
db = MySQLdb.connect(host="localhost",
|
|
user="kotzilla",
|
|
passwd="qazedc",
|
|
db="crm",
|
|
charset='utf8',
|
|
cursorclass=DictCursor)
|
|
sql ="""
|
|
SELECT city_name as name
|
|
FROM `city`
|
|
WHERE `city_id` =%d"""%id
|
|
cursor = db.cursor()
|
|
cursor.execute(sql)
|
|
result = cursor.fetchone()
|
|
return result['name']
|
|
|
|
class Command(BaseCommand):
|
|
def handle(self, *args, **options):
|
|
db = MySQLdb.connect(host="localhost",
|
|
user="kotzilla",
|
|
passwd="qazedc",
|
|
db="crm",
|
|
charset='utf8',
|
|
cursorclass=DictCursor)
|
|
cursor = db.cursor()
|
|
sql = """SELECT *
|
|
FROM `interpreter_table` """
|
|
|
|
cursor.execute(sql)
|
|
result = cursor.fetchall()
|
|
|
|
|
|
|
|
for data in result:
|
|
email = data['email']
|
|
print(email.encode('utf8'))
|
|
|
|
if email:
|
|
try:
|
|
user = User.objects.select_related('translator').get(username=email)
|
|
|
|
except User.DoesNotExist:
|
|
user = None
|
|
if user:
|
|
# add information to user
|
|
profile = user.profile
|
|
if data['phone1']:
|
|
phone = to_phone(data['phone1'])
|
|
if len(str(phone))<15:
|
|
profile.phone = phone
|
|
if data['skype']:
|
|
|
|
profile.skype = data['skype']
|
|
if data['country_id']:
|
|
name = get_country_name(data['country_id'])
|
|
country_qs = Country.objects.filter(translations__name=name)
|
|
if country_qs.exists():
|
|
country = country_qs[0]
|
|
else:
|
|
country = None
|
|
profile.country = country
|
|
|
|
if profile.country and data['city_id']:
|
|
name = get_city_name(data['city_id'])
|
|
city_qs = City.objects.filter(translations__name=name, country=profile.country)
|
|
if city_qs.exists():
|
|
city = city_qs[0]
|
|
else:
|
|
city = None
|
|
profile.city = city
|
|
|
|
profile.save()
|
|
|
|
|
|
else:
|
|
# create new user
|
|
user = User.objects.create_user(email, data['fam'], data['name'], data['pass'])
|
|
user.is_active = True
|
|
user.save()
|
|
profile = user.profile
|
|
#user.url = 'id%s'%str(self.id)
|
|
if data['phone1']:
|
|
phone = to_phone(data['phone1'])
|
|
if len(str(phone))<15:
|
|
profile.phone = phone
|
|
if data['skype']:
|
|
profile.skype = data['skype']
|
|
if data['country_id']:
|
|
name = get_country_name(data['country_id'])
|
|
country_qs = Country.objects.filter(translations__name=name)
|
|
if country_qs.exists():
|
|
country = country_qs[0]
|
|
else:
|
|
country = None
|
|
profile.country = country
|
|
|
|
if profile.country and data['city_id']:
|
|
name = get_city_name(data['city_id'])
|
|
city_qs = City.objects.filter(translations__name=name, country=profile.country)
|
|
if city_qs.exists():
|
|
city = city_qs[0]
|
|
else:
|
|
city = None
|
|
profile.city = city
|
|
|
|
profile.save()
|
|
|
|
user.save()
|
|
|
|
# fill translator
|
|
if user.translator:
|
|
translator_id = user.translator_id
|
|
translator = Translator.objects.language('ru').get(id=translator_id)
|
|
new = 0
|
|
else:
|
|
translator = Translator()
|
|
new = 1
|
|
|
|
gender = data['gender']
|
|
if gender == u'мужской':
|
|
gender = 'male'
|
|
elif gender == u'женский':
|
|
gender = 'female'
|
|
else:
|
|
gender = 'male'
|
|
translator.gender = gender
|
|
|
|
translator.birth = data['born']
|
|
if data['automobile'] == u'да':
|
|
translator.car = 1
|
|
if new:
|
|
translator.translate('ru')
|
|
|
|
translator.education = data['education']
|
|
translator.specialization = data['spec']
|
|
translator.languages = ', '.join([data['selfLang'], data['selfLang2']])
|
|
translator.save()
|
|
user.translator = translator
|
|
|
|
user.save() |