Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Sign in
Toggle navigation
R
red-ci-cd
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
red-group-test
red-ci-cd
Commits
5d5bd544
Commit
5d5bd544
authored
Nov 12, 2019
by
John Red Medrano
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
bulk create user
parent
b43b1254
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
178 additions
and
82 deletions
+178
-82
app/applicationlayer/management/account/views.py
app/applicationlayer/management/account/views.py
+125
-81
app/helper/email_service/sender.py
app/helper/email_service/sender.py
+53
-1
No files found.
app/applicationlayer/management/account/views.py
View file @
5d5bd544
...
@@ -2,7 +2,7 @@ import copy
...
@@ -2,7 +2,7 @@ import copy
import
threading
import
threading
import
pandas
as
pd
import
pandas
as
pd
import
csv
import
csv
import
io
import
io
,
os
from
app.entities
import
enums
from
app.entities
import
enums
from
django.db
import
transaction
from
django.db
import
transaction
from
app.helper
import
decorators
from
app.helper
import
decorators
...
@@ -243,12 +243,18 @@ class UserViewSet(viewsets.ModelViewSet):
...
@@ -243,12 +243,18 @@ class UserViewSet(viewsets.ModelViewSet):
def
BatchUpload
(
self
,
request
):
def
BatchUpload
(
self
,
request
):
csv_file
=
request
.
FILES
[
'file'
]
csv_file
=
request
.
FILES
[
'file'
]
df
=
pd
.
read_csv
(
csv_file
,
sep
=
','
,
skiprows
=
0
)
df
=
pd
.
read_csv
(
csv_file
,
sep
=
','
,
skiprows
=
0
)
logged_user_type
=
request
.
user
.
user_type
logged_user_type
=
request
.
user
.
user_type
logged_user_company
=
request
.
user
.
department
.
company
.
name
logged_user_company
=
request
.
user
.
department
.
company
.
name
logged_user_department
=
request
.
user
.
department
.
name
logged_user_department
=
request
.
user
.
department
.
name
logged_user_email
=
request
.
user
.
email
email_users
=
[]
for
data
,
keys
in
df
.
iterrows
():
for
data
,
keys
in
df
.
iterrows
():
try
:
user_department
=
Department
.
objects
.
filter
(
Q
(
name__icontains
=
keys
[
'department'
])
&
Q
(
company__name__icontains
=
logged_user_company
)
)
.
first
()
if
logged_user_type
==
'CUA'
:
if
logged_user_type
==
'CUA'
:
user_department
=
Department
.
objects
.
filter
(
user_department
=
Department
.
objects
.
filter
(
Q
(
name__icontains
=
keys
[
'department'
])
&
Q
(
name__icontains
=
keys
[
'department'
])
&
...
@@ -277,25 +283,40 @@ class UserViewSet(viewsets.ModelViewSet):
...
@@ -277,25 +283,40 @@ class UserViewSet(viewsets.ModelViewSet):
default_app
=
Application
.
objects
.
filter
(
default_app
=
Application
.
objects
.
filter
(
excel_code
=
keys
[
'default_app'
]
excel_code
=
keys
[
'default_app'
]
)
.
first
()
)
.
first
()
# print(default_app)
try
:
enums_super
=
enums
.
UserTypeEnum
.
SUPER_USER
.
value
enums_OUA
=
enums
.
UserTypeEnum
.
OVERALL_USER_ADMIN
.
value
enums_company
=
enums
.
UserTypeEnum
.
COMPANY_USER_ADMIN
.
value
enums_department
=
enums
.
UserTypeEnum
.
DEPARTMENT_USER_ADMIN
.
value
enums_user
=
enums
.
UserTypeEnum
.
USER
.
value
if
keys
[
'user_type'
]
.
lower
()
==
'super user'
and
logged_user_type
==
enums_super
:
user_type
=
enums
.
UserTypeEnum
.
SUPER_USER
.
value
elif
keys
[
'user_type'
]
.
lower
()
==
'super user'
and
logged_user_type
!=
enums_super
:
return
Response
(
{
"message"
:
f
"This user is not allowed to create super user. data error at row {data + 2}"
},
status
=
status
.
HTTP_201_CREATED
)
elif
keys
[
'user_type'
]
.
lower
()
==
'overall user admin'
:
user_type
=
enums
.
UserTypeEnum
.
OVERALL_USER_ADMIN
.
value
elif
keys
[
'user_type'
]
.
lower
()
==
'company user admin'
:
user_type
=
enums
.
UserTypeEnum
.
COMPANY_USER_ADMIN
.
value
elif
keys
[
'user_type'
]
.
lower
()
==
'department user admin'
:
user_type
=
enums
.
UserTypeEnum
.
DEPARTMENT_USER_ADMIN
.
value
else
:
user_type
=
enums
.
UserTypeEnum
.
USER
.
value
users
=
{
users
=
{
"username"
:
keys
[
'username'
],
"username"
:
keys
[
'username'
],
"name"
:
keys
[
'name'
],
"name"
:
keys
[
'name'
],
"department"
:
user_department
,
"department"
:
user_department
,
"email"
:
keys
[
'email'
],
"email"
:
keys
[
'email'
],
"contact_no"
:
keys
[
'contact_no'
],
"contact_no"
:
keys
[
'contact_no'
],
"default_app"
:
default_app
"default_app"
:
default_app
,
"user_type"
:
user_type
}
}
current_user
=
User
.
objects
.
create
(
current_user
=
User
.
objects
.
create
(
**
users
**
users
)
)
except
IntegrityError
as
e
:
return
Response
(
{
"message"
:
f
"Record already exist at row {data + 2}"
},
status
=
status
.
HTTP_201_CREATED
)
password
=
User
.
objects
.
make_random_password
(
length
=
10
)
password
=
User
.
objects
.
make_random_password
(
length
=
10
)
password_hash
=
make_password
(
password
)
password_hash
=
make_password
(
password
)
...
@@ -343,7 +364,8 @@ class UserViewSet(viewsets.ModelViewSet):
...
@@ -343,7 +364,8 @@ class UserViewSet(viewsets.ModelViewSet):
"group_pivots"
:
this_department
,
"group_pivots"
:
this_department
,
"create_change_request"
:
privilege_list
[
2
],
"create_change_request"
:
privilege_list
[
2
],
"create_change_request_template"
:
privilege_list
[
3
],
"create_change_request_template"
:
privilege_list
[
3
],
"view_all_change_request"
:
privilege_list
[
4
]
"view_all_change_request"
:
privilege_list
[
4
],
"approve_cr"
:
privilege_list
[
5
]
}
}
AllowedCompany
.
objects
.
create
(
**
privilege_object
)
AllowedCompany
.
objects
.
create
(
**
privilege_object
)
except
IntegrityError
as
e
:
except
IntegrityError
as
e
:
...
@@ -352,24 +374,46 @@ class UserViewSet(viewsets.ModelViewSet):
...
@@ -352,24 +374,46 @@ class UserViewSet(viewsets.ModelViewSet):
status
=
status
.
HTTP_201_CREATED
status
=
status
.
HTTP_201_CREATED
)
)
except
IntegrityError
as
e
:
return
Response
(
{
"message"
:
f
"Record already exist at row {data + 2}"
},
status
=
status
.
HTTP_201_CREATED
)
except
KeyError
as
e
:
return
Response
(
{
"message"
:
"Missing column user_type"
},
status
=
status
.
HTTP_201_CREATED
)
del
users
[
'department'
]
del
users
[
'department'
]
del
users
[
'contact_no'
]
del
users
[
'contact_no'
]
del
users
[
'default_app'
]
del
users
[
'default_app'
]
del
users
[
'user_type'
]
users
[
'password'
]
=
password
users
[
'password'
]
=
password
UserHistory
.
objects
.
create
(
UserHistory
.
objects
.
create
(
**
users
**
users
)
)
users
[
'admin'
]
=
logged_user_email
send_mail
=
UserHistory
.
objects
.
filter
(
sent
=
False
)
.
values
(
)
# email_users.push({**users}
)
for
send
in
send_mail
:
send_mail
=
UserHistory
.
objects
.
filter
(
sent
=
False
)[
0
:
100
]
.
values
(
admin_email
=
request
.
user
.
email
'name'
,
'username'
,
'email'
,
'password'
args
=
[
send
[
'name'
],
send
[
'username'
],
send
[
'password'
],
send
[
'email'
],
admin_email
]
)
main_threading
(
args
,
sender
.
account_created
)
# print(send_mail)
df
=
pd
.
DataFrame
(
send_mail
)
df
.
to_csv
(
"users.csv"
,
index
=
False
)
args
=
[
"users.csv"
,
logged_user_email
]
main_threading
(
args
,
sender
.
batch_email_admin
)
send_mail
.
update
(
sent
=
True
)
args
=
[
send_mail
,
logged_user_email
]
main_threading
(
args
,
sender
.
batch_email_users
)
return
Response
(
return
Response
(
{
"message"
:
"File already uploaded"
},
{
"message"
:
"File already uploaded"
},
...
...
app/helper/email_service/sender.py
View file @
5d5bd544
import
os
import
os
from
django.core.mail
import
send_mail
from
django.core.mail
import
send_mail
,
EmailMessage
from
app.entities
import
models
from
app.entities
import
models
from
django.conf
import
settings
from
django.conf
import
settings
from
django.core
import
mail
as
email_connection
from
django.db
import
transaction
@
transaction
.
atomic
def
batch_email_users
(
args
):
# print(args[0])
connection
=
email_connection
.
get_connection
()
messages
=
[]
connection
.
open
()
for
data
in
args
[
0
]
.
iterator
():
name
=
data
[
'name'
]
username
=
data
[
'username'
]
password
=
data
[
'password'
]
recipient
=
data
[
'email'
]
admin
=
args
[
1
]
F
=
open
(
os
.
path
.
join
(
settings
.
EMAIL_TEMPLATES_ROOT
,
'RMS-NEWUSER.html'
),
'r'
)
FC
=
F
.
read
()
FC
=
FC
.
replace
(
'{name}'
,
name
)
FC
=
FC
.
replace
(
'{username}'
,
username
)
FC
=
FC
.
replace
(
'{password}'
,
password
)
FC
=
FC
.
replace
(
'{url}'
,
settings
.
FRONT_END_URL
+
'/cms/profile'
)
send_mail
(
subject
=
'Resource Management System: Welcome!'
,
message
=
''
,
from_email
=
settings
.
EMAIL_DEFAULT_SENDER
,
recipient_list
=
(
recipient
,),
html_message
=
FC
,
fail_silently
=
False
)
models
.
UserHistory
.
objects
.
filter
(
username
=
username
)
.
update
(
sent
=
True
)
connection
.
close
()
return
True
def
batch_email_admin
(
args
):
filename
=
args
[
0
]
recipient
=
args
[
1
]
email
=
EmailMessage
(
'Resource Management System: Bulk Users!'
,
'kindly see the attach file.'
,
settings
.
EMAIL_DEFAULT_SENDER
,
[
recipient
]
)
email
.
attach_file
(
filename
)
email
.
send
()
os
.
remove
(
filename
)
def
account_created
(
args
):
def
account_created
(
args
):
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment