added single user import

This commit is contained in:
s457957 2020-12-06 22:44:11 +01:00
parent 5055ef9b5b
commit fc5bc14998
8 changed files with 117 additions and 97 deletions

View File

@ -0,0 +1,86 @@
import pandas as pd
import sqlite3
from django.conf import settings
import datetime
def create_connection(db_file):
""" create a database connection to the SQLite database
specified by the db_file
:param db_file: database file
:return: Connection object or None
"""
conn = None
try:
conn = sqlite3.connect(db_file)
except Error as e:
print(e)
return conn
def read_and_parse_excel(file):
df = pd.read_excel(file)
path_temp = settings.TMP_FILE_STORAGE + file.name.split('.')[0] + '.csv'
df.to_csv(path_temp)
html = df.to_html(index=False, na_rep='')
return {'df_html': html, 'df_path': path_temp}
def load_existing_users():
conn = create_connection(settings.DATABASES['default']['NAME'])
cur = conn.cursor()
cur.execute('select username from auth_user')
usernames = [user[0] for user in cur.fetchall()]
return usernames
def generate_username(first_name, last_name, usernames):
username = first_name + last_name[:1]
i = 1
while username + str(i) in usernames:
i += 1
username = username + str(i)
return username.lower()
def insert_excel(df):
conn = create_connection(settings.DATABASES['default']['NAME'])
usernames = load_existing_users()
print(usernames)
for i in range(len(df)):
row = df.iloc[i]
username = generate_username(row['first_name'], row['last_name'], usernames)
df.at[i, 'username'] = username
usernames.append(username)
df['date_joined'] = datetime.date.today()
df['password'] = 'start'
df_to_user_model = df[['username',
'first_name',
'last_name',
'email',
'is_staff',
'is_active',
'date_joined',
'is_superuser',
'password']]
df_to_user_model.to_sql(name='auth_user',
con=conn,
if_exists='append', index=False)
df_to_employee = df[['username',
'department',
'manager_username',
'time_model_id',
'manager_flag']]
df_to_employee.to_sql(name='hr_module_employee',
con=conn,
if_exists='append', index=False)

View File

@ -1,6 +1,5 @@
# Generated by Django 3.1.3 on 2020-12-05 16:44
# Generated by Django 3.1.3 on 2020-12-06 19:49
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
@ -10,54 +9,55 @@ class Migration(migrations.Migration):
initial = True
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('auth', '0012_alter_user_first_name_max_length'),
]
operations = [
migrations.CreateModel(
name='TimeModel',
name='Employee',
fields=[
('time_model_id', models.IntegerField(primary_key=True, serialize=False)),
('weekly_hours', models.DecimalField(decimal_places=2, max_digits=4)),
('weekly_days', models.IntegerField()),
('mon', models.IntegerField()),
('tue', models.IntegerField()),
('wed', models.IntegerField()),
('thu', models.IntegerField()),
('fri', models.IntegerField()),
('sat', models.IntegerField()),
('sun', models.IntegerField()),
],
),
migrations.CreateModel(
name='TimeLog',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('date', models.DateField()),
('begin_time', models.TimeField()),
('end_time', models.TimeField()),
('username', models.OneToOneField(default='', on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
('username', models.OneToOneField(db_column='username', on_delete=django.db.models.deletion.CASCADE, primary_key=True, serialize=False, to='auth.user', to_field='username')),
('department', models.CharField(max_length=200)),
('manager_username', models.CharField(max_length=200)),
('time_model_id', models.IntegerField()),
('manager_flag', models.BooleanField()),
],
),
migrations.CreateModel(
name='Plan',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('username', models.CharField(default='', max_length=100)),
('date', models.DateField()),
('begin_time', models.TimeField()),
('end_time', models.TimeField()),
('username', models.OneToOneField(default='', on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
('activity_type', models.CharField(max_length=100)),
],
),
migrations.CreateModel(
name='Employee',
name='TimeLog',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('department', models.CharField(max_length=200)),
('manager_username', models.CharField(max_length=200)),
('time_model_id', models.IntegerField()),
('manager_flag', models.IntegerField()),
('username', models.OneToOneField(default='', on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
('username', models.CharField(default='', max_length=100)),
('date', models.DateField()),
('begin_time', models.TimeField()),
('end_time', models.TimeField()),
('activity_type', models.CharField(max_length=100)),
],
),
migrations.CreateModel(
name='TimeModel',
fields=[
('time_model_id', models.IntegerField(primary_key=True, serialize=False)),
('weekly_hours', models.DecimalField(decimal_places=2, max_digits=4)),
('weekly_days', models.IntegerField()),
('mon', models.BooleanField()),
('tue', models.BooleanField()),
('wed', models.BooleanField()),
('thu', models.BooleanField()),
('fri', models.BooleanField()),
('sat', models.BooleanField()),
('sun', models.BooleanField()),
],
),
]

View File

@ -1,23 +0,0 @@
# Generated by Django 3.1.3 on 2020-12-05 21:23
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('hr_module', '0001_initial'),
]
operations = [
migrations.AlterField(
model_name='plan',
name='username',
field=models.CharField(default='', max_length=100),
),
migrations.AlterField(
model_name='timelog',
name='username',
field=models.CharField(default='', max_length=100),
),
]

View File

@ -1,18 +0,0 @@
# Generated by Django 3.1.3 on 2020-12-05 21:24
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('hr_module', '0002_auto_20201205_2123'),
]
operations = [
migrations.AlterField(
model_name='employee',
name='username',
field=models.CharField(max_length=200),
),
]

View File

@ -1,25 +0,0 @@
# Generated by Django 3.1.3 on 2020-12-05 21:36
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('hr_module', '0003_auto_20201205_2124'),
]
operations = [
migrations.RemoveField(
model_name='employee',
name='id',
),
migrations.AlterField(
model_name='employee',
name='username',
field=models.OneToOneField(default='', on_delete=django.db.models.deletion.CASCADE, primary_key=True, serialize=False, to=settings.AUTH_USER_MODEL),
),
]