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
72ba88eb
Commit
72ba88eb
authored
Oct 14, 2019
by
Gladys Forte
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
added form attachment serializer
parent
7b51b52b
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
177 additions
and
31 deletions
+177
-31
app/applicationlayer/cms/auto_email/cancel.py
app/applicationlayer/cms/auto_email/cancel.py
+65
-0
app/applicationlayer/cms/auto_email/overdue.py
app/applicationlayer/cms/auto_email/overdue.py
+66
-0
app/applicationlayer/cms/auto_email/reminder.py
app/applicationlayer/cms/auto_email/reminder.py
+1
-1
app/applicationlayer/cms/form/attachment/serializers.py
app/applicationlayer/cms/form/attachment/serializers.py
+1
-2
app/applicationlayer/cms/form/header/views.py
app/applicationlayer/cms/form/header/views.py
+3
-1
app/applicationlayer/cms/urls_cms.py
app/applicationlayer/cms/urls_cms.py
+2
-1
app/applicationlayer/cms/utils_cr.py
app/applicationlayer/cms/utils_cr.py
+14
-1
app/entities/migrations/0018_canceltrigger_overduetrigger_remindertrigger.py
...ions/0018_canceltrigger_overduetrigger_remindertrigger.py
+13
-13
app/entities/models.py
app/entities/models.py
+12
-12
No files found.
app/applicationlayer/cms/auto_email/cancel.py
View file @
72ba88eb
from
app.entities
import
models
from
app.applicationlayer
import
paginators
from
datetime
import
datetime
from
rest_framework.response
import
Response
from
rest_framework
import
status
,
views
from
django.db.models
import
Q
import
requests
from
django.conf
import
settings
from
datetime
import
timedelta
from
app.helper.email_service
import
sender
from
app.applicationlayer.utils
import
main_threading
CR_FRONT_LINK
=
settings
.
CR_FRONT_LINK
class
CancelTriggerAPIView
(
views
.
APIView
):
def
get
(
self
,
request
):
date_now
=
datetime
.
now
()
today_mail
=
models
.
CancelTrigger
.
objects
.
filter
(
Q
(
auto_cancel_date
=
date_now
.
strftime
(
'
%
Y-
%
m-
%
d 00:00:00.000'
))
)
list_of_emails
=
[]
for
data
in
today_mail
:
if
data
.
is_sent
==
False
and
data
.
form_code
.
status
==
'Pending'
and
data
.
frm_approver
.
is_action
==
True
:
cr_link
=
f
'{CR_FRONT_LINK}/{data.form_code}'
requestor_name
=
data
.
form_code
.
requested_by_user
.
name
auto_cancel_date
=
data
.
auto_cancel_date
.
strftime
(
'
%
B
%
d,
%
Y'
)
date_submitted_last_approver
=
data
.
date_submitted_last_approver
.
strftime
(
'
%
B
%
d,
%
Y'
)
approver_pending_action
=
data
.
frm_approver
.
user
.
name
cr_number
=
data
.
form_code
.
requested_to_template_id
cr_name
=
data
.
form_code
.
requested_to_template_name
company_requestedto
=
data
.
form_code
.
requested_to_company
.
name
department_requestedto
=
data
.
form_code
.
requested_to_department
.
name
priority_level
=
data
.
form_code
.
requested_to_priority
form_status
=
data
.
form_code
.
status
url
=
cr_link
requestor_recipient
=
data
.
form_code
.
requested_by_user
.
email
admin
=
'Test'
args_requestor
=
[
requestor_name
,
auto_cancel_date
,
date_submitted_last_approver
,
approver_pending_action
,
cr_number
,
cr_name
,
company_requestedto
,
department_requestedto
,
priority_level
,
form_status
,
url
,
requestor_recipient
,
admin
]
main_threading
(
args_requestor
,
sender
.
routing_table_cancelled
)
cancel
=
models
.
ChangeRequestFormHeader
.
objects
.
filter
(
form_code
=
data
.
form_code
)
.
update
(
status
=
'Cancelled'
)
list_of_emails
.
append
(
data
.
form_code
.
form_code
)
today_mail
.
update
(
is_sent
=
True
)
return
Response
(
{
"list of emails"
:
list_of_emails
},
status
=
status
.
HTTP_200_OK
)
app/applicationlayer/cms/auto_email/overdue.py
View file @
72ba88eb
from
app.entities
import
models
from
app.applicationlayer
import
paginators
from
datetime
import
datetime
from
rest_framework.response
import
Response
from
rest_framework
import
status
,
views
from
django.db.models
import
Q
import
requests
from
django.conf
import
settings
from
datetime
import
timedelta
from
app.helper.email_service
import
sender
from
app.applicationlayer.utils
import
main_threading
CR_FRONT_LINK
=
settings
.
CR_FRONT_LINK
class
OverdueTriggerAPIView
(
views
.
APIView
):
def
get
(
self
,
request
):
date_now
=
datetime
.
now
()
today_mail
=
models
.
CancelTrigger
.
objects
.
filter
(
Q
(
auto_cancel_date
=
date_now
.
strftime
(
'
%
Y-
%
m-
%
d 00:00:00.000'
))
)
list_of_emails
=
[]
for
data
in
today_mail
:
if
data
.
is_sent
==
False
and
data
.
form_code
.
status
==
'Pending'
and
data
.
frm_approver
.
is_action
==
True
:
cr_link
=
f
'{CR_FRONT_LINK}/{data.form_code}'
requestor_name
=
data
.
form_code
.
requested_by_user
.
name
auto_cancel_date
=
data
.
auto_cancel_date
.
strftime
(
'
%
B
%
d,
%
Y'
)
date_submitted_last_approver
=
data
.
date_submitted_last_approver
.
strftime
(
'
%
B
%
d,
%
Y'
)
approver_pending_action
=
data
.
frm_approver
.
user
.
name
cr_number
=
data
.
form_code
.
requested_to_template_id
cr_name
=
data
.
form_code
.
requested_to_template_name
company_requestedto
=
data
.
form_code
.
requested_to_company
.
name
department_requestedto
=
data
.
form_code
.
requested_to_department
.
name
priority_level
=
data
.
form_code
.
requested_to_priority
form_status
=
data
.
form_code
.
status
url
=
cr_link
requestor_recipient
=
data
.
form_code
.
requested_by_user
.
email
admin
=
'Test'
args_requestor
=
[
requestor_name
,
auto_cancel_date
,
date_submitted_last_approver
,
approver_pending_action
,
cr_number
,
cr_name
,
company_requestedto
,
department_requestedto
,
priority_level
,
form_status
,
url
,
requestor_recipient
,
admin
]
main_threading
(
args_requestor
,
sender
.
routing_table_cancelled
)
cancel
=
models
.
ChangeRequestFormHeader
.
objects
.
filter
(
form_code
=
data
.
form_code
)
.
update
(
status
=
'Cancelled'
)
list_of_emails
.
append
(
data
.
form_code
.
form_code
)
today_mail
.
update
(
is_sent
=
True
)
return
Response
(
{
"list of emails"
:
list_of_emails
},
status
=
status
.
HTTP_200_OK
)
app/applicationlayer/cms/auto_email/reminder.py
View file @
72ba88eb
...
...
@@ -51,7 +51,7 @@ class ReminderTriggerAPIView(views.APIView):
cr_number
,
cr_name
,
company_requestedto
,
department_requestedto
,
priority_level
,
form_status
,
url
,
recipient
,
admin
]
result
=
main_threading
(
args_approver
,
sender
.
routing_table_reminder_approver
)
main_threading
(
args_approver
,
sender
.
routing_table_reminder_approver
)
list_of_emails
.
append
(
data
.
frm_approver
.
code
)
# requestor details
...
...
app/applicationlayer/cms/form/attachment/serializers.py
View file @
72ba88eb
...
...
@@ -32,8 +32,7 @@ class ChangeRequestFormAttachmentsSerializer(
class
ChangeRequestFormAttachmentsFileUploadSerializer
(
serializers
.
ModelSerializer
):
class
Meta
:
model
=
models
.
ChangeRequestFormAttachments
fields
=
(
...
...
app/applicationlayer/cms/form/header/views.py
View file @
72ba88eb
...
...
@@ -46,7 +46,9 @@ from app.businesslayer.changerequest.change_request import (
from
app.applicationlayer.cms.form.approver.serializers
import
ChangeRequestFormApproversSerializer
from
app.applicationlayer.cms.form.stakeholder.serializers
import
ChangeRequestFormStakeHoldersSerializer
from
app.applicationlayer.cms.form.details.serializers
import
ChangeRequestFormDetailsSerializer
from
app.applicationlayer.cms.form.attachment.serializers
import
ChangeRequestFormAttachmentsFileUploadSerializer
from
app.applicationlayer.cms.form.attachment.serializers
import
(
ChangeRequestFormAttachmentsFileUploadSerializer
,
ChangeRequestFormAttachmentsSerializer
)
from
app.applicationlayer.cms.form.header.serializers
import
(
ChangeRequestFormHeaderSerializer
,
ChangeRequestFormHeaderSerializerList
)
...
...
app/applicationlayer/cms/urls_cms.py
View file @
72ba88eb
...
...
@@ -85,7 +85,8 @@ urlpatterns = [
path
(
'form-user-list/'
,
UserListForm
.
as_view
(),
name
=
"User List"
),
path
(
'template-user-list/'
,
UserListTemplate
.
as_view
(),
name
=
"User List"
),
# filter endpoints under Allowed Companies table
path
(
'reminder/'
,
reminder
.
ReminderTriggerAPIView
.
as_view
()),
# path('reminder/', reminder.ReminderTriggerAPIView.as_view()),
# path('cancelled/', cancel.CancelTriggerAPIView.as_view()),
]
# urlpatterns += format_suffix_patterns(urlpatterns)
...
...
app/applicationlayer/cms/utils_cr.py
View file @
72ba88eb
...
...
@@ -534,12 +534,15 @@ def reminder_trigger_save(form_code,
approver_instance
=
get_approver_details
(
form_code
)
form_instance
=
models
.
ChangeRequestFormHeader
.
objects
.
get
(
form_code
=
form_code
)
date_from
=
date_now
+
timedelta
(
days
=
7
)
date_to
=
date_now
+
timedelta
(
days
=
29
)
auto_cancel_date
=
date_now
+
timedelta
(
days
=
30
)
# create log for auto_email
counter
=
0
for
approver
in
approver_instance
:
models
.
ReminderTrigger
.
objects
.
create
(
frm_approver
=
approver
,
...
...
@@ -550,5 +553,15 @@ def reminder_trigger_save(form_code,
date_submitted_last_approver
=
date_submitted_last_approver
,
is_sent
=
False
)
if
counter
==
0
:
models
.
CancelTrigger
.
objects
.
create
(
form_code
=
form_instance
,
auto_cancel_date
=
auto_cancel_date
.
strftime
(
'
%
Y-
%
m-
%
d 00:00:00.000'
),
date_submitted_last_approver
=
date_submitted_last_approver
,
is_sent
=
False
,
frm_approver
=
approver
)
counter
=
counter
+
1
return
True
app/entities/migrations/0018_canceltrigger_overduetrigger_remindertrigger.py
View file @
72ba88eb
# Generated by Django 2.2 on 2019-10-1
3 20:18
# Generated by Django 2.2 on 2019-10-1
4 16:31
from
django.db
import
migrations
,
models
import
django.db.models.deletion
...
...
@@ -12,45 +12,45 @@ class Migration(migrations.Migration):
operations
=
[
migrations
.
CreateModel
(
name
=
'
Cancel
Trigger'
,
name
=
'
Reminder
Trigger'
,
fields
=
[
(
'id'
,
models
.
AutoField
(
auto_created
=
True
,
primary_key
=
True
,
serialize
=
False
,
verbose_name
=
'ID'
)),
(
'form_code'
,
models
.
CharField
(
blank
=
True
,
max_length
=
255
,
null
=
True
)),
(
'auto_cancel_date'
,
models
.
DateTimeField
(
blank
=
True
,
null
=
True
)),
(
'is_sent'
,
models
.
BooleanField
(
default
=
False
)),
(
'date_submitted_last_approver'
,
models
.
DateTimeField
(
blank
=
True
,
null
=
True
)),
(
'approver_pending_action'
,
models
.
CharField
(
blank
=
True
,
max_length
=
255
,
null
=
True
)),
(
'date_from'
,
models
.
DateTimeField
(
blank
=
True
,
null
=
True
)),
(
'date_to'
,
models
.
DateTimeField
(
blank
=
True
,
null
=
True
)),
(
'date_to_send'
,
models
.
DateTimeField
(
blank
=
True
,
null
=
True
)),
(
'is_sent'
,
models
.
BooleanField
(
default
=
False
)),
(
'frm_approver'
,
models
.
ForeignKey
(
on_delete
=
django
.
db
.
models
.
deletion
.
PROTECT
,
to
=
'entities.ChangeRequestFormApprovers'
,
to_field
=
'code'
)),
],
options
=
{
'db_table'
:
'
cancel
_trigger'
,
'db_table'
:
'
reminder
_trigger'
,
},
),
migrations
.
CreateModel
(
name
=
'OverdueTrigger'
,
fields
=
[
(
'id'
,
models
.
AutoField
(
auto_created
=
True
,
primary_key
=
True
,
serialize
=
False
,
verbose_name
=
'ID'
)),
(
'form_code'
,
models
.
CharField
(
blank
=
True
,
max_length
=
255
,
null
=
True
)),
(
'overdue_date'
,
models
.
DateTimeField
(
blank
=
True
,
null
=
True
)),
(
'is_sent'
,
models
.
BooleanField
(
default
=
False
)),
(
'form_code'
,
models
.
ForeignKey
(
on_delete
=
django
.
db
.
models
.
deletion
.
PROTECT
,
to
=
'entities.ChangeRequestFormHeader'
,
to_field
=
'form_code'
)),
],
options
=
{
'db_table'
:
'overdue_trigger'
,
},
),
migrations
.
CreateModel
(
name
=
'
Reminder
Trigger'
,
name
=
'
Cancel
Trigger'
,
fields
=
[
(
'id'
,
models
.
AutoField
(
auto_created
=
True
,
primary_key
=
True
,
serialize
=
False
,
verbose_name
=
'ID'
)),
(
'auto_cancel_date'
,
models
.
DateTimeField
(
blank
=
True
,
null
=
True
)),
(
'date_submitted_last_approver'
,
models
.
DateTimeField
(
blank
=
True
,
null
=
True
)),
(
'date_from'
,
models
.
DateTimeField
(
blank
=
True
,
null
=
True
)),
(
'date_to'
,
models
.
DateTimeField
(
blank
=
True
,
null
=
True
)),
(
'date_to_send'
,
models
.
DateTimeField
(
blank
=
True
,
null
=
True
)),
(
'is_sent'
,
models
.
BooleanField
(
default
=
False
)),
(
'date_submitted_last_approver'
,
models
.
DateTimeField
(
blank
=
True
,
null
=
True
)),
(
'form_code'
,
models
.
ForeignKey
(
on_delete
=
django
.
db
.
models
.
deletion
.
PROTECT
,
to
=
'entities.ChangeRequestFormHeader'
,
to_field
=
'form_code'
)),
(
'frm_approver'
,
models
.
ForeignKey
(
on_delete
=
django
.
db
.
models
.
deletion
.
PROTECT
,
to
=
'entities.ChangeRequestFormApprovers'
,
to_field
=
'code'
)),
],
options
=
{
'db_table'
:
'
reminder
_trigger'
,
'db_table'
:
'
cancel
_trigger'
,
},
),
]
app/entities/models.py
View file @
72ba88eb
...
...
@@ -1034,10 +1034,14 @@ class ReminderTrigger(models.Model):
class
CancelTrigger
(
models
.
Model
):
form_code
=
models
.
CharField
(
null
=
True
,
blank
=
True
,
max_length
=
255
)
form_code
=
models
.
ForeignKey
(
ChangeRequestFormHeader
,
on_delete
=
models
.
PROTECT
,
to_field
=
'form_code'
)
frm_approver
=
models
.
ForeignKey
(
ChangeRequestFormApprovers
,
on_delete
=
models
.
PROTECT
,
to_field
=
'code'
)
auto_cancel_date
=
models
.
DateTimeField
(
null
=
True
,
blank
=
True
)
...
...
@@ -1046,20 +1050,16 @@ class CancelTrigger(models.Model):
date_submitted_last_approver
=
models
.
DateTimeField
(
null
=
True
,
blank
=
True
)
approver_pending_action
=
models
.
CharField
(
null
=
True
,
blank
=
True
,
max_length
=
255
)
class
Meta
:
db_table
=
'cancel_trigger'
class
OverdueTrigger
(
models
.
Model
):
form_code
=
models
.
CharField
(
null
=
True
,
blank
=
True
,
max_length
=
255
)
form_code
=
models
.
ForeignKey
(
ChangeRequestFormHeader
,
on_delete
=
models
.
PROTECT
,
to_field
=
'form_code'
)
overdue_date
=
models
.
DateTimeField
(
null
=
True
,
blank
=
True
)
...
...
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